@itwin/core-frontend 3.0.0-dev.98 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +244 -35
- package/LICENSE.md +1 -1
- package/lib/cjs/AccuSnap.js +3 -3
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +10 -5
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.d.ts +1 -1
- package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +2 -2
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BingLocation.js +2 -2
- package/lib/cjs/BingLocation.js.map +1 -1
- package/lib/cjs/CheckpointConnection.js +1 -1
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/ContextRealityModelState.js +1 -1
- package/lib/cjs/ContextRealityModelState.js.map +1 -1
- package/lib/cjs/DisplayStyleState.d.ts +10 -163
- package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
- package/lib/cjs/DisplayStyleState.js +69 -350
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.d.ts +2 -2
- package/lib/cjs/DrawingViewState.d.ts.map +1 -1
- package/lib/cjs/DrawingViewState.js +3 -3
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.d.ts +5 -0
- package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
- package/lib/cjs/ElementLocateManager.js +12 -2
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EmphasizeElements.d.ts.map +1 -1
- package/lib/cjs/EmphasizeElements.js +14 -4
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.d.ts +39 -0
- package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -0
- package/lib/cjs/EnvironmentDecorations.js +203 -0
- package/lib/cjs/EnvironmentDecorations.js.map +1 -0
- package/lib/cjs/FrontendHubAccess.d.ts +11 -7
- package/lib/cjs/FrontendHubAccess.d.ts.map +1 -1
- package/lib/cjs/FrontendHubAccess.js.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.d.ts +2 -8
- package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.js +2 -8
- package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/HitDetail.js +7 -7
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +30 -17
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +33 -26
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +4 -6
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +6 -11
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModeljs-css.d.ts.map +1 -1
- package/lib/cjs/IModeljs-css.js +8 -6
- package/lib/cjs/IModeljs-css.js.map +1 -1
- package/lib/cjs/ImageUtil.d.ts +3 -3
- package/lib/cjs/ImageUtil.d.ts.map +1 -1
- package/lib/cjs/ImageUtil.js +7 -4
- package/lib/cjs/ImageUtil.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
- package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +21 -7
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/Marker.d.ts +9 -2
- package/lib/cjs/Marker.d.ts.map +1 -1
- package/lib/cjs/Marker.js +33 -5
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/ModelState.js +1 -1
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.d.ts +3 -38
- package/lib/cjs/NativeApp.d.ts.map +1 -1
- package/lib/cjs/NativeApp.js +4 -73
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +0 -1
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +0 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/NotificationManager.d.ts +3 -1
- package/lib/cjs/NotificationManager.d.ts.map +1 -1
- package/lib/cjs/NotificationManager.js +2 -0
- package/lib/cjs/NotificationManager.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts +59 -29
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +247 -94
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/RenderScheduleState.d.ts +2 -0
- package/lib/cjs/RenderScheduleState.d.ts.map +1 -1
- package/lib/cjs/RenderScheduleState.js +10 -5
- package/lib/cjs/RenderScheduleState.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts +2 -2
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +7 -6
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialViewState.d.ts +10 -2
- package/lib/cjs/SpatialViewState.d.ts.map +1 -1
- package/lib/cjs/SpatialViewState.js +12 -2
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.js +1 -1
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/Tiles.d.ts +11 -1
- package/lib/cjs/Tiles.d.ts.map +1 -1
- package/lib/cjs/Tiles.js +7 -0
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/TwoWayViewportSync.d.ts +35 -6
- package/lib/cjs/TwoWayViewportSync.d.ts.map +1 -1
- package/lib/cjs/TwoWayViewportSync.js +51 -11
- package/lib/cjs/TwoWayViewportSync.js.map +1 -1
- package/lib/cjs/UserPreferences.d.ts +72 -0
- package/lib/cjs/UserPreferences.d.ts.map +1 -0
- package/lib/cjs/UserPreferences.js +7 -0
- package/lib/cjs/UserPreferences.js.map +1 -0
- package/lib/cjs/ViewContext.d.ts +3 -1
- package/lib/cjs/ViewContext.d.ts.map +1 -1
- package/lib/cjs/ViewContext.js +4 -0
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +3 -3
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.d.ts +1 -1
- package/lib/cjs/ViewCreator3d.d.ts.map +1 -1
- package/lib/cjs/ViewCreator3d.js +4 -5
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewManager.d.ts +6 -6
- package/lib/cjs/ViewManager.d.ts.map +1 -1
- package/lib/cjs/ViewManager.js +13 -13
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +11 -5
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +18 -63
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +1 -1
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +57 -11
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +55 -31
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/core-frontend.d.ts +10 -24
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +10 -24
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
- package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js +3 -3
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +18 -2
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +9 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.d.ts +7 -1
- package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/MockRender.d.ts +3 -1
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/RenderMemory.d.ts +21 -15
- package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
- package/lib/cjs/render/RenderMemory.js +21 -15
- package/lib/cjs/render/RenderMemory.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +38 -7
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +24 -9
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +10 -2
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js +2 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/RenderTexture.d.ts +2 -17
- package/lib/cjs/render/RenderTexture.d.ts.map +1 -1
- package/lib/cjs/render/RenderTexture.js +0 -17
- package/lib/cjs/render/RenderTexture.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.d.ts +84 -0
- package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/EdgeParams.js +220 -0
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
- package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
- package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/PointStringParams.js +43 -0
- package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
- package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
- package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/PolylineParams.js +205 -0
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
- package/lib/cjs/render/primitives/Primitives.d.ts +1 -1
- package/lib/cjs/render/primitives/Primitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Primitives.js.map +1 -1
- package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
- package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
- package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/cjs/render/primitives/VertexTable.d.ts +4 -123
- package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +16 -352
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +2 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -0
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -3
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
- package/lib/cjs/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeMap.js +5 -5
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.js +8 -5
- package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +16 -11
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js +26 -23
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -3
- package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +6 -4
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +11 -3
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FloatRGBA.js +13 -11
- package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts +13 -0
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js +41 -3
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts +6 -5
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +2 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.d.ts +1 -1
- package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts +8 -162
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +18 -458
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
- package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
- package/lib/cjs/render/webgl/MeshData.js +66 -0
- package/lib/cjs/render/webgl/MeshData.js.map +1 -0
- package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
- package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/MeshGeometry.js +59 -0
- package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +8 -4
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.d.ts +2 -3
- package/lib/cjs/render/webgl/PlanarGrid.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.js +3 -3
- package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
- package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js +2 -2
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts +3 -3
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +3 -3
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js +6 -6
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.d.ts +2 -2
- package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js +5 -5
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +2 -2
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +9 -9
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.d.ts +6 -2
- package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +81 -48
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts +48 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js +64 -2
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +10 -9
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +23 -20
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +38 -32
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js +4 -4
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +4 -3
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.js +248 -0
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
- package/lib/cjs/render/webgl/System.d.ts +11 -10
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +32 -21
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +13 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +88 -2
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +112 -119
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
- package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.js +7 -7
- package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts +15 -12
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +26 -23
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +83 -18
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
- package/lib/cjs/render/webgl/glsl/Color.js +1 -1
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
- package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
- package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +10 -13
- package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -2
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +43 -21
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.js +19 -11
- package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
- package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
- package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js +13 -4
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
- package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +9 -6
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -2
- package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -2
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +41 -16
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
- package/lib/cjs/render/webgl/glsl/Vertex.js +2 -2
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
- package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
- package/lib/cjs/render-primitives.d.ts +5 -1
- package/lib/cjs/render-primitives.d.ts.map +1 -1
- package/lib/cjs/render-primitives.js +5 -1
- package/lib/cjs/render-primitives.js.map +1 -1
- package/lib/cjs/request/Request.d.ts +167 -0
- package/lib/cjs/request/Request.d.ts.map +1 -0
- package/lib/cjs/request/Request.js +315 -0
- package/lib/cjs/request/Request.js.map +1 -0
- package/lib/cjs/tile/B3dmReader.d.ts +2 -1
- package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/B3dmReader.js +11 -7
- package/lib/cjs/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.d.ts +14 -0
- package/lib/cjs/tile/CesiumAssetProvider.d.ts.map +1 -0
- package/lib/cjs/tile/CesiumAssetProvider.js +35 -0
- package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -0
- package/lib/cjs/tile/ContextShareProvider.d.ts +22 -0
- package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -0
- package/lib/cjs/tile/ContextShareProvider.js +129 -0
- package/lib/cjs/tile/ContextShareProvider.js.map +1 -0
- package/lib/cjs/tile/DynamicIModelTile.js +9 -3
- package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +594 -55
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +703 -264
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/I3dmReader.d.ts +2 -1
- package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/I3dmReader.js +10 -6
- package/lib/cjs/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTile.js +14 -7
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.d.ts +8 -0
- package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +36 -1
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +365 -10
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +201 -69
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.d.ts +0 -9
- package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +10 -20
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts +14 -5
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +69 -14
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts +2 -41
- package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +57 -217
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
- package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +4 -3
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +5 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +37 -4
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +18 -12
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +11 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +6 -1
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
- package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js +5 -0
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +4 -1
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +4 -1
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.d.ts +22 -0
- package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -0
- package/lib/cjs/tile/map/ArcGISTileMap.js +177 -0
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -0
- package/lib/cjs/tile/map/ArcGisTokenGenerator.js +3 -3
- package/lib/cjs/tile/map/ArcGisTokenGenerator.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +18 -10
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js +4 -4
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +27 -15
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +23 -44
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +3 -3
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +4 -4
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +20 -24
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerAuthentication.d.ts +20 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.d.ts.map +1 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.js +18 -0
- package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -0
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +6 -3
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +3 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +2 -2
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +21 -8
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +18 -6
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -14
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -11
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +5 -34
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +4 -3
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js +2 -2
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +30 -21
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +4 -6
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.d.ts +7 -2
- package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +21 -8
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/QuadId.d.ts +1 -0
- package/lib/cjs/tile/map/QuadId.d.ts.map +1 -1
- package/lib/cjs/tile/map/QuadId.js +2 -1
- package/lib/cjs/tile/map/QuadId.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.d.ts +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.d.ts +8 -1
- package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +39 -5
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.d.ts +11 -1
- package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +23 -9
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
- package/lib/cjs/tools/EditManipulator.js +1 -1
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js +2 -2
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.d.ts +4 -4
- package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js +2 -2
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/Tool.d.ts +29 -1
- package/lib/cjs/tools/Tool.d.ts.map +1 -1
- package/lib/cjs/tools/Tool.js +66 -0
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +20 -10
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ViewTool.js +3 -11
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/webgl.d.ts +5 -0
- package/lib/cjs/webgl.d.ts.map +1 -1
- package/lib/cjs/webgl.js +5 -0
- package/lib/cjs/webgl.js.map +1 -1
- package/lib/esm/AccuSnap.js +3 -3
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +10 -5
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.d.ts +1 -1
- package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +2 -2
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BingLocation.js +1 -1
- package/lib/esm/BingLocation.js.map +1 -1
- package/lib/esm/CheckpointConnection.js +1 -1
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/ContextRealityModelState.js +1 -1
- package/lib/esm/ContextRealityModelState.js.map +1 -1
- package/lib/esm/DisplayStyleState.d.ts +10 -163
- package/lib/esm/DisplayStyleState.d.ts.map +1 -1
- package/lib/esm/DisplayStyleState.js +70 -346
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.d.ts +2 -2
- package/lib/esm/DrawingViewState.d.ts.map +1 -1
- package/lib/esm/DrawingViewState.js +3 -3
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/ElementLocateManager.d.ts +5 -0
- package/lib/esm/ElementLocateManager.d.ts.map +1 -1
- package/lib/esm/ElementLocateManager.js +12 -2
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EmphasizeElements.d.ts.map +1 -1
- package/lib/esm/EmphasizeElements.js +14 -4
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.d.ts +39 -0
- package/lib/esm/EnvironmentDecorations.d.ts.map +1 -0
- package/lib/esm/EnvironmentDecorations.js +199 -0
- package/lib/esm/EnvironmentDecorations.js.map +1 -0
- package/lib/esm/FrontendHubAccess.d.ts +11 -7
- package/lib/esm/FrontendHubAccess.d.ts.map +1 -1
- package/lib/esm/FrontendHubAccess.js.map +1 -1
- package/lib/esm/FrontendLoggerCategory.d.ts +2 -8
- package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
- package/lib/esm/FrontendLoggerCategory.js +2 -8
- package/lib/esm/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/HitDetail.js +7 -7
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +30 -17
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +32 -25
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +4 -6
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +6 -11
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModeljs-css.d.ts.map +1 -1
- package/lib/esm/IModeljs-css.js +8 -6
- package/lib/esm/IModeljs-css.js.map +1 -1
- package/lib/esm/ImageUtil.d.ts +3 -3
- package/lib/esm/ImageUtil.d.ts.map +1 -1
- package/lib/esm/ImageUtil.js +7 -4
- package/lib/esm/ImageUtil.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.d.ts +2 -1
- package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +22 -8
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/Marker.d.ts +9 -2
- package/lib/esm/Marker.d.ts.map +1 -1
- package/lib/esm/Marker.js +34 -6
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/ModelState.js +1 -1
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.d.ts +3 -38
- package/lib/esm/NativeApp.d.ts.map +1 -1
- package/lib/esm/NativeApp.js +1 -69
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +0 -1
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +0 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/NotificationManager.d.ts +3 -1
- package/lib/esm/NotificationManager.d.ts.map +1 -1
- package/lib/esm/NotificationManager.js +2 -0
- package/lib/esm/NotificationManager.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts +59 -29
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +247 -92
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/RenderScheduleState.d.ts +2 -0
- package/lib/esm/RenderScheduleState.d.ts.map +1 -1
- package/lib/esm/RenderScheduleState.js +8 -4
- package/lib/esm/RenderScheduleState.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts +2 -2
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +7 -6
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialViewState.d.ts +10 -2
- package/lib/esm/SpatialViewState.d.ts.map +1 -1
- package/lib/esm/SpatialViewState.js +12 -2
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/SubCategoriesCache.js +1 -1
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/Tiles.d.ts +11 -1
- package/lib/esm/Tiles.d.ts.map +1 -1
- package/lib/esm/Tiles.js +7 -0
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/TwoWayViewportSync.d.ts +35 -6
- package/lib/esm/TwoWayViewportSync.d.ts.map +1 -1
- package/lib/esm/TwoWayViewportSync.js +49 -10
- package/lib/esm/TwoWayViewportSync.js.map +1 -1
- package/lib/esm/UserPreferences.d.ts +72 -0
- package/lib/esm/UserPreferences.d.ts.map +1 -0
- package/lib/esm/UserPreferences.js +6 -0
- package/lib/esm/UserPreferences.js.map +1 -0
- package/lib/esm/ViewContext.d.ts +3 -1
- package/lib/esm/ViewContext.d.ts.map +1 -1
- package/lib/esm/ViewContext.js +4 -0
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +3 -3
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.d.ts +1 -1
- package/lib/esm/ViewCreator3d.d.ts.map +1 -1
- package/lib/esm/ViewCreator3d.js +5 -6
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewManager.d.ts +6 -6
- package/lib/esm/ViewManager.d.ts.map +1 -1
- package/lib/esm/ViewManager.js +13 -13
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/ViewState.d.ts +11 -5
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +21 -66
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.js +1 -1
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts +57 -11
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +56 -32
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/core-frontend.d.ts +10 -24
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +10 -24
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
- package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/FeatureSymbology.js +3 -3
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +18 -2
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js +8 -0
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.d.ts +7 -1
- package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/MockRender.d.ts +3 -1
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/RenderMemory.d.ts +21 -15
- package/lib/esm/render/RenderMemory.d.ts.map +1 -1
- package/lib/esm/render/RenderMemory.js +21 -15
- package/lib/esm/render/RenderMemory.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +38 -7
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +24 -9
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +10 -2
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js +2 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/RenderTexture.d.ts +2 -17
- package/lib/esm/render/RenderTexture.d.ts.map +1 -1
- package/lib/esm/render/RenderTexture.js +1 -16
- package/lib/esm/render/RenderTexture.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.d.ts +84 -0
- package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/EdgeParams.js +217 -0
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
- package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
- package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/PointStringParams.js +39 -0
- package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
- package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
- package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/PolylineParams.js +199 -0
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
- package/lib/esm/render/primitives/Primitives.d.ts +1 -1
- package/lib/esm/render/primitives/Primitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/Primitives.js.map +1 -1
- package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
- package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/esm/render/primitives/SurfaceParams.js +37 -0
- package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/esm/render/primitives/VertexTable.d.ts +4 -123
- package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +11 -342
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +2 -0
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +2 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -0
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +2 -2
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -3
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.d.ts +1 -1
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js +1 -1
- package/lib/esm/render/primitives/mesh/TerrainMeshPrimitive.js.map +1 -1
- package/lib/esm/render/webgl/AttributeMap.js +5 -5
- package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.js +8 -5
- package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +16 -11
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js +26 -23
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.d.ts +2 -3
- package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +6 -4
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
- package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +11 -3
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
- package/lib/esm/render/webgl/FloatRGBA.js +13 -11
- package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +13 -0
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js +39 -2
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
- package/lib/esm/render/webgl/InstancedGeometry.d.ts +6 -5
- package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +2 -1
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.d.ts +1 -1
- package/lib/esm/render/webgl/Material.d.ts.map +1 -1
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts +8 -162
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +12 -445
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.d.ts +38 -0
- package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
- package/lib/esm/render/webgl/MeshData.js +62 -0
- package/lib/esm/render/webgl/MeshData.js.map +1 -0
- package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
- package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/MeshGeometry.js +55 -0
- package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
- package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +9 -5
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarGrid.d.ts +2 -3
- package/lib/esm/render/webgl/PlanarGrid.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarGrid.js +3 -3
- package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
- package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js +2 -2
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/PointString.d.ts +3 -3
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +3 -3
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js +6 -6
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.d.ts +2 -2
- package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/esm/render/webgl/Primitive.js +5 -5
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +2 -2
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +9 -9
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.d.ts +6 -2
- package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +78 -45
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts +48 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js +63 -1
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +10 -9
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +23 -20
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +38 -32
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js +4 -4
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +5 -4
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
- package/lib/esm/render/webgl/SurfaceGeometry.js +243 -0
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
- package/lib/esm/render/webgl/System.d.ts +11 -10
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +34 -23
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +13 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +88 -2
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/render/webgl/Technique.js +112 -119
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
- package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.js +7 -7
- package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts +15 -12
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js +27 -24
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +84 -19
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
- package/lib/esm/render/webgl/glsl/Color.js +1 -1
- package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
- package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
- package/lib/esm/render/webgl/glsl/Composite.js +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
- package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
- package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +10 -13
- package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +2 -2
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +132 -14
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +44 -22
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.js +19 -11
- package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
- package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
- package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
- package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js +13 -4
- package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
- package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
- package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +9 -6
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +2 -2
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js +2 -2
- package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkySphere.js +2 -2
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +41 -16
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
- package/lib/esm/render/webgl/glsl/Vertex.js +3 -3
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
- package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
- package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
- package/lib/esm/render-primitives.d.ts +5 -1
- package/lib/esm/render-primitives.d.ts.map +1 -1
- package/lib/esm/render-primitives.js +5 -1
- package/lib/esm/render-primitives.js.map +1 -1
- package/lib/esm/request/Request.d.ts +167 -0
- package/lib/esm/request/Request.d.ts.map +1 -0
- package/lib/esm/request/Request.js +289 -0
- package/lib/esm/request/Request.js.map +1 -0
- package/lib/esm/tile/B3dmReader.d.ts +2 -1
- package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/B3dmReader.js +12 -8
- package/lib/esm/tile/B3dmReader.js.map +1 -1
- package/lib/esm/tile/CesiumAssetProvider.d.ts +14 -0
- package/lib/esm/tile/CesiumAssetProvider.d.ts.map +1 -0
- package/lib/esm/tile/CesiumAssetProvider.js +31 -0
- package/lib/esm/tile/CesiumAssetProvider.js.map +1 -0
- package/lib/esm/tile/ContextShareProvider.d.ts +22 -0
- package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -0
- package/lib/esm/tile/ContextShareProvider.js +125 -0
- package/lib/esm/tile/ContextShareProvider.js.map +1 -0
- package/lib/esm/tile/DynamicIModelTile.js +9 -3
- package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +594 -55
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +678 -242
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/I3dmReader.d.ts +2 -1
- package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/I3dmReader.js +11 -7
- package/lib/esm/tile/I3dmReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.d.ts.map +1 -1
- package/lib/esm/tile/IModelTile.js +14 -7
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.d.ts +8 -0
- package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/IModelTileTree.js +36 -1
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +365 -10
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +198 -67
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.d.ts +0 -9
- package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +10 -20
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts +14 -5
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +70 -15
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts +2 -41
- package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +56 -215
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
- package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +4 -3
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +5 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +37 -4
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +19 -13
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +11 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +6 -1
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.d.ts +2 -0
- package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
- package/lib/esm/tile/TileTreeReference.js +5 -0
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +4 -1
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +4 -1
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.d.ts +22 -0
- package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -0
- package/lib/esm/tile/map/ArcGISTileMap.js +173 -0
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -0
- package/lib/esm/tile/map/ArcGisTokenGenerator.js +1 -1
- package/lib/esm/tile/map/ArcGisTokenGenerator.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +14 -6
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.js +1 -1
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +25 -13
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -2
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +21 -42
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +2 -2
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +8 -0
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +51 -10
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts +6 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +63 -21
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +4 -4
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +21 -25
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapLayerAuthentication.d.ts +20 -0
- package/lib/esm/tile/map/MapLayerAuthentication.d.ts.map +1 -0
- package/lib/esm/tile/map/MapLayerAuthentication.js +15 -0
- package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -0
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +6 -3
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +3 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +2 -2
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +22 -9
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +18 -6
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +44 -11
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts +3 -11
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +7 -36
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +4 -3
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js +1 -1
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +30 -21
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +3 -3
- package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js +4 -6
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.d.ts +7 -2
- package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +22 -9
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/QuadId.d.ts +1 -0
- package/lib/esm/tile/map/QuadId.d.ts.map +1 -1
- package/lib/esm/tile/map/QuadId.js +2 -1
- package/lib/esm/tile/map/QuadId.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.d.ts +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.d.ts +8 -1
- package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +37 -3
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.d.ts +11 -1
- package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +20 -6
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
- package/lib/esm/tools/EditManipulator.js +1 -1
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.js +2 -2
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.d.ts +4 -4
- package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js +2 -2
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/Tool.d.ts +29 -1
- package/lib/esm/tools/Tool.d.ts.map +1 -1
- package/lib/esm/tools/Tool.js +66 -0
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +20 -10
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ViewTool.js +3 -11
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/webgl.d.ts +5 -0
- package/lib/esm/webgl.d.ts.map +1 -1
- package/lib/esm/webgl.js +5 -0
- package/lib/esm/webgl.js.map +1 -1
- package/lib/public/locales/en/iModelJs.json +3 -1
- package/package.json +33 -28
- package/lib/cjs/RealityDataAccessProps.d.ts +0 -44
- package/lib/cjs/RealityDataAccessProps.d.ts.map +0 -1
- package/lib/cjs/RealityDataAccessProps.js +0 -23
- package/lib/cjs/RealityDataAccessProps.js.map +0 -1
- package/lib/cjs/RealityDataConnection.d.ts +0 -31
- package/lib/cjs/RealityDataConnection.d.ts.map +0 -1
- package/lib/cjs/RealityDataConnection.js +0 -101
- package/lib/cjs/RealityDataConnection.js.map +0 -1
- package/lib/cjs/tile/map/MapLayerSettingsService.d.ts +0 -39
- package/lib/cjs/tile/map/MapLayerSettingsService.d.ts.map +0 -1
- package/lib/cjs/tile/map/MapLayerSettingsService.js +0 -190
- package/lib/cjs/tile/map/MapLayerSettingsService.js.map +0 -1
- package/lib/esm/RealityDataAccessProps.d.ts +0 -44
- package/lib/esm/RealityDataAccessProps.d.ts.map +0 -1
- package/lib/esm/RealityDataAccessProps.js +0 -20
- package/lib/esm/RealityDataAccessProps.js.map +0 -1
- package/lib/esm/RealityDataConnection.d.ts +0 -31
- package/lib/esm/RealityDataConnection.d.ts.map +0 -1
- package/lib/esm/RealityDataConnection.js +0 -98
- package/lib/esm/RealityDataConnection.js.map +0 -1
- package/lib/esm/tile/map/MapLayerSettingsService.d.ts +0 -39
- package/lib/esm/tile/map/MapLayerSettingsService.d.ts.map +0 -1
- package/lib/esm/tile/map/MapLayerSettingsService.js +0 -186
- package/lib/esm/tile/map/MapLayerSettingsService.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuantityFormatter.d.ts","sourceRoot":"","sources":["../../../src/quantity-formatting/QuantityFormatter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"QuantityFormatter.d.ts","sourceRoot":"","sources":["../../../src/quantity-formatting/QuantityFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @module QuantityFormatting
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.QuantityFormatter = exports.isCustomQuantityTypeDefinition = exports.isTextSelectFormatPropEditorSpec = exports.isTextInputFormatPropEditorSpec = exports.isCheckboxFormatPropEditorSpec = exports.getQuantityTypeKey = exports.QuantityType = void 0;
|
|
10
|
+
exports.QuantityFormatter = exports.isCustomQuantityTypeDefinition = exports.isTextSelectFormatPropEditorSpec = exports.isTextInputFormatPropEditorSpec = exports.isCheckboxFormatPropEditorSpec = exports.getQuantityTypeKey = exports.AlternateUnitLabelsRegistry = exports.QuantityType = void 0;
|
|
11
11
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
12
|
const core_quantity_1 = require("@itwin/core-quantity");
|
|
13
13
|
const IModelApp_1 = require("../IModelApp");
|
|
@@ -28,6 +28,30 @@ var QuantityType;
|
|
|
28
28
|
QuantityType[QuantityType["LengthSurvey"] = 8] = "LengthSurvey";
|
|
29
29
|
QuantityType[QuantityType["LengthEngineering"] = 9] = "LengthEngineering";
|
|
30
30
|
})(QuantityType = exports.QuantityType || (exports.QuantityType = {}));
|
|
31
|
+
/**
|
|
32
|
+
* Class that contains alternate Unit Labels. These labels are used when parsing strings to quantities.
|
|
33
|
+
* One use case is to allow a "^", which is easily input, to be used to specify "°".
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
class AlternateUnitLabelsRegistry {
|
|
37
|
+
constructor(defaultAlternates) {
|
|
38
|
+
this._alternateLabelRegistry = new Map();
|
|
39
|
+
if (defaultAlternates) {
|
|
40
|
+
this._alternateLabelRegistry = defaultAlternates;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
addAlternateLabels(key, ...labels) {
|
|
44
|
+
[...labels].forEach((value) => { var _a; return (_a = this._alternateLabelRegistry.get(key)) === null || _a === void 0 ? void 0 : _a.add(value); });
|
|
45
|
+
}
|
|
46
|
+
getAlternateUnitLabels(unit) {
|
|
47
|
+
const key = unit.name;
|
|
48
|
+
const labels = this._alternateLabelRegistry.get(key);
|
|
49
|
+
if (labels)
|
|
50
|
+
return [...labels.values()];
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.AlternateUnitLabelsRegistry = AlternateUnitLabelsRegistry;
|
|
31
55
|
/** Function to return a QuantityTypeKey given either a QuantityType or a string
|
|
32
56
|
* @beta
|
|
33
57
|
*/
|
|
@@ -77,16 +101,18 @@ class StandardQuantityTypeDefinition {
|
|
|
77
101
|
}
|
|
78
102
|
get key() { return this._key; }
|
|
79
103
|
get label() {
|
|
104
|
+
var _a;
|
|
80
105
|
if (!this._label) {
|
|
81
106
|
this._label = IModelApp_1.IModelApp.localization.getLocalizedString(this._labelKey);
|
|
82
107
|
}
|
|
83
|
-
return this._label;
|
|
108
|
+
return (_a = this._label) !== null && _a !== void 0 ? _a : "";
|
|
84
109
|
}
|
|
85
110
|
get description() {
|
|
111
|
+
var _a;
|
|
86
112
|
if (!this._description) {
|
|
87
113
|
this._description = IModelApp_1.IModelApp.localization.getLocalizedString(this._descriptionKey);
|
|
88
114
|
}
|
|
89
|
-
return this._description;
|
|
115
|
+
return (_a = this._description) !== null && _a !== void 0 ? _a : this.label;
|
|
90
116
|
}
|
|
91
117
|
getDefaultFormatPropsBySystem(requestedSystem) {
|
|
92
118
|
// Fallback same as Format "DefaultRealU" in Formats ecschema
|
|
@@ -112,9 +138,9 @@ class StandardQuantityTypeDefinition {
|
|
|
112
138
|
const format = await core_quantity_1.Format.createFromJSON(this.key, unitsProvider, formatProps);
|
|
113
139
|
return core_quantity_1.FormatterSpec.create(format.name, format, unitsProvider, this.persistenceUnit);
|
|
114
140
|
}
|
|
115
|
-
async generateParserSpec(formatProps, unitsProvider) {
|
|
141
|
+
async generateParserSpec(formatProps, unitsProvider, alternateUnitLabelsProvider) {
|
|
116
142
|
const format = await core_quantity_1.Format.createFromJSON(this.key, unitsProvider, formatProps);
|
|
117
|
-
return core_quantity_1.ParserSpec.create(format, unitsProvider, this.persistenceUnit);
|
|
143
|
+
return core_quantity_1.ParserSpec.create(format, unitsProvider, this.persistenceUnit, alternateUnitLabelsProvider);
|
|
118
144
|
}
|
|
119
145
|
}
|
|
120
146
|
/** Class that supports formatting quantity values into strings and parsing strings into quantity values. This class also maintains
|
|
@@ -136,6 +162,7 @@ class QuantityFormatter {
|
|
|
136
162
|
*/
|
|
137
163
|
constructor(showMetricOrUnitSystem) {
|
|
138
164
|
this._unitsProvider = new BasicUnitsProvider_1.BasicUnitsProvider();
|
|
165
|
+
this._alternateUnitLabelsRegistry = new AlternateUnitLabelsRegistry((0, BasicUnitsProvider_1.getDefaultAlternateUnitLabels)());
|
|
139
166
|
this._quantityTypeRegistry = new Map();
|
|
140
167
|
this._activeUnitSystem = "imperial";
|
|
141
168
|
this._activeFormatSpecsByType = new Map();
|
|
@@ -158,7 +185,7 @@ class QuantityFormatter {
|
|
|
158
185
|
this._activeUnitSystem = showMetricOrUnitSystem;
|
|
159
186
|
}
|
|
160
187
|
}
|
|
161
|
-
/**
|
|
188
|
+
/** Set the settings provider and if not iModel specific initialize setting for user. */
|
|
162
189
|
async setUnitFormattingSettingsProvider(provider) {
|
|
163
190
|
this._unitFormattingSettingsProvider = provider;
|
|
164
191
|
if (!provider.maintainOverridesPerIModel)
|
|
@@ -232,7 +259,7 @@ class QuantityFormatter {
|
|
|
232
259
|
}
|
|
233
260
|
async loadFormatAndParserSpec(quantityTypeDefinition, formatProps) {
|
|
234
261
|
const formatterSpec = await quantityTypeDefinition.generateFormatterSpec(formatProps, this.unitsProvider);
|
|
235
|
-
const parserSpec = await quantityTypeDefinition.generateParserSpec(formatProps, this.unitsProvider);
|
|
262
|
+
const parserSpec = await quantityTypeDefinition.generateParserSpec(formatProps, this.unitsProvider, this.alternateUnitLabelsProvider);
|
|
236
263
|
this._activeFormatSpecsByType.set(quantityTypeDefinition.key, formatterSpec);
|
|
237
264
|
this._activeParserSpecsByType.set(quantityTypeDefinition.key, parserSpec);
|
|
238
265
|
}
|
|
@@ -298,6 +325,18 @@ class QuantityFormatter {
|
|
|
298
325
|
get quantityTypesRegistry() {
|
|
299
326
|
return this._quantityTypeRegistry;
|
|
300
327
|
}
|
|
328
|
+
get alternateUnitLabelsProvider() {
|
|
329
|
+
return this._alternateUnitLabelsRegistry;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Add one or more alternate labels for a unit - these labels are used during string parsing.
|
|
333
|
+
* @param key UnitNameKey which comes from `UnitProps.name`
|
|
334
|
+
* @param labels one or more unit labels
|
|
335
|
+
*/
|
|
336
|
+
addAlternateLabels(key, ...labels) {
|
|
337
|
+
this._alternateUnitLabelsRegistry.addAlternateLabels(key, ...labels);
|
|
338
|
+
this.onUnitsProviderChanged.emit();
|
|
339
|
+
}
|
|
301
340
|
get unitsProvider() {
|
|
302
341
|
return this._unitsProvider;
|
|
303
342
|
}
|
|
@@ -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 { BeUiEvent } from \"@itwin/core-bentley\";\r\nimport {\r\n Format, FormatProps, FormatterSpec, ParseError, ParserSpec, QuantityParseResult, UnitConversion, UnitProps, UnitsProvider, UnitSystemKey,\r\n} from \"@itwin/core-quantity\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { BasicUnitsProvider } from \"./BasicUnitsProvider\";\r\n\r\n// cSpell:ignore FORMATPROPS FORMATKEY ussurvey uscustomary USCUSTOM\r\n\r\n/** Defines standard format types for tools that need to display measurements to user. Kept only to provide compatibility for existing API.\r\n * @beta\r\n */\r\nexport enum QuantityType { Length = 1, Angle = 2, Area = 3, Volume = 4, LatLong = 5, Coordinate = 6, Stationing = 7, LengthSurvey = 8, LengthEngineering = 9 }\r\n\r\n/** Type the can be used to uniquely identify a Quantity Type.\r\n * @beta\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 `getQuantityTypeKey`.\r\n * @beta\r\n */\r\nexport type QuantityTypeKey = string;\r\n\r\n/** Function to return a QuantityTypeKey given either a QuantityType or a string\r\n * @beta\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/** Properties that define an EditorSpec for editing a custom formatting property that is stored in the \"custom\" property in the FormatProps.\r\n * The editor controls will be automatically generated in the UI and are limited to a checkbox to set a boolean value, a text dropdown/select\r\n * component to pick a string value from a list of options, and a text input component that returns a string value.\r\n * @beta\r\n */\r\nexport interface CustomFormatPropEditorSpec {\r\n editorType: \"checkbox\" | \"text\" | \"select\";\r\n label: string;\r\n}\r\n\r\n/** CheckboxFormatPropEditorSpec defines getter and setter method for a boolean property editor.\r\n * @beta\r\n */\r\nexport interface CheckboxFormatPropEditorSpec extends CustomFormatPropEditorSpec {\r\n editorType: \"checkbox\";\r\n getBool: (props: FormatProps) => boolean;\r\n setBool: (props: FormatProps, isChecked: boolean) => FormatProps;\r\n}\r\n\r\n/** CheckboxFormatPropEditorSpec type guard.\r\n * @beta\r\n */\r\nexport const isCheckboxFormatPropEditorSpec = (item: CustomFormatPropEditorSpec): item is CheckboxFormatPropEditorSpec => {\r\n return item.editorType === \"checkbox\";\r\n};\r\n\r\n/** TextInputFormatPropEditorSpec defines getter and setter method for a text input property editor.\r\n * @beta\r\n */\r\nexport interface TextInputFormatPropEditorSpec extends CustomFormatPropEditorSpec {\r\n editorType: \"text\";\r\n getString: (props: FormatProps) => string;\r\n setString: (props: FormatProps, value: string) => FormatProps;\r\n}\r\n\r\n/** TextInputFormatPropEditorSpec type guard.\r\n * @beta\r\n */\r\nexport const isTextInputFormatPropEditorSpec = (item: CustomFormatPropEditorSpec): item is TextInputFormatPropEditorSpec => {\r\n return item.editorType === \"text\";\r\n};\r\n\r\n/** TextSelectFormatPropEditorSpec defines getter and setter method for a Select/Dropdown property editor.\r\n * @beta\r\n */\r\nexport interface TextSelectFormatPropEditorSpec extends CustomFormatPropEditorSpec {\r\n editorType: \"select\";\r\n selectOptions: { label: string, value: string }[];\r\n getString: (props: FormatProps) => string;\r\n setString: (props: FormatProps, value: string) => FormatProps;\r\n}\r\n\r\n/** TextSelectFormatPropEditorSpec type guard.\r\n * @beta\r\n */\r\nexport const isTextSelectFormatPropEditorSpec = (item: CustomFormatPropEditorSpec): item is TextSelectFormatPropEditorSpec => {\r\n return item.editorType === \"select\";\r\n};\r\n\r\n/** Definition of a standard QuantityType that is registered with the QuantityFormatter.\r\n * @beta\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 /** Generate a [FormatterSpec]$(core-quantity) that will be called to format values.*/\r\n generateFormatterSpec: (formatProps: FormatProps, unitsProvider: UnitsProvider) => Promise<FormatterSpec>;\r\n /** Generate a [ParserSpec]$(core-quantity) that will be called to parse a string into a quantity value.*/\r\n generateParserSpec: (formatProps: FormatProps, unitsProvider: UnitsProvider) => 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 * @beta\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 * @beta\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 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;\r\n }\r\n\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) {\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) {\r\n const format = await Format.createFromJSON(this.key, unitsProvider, formatProps);\r\n return ParserSpec.create(format, unitsProvider, this.persistenceUnit);\r\n }\r\n}\r\n\r\n/** Override format entries can define formats for any of the different unit systems.\r\n * @beta\r\n */\r\nexport interface OverrideFormatEntry {\r\n imperial?: FormatProps;\r\n metric?: FormatProps;\r\n usCustomary?: FormatProps;\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 * @beta\r\n */\r\nexport interface FormatterParserSpecsProvider {\r\n quantityType: QuantityTypeArg;\r\n createFormatterSpec: (unitSystem: UnitSystemKey) => Promise<FormatterSpec>;\r\n createParserSpec: (unitSystem: UnitSystemKey) => Promise<ParserSpec>;\r\n}\r\n\r\n/** Arguments sent to FormattingUnitSystemChanged event listeners.\r\n * @beta\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 * @beta\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 * @beta\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/** The UnitFormattingSettingsProvider interface is used to store and retrieve override FormatProps and Presentation Unit System for use by the QuantityFormatter.\r\n * If no UnitFormattingSettingsProvider is supplied to the QuantityFormatter then any overrides set are lost when the session is closed.\r\n * @beta\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 * @beta\r\n */\r\nexport class QuantityFormatter implements UnitsProvider {\r\n private _unitsProvider: UnitsProvider = new BasicUnitsProvider();\r\n protected _quantityTypeRegistry: Map<QuantityTypeKey, QuantityTypeDefinition> = new Map<QuantityTypeKey, QuantityTypeDefinition>();\r\n protected _activeUnitSystem: UnitSystemKey = \"imperial\";\r\n protected _activeFormatSpecsByType = new Map<QuantityTypeKey, FormatterSpec>();\r\n protected _activeParserSpecsByType = new Map<QuantityTypeKey, ParserSpec>();\r\n protected _overrideFormatPropsByUnitSystem = new Map<UnitSystemKey, Map<QuantityTypeKey, FormatProps>>();\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 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.getFormatPropsByQuantityTypeEntyAndSystem(entry, systemKey));\r\n });\r\n\r\n const formatPropPromises = new Array<Promise<void>>();\r\n for (const [entry, formatProps] of formatPropsByType) {\r\n formatPropPromises.push(this.loadFormatAndParserSpec(entry, formatProps));\r\n }\r\n await Promise.all(formatPropPromises);\r\n }\r\n\r\n private getFormatPropsByQuantityTypeEntyAndSystem(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);\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 this._unitFormattingSettingsProvider &&\r\n 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 this._unitFormattingSettingsProvider &&\r\n 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 public get quantityTypesRegistry() {\r\n return this._quantityTypeRegistry;\r\n }\r\n\r\n public get unitsProvider() {\r\n return this._unitsProvider;\r\n }\r\n\r\n public set unitsProvider(unitsProvider: UnitsProvider) {\r\n this._unitsProvider = unitsProvider;\r\n this.onUnitsProviderChanged.emit();\r\n }\r\n\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 * @beta\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 && 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 this._unitFormattingSettingsProvider && 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 /** True if tool quantity values should be displayed in imperial units; false for metric. Changing this flag triggers an asynchronous request to refresh the cached formats. */\r\n public get activeUnitSystem(): UnitSystemKey { return this._activeUnitSystem; }\r\n\r\n public async clearOverrideFormats(type: QuantityTypeArg) {\r\n await this.clearOverrideFormatsByQuantityTypeKey(this.getQuantityTypeKey(type));\r\n }\r\n\r\n public async setOverrideFormats(type: QuantityTypeArg, overrideEntry: OverrideFormatEntry) {\r\n await this.setOverrideFormatsByQuantityTypeKey(this.getQuantityTypeKey(type), overrideEntry);\r\n }\r\n\r\n // TODO: make more generic to support \"named\" systems.\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 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 overrides.forEach((_props, typeKey) => {\r\n typesRemoved.push(typeKey);\r\n this._unitFormattingSettingsProvider &&\r\n this._unitFormattingSettingsProvider.storeFormatOverrides({ typeKey, unitSystem: this.activeUnitSystem });\r\n });\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. */\r\n public getQuantityTypeKey(type: QuantityTypeArg): string {\r\n return getQuantityTypeKey(type);\r\n }\r\n\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 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 of a QuantityType.\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.getFormatPropsByQuantityTypeEntyAndSystem(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 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.getFormatPropsByQuantityTypeEntyAndSystem(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 /** Get a UnitSystemKey from a string that may have been entered via a key-in. Support different variation of unit system names.\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 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 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.getFormatPropsByQuantityTypeEntyAndSystem(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 public async findUnit(unitLabel: string, phenomenon?: string, unitSystem?: string): Promise<UnitProps> {\r\n return this._unitsProvider.findUnit(unitLabel, phenomenon, unitSystem);\r\n }\r\n\r\n public async getUnitsByFamily(phenomenon: string): Promise<UnitProps[]> {\r\n return this._unitsProvider.getUnitsByFamily(phenomenon);\r\n }\r\n\r\n public async findUnitByName(unitName: string): Promise<UnitProps> {\r\n return this._unitsProvider.findUnitByName(unitName);\r\n }\r\n\r\n public async getConversion(fromUnit: UnitProps, toUnit: UnitProps): Promise<UnitConversion> {\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 { BeUiEvent } from \"@itwin/core-bentley\";\r\nimport {\r\n AlternateUnitLabelsProvider, Format, FormatProps, FormatterSpec, ParseError, ParserSpec, QuantityParseResult, UnitConversion,\r\n UnitProps, UnitsProvider, UnitSystemKey,\r\n} from \"@itwin/core-quantity\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { BasicUnitsProvider, getDefaultAlternateUnitLabels } from \"./BasicUnitsProvider\";\r\n\r\n// cSpell:ignore FORMATPROPS FORMATKEY ussurvey uscustomary USCUSTOM\r\n\r\n/** Defines standard format types for tools that need to display measurements to user. Kept only to provide compatibility for existing API.\r\n * @beta\r\n */\r\nexport enum QuantityType { Length = 1, Angle = 2, Area = 3, Volume = 4, LatLong = 5, Coordinate = 6, Stationing = 7, LengthSurvey = 8, LengthEngineering = 9 }\r\n\r\n/** Type the can be used to uniquely identify a Quantity Type.\r\n * @beta\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 `getQuantityTypeKey`.\r\n * @beta\r\n */\r\nexport type QuantityTypeKey = string;\r\n\r\n/** String used to uniquely identify a UnitProp.\r\n * @beta\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/** Function to return a QuantityTypeKey given either a QuantityType or a string\r\n * @beta\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/** Properties that define an EditorSpec for editing a custom formatting property that is stored in the \"custom\" property in the FormatProps.\r\n * The editor controls will be automatically generated in the UI and are limited to a checkbox to set a boolean value, a text dropdown/select\r\n * component to pick a string value from a list of options, and a text input component that returns a string value.\r\n * @beta\r\n */\r\nexport interface CustomFormatPropEditorSpec {\r\n editorType: \"checkbox\" | \"text\" | \"select\";\r\n label: string;\r\n}\r\n\r\n/** CheckboxFormatPropEditorSpec defines getter and setter method for a boolean property editor.\r\n * @beta\r\n */\r\nexport interface CheckboxFormatPropEditorSpec extends CustomFormatPropEditorSpec {\r\n editorType: \"checkbox\";\r\n getBool: (props: FormatProps) => boolean;\r\n setBool: (props: FormatProps, isChecked: boolean) => FormatProps;\r\n}\r\n\r\n/** CheckboxFormatPropEditorSpec type guard.\r\n * @beta\r\n */\r\nexport const isCheckboxFormatPropEditorSpec = (item: CustomFormatPropEditorSpec): item is CheckboxFormatPropEditorSpec => {\r\n return item.editorType === \"checkbox\";\r\n};\r\n\r\n/** TextInputFormatPropEditorSpec defines getter and setter method for a text input property editor.\r\n * @beta\r\n */\r\nexport interface TextInputFormatPropEditorSpec extends CustomFormatPropEditorSpec {\r\n editorType: \"text\";\r\n getString: (props: FormatProps) => string;\r\n setString: (props: FormatProps, value: string) => FormatProps;\r\n}\r\n\r\n/** TextInputFormatPropEditorSpec type guard.\r\n * @beta\r\n */\r\nexport const isTextInputFormatPropEditorSpec = (item: CustomFormatPropEditorSpec): item is TextInputFormatPropEditorSpec => {\r\n return item.editorType === \"text\";\r\n};\r\n\r\n/** TextSelectFormatPropEditorSpec defines getter and setter method for a Select/Dropdown property editor.\r\n * @beta\r\n */\r\nexport interface TextSelectFormatPropEditorSpec extends CustomFormatPropEditorSpec {\r\n editorType: \"select\";\r\n selectOptions: { label: string, value: string }[];\r\n getString: (props: FormatProps) => string;\r\n setString: (props: FormatProps, value: string) => FormatProps;\r\n}\r\n\r\n/** TextSelectFormatPropEditorSpec type guard.\r\n * @beta\r\n */\r\nexport const isTextSelectFormatPropEditorSpec = (item: CustomFormatPropEditorSpec): item is TextSelectFormatPropEditorSpec => {\r\n return item.editorType === \"select\";\r\n};\r\n\r\n/** Definition of a standard QuantityType that is registered with the QuantityFormatter.\r\n * @beta\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 /** Generate a [FormatterSpec]$(core-quantity) that will be called to format values.*/\r\n generateFormatterSpec: (formatProps: FormatProps, unitsProvider: UnitsProvider) => Promise<FormatterSpec>;\r\n /** 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 * @beta\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 * @beta\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 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 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) {\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 * @beta\r\n */\r\nexport interface OverrideFormatEntry {\r\n imperial?: FormatProps;\r\n metric?: FormatProps;\r\n usCustomary?: FormatProps;\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 * @beta\r\n */\r\nexport interface FormatterParserSpecsProvider {\r\n quantityType: QuantityTypeArg;\r\n createFormatterSpec: (unitSystem: UnitSystemKey) => Promise<FormatterSpec>;\r\n createParserSpec: (unitSystem: UnitSystemKey) => Promise<ParserSpec>;\r\n}\r\n\r\n/** Arguments sent to FormattingUnitSystemChanged event listeners.\r\n * @beta\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 * @beta\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 * @beta\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/** The UnitFormattingSettingsProvider interface is used to store and retrieve override FormatProps and Presentation Unit System for use by the QuantityFormatter.\r\n * If no UnitFormattingSettingsProvider is supplied to the QuantityFormatter then any overrides set are lost when the session is closed.\r\n * @beta\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 * @beta\r\n */\r\nexport class QuantityFormatter implements UnitsProvider {\r\n private _unitsProvider: UnitsProvider = new BasicUnitsProvider();\r\n private _alternateUnitLabelsRegistry = new AlternateUnitLabelsRegistry(getDefaultAlternateUnitLabels());\r\n protected _quantityTypeRegistry: Map<QuantityTypeKey, QuantityTypeDefinition> = new Map<QuantityTypeKey, QuantityTypeDefinition>();\r\n protected _activeUnitSystem: UnitSystemKey = \"imperial\";\r\n protected _activeFormatSpecsByType = new Map<QuantityTypeKey, FormatterSpec>();\r\n protected _activeParserSpecsByType = new Map<QuantityTypeKey, ParserSpec>();\r\n protected _overrideFormatPropsByUnitSystem = new Map<UnitSystemKey, Map<QuantityTypeKey, FormatProps>>();\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 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.getFormatPropsByQuantityTypeEntyAndSystem(entry, systemKey));\r\n });\r\n\r\n const formatPropPromises = new Array<Promise<void>>();\r\n for (const [entry, formatProps] of formatPropsByType) {\r\n formatPropPromises.push(this.loadFormatAndParserSpec(entry, formatProps));\r\n }\r\n await Promise.all(formatPropPromises);\r\n }\r\n\r\n private getFormatPropsByQuantityTypeEntyAndSystem(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 this._unitFormattingSettingsProvider &&\r\n 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 this._unitFormattingSettingsProvider &&\r\n 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 public get quantityTypesRegistry() {\r\n return this._quantityTypeRegistry;\r\n }\r\n\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 public get unitsProvider() {\r\n return this._unitsProvider;\r\n }\r\n\r\n public set unitsProvider(unitsProvider: UnitsProvider) {\r\n this._unitsProvider = unitsProvider;\r\n this.onUnitsProviderChanged.emit();\r\n }\r\n\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 * @beta\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 && 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 this._unitFormattingSettingsProvider && 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 /** True if tool quantity values should be displayed in imperial units; false for metric. Changing this flag triggers an asynchronous request to refresh the cached formats. */\r\n public get activeUnitSystem(): UnitSystemKey { return this._activeUnitSystem; }\r\n\r\n public async clearOverrideFormats(type: QuantityTypeArg) {\r\n await this.clearOverrideFormatsByQuantityTypeKey(this.getQuantityTypeKey(type));\r\n }\r\n\r\n public async setOverrideFormats(type: QuantityTypeArg, overrideEntry: OverrideFormatEntry) {\r\n await this.setOverrideFormatsByQuantityTypeKey(this.getQuantityTypeKey(type), overrideEntry);\r\n }\r\n\r\n // TODO: make more generic to support \"named\" systems.\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 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 overrides.forEach((_props, typeKey) => {\r\n typesRemoved.push(typeKey);\r\n this._unitFormattingSettingsProvider &&\r\n this._unitFormattingSettingsProvider.storeFormatOverrides({ typeKey, unitSystem: this.activeUnitSystem });\r\n });\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. */\r\n public getQuantityTypeKey(type: QuantityTypeArg): string {\r\n return getQuantityTypeKey(type);\r\n }\r\n\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 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 of a QuantityType.\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.getFormatPropsByQuantityTypeEntyAndSystem(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 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.getFormatPropsByQuantityTypeEntyAndSystem(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 /** Get a UnitSystemKey from a string that may have been entered via a key-in. Support different variation of unit system names.\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 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 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.getFormatPropsByQuantityTypeEntyAndSystem(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 public async findUnit(unitLabel: string, phenomenon?: string, unitSystem?: string): Promise<UnitProps> {\r\n return this._unitsProvider.findUnit(unitLabel, phenomenon, unitSystem);\r\n }\r\n\r\n public async getUnitsByFamily(phenomenon: string): Promise<UnitProps[]> {\r\n return this._unitsProvider.getUnitsByFamily(phenomenon);\r\n }\r\n\r\n public async findUnitByName(unitName: string): Promise<UnitProps> {\r\n return this._unitsProvider.findUnitByName(unitName);\r\n }\r\n\r\n public async getConversion(fromUnit: UnitProps, toUnit: UnitProps): Promise<UnitConversion> {\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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../src/render/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC;;GAEG;AACH,yBAAiB,gBAAgB,CAAC;IAChC;;;;;;;;OAQG;IACH,UAAiB,MAAM;QACrB;;;WAGG;QACH,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;KAChD;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAa,SAAU,SAAQ,gBAAgB;QAC7C,OAAO,CAAC,OAAO,CAAC,CAAS;QAEzB,aAAa;QACb,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAEtC;QAED;;WAEG;oBACgB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ;QAU9C;;WAEG;eACW,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS;QAMhF;;WAEG;QACI,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;QAK1C;;WAEG;QACI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;QAiBjD,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../src/render/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAqB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC;;GAEG;AACH,yBAAiB,gBAAgB,CAAC;IAChC;;;;;;;;OAQG;IACH,UAAiB,MAAM;QACrB;;;WAGG;QACH,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;KAChD;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAa,SAAU,SAAQ,gBAAgB;QAC7C,OAAO,CAAC,OAAO,CAAC,CAAS;QAEzB,aAAa;QACb,IAAW,MAAM,IAAI,MAAM,GAAG,SAAS,CAEtC;QAED;;WAEG;oBACgB,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ;QAU9C;;WAEG;eACW,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS;QAMhF;;WAEG;QACI,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;QAK1C;;WAEG;QACI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;QAiBjD,OAAO,CAAC,aAAa;QAyDrB,OAAO,CAAC,yBAAyB;KA6BlC;CACF"}
|
|
@@ -115,10 +115,10 @@ var FeatureSymbology;
|
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
const style = view.displayStyle;
|
|
118
|
-
style.settings.modelAppearanceOverrides.forEach((
|
|
118
|
+
style.settings.modelAppearanceOverrides.forEach((appearance, modelId) => this.override({ modelId, appearance, onConflict: "skip" }));
|
|
119
119
|
style.forEachRealityModel((realityModel) => {
|
|
120
120
|
if (realityModel.appearanceOverrides && realityModel.modelId)
|
|
121
|
-
this.
|
|
121
|
+
this.override({ modelId: realityModel.modelId, appearance: realityModel.appearanceOverrides });
|
|
122
122
|
});
|
|
123
123
|
const script = style.scheduleState;
|
|
124
124
|
if (script)
|
|
@@ -130,7 +130,7 @@ var FeatureSymbology;
|
|
|
130
130
|
return;
|
|
131
131
|
for (const [modelId, projSettings] of planProjectionSettings) {
|
|
132
132
|
if (undefined !== projSettings.transparency)
|
|
133
|
-
this.
|
|
133
|
+
this.override({ modelId, appearance: core_common_1.FeatureAppearance.fromJSON({ transparency: projSettings.transparency }) });
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
_initSubCategoryOverrides(view) {
|