@itwin/core-frontend 3.0.0-extension.0 → 3.1.0-dev.5
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 +89 -1
- 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 +200 -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 +31 -24
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +35 -36
- 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 +8 -9
- 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/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
- 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 +17 -31
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +17 -31
- 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/RenderMaterial.d.ts +61 -0
- package/lib/cjs/render/RenderMaterial.d.ts.map +1 -0
- package/lib/cjs/render/RenderMaterial.js +10 -0
- package/lib/cjs/render/RenderMaterial.js.map +1 -0
- 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 +44 -7
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +32 -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/LightingUniforms.d.ts +1 -0
- package/lib/cjs/render/webgl/LightingUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/LightingUniforms.js +4 -1
- package/lib/cjs/render/webgl/LightingUniforms.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 +2 -0
- 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 +13 -10
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +75 -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/Lighting.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Lighting.js +16 -2
- package/lib/cjs/render/webgl/glsl/Lighting.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 +202 -68
- 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 +196 -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 +31 -24
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +34 -35
- 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 +8 -9
- 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/{extension/ExtensionLoader.js → UserPreferences.js} +1 -5
- 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 +17 -31
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +17 -31
- 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/RenderMaterial.d.ts +61 -0
- package/lib/esm/render/RenderMaterial.d.ts.map +1 -0
- package/lib/esm/render/RenderMaterial.js +9 -0
- package/lib/esm/render/RenderMaterial.js.map +1 -0
- 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 +44 -7
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +32 -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/LightingUniforms.d.ts +1 -0
- package/lib/esm/render/webgl/LightingUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/LightingUniforms.js +4 -1
- package/lib/esm/render/webgl/LightingUniforms.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 +2 -0
- 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 +13 -10
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +77 -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/Lighting.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Lighting.js +16 -2
- package/lib/esm/render/webgl/glsl/Lighting.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 +199 -66
- 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/extension/Extension.d.ts +0 -39
- package/lib/cjs/extension/Extension.d.ts.map +0 -1
- package/lib/cjs/extension/Extension.js +0 -39
- package/lib/cjs/extension/Extension.js.map +0 -1
- package/lib/cjs/extension/ExtensionAdmin.d.ts +0 -70
- package/lib/cjs/extension/ExtensionAdmin.d.ts.map +0 -1
- package/lib/cjs/extension/ExtensionAdmin.js +0 -105
- package/lib/cjs/extension/ExtensionAdmin.js.map +0 -1
- package/lib/cjs/extension/ExtensionHost.d.ts +0 -20
- package/lib/cjs/extension/ExtensionHost.d.ts.map +0 -1
- package/lib/cjs/extension/ExtensionHost.js +0 -19
- package/lib/cjs/extension/ExtensionHost.js.map +0 -1
- package/lib/cjs/extension/ExtensionImpl.d.ts +0 -16
- package/lib/cjs/extension/ExtensionImpl.d.ts.map +0 -1
- package/lib/cjs/extension/ExtensionImpl.js +0 -40
- package/lib/cjs/extension/ExtensionImpl.js.map +0 -1
- package/lib/cjs/extension/ExtensionLoader.d.ts +0 -20
- package/lib/cjs/extension/ExtensionLoader.d.ts.map +0 -1
- package/lib/cjs/extension/ExtensionLoader.js.map +0 -1
- package/lib/cjs/extension/ExtensionRuntime.d.ts +0 -2
- package/lib/cjs/extension/ExtensionRuntime.d.ts.map +0 -1
- package/lib/cjs/extension/ExtensionRuntime.js +0 -60
- package/lib/cjs/extension/ExtensionRuntime.js.map +0 -1
- package/lib/cjs/extension/extensions.d.ts +0 -18
- package/lib/cjs/extension/extensions.d.ts.map +0 -1
- package/lib/cjs/extension/extensions.js +0 -35
- package/lib/cjs/extension/extensions.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/extension/Extension.d.ts +0 -39
- package/lib/esm/extension/Extension.d.ts.map +0 -1
- package/lib/esm/extension/Extension.js +0 -38
- package/lib/esm/extension/Extension.js.map +0 -1
- package/lib/esm/extension/ExtensionAdmin.d.ts +0 -70
- package/lib/esm/extension/ExtensionAdmin.d.ts.map +0 -1
- package/lib/esm/extension/ExtensionAdmin.js +0 -101
- package/lib/esm/extension/ExtensionAdmin.js.map +0 -1
- package/lib/esm/extension/ExtensionHost.d.ts +0 -20
- package/lib/esm/extension/ExtensionHost.d.ts.map +0 -1
- package/lib/esm/extension/ExtensionHost.js +0 -15
- package/lib/esm/extension/ExtensionHost.js.map +0 -1
- package/lib/esm/extension/ExtensionImpl.d.ts +0 -16
- package/lib/esm/extension/ExtensionImpl.d.ts.map +0 -1
- package/lib/esm/extension/ExtensionImpl.js +0 -35
- package/lib/esm/extension/ExtensionImpl.js.map +0 -1
- package/lib/esm/extension/ExtensionLoader.d.ts +0 -20
- package/lib/esm/extension/ExtensionLoader.d.ts.map +0 -1
- package/lib/esm/extension/ExtensionLoader.js.map +0 -1
- package/lib/esm/extension/ExtensionRuntime.d.ts +0 -2
- package/lib/esm/extension/ExtensionRuntime.d.ts.map +0 -1
- package/lib/esm/extension/ExtensionRuntime.js +0 -58
- package/lib/esm/extension/ExtensionRuntime.js.map +0 -1
- package/lib/esm/extension/extensions.d.ts +0 -18
- package/lib/esm/extension/extensions.d.ts.map +0 -1
- package/lib/esm/extension/extensions.js +0 -23
- package/lib/esm/extension/extensions.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.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"}
|
|
@@ -112,10 +112,10 @@ export var FeatureSymbology;
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
const style = view.displayStyle;
|
|
115
|
-
style.settings.modelAppearanceOverrides.forEach((
|
|
115
|
+
style.settings.modelAppearanceOverrides.forEach((appearance, modelId) => this.override({ modelId, appearance, onConflict: "skip" }));
|
|
116
116
|
style.forEachRealityModel((realityModel) => {
|
|
117
117
|
if (realityModel.appearanceOverrides && realityModel.modelId)
|
|
118
|
-
this.
|
|
118
|
+
this.override({ modelId: realityModel.modelId, appearance: realityModel.appearanceOverrides });
|
|
119
119
|
});
|
|
120
120
|
const script = style.scheduleState;
|
|
121
121
|
if (script)
|
|
@@ -127,7 +127,7 @@ export var FeatureSymbology;
|
|
|
127
127
|
return;
|
|
128
128
|
for (const [modelId, projSettings] of planProjectionSettings) {
|
|
129
129
|
if (undefined !== projSettings.transparency)
|
|
130
|
-
this.
|
|
130
|
+
this.override({ modelId, appearance: FeatureAppearance.fromJSON({ transparency: projSettings.transparency }) });
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
_initSubCategoryOverrides(view) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureSymbology.js","sourceRoot":"","sources":["../../../src/render/FeatureSymbology.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 Rendering\r\n */\r\n\r\nimport { BeEvent, Id64 } from \"@itwin/core-bentley\";\r\nimport { FeatureAppearance, FeatureOverrides } from \"@itwin/core-common\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { ViewState } from \"../ViewState\";\r\n\r\n// cspell:ignore subcat subcats\r\n\r\n/** Contains types that enable an application to customize how [Feature]($common)s are drawn within a [[Viewport]].\r\n * @public\r\n */\r\nexport namespace FeatureSymbology {\r\n /** An object that serves as the source of a [[FeatureSymbology.Overrides]].\r\n * Use this if you are drawing the same tiles into a single Viewport and overriding the FeatureSymbology.Overrides applied to them\r\n * by settings [[GraphicBranch.symbologyOverrides]].\r\n * Each tile will have a separate set of feature overrides per combination of Source and Viewport. This prevents the display system\r\n * from constantly recomputing the feature overrides for a tile.\r\n * You must call `onSourceDisposed.raiseEvent()` when the source is no longer being used by the Viewport to allow the feature overrides\r\n * and their WebGL resources to be freed - failure to do so will result in memory leaks, which may eventually produce WebGL context loss.\r\n * @alpha\r\n */\r\n export interface Source {\r\n /** An event raised when this source becomes disassociated with the viewport, indicating any WebGL resources allocated for it\r\n * can be freed.\r\n * Failure to invoke this event appropriately will result in memory leaks, which may eventually produce WebGL context loss.\r\n */\r\n readonly onSourceDisposed: BeEvent<() => void>;\r\n }\r\n\r\n /** Allows a [[Viewport]] to customize the appearance of individual [Feature]($common)s within it.\r\n *\r\n * The Viewport computes its base Overrides based on the following:\r\n * - The set of categories enabled for display in its [[CategorySelectorState]]. Every [[SubCategory]] belonging to an enabled [[Category]] is added to the set of visible subcategories - all other subcategories are assumed to be invisible.\r\n * - For the set of visible subcategories, any [[SubCategoryOverride]]s defined by the view's [[DisplayStyleState]] are applied. This may render some subcategories invisible, and change the symbology of others.\r\n * - The visibility of each [GeometryClass]($common) is set based on the view's [ViewFlags]($common).\r\n * - The line weight is overridden to 1 pixel for all Features if line weight has been disabled by the view's [ViewFlags]($common).\r\n * - The sets of elements which are always drawn and never drawn are initialized from the [[Viewport]]'s sets.\r\n * An application can further customize the symbology of any Features by registering a [[FeatureOverrideProvider]] with a [[Viewport]]. That provider's addFeatureOverrides function will be invoked\r\n * whenever the Overrides need to be regenerated.\r\n *\r\n * To override the symbology of *most* Features within a view, specify a `defaultOverrides` to be applied to any Feature not explicitly overridden.\r\n * If default overrides are defined and some Features should draw normally without being affected by the default overrides, override that Feature with\r\n * an Appearance which defines no overrides.\r\n *\r\n * It is possible to override multiple aspects of a Feature. For example, you might specify that all elements belonging to subcategory \"A\" should be drawn in red, and\r\n * that the element with Id \"0x123\" should be drawn with 0.25 transparency. In this case, when drawing a Feature with subcategory \"A\" and element Id \"0x123\", the two overrides will\r\n * be merged, causing the Feature's geometry to draw 25% transparent red. On the other hand, if subcategory \"A\" is specified to draw in red and element \"0x123\" to draw in green,\r\n * the color specified by the element override will take precedence over that specified for the subcategory, resulting in a green Feature.\r\n *\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.neverDrawn]]\r\n */\r\n export class Overrides extends FeatureOverrides {\r\n private _source?: Source;\r\n\r\n /** @alpha */\r\n public get source(): Source | undefined {\r\n return this._source;\r\n }\r\n\r\n /** Construct a new Overrides. The result is an empty set of overrides if no view or viewport is supplied.\r\n * @param view If supplied, the overrides will be initialized based on the current state of the view or viewport.\r\n */\r\n public constructor(view?: ViewState | Viewport) {\r\n super();\r\n if (undefined !== view) {\r\n if (view instanceof Viewport)\r\n this.initFromViewport(view);\r\n else\r\n this.initFromView(view);\r\n }\r\n }\r\n\r\n /** Create symbology overrides associated with a [[FeatureSymbology.Source]].\r\n * @alpha\r\n */\r\n public static withSource(source: Source, view?: ViewState | Viewport): Overrides {\r\n const ovrs = new Overrides(view);\r\n ovrs._source = source;\r\n return ovrs;\r\n }\r\n\r\n /** Initialize these Overrides based on a specific view.\r\n * @internal\r\n */\r\n public initFromView(view: ViewState): void {\r\n this._initFromView(view);\r\n this._initSubCategoryOverrides(view);\r\n }\r\n\r\n /** Initialize these Overrides based on a specific viewport.\r\n * @internal\r\n */\r\n public initFromViewport(viewport: Viewport): void {\r\n const view = viewport.view;\r\n this._initFromView(view);\r\n\r\n if (undefined !== viewport.neverDrawn)\r\n this.setNeverDrawnSet(viewport.neverDrawn);\r\n\r\n if (undefined !== viewport.alwaysDrawn)\r\n this.setAlwaysDrawnSet(viewport.alwaysDrawn, viewport.isAlwaysDrawnExclusive);\r\n\r\n viewport.addFeatureOverrides(this);\r\n viewport.addModelSubCategoryVisibilityOverrides(this, this._modelSubCategoryOverrides);\r\n\r\n // This will include any per-model subcategory visibility overrides added above.\r\n this._initSubCategoryOverrides(view);\r\n }\r\n\r\n private _initFromView(view: ViewState): void {\r\n const { viewFlags } = view;\r\n const { constructions, dimensions, patterns } = viewFlags;\r\n\r\n this.neverDrawnAnimationNodes.clear();\r\n this.animationNodeOverrides.clear();\r\n\r\n for (const excluded of view.displayStyle.settings.excludedElementIds)\r\n this.setNeverDrawn(excluded);\r\n\r\n this._constructions = constructions;\r\n this._dimensions = dimensions;\r\n this._patterns = patterns;\r\n this._lineWeights = viewFlags.weights;\r\n\r\n for (const categoryId of view.categorySelector.categories) {\r\n const subCategoryIds = view.iModel.subcategories.getSubCategories(categoryId);\r\n if (undefined === subCategoryIds)\r\n continue;\r\n\r\n for (const subCategoryId of subCategoryIds) {\r\n if (view.isSubCategoryVisible(subCategoryId)) {\r\n const idLo = Id64.getLowerUint32(subCategoryId);\r\n const idHi = Id64.getUpperUint32(subCategoryId);\r\n this._visibleSubCategories.add(idLo, idHi);\r\n\r\n const app = view.iModel.subcategories.getSubCategoryAppearance(subCategoryId);\r\n if (undefined !== app)\r\n this._subCategoryPriorities.set(idLo, idHi, app.priority);\r\n }\r\n }\r\n }\r\n const style = view.displayStyle;\r\n style.settings.modelAppearanceOverrides.forEach((override, modelId) => this.overrideModel(modelId, override, false));\r\n style.forEachRealityModel((realityModel) => {\r\n if (realityModel.appearanceOverrides && realityModel.modelId)\r\n this.overrideModel(realityModel.modelId, realityModel.appearanceOverrides);\r\n });\r\n\r\n const script = style.scheduleState;\r\n if (script)\r\n script.getSymbologyOverrides(this, style.settings.timePoint ?? 0);\r\n\r\n if (!view.is3d())\r\n return;\r\n\r\n const planProjectionSettings = view.getDisplayStyle3d().settings.planProjectionSettings;\r\n if (undefined === planProjectionSettings)\r\n return;\r\n\r\n for (const [modelId, projSettings] of planProjectionSettings) {\r\n if (undefined !== projSettings.transparency)\r\n this.overrideModel(modelId, FeatureAppearance.fromJSON({ transparency: projSettings.transparency }));\r\n }\r\n }\r\n\r\n private _initSubCategoryOverrides(view: ViewState): void {\r\n const addOverride = (idLo: number, idHi: number) => {\r\n const subCategoryId = Id64.fromUint32Pair(idLo, idHi);\r\n const ovr = view.getSubCategoryOverride(subCategoryId);\r\n if (undefined !== ovr) {\r\n const app = FeatureAppearance.fromSubCategoryOverride(ovr);\r\n if (app.overridesSymbology)\r\n this._subCategoryOverrides.set(idLo, idHi, app);\r\n\r\n if (undefined !== ovr.priority)\r\n this._subCategoryPriorities.set(idLo, idHi, ovr.priority);\r\n }\r\n };\r\n\r\n // Add overrides for all subcategories visible in the view\r\n this._visibleSubCategories.forEach((idLo: number, idHi: number) => {\r\n addOverride(idLo, idHi);\r\n });\r\n\r\n // Add overrides for all subcategories overridden to be visible in specific models\r\n this._modelSubCategoryOverrides.forEach((_modelIdLo: number, _modelIdHi: number, subcats: Id64.Uint32Set) => {\r\n subcats.forEach((idLo: number, idHi: number) => {\r\n if (!this.isSubCategoryVisible(idLo, idHi)) {\r\n // Overridden to be visible in one or more models - will need the appearance overrides\r\n addOverride(idLo, idHi);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"FeatureSymbology.js","sourceRoot":"","sources":["../../../src/render/FeatureSymbology.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 Rendering\r\n */\r\n\r\nimport { BeEvent, Id64 } from \"@itwin/core-bentley\";\r\nimport { FeatureAppearance, FeatureOverrides } from \"@itwin/core-common\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { ViewState } from \"../ViewState\";\r\n\r\n// cspell:ignore subcat subcats\r\n\r\n/** Contains types that enable an application to customize how [Feature]($common)s are drawn within a [[Viewport]].\r\n * @public\r\n */\r\nexport namespace FeatureSymbology {\r\n /** An object that serves as the source of a [[FeatureSymbology.Overrides]].\r\n * Use this if you are drawing the same tiles into a single Viewport and overriding the FeatureSymbology.Overrides applied to them\r\n * by settings [[GraphicBranch.symbologyOverrides]].\r\n * Each tile will have a separate set of feature overrides per combination of Source and Viewport. This prevents the display system\r\n * from constantly recomputing the feature overrides for a tile.\r\n * You must call `onSourceDisposed.raiseEvent()` when the source is no longer being used by the Viewport to allow the feature overrides\r\n * and their WebGL resources to be freed - failure to do so will result in memory leaks, which may eventually produce WebGL context loss.\r\n * @alpha\r\n */\r\n export interface Source {\r\n /** An event raised when this source becomes disassociated with the viewport, indicating any WebGL resources allocated for it\r\n * can be freed.\r\n * Failure to invoke this event appropriately will result in memory leaks, which may eventually produce WebGL context loss.\r\n */\r\n readonly onSourceDisposed: BeEvent<() => void>;\r\n }\r\n\r\n /** Allows a [[Viewport]] to customize the appearance of individual [Feature]($common)s within it.\r\n *\r\n * The Viewport computes its base Overrides based on the following:\r\n * - The set of categories enabled for display in its [[CategorySelectorState]]. Every [[SubCategory]] belonging to an enabled [[Category]] is added to the set of visible subcategories - all other subcategories are assumed to be invisible.\r\n * - For the set of visible subcategories, any [[SubCategoryOverride]]s defined by the view's [[DisplayStyleState]] are applied. This may render some subcategories invisible, and change the symbology of others.\r\n * - The visibility of each [GeometryClass]($common) is set based on the view's [ViewFlags]($common).\r\n * - The line weight is overridden to 1 pixel for all Features if line weight has been disabled by the view's [ViewFlags]($common).\r\n * - The sets of elements which are always drawn and never drawn are initialized from the [[Viewport]]'s sets.\r\n * An application can further customize the symbology of any Features by registering a [[FeatureOverrideProvider]] with a [[Viewport]]. That provider's addFeatureOverrides function will be invoked\r\n * whenever the Overrides need to be regenerated.\r\n *\r\n * To override the symbology of *most* Features within a view, specify a `defaultOverrides` to be applied to any Feature not explicitly overridden.\r\n * If default overrides are defined and some Features should draw normally without being affected by the default overrides, override that Feature with\r\n * an Appearance which defines no overrides.\r\n *\r\n * It is possible to override multiple aspects of a Feature. For example, you might specify that all elements belonging to subcategory \"A\" should be drawn in red, and\r\n * that the element with Id \"0x123\" should be drawn with 0.25 transparency. In this case, when drawing a Feature with subcategory \"A\" and element Id \"0x123\", the two overrides will\r\n * be merged, causing the Feature's geometry to draw 25% transparent red. On the other hand, if subcategory \"A\" is specified to draw in red and element \"0x123\" to draw in green,\r\n * the color specified by the element override will take precedence over that specified for the subcategory, resulting in a green Feature.\r\n *\r\n * @see [[Viewport.alwaysDrawn]]\r\n * @see [[Viewport.neverDrawn]]\r\n */\r\n export class Overrides extends FeatureOverrides {\r\n private _source?: Source;\r\n\r\n /** @alpha */\r\n public get source(): Source | undefined {\r\n return this._source;\r\n }\r\n\r\n /** Construct a new Overrides. The result is an empty set of overrides if no view or viewport is supplied.\r\n * @param view If supplied, the overrides will be initialized based on the current state of the view or viewport.\r\n */\r\n public constructor(view?: ViewState | Viewport) {\r\n super();\r\n if (undefined !== view) {\r\n if (view instanceof Viewport)\r\n this.initFromViewport(view);\r\n else\r\n this.initFromView(view);\r\n }\r\n }\r\n\r\n /** Create symbology overrides associated with a [[FeatureSymbology.Source]].\r\n * @alpha\r\n */\r\n public static withSource(source: Source, view?: ViewState | Viewport): Overrides {\r\n const ovrs = new Overrides(view);\r\n ovrs._source = source;\r\n return ovrs;\r\n }\r\n\r\n /** Initialize these Overrides based on a specific view.\r\n * @internal\r\n */\r\n public initFromView(view: ViewState): void {\r\n this._initFromView(view);\r\n this._initSubCategoryOverrides(view);\r\n }\r\n\r\n /** Initialize these Overrides based on a specific viewport.\r\n * @internal\r\n */\r\n public initFromViewport(viewport: Viewport): void {\r\n const view = viewport.view;\r\n this._initFromView(view);\r\n\r\n if (undefined !== viewport.neverDrawn)\r\n this.setNeverDrawnSet(viewport.neverDrawn);\r\n\r\n if (undefined !== viewport.alwaysDrawn)\r\n this.setAlwaysDrawnSet(viewport.alwaysDrawn, viewport.isAlwaysDrawnExclusive);\r\n\r\n viewport.addFeatureOverrides(this);\r\n viewport.addModelSubCategoryVisibilityOverrides(this, this._modelSubCategoryOverrides);\r\n\r\n // This will include any per-model subcategory visibility overrides added above.\r\n this._initSubCategoryOverrides(view);\r\n }\r\n\r\n private _initFromView(view: ViewState): void {\r\n const { viewFlags } = view;\r\n const { constructions, dimensions, patterns } = viewFlags;\r\n\r\n this.neverDrawnAnimationNodes.clear();\r\n this.animationNodeOverrides.clear();\r\n\r\n for (const excluded of view.displayStyle.settings.excludedElementIds)\r\n this.setNeverDrawn(excluded);\r\n\r\n this._constructions = constructions;\r\n this._dimensions = dimensions;\r\n this._patterns = patterns;\r\n this._lineWeights = viewFlags.weights;\r\n\r\n for (const categoryId of view.categorySelector.categories) {\r\n const subCategoryIds = view.iModel.subcategories.getSubCategories(categoryId);\r\n if (undefined === subCategoryIds)\r\n continue;\r\n\r\n for (const subCategoryId of subCategoryIds) {\r\n if (view.isSubCategoryVisible(subCategoryId)) {\r\n const idLo = Id64.getLowerUint32(subCategoryId);\r\n const idHi = Id64.getUpperUint32(subCategoryId);\r\n this._visibleSubCategories.add(idLo, idHi);\r\n\r\n const app = view.iModel.subcategories.getSubCategoryAppearance(subCategoryId);\r\n if (undefined !== app)\r\n this._subCategoryPriorities.set(idLo, idHi, app.priority);\r\n }\r\n }\r\n }\r\n const style = view.displayStyle;\r\n style.settings.modelAppearanceOverrides.forEach((appearance, modelId) => this.override({ modelId, appearance, onConflict: \"skip\" }));\r\n\r\n style.forEachRealityModel((realityModel) => {\r\n if (realityModel.appearanceOverrides && realityModel.modelId)\r\n this.override({ modelId: realityModel.modelId, appearance: realityModel.appearanceOverrides });\r\n });\r\n\r\n const script = style.scheduleState;\r\n if (script)\r\n script.getSymbologyOverrides(this, style.settings.timePoint ?? 0);\r\n\r\n if (!view.is3d())\r\n return;\r\n\r\n const planProjectionSettings = view.getDisplayStyle3d().settings.planProjectionSettings;\r\n if (undefined === planProjectionSettings)\r\n return;\r\n\r\n for (const [modelId, projSettings] of planProjectionSettings) {\r\n if (undefined !== projSettings.transparency)\r\n this.override({ modelId, appearance: FeatureAppearance.fromJSON({ transparency: projSettings.transparency }) });\r\n }\r\n }\r\n\r\n private _initSubCategoryOverrides(view: ViewState): void {\r\n const addOverride = (idLo: number, idHi: number) => {\r\n const subCategoryId = Id64.fromUint32Pair(idLo, idHi);\r\n const ovr = view.getSubCategoryOverride(subCategoryId);\r\n if (undefined !== ovr) {\r\n const app = FeatureAppearance.fromSubCategoryOverride(ovr);\r\n if (app.overridesSymbology)\r\n this._subCategoryOverrides.set(idLo, idHi, app);\r\n\r\n if (undefined !== ovr.priority)\r\n this._subCategoryPriorities.set(idLo, idHi, ovr.priority);\r\n }\r\n };\r\n\r\n // Add overrides for all subcategories visible in the view\r\n this._visibleSubCategories.forEach((idLo: number, idHi: number) => {\r\n addOverride(idLo, idHi);\r\n });\r\n\r\n // Add overrides for all subcategories overridden to be visible in specific models\r\n this._modelSubCategoryOverrides.forEach((_modelIdLo: number, _modelIdHi: number, subcats: Id64.Uint32Set) => {\r\n subcats.forEach((idLo: number, idHi: number) => {\r\n if (!this.isSubCategoryVisible(idLo, idHi)) {\r\n // Overridden to be visible in one or more models - will need the appearance overrides\r\n addOverride(idLo, idHi);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -20,6 +20,13 @@ import { RenderGraphic } from "./RenderGraphic";
|
|
|
20
20
|
import { RenderMemory } from "./RenderMemory";
|
|
21
21
|
import { RenderPlanarClassifier } from "./RenderPlanarClassifier";
|
|
22
22
|
import { RenderTextureDrape } from "./RenderSystem";
|
|
23
|
+
/** Special values of [[GraphicBranch.animationNodeId]].
|
|
24
|
+
* All other values refer to an [ElementTimeline.batchId]($common) that applies a transform to the graphics in the branch.
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export declare enum AnimationNodeId {
|
|
28
|
+
Untransformed = 4294967295
|
|
29
|
+
}
|
|
23
30
|
/**
|
|
24
31
|
* A node in a scene graph. The branch itself is not renderable. Instead it contains a list of RenderGraphics,
|
|
25
32
|
* and a transform, symbology overrides, and clip volume which are to be applied when rendering them.
|
|
@@ -38,10 +45,14 @@ export declare class GraphicBranch implements IDisposable {
|
|
|
38
45
|
viewFlagOverrides: ViewFlagOverrides;
|
|
39
46
|
/** Optional symbology overrides to be applied to all graphics in this branch */
|
|
40
47
|
symbologyOverrides?: FeatureSymbology.Overrides;
|
|
41
|
-
/** Optional animation branch Id.
|
|
48
|
+
/** Optional animation branch Id that incorporates the model Id and, for element timelines, the batch Id.
|
|
42
49
|
* @internal
|
|
43
50
|
*/
|
|
44
51
|
animationId?: string;
|
|
52
|
+
/** Identifies the node in the [RenderSchedule.Script]($backend) with which this branch is associated.
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
animationNodeId?: AnimationNodeId | number;
|
|
45
56
|
/** Constructor
|
|
46
57
|
* @param ownsEntries If true, when this branch is [[dispose]]d, all of the [[RenderGraphic]]s it contains will also be disposed.
|
|
47
58
|
*/
|
|
@@ -93,5 +104,10 @@ export interface AnimationBranchState {
|
|
|
93
104
|
/** Mapping from node/branch IDs to animation branch state
|
|
94
105
|
* @internal
|
|
95
106
|
*/
|
|
96
|
-
export
|
|
107
|
+
export interface AnimationBranchStates {
|
|
108
|
+
/** Maps node Id to branch state. */
|
|
109
|
+
readonly branchStates: Map<string, AnimationBranchState>;
|
|
110
|
+
/** Ids of nodes that apply a transform. */
|
|
111
|
+
readonly transformNodeIds: ReadonlySet<number>;
|
|
112
|
+
}
|
|
97
113
|
//# sourceMappingURL=GraphicBranch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicBranch.d.ts","sourceRoot":"","sources":["../../../src/render/GraphicBranch.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE;QACL,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH;AAED,OAAO,EAAgB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,WAAW;IAC/C,qCAAqC;IACrC,SAAgB,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9C,6GAA6G;IAC7G,SAAgB,WAAW,EAAE,OAAO,CAAC;IACrC;;OAEG;IACI,iBAAiB,EAAE,iBAAiB,CAAM;IACjD,gFAAgF;IACzE,kBAAkB,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC;IACvD;;OAEG;IACI,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"GraphicBranch.d.ts","sourceRoot":"","sources":["../../../src/render/GraphicBranch.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
* @module Rendering
|
|
7
7
|
*/
|
|
8
8
|
import { disposeArray } from "@itwin/core-bentley";
|
|
9
|
+
/** Special values of [[GraphicBranch.animationNodeId]].
|
|
10
|
+
* All other values refer to an [ElementTimeline.batchId]($common) that applies a transform to the graphics in the branch.
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export var AnimationNodeId;
|
|
14
|
+
(function (AnimationNodeId) {
|
|
15
|
+
AnimationNodeId[AnimationNodeId["Untransformed"] = 4294967295] = "Untransformed";
|
|
16
|
+
})(AnimationNodeId || (AnimationNodeId = {}));
|
|
9
17
|
/**
|
|
10
18
|
* A node in a scene graph. The branch itself is not renderable. Instead it contains a list of RenderGraphics,
|
|
11
19
|
* and a transform, symbology overrides, and clip volume which are to be applied when rendering them.
|