@itwin/core-frontend 3.5.0-dev.8 → 3.5.1
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 +103 -1
- package/lib/cjs/AccuSnap.d.ts +7 -1
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +26 -3
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.d.ts +28 -1
- package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
- package/lib/cjs/BriefcaseConnection.js +29 -8
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.js +9 -9
- package/lib/cjs/BriefcaseTxns.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js +2 -2
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/IModelApp.d.ts +6 -0
- package/lib/cjs/IModelApp.d.ts.map +1 -1
- package/lib/cjs/IModelApp.js +6 -0
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +32 -2
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +44 -6
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts +14 -1
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +25 -0
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/MarginPercent.d.ts +27 -2
- package/lib/cjs/MarginPercent.d.ts.map +1 -1
- package/lib/cjs/MarginPercent.js +8 -2
- package/lib/cjs/MarginPercent.js.map +1 -1
- package/lib/cjs/ModelState.d.ts +2 -1
- package/lib/cjs/ModelState.d.ts.map +1 -1
- package/lib/cjs/ModelState.js +5 -3
- package/lib/cjs/ModelState.js.map +1 -1
- package/lib/cjs/NativeApp.d.ts +5 -1
- package/lib/cjs/NativeApp.d.ts.map +1 -1
- package/lib/cjs/NativeApp.js +25 -20
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.js +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts +44 -1
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +41 -14
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts +1 -0
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +3 -0
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.d.ts +1 -0
- package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js +3 -0
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +1 -0
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +3 -0
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/cjs/ViewAnimation.d.ts +10 -2
- package/lib/cjs/ViewAnimation.d.ts.map +1 -1
- package/lib/cjs/ViewAnimation.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +3 -2
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewPose.d.ts +62 -10
- package/lib/cjs/ViewPose.d.ts.map +1 -1
- package/lib/cjs/ViewPose.js +37 -8
- package/lib/cjs/ViewPose.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +18 -10
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +39 -15
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +7 -2
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/extension/ExtensionRuntime.js +13 -0
- package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +3 -0
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.d.ts +3 -4
- package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js +9 -3
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderMaterial.d.ts +3 -1
- package/lib/cjs/render/RenderMaterial.d.ts.map +1 -1
- package/lib/cjs/render/RenderMaterial.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +1 -0
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/primitives/SurfaceParams.d.ts +0 -1
- package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js +0 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js +0 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +0 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +0 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +2 -2
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +32 -0
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js +74 -1
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +3 -3
- package/lib/cjs/render/webgl/EDL.d.ts +40 -0
- package/lib/cjs/render/webgl/EDL.d.ts.map +1 -0
- package/lib/cjs/render/webgl/EDL.js +264 -0
- package/lib/cjs/render/webgl/EDL.js.map +1 -0
- package/lib/cjs/render/webgl/EdgeSettings.js +2 -2
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +0 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +16 -11
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/FrameBuffer.d.ts +4 -0
- package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FrameBuffer.js +9 -0
- package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/FrustumUniforms.d.ts +7 -0
- package/lib/cjs/render/webgl/FrustumUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/Layer.js +2 -2
- package/lib/cjs/render/webgl/LayerCommands.js +2 -2
- package/lib/cjs/render/webgl/MeshData.d.ts +1 -1
- package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
- package/lib/cjs/render/webgl/MeshData.js +13 -1
- package/lib/cjs/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.js +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +7 -7
- package/lib/cjs/render/webgl/PlanarClassifier.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 -0
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts +3 -1
- package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js +8 -3
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +9 -0
- package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RealityModelUniforms.js +50 -0
- package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +30 -30
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.d.ts +33 -21
- package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js +10 -6
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts +5 -0
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +192 -73
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +2 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +6 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js +2 -2
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +3 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +22 -11
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +1 -1
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +1 -0
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +1 -0
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +4 -3
- 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 +18 -3
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +4 -4
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.d.ts +6 -2
- package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js +1 -2
- package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/render/webgl/VisibleTileFeatures.js +5 -5
- package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +2 -1
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Common.d.ts +3 -1
- package/lib/cjs/render/webgl/glsl/Common.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Common.js +28 -33
- package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EDL.d.ts +14 -0
- package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -0
- package/lib/cjs/render/webgl/glsl/EDL.js +260 -0
- package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -0
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +9 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Lighting.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Lighting.js +6 -8
- package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.js +8 -3
- package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts +1 -0
- package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +6 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RenderPass.js +12 -12
- package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -4
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +87 -15
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +2 -6
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/tile/DynamicIModelTile.js +1 -1
- package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +13 -2
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +67 -23
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.js +1 -1
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.js +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +5 -0
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +14 -7
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +2 -2
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/RealityModelTileTree.js +52 -20
- package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTile.d.ts +2 -2
- package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTile.js +11 -4
- package/lib/cjs/tile/RealityTile.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 +15 -2
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js +1 -1
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/Tile.d.ts +5 -0
- package/lib/cjs/tile/Tile.d.ts.map +1 -1
- package/lib/cjs/tile/Tile.js +5 -0
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +13 -6
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +5 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +2 -0
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.js +1 -1
- package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/TileStorage.d.ts.map +1 -1
- package/lib/cjs/tile/TileStorage.js +12 -6
- package/lib/cjs/tile/TileStorage.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +1 -0
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +1 -0
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.d.ts +5 -2
- package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +17 -2
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts +51 -5
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +120 -48
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +9 -9
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +26 -0
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -0
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +97 -0
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -0
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -4
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +11 -96
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts +2 -0
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +6 -4
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +18 -4
- package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js +25 -5
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +6 -4
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +12 -16
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +26 -5
- package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +69 -48
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +4 -1
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
- package/lib/cjs/tools/EditManipulator.js +2 -1
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/Tool.js +1 -1
- 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 +6 -4
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/AccuSnap.d.ts +7 -1
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +27 -4
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/BriefcaseConnection.d.ts +28 -1
- package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
- package/lib/esm/BriefcaseConnection.js +30 -9
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/BriefcaseTxns.js +9 -9
- package/lib/esm/BriefcaseTxns.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.js +2 -2
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/IModelApp.d.ts +6 -0
- package/lib/esm/IModelApp.d.ts.map +1 -1
- package/lib/esm/IModelApp.js +6 -0
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +32 -2
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +44 -6
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts +14 -1
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +25 -0
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/MarginPercent.d.ts +27 -2
- package/lib/esm/MarginPercent.d.ts.map +1 -1
- package/lib/esm/MarginPercent.js +8 -2
- package/lib/esm/MarginPercent.js.map +1 -1
- package/lib/esm/ModelState.d.ts +2 -1
- package/lib/esm/ModelState.d.ts.map +1 -1
- package/lib/esm/ModelState.js +5 -3
- package/lib/esm/ModelState.js.map +1 -1
- package/lib/esm/NativeApp.d.ts +5 -1
- package/lib/esm/NativeApp.d.ts.map +1 -1
- package/lib/esm/NativeApp.js +25 -20
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.js +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts +44 -1
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +39 -13
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts +1 -0
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +3 -0
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.d.ts +1 -0
- package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js +3 -0
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +1 -0
- package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js +3 -0
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/esm/ViewAnimation.d.ts +10 -2
- package/lib/esm/ViewAnimation.d.ts.map +1 -1
- package/lib/esm/ViewAnimation.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +3 -2
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewPose.d.ts +62 -10
- package/lib/esm/ViewPose.d.ts.map +1 -1
- package/lib/esm/ViewPose.js +37 -8
- package/lib/esm/ViewPose.js.map +1 -1
- package/lib/esm/ViewState.d.ts +18 -10
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +39 -15
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +7 -2
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/extension/ExtensionRuntime.js +15 -2
- package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +3 -0
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.d.ts +3 -4
- package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
- package/lib/esm/render/RealityMeshParams.js +10 -4
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderMaterial.d.ts +3 -1
- package/lib/esm/render/RenderMaterial.d.ts.map +1 -1
- package/lib/esm/render/RenderMaterial.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +1 -0
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/primitives/SurfaceParams.d.ts +0 -1
- package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js +0 -1
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js +0 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +0 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +0 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js +2 -2
- package/lib/esm/render/webgl/CachedGeometry.d.ts +32 -0
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js +69 -0
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +3 -3
- package/lib/esm/render/webgl/EDL.d.ts +40 -0
- package/lib/esm/render/webgl/EDL.d.ts.map +1 -0
- package/lib/esm/render/webgl/EDL.js +260 -0
- package/lib/esm/render/webgl/EDL.js.map +1 -0
- package/lib/esm/render/webgl/EdgeSettings.js +2 -2
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +0 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +16 -11
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/FrameBuffer.d.ts +4 -0
- package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
- package/lib/esm/render/webgl/FrameBuffer.js +9 -0
- package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/esm/render/webgl/FrustumUniforms.d.ts +7 -0
- package/lib/esm/render/webgl/FrustumUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/esm/render/webgl/Layer.js +2 -2
- package/lib/esm/render/webgl/LayerCommands.js +2 -2
- package/lib/esm/render/webgl/MeshData.d.ts +1 -1
- package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
- package/lib/esm/render/webgl/MeshData.js +13 -1
- package/lib/esm/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/MeshGeometry.js +1 -1
- package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +7 -7
- package/lib/esm/render/webgl/PlanarClassifier.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 -0
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts +3 -1
- package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js +8 -3
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RealityModelUniforms.d.ts +9 -0
- package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -1
- package/lib/esm/render/webgl/RealityModelUniforms.js +50 -0
- package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +30 -30
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.d.ts +33 -21
- package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js +10 -6
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts +5 -0
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +191 -74
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +2 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +6 -1
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js +2 -2
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts +3 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js +22 -11
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +1 -1
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +1 -0
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +1 -0
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +4 -3
- 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 +18 -3
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +4 -4
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.d.ts +6 -2
- package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.js +1 -2
- package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/render/webgl/VisibleTileFeatures.js +5 -5
- package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +2 -1
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Common.d.ts +3 -1
- package/lib/esm/render/webgl/glsl/Common.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Common.js +25 -31
- package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EDL.d.ts +14 -0
- package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -0
- package/lib/esm/render/webgl/glsl/EDL.js +253 -0
- package/lib/esm/render/webgl/glsl/EDL.js.map +1 -0
- package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +9 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Lighting.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Lighting.js +6 -8
- package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointCloud.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/PointCloud.js +8 -3
- package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.d.ts +1 -0
- package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -0
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RenderPass.js +12 -12
- package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -4
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +88 -16
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.js +2 -6
- package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/tile/DynamicIModelTile.js +1 -1
- package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +13 -2
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +67 -23
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.js +1 -1
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.js +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +5 -0
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +14 -7
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +2 -2
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/RealityModelTileTree.js +52 -20
- package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTile.d.ts +2 -2
- package/lib/esm/tile/RealityTile.d.ts.map +1 -1
- package/lib/esm/tile/RealityTile.js +11 -4
- package/lib/esm/tile/RealityTile.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 +16 -3
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.js +1 -1
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/Tile.d.ts +5 -0
- package/lib/esm/tile/Tile.d.ts.map +1 -1
- package/lib/esm/tile/Tile.js +5 -0
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +13 -6
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +5 -1
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +2 -0
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileRequestChannels.js +1 -1
- package/lib/esm/tile/TileRequestChannels.js.map +1 -1
- package/lib/esm/tile/TileStorage.d.ts.map +1 -1
- package/lib/esm/tile/TileStorage.js +12 -6
- package/lib/esm/tile/TileStorage.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +1 -0
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +1 -0
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.d.ts +5 -2
- package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +18 -3
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts +51 -5
- package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +121 -49
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +9 -9
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +26 -0
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -0
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +93 -0
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -0
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -4
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +10 -95
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts +2 -0
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +6 -4
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +18 -4
- package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js +26 -6
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +6 -4
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +12 -16
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +26 -5
- package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +70 -49
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +4 -1
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
- package/lib/esm/tools/EditManipulator.js +2 -1
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/Tool.js +1 -1
- 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 +6 -4
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/package.json +25 -23
- package/lib/cjs/tile/object-storage-azure.js +0 -5
- package/lib/esm/tile/object-storage-azure.js +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WmsCapabilities.js","sourceRoot":"","sources":["../../../../src/tile/map/WmsCapabilities.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 Views\r\n */\r\n\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { request, RequestBasicCredentials, RequestOptions } from \"../../request/Request\";\r\nimport WMS from \"wms-capabilities\";\r\nimport { MapCartoRectangle, WmsUtilities } from \"../internal\";\r\n\r\n/**\r\n * fetch XML from HTTP request\r\n * @param url server URL to address the request\r\n * @internal\r\n */\r\nasync function getXml(url: string, credentials?: RequestBasicCredentials): Promise<any> {\r\n const options: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"text\",\r\n timeout: { response: 20000 },\r\n retries: 2,\r\n auth: credentials,\r\n };\r\n const data = await request(url, options);\r\n return data.text;\r\n}\r\nfunction rangeFromJSONArray(json: any): MapCartoRectangle | undefined {\r\n return (Array.isArray(json) && json.length === 4) ? MapCartoRectangle.fromDegrees(json[0], json[1], json[2], json[3]) : undefined;\r\n}\r\n\r\nfunction rangeFromJSON(json: any): MapCartoRectangle | undefined {\r\n if (undefined !== json.LatLonBoundingBox)\r\n return rangeFromJSONArray(json.LatLonBoundingBox);\r\n else if (Array.isArray(json.EX_GeographicBoundingBox)) {\r\n return rangeFromJSONArray(json.EX_GeographicBoundingBox);\r\n } else {\r\n if (Array.isArray(json.BoundingBox))\r\n for (const boundingBox of json.BoundingBox) {\r\n if (boundingBox.crs === \"CRS:84\" || boundingBox.crs === \"EPSG:4326\") {\r\n return rangeFromJSONArray(boundingBox.extent);\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction initArray<T>(input: any): undefined | T[] {\r\n return Array.isArray(input) ? input.slice() : undefined;\r\n}\r\n\r\n/** Encapsulation of the capabilities for an WMS server\r\n * @internal\r\n */\r\nexport namespace WmsCapability {\r\n\r\n export class Service {\r\n public readonly name: string;\r\n public readonly title?: string;\r\n public readonly abstract?: string;\r\n public readonly onlineResource?: string;\r\n public readonly contactInformation?: string;\r\n public readonly accessConstraints?: string;\r\n\r\n constructor(json: any) {\r\n this.name = json.Name ? json.Name : \"\";\r\n this.title = json.Title;\r\n this.abstract = json.Abstract;\r\n this.onlineResource = json.OnlineResource;\r\n this.contactInformation = json.ContactInformation;\r\n this.accessConstraints = json.AccessConstraints;\r\n }\r\n }\r\n\r\n export class Layer {\r\n public readonly queryable: boolean;\r\n public readonly title?: string;\r\n public readonly srs?: string[];\r\n public readonly cartoRange?: MapCartoRectangle;\r\n public readonly subLayers = new Array<SubLayer>();\r\n private static readonly PREFIX_SEPARATOR = \":\";\r\n\r\n constructor(json: any, capabilities: WmsCapabilities) {\r\n this.queryable = json.queryable;\r\n this.title = json.title;\r\n this.srs = initArray<string>(capabilities.isVersion13 ? json.CRS : json.SRS);\r\n this.cartoRange = rangeFromJSON(json);\r\n this.subLayers.push(new SubLayer(json, capabilities));\r\n }\r\n public getSubLayers(visible = true): MapSubLayerProps[] {\r\n const subLayers = new Array<MapSubLayerProps>();\r\n let index = 1;\r\n let childrenFound = false;\r\n const pushSubLayer = ((subLayer: SubLayer, parent?: number) => {\r\n let children;\r\n const id = index++;\r\n if (subLayer.children) {\r\n childrenFound = false;\r\n children = new Array<number>();\r\n subLayer.children.forEach((child) => {\r\n children.push(index);\r\n pushSubLayer(child, id);\r\n });\r\n }\r\n subLayers.push({ name: subLayer.name, title: subLayer.title, visible, parent, children, id });\r\n });\r\n this.subLayers.forEach((subLayer) => pushSubLayer(subLayer));\r\n\r\n if (!childrenFound) {\r\n const prefixed = new Map<string, MapSubLayerProps[]>();\r\n subLayers.forEach((subLayer) => {\r\n if (subLayer.name && subLayer.name.indexOf(Layer.PREFIX_SEPARATOR) > 0) {\r\n const prefix = subLayer.name.slice(0, subLayer.name.indexOf(Layer.PREFIX_SEPARATOR));\r\n const found = prefixed.get(prefix);\r\n if (found)\r\n found.push(subLayer);\r\n else\r\n prefixed.set(prefix, [subLayer]);\r\n }\r\n });\r\n if (prefixed.size > 1) {\r\n // Preserve the root node if any.\r\n const rootNode = (this.subLayers.length === 1 && this.subLayers[0].children && this.subLayers[0].children.length > 1) ? subLayers.find((curSubLayer) => this.subLayers[0].name === curSubLayer.name)?.id : undefined;\r\n prefixed.forEach((children, parent) => {\r\n children.forEach((child) => {\r\n child.parent = index;\r\n // Remove the prefix from the title if present.\r\n if (child.title && child.title.indexOf(parent + Layer.PREFIX_SEPARATOR) === 0)\r\n child.title = child.title.slice(parent.length + Layer.PREFIX_SEPARATOR.length);\r\n });\r\n subLayers.push({ name: \"\", title: parent, parent: rootNode, id: index++, children: children.map((child) => child.id as number), visible });\r\n });\r\n }\r\n }\r\n\r\n return subLayers;\r\n }\r\n\r\n public getSubLayersCrs(layerNameFilter: string[]): Map<string, string[]> {\r\n const subLayerCrs = new Map<string, string[]>();\r\n\r\n const processSubLayer = ((subLayer: SubLayer) => {\r\n if (layerNameFilter.includes(subLayer.name)) {\r\n subLayerCrs.set(subLayer.name, subLayer.crs);\r\n }\r\n if (subLayer.children) {\r\n subLayer.children.forEach((child) => {\r\n processSubLayer(child);\r\n });\r\n }\r\n });\r\n\r\n this.subLayers.forEach((subLayer) => processSubLayer(subLayer));\r\n return subLayerCrs;\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class SubLayer {\r\n public readonly name: string;\r\n public readonly title: string;\r\n public readonly crs: string[];\r\n public readonly ownCrs: string[]; // CRS specific to this layer (ie. not including inherited CRS)\r\n public readonly cartoRange?: MapCartoRectangle;\r\n public readonly children?: SubLayer[];\r\n public readonly queryable: boolean;\r\n public constructor(_json: any, capabilities: WmsCapabilities, public readonly parent?: SubLayer) {\r\n\r\n const getParentCrs = (parentLayer: SubLayer, crsSet: Set<string>) => {\r\n parentLayer.crs.forEach((parentCrs) => crsSet.add(parentCrs));\r\n if (parentLayer.parent) {\r\n getParentCrs(parentLayer.parent, crsSet);\r\n }\r\n };\r\n\r\n this.name = _json.Name ? _json.Name : \"\";\r\n this.title = _json.Title;\r\n this.queryable = _json.queryable ? true : false;\r\n this.cartoRange = rangeFromJSON(_json);\r\n this.ownCrs = capabilities.isVersion13 ? _json.CRS : _json.SRS;\r\n const crs = new Set<string>(this.ownCrs);\r\n if (parent) {\r\n getParentCrs(parent, crs);\r\n }\r\n this.crs = [...crs];\r\n\r\n if (Array.isArray(_json.Layer)) {\r\n this.children = new Array<SubLayer>();\r\n for (const childLayer of _json.Layer) {\r\n this.children.push(new SubLayer(childLayer, capabilities, this));\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WmsCapabilities {\r\n private static _capabilitiesCache = new Map<string, WmsCapabilities | undefined>();\r\n public readonly service: WmsCapability.Service;\r\n public readonly version?: string;\r\n public readonly isVersion13: boolean;\r\n public readonly layer?: WmsCapability.Layer;\r\n public get json() { return this._json; }\r\n public get maxLevel(): number { return this.layer ? this.layer.subLayers.length : - 1; }\r\n public get cartoRange(): MapCartoRectangle | undefined { return this.layer?.cartoRange; }\r\n public get featureInfoSupported() { return undefined !== this._json.Capability?.Request?.GetFeatureInfo; }\r\n public get featureInfoFormats(): string[] | undefined { return Array.isArray(this._json.Capability?.Request?.GetFeatureInfo?.Format) ? this._json.Capability?.Request?.GetFeatureInfo?.Format : undefined; }\r\n constructor(private _json: any) {\r\n this.version = _json.version;\r\n this.isVersion13 = _json.version !== undefined && 0 === _json.version.indexOf(\"1.3\");\r\n this.service = new WmsCapability.Service(_json.Service);\r\n if (_json.Capability)\r\n this.layer = new WmsCapability.Layer(_json.Capability.Layer, this);\r\n }\r\n\r\n public static async create(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<WmsCapabilities | undefined> {\r\n if (!ignoreCache) {\r\n const cached = WmsCapabilities._capabilitiesCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n }\r\n\r\n const xmlCapabilities = await getXml(`${WmsUtilities.getBaseUrl(url)}?request=GetCapabilities&service=WMS`, credentials);\r\n\r\n if (!xmlCapabilities)\r\n return undefined;\r\n\r\n const capabilities = new WmsCapabilities(new WMS().parse(xmlCapabilities));\r\n WmsCapabilities._capabilitiesCache.set(url, capabilities);\r\n\r\n return capabilities;\r\n }\r\n public getSubLayers(visible = true): undefined | MapSubLayerProps[] {\r\n return this.layer ? this.layer.getSubLayers(visible) : undefined;\r\n }\r\n\r\n public getSubLayersCrs(subLayerNames: string[]): Map<string, string[]>|undefined {\r\n return this.layer ? this.layer.getSubLayersCrs(subLayerNames) : undefined;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"WmsCapabilities.js","sourceRoot":"","sources":["../../../../src/tile/map/WmsCapabilities.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 Views\r\n */\r\n\r\nimport { MapSubLayerProps } from \"@itwin/core-common\";\r\nimport { request, RequestBasicCredentials, RequestOptions } from \"../../request/Request\";\r\nimport WMS from \"wms-capabilities\";\r\nimport { MapCartoRectangle, WmsUtilities } from \"../internal\";\r\n\r\n/**\r\n * fetch XML from HTTP request\r\n * @param url server URL to address the request\r\n * @internal\r\n */\r\nasync function getXml(url: string, credentials?: RequestBasicCredentials): Promise<any> {\r\n const options: RequestOptions = {\r\n method: \"GET\",\r\n responseType: \"text\",\r\n timeout: { response: 20000 },\r\n retries: 2,\r\n auth: credentials,\r\n };\r\n const data = await request(url, options);\r\n return data.text;\r\n}\r\nfunction rangeFromJSONArray(json: any): MapCartoRectangle | undefined {\r\n return (Array.isArray(json) && json.length === 4) ? MapCartoRectangle.fromDegrees(json[0], json[1], json[2], json[3]) : undefined;\r\n}\r\n\r\nfunction rangeFromJSON(json: any): MapCartoRectangle | undefined {\r\n if (undefined !== json.LatLonBoundingBox)\r\n return rangeFromJSONArray(json.LatLonBoundingBox);\r\n else if (Array.isArray(json.EX_GeographicBoundingBox)) {\r\n return rangeFromJSONArray(json.EX_GeographicBoundingBox);\r\n } else {\r\n if (Array.isArray(json.BoundingBox))\r\n for (const boundingBox of json.BoundingBox) {\r\n if (boundingBox.crs === \"CRS:84\" || boundingBox.crs === \"EPSG:4326\") {\r\n return rangeFromJSONArray(boundingBox.extent);\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction initArray<T>(input: any): undefined | T[] {\r\n return Array.isArray(input) ? input.slice() : undefined;\r\n}\r\n\r\n/** Encapsulation of the capabilities for an WMS server\r\n * @internal\r\n */\r\nexport namespace WmsCapability {\r\n\r\n export class Service {\r\n public readonly name: string;\r\n public readonly title?: string;\r\n public readonly abstract?: string;\r\n public readonly onlineResource?: string;\r\n public readonly contactInformation?: string;\r\n public readonly accessConstraints?: string;\r\n\r\n constructor(json: any) {\r\n this.name = json.Name ? json.Name : \"\";\r\n this.title = json.Title;\r\n this.abstract = json.Abstract;\r\n this.onlineResource = json.OnlineResource;\r\n this.contactInformation = json.ContactInformation;\r\n this.accessConstraints = json.AccessConstraints;\r\n }\r\n }\r\n\r\n export class Layer {\r\n public readonly queryable: boolean;\r\n public readonly title?: string;\r\n public readonly srs?: string[];\r\n public readonly cartoRange?: MapCartoRectangle;\r\n public readonly subLayers = new Array<SubLayer>();\r\n private static readonly PREFIX_SEPARATOR = \":\";\r\n\r\n constructor(json: any, capabilities: WmsCapabilities) {\r\n this.queryable = json.queryable;\r\n this.title = json.title;\r\n this.srs = initArray<string>(capabilities.isVersion13 ? json.CRS : json.SRS);\r\n this.cartoRange = rangeFromJSON(json);\r\n this.subLayers.push(new SubLayer(json, capabilities));\r\n }\r\n public getSubLayers(visible = true): MapSubLayerProps[] {\r\n const subLayers = new Array<MapSubLayerProps>();\r\n let index = 1;\r\n let childrenFound = false;\r\n const pushSubLayer = ((subLayer: SubLayer, parent?: number) => {\r\n let children;\r\n const id = index++;\r\n if (subLayer.children) {\r\n childrenFound = false;\r\n children = new Array<number>();\r\n subLayer.children.forEach((child) => {\r\n children.push(index);\r\n pushSubLayer(child, id);\r\n });\r\n }\r\n subLayers.push({ name: subLayer.name, title: subLayer.title, visible, parent, children, id });\r\n });\r\n this.subLayers.forEach((subLayer) => pushSubLayer(subLayer));\r\n\r\n if (!childrenFound) {\r\n const prefixed = new Map<string, MapSubLayerProps[]>();\r\n subLayers.forEach((subLayer) => {\r\n if (subLayer.name && subLayer.name.indexOf(Layer.PREFIX_SEPARATOR) > 0) {\r\n const prefix = subLayer.name.slice(0, subLayer.name.indexOf(Layer.PREFIX_SEPARATOR));\r\n const found = prefixed.get(prefix);\r\n if (found)\r\n found.push(subLayer);\r\n else\r\n prefixed.set(prefix, [subLayer]);\r\n }\r\n });\r\n if (prefixed.size > 1) {\r\n // Preserve the root node if any.\r\n const rootNode = (this.subLayers.length === 1 && this.subLayers[0].children && this.subLayers[0].children.length > 1) ? subLayers.find((curSubLayer) => this.subLayers[0].name === curSubLayer.name)?.id : undefined;\r\n prefixed.forEach((children, parent) => {\r\n children.forEach((child) => {\r\n child.parent = index;\r\n // Remove the prefix from the title if present.\r\n if (child.title && child.title.indexOf(parent + Layer.PREFIX_SEPARATOR) === 0)\r\n child.title = child.title.slice(parent.length + Layer.PREFIX_SEPARATOR.length);\r\n });\r\n subLayers.push({ name: \"\", title: parent, parent: rootNode, id: index++, children: children.map((child) => child.id as number), visible });\r\n });\r\n }\r\n }\r\n\r\n return subLayers;\r\n }\r\n\r\n public getSubLayersCrs(layerNameFilter: string[]): Map<string, string[]> {\r\n const subLayerCrs = new Map<string, string[]>();\r\n\r\n const processSubLayer = ((subLayer: SubLayer) => {\r\n if (layerNameFilter.includes(subLayer.name)) {\r\n subLayerCrs.set(subLayer.name, subLayer.crs);\r\n }\r\n if (subLayer.children) {\r\n subLayer.children.forEach((child) => {\r\n processSubLayer(child);\r\n });\r\n }\r\n });\r\n\r\n this.subLayers.forEach((subLayer) => processSubLayer(subLayer));\r\n return subLayerCrs;\r\n }\r\n }\r\n\r\n /** @internal */\r\n export class SubLayer {\r\n public readonly name: string;\r\n public readonly title: string;\r\n public readonly crs: string[];\r\n public readonly ownCrs: string[]; // CRS specific to this layer (ie. not including inherited CRS)\r\n public readonly cartoRange?: MapCartoRectangle;\r\n public readonly children?: SubLayer[];\r\n public readonly queryable: boolean;\r\n public constructor(_json: any, capabilities: WmsCapabilities, public readonly parent?: SubLayer) {\r\n\r\n const getParentCrs = (parentLayer: SubLayer, crsSet: Set<string>) => {\r\n parentLayer.crs.forEach((parentCrs) => crsSet.add(parentCrs));\r\n if (parentLayer.parent) {\r\n getParentCrs(parentLayer.parent, crsSet);\r\n }\r\n };\r\n\r\n this.name = _json.Name ? _json.Name : \"\";\r\n this.title = _json.Title;\r\n this.queryable = _json.queryable ? true : false;\r\n this.cartoRange = rangeFromJSON(_json);\r\n this.ownCrs = capabilities.isVersion13 ? _json.CRS : _json.SRS;\r\n const crs = new Set<string>(this.ownCrs);\r\n if (parent) {\r\n getParentCrs(parent, crs);\r\n }\r\n this.crs = [...crs];\r\n\r\n if (Array.isArray(_json.Layer)) {\r\n this.children = new Array<SubLayer>();\r\n for (const childLayer of _json.Layer) {\r\n this.children.push(new SubLayer(childLayer, capabilities, this));\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WmsCapabilities {\r\n private static _capabilitiesCache = new Map<string, WmsCapabilities | undefined>();\r\n public readonly service: WmsCapability.Service;\r\n public readonly version?: string;\r\n public readonly isVersion13: boolean;\r\n public readonly layer?: WmsCapability.Layer;\r\n public get json() { return this._json; }\r\n public get maxLevel(): number { return this.layer ? this.layer.subLayers.length : - 1; }\r\n public get cartoRange(): MapCartoRectangle | undefined { return this.layer?.cartoRange; }\r\n public get featureInfoSupported() { return undefined !== this._json.Capability?.Request?.GetFeatureInfo; }\r\n public get featureInfoFormats(): string[] | undefined { return Array.isArray(this._json.Capability?.Request?.GetFeatureInfo?.Format) ? this._json.Capability?.Request?.GetFeatureInfo?.Format : undefined; }\r\n constructor(private _json: any) {\r\n this.version = _json.version;\r\n this.isVersion13 = _json.version !== undefined && 0 === _json.version.indexOf(\"1.3\");\r\n this.service = new WmsCapability.Service(_json.Service);\r\n if (_json.Capability)\r\n this.layer = new WmsCapability.Layer(_json.Capability.Layer, this);\r\n }\r\n\r\n public static async create(url: string, credentials?: RequestBasicCredentials, ignoreCache?: boolean): Promise<WmsCapabilities | undefined> {\r\n if (!ignoreCache) {\r\n const cached = WmsCapabilities._capabilitiesCache.get(url);\r\n if (cached !== undefined)\r\n return cached;\r\n }\r\n\r\n const xmlCapabilities = await getXml(`${WmsUtilities.getBaseUrl(url)}?request=GetCapabilities&service=WMS`, credentials);\r\n\r\n if (!xmlCapabilities)\r\n return undefined;\r\n\r\n const capabilities = new WmsCapabilities(new WMS().parse(xmlCapabilities));\r\n if (!credentials) {\r\n // Avoid caching protected data\r\n WmsCapabilities._capabilitiesCache.set(url, capabilities);\r\n }\r\n\r\n return capabilities;\r\n }\r\n public getSubLayers(visible = true): undefined | MapSubLayerProps[] {\r\n return this.layer ? this.layer.getSubLayers(visible) : undefined;\r\n }\r\n\r\n public getSubLayersCrs(subLayerNames: string[]): Map<string, string[]>|undefined {\r\n return this.layer ? this.layer.getSubLayersCrs(subLayerNames) : undefined;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditManipulator.d.ts","sourceRoot":"","sources":["../../../src/tools/EditManipulator.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAuB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAY,aAAa,EAAE,YAAY,EAA2B,YAAY,EAAE,cAAc,EAAe,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzI,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;;EAQE;AACF,yBAAiB,eAAe,CAAC;IAC/B,oFAAoF;IACpF,KAAY,SAAS;QACnB,4FAA4F;QAC5F,KAAK,IAAA;QACL,yDAAyD;QACzD,MAAM,IAAA;QACN,wDAAwD;QACxD,MAAM,IAAA;KACP;IAED;;;;;OAKG;IACH,eAAsB,UAAW,SAAQ,cAAc;QACrD,OAAuB,MAAM,SAAwB;QACrD,OAAuB,MAAM,UAAQ;QACrC,SAAgB,WAAW,EAAE,cAAc,CAAC;oBAEzB,WAAW,EAAE,cAAc;QAK9C;;;WAGG;QACH,SAAS,CAAC,IAAI,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"EditManipulator.d.ts","sourceRoot":"","sources":["../../../src/tools/EditManipulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,8 @@ var EditManipulator;
|
|
|
52
52
|
init() {
|
|
53
53
|
// Set this.receivedDownEvent to still get up events sent to this tool instance when installed from another tool's down event (ex. onModelStartDrag).
|
|
54
54
|
this.receivedDownEvent = true;
|
|
55
|
-
// Override inherited tool state from suspended primitive tool
|
|
55
|
+
// Override inherited tool state from suspended primitive tool.
|
|
56
|
+
IModelApp_1.IModelApp.accuSnap.onStartTool();
|
|
56
57
|
if (this.wantAccuSnap)
|
|
57
58
|
this.initLocateElements(false, true, undefined, Tool_1.CoordinateLockOverrides.None);
|
|
58
59
|
else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditManipulator.js","sourceRoot":"","sources":["../../../src/tools/EditManipulator.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 Tools\r\n */\r\n\r\nimport { AxisOrder, Matrix3d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { AccuDrawHintBuilder } from \"../AccuDraw\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { SelectionSetEvent } from \"../SelectionSet\";\r\nimport { DecorateContext } from \"../ViewContext\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { BeButton, BeButtonEvent, BeTouchEvent, CoordinateLockOverrides, EventHandled, InputCollector, InputSource, Tool } from \"./Tool\";\r\nimport { ManipulatorToolEvent } from \"./ToolAdmin\";\r\n\r\n/** Classes and methods to create on screen control handles for interactive modification of element(s) and pickable decorations.\r\n * The basic flow is:\r\n * - Create a sub-class of [[EditManipulator.HandleProvider]] to listen for start of [[SelectTool]] or any other PrimitiveTool that supports handle providers.\r\n * - Respond to [[ManipulatorToolEvent.Start]] by adding a listener for [[SelectionSet]] change event.\r\n * - Respond to selection changed event to create control handles as pickable decorations when the desired element(s) or pickable decoration is selected.\r\n * - Respond to button events on the control handle decoration and run a sub-class of [[EditManipulator.HandleTool]] to modify.\r\n * @public\r\n * @extensions\r\n*/\r\nexport namespace EditManipulator {\r\n /** Specifies the event for [[EditManipulator.HandleProvider.onManipulatorEvent]] */\r\n export enum EventType {\r\n /** Control handles should be created, updated, or cleared based on the active selection. */\r\n Synch,\r\n /** Control handle modification was cancelled by user. */\r\n Cancel,\r\n /** Control handle modification was accepted by user. */\r\n Accept\r\n }\r\n\r\n /** Interactive control handle modification is done by installing an [[InputCollector]].\r\n * Modification typically is started from a click or press and drag while over the handle graphics.\r\n * The HandleTool base class is set up to define an offset by 2 points. The second point is\r\n * defined by either another click, or up event when initiated from press and drag.\r\n * @see [[EditManipulator.HandleProvider]]\r\n */\r\n export abstract class HandleTool extends InputCollector {\r\n public static override toolId = \"Select.Manipulator\"; // Doesn't matter, not included in tool registry...\r\n public static override hidden = true;\r\n public readonly manipulator: HandleProvider;\r\n\r\n public constructor(manipulator: HandleProvider) {\r\n super();\r\n this.manipulator = manipulator;\r\n }\r\n\r\n /** Establish the initial tool state for handle modification.\r\n * Default implementation honors the active locks and enables AccuSnap; behavior suitable for a shape vertex handle.\r\n * @note An InputCollector inherits the tool state of the suspended primitive tool.\r\n */\r\n protected init(): void {\r\n // Set this.receivedDownEvent to still get up events sent to this tool instance when installed from another tool's down event (ex. onModelStartDrag).\r\n this.receivedDownEvent = true;\r\n\r\n // Override inherited tool state from suspended primitive tool...\r\n if (this.wantAccuSnap)\r\n this.initLocateElements(false, true, undefined, CoordinateLockOverrides.None);\r\n else\r\n this.initLocateElements(false, false, undefined, CoordinateLockOverrides.All);\r\n }\r\n\r\n /** Whether to call [[AccuSnap.enableSnap]] for handle modification.\r\n * @return true to enable snapping to elements.\r\n */\r\n protected get wantAccuSnap(): boolean { return true; }\r\n\r\n /** Called from reset button up event to allow modification to be cancelled.\r\n * @return true to cancel modification.\r\n */\r\n protected cancel(_ev: BeButtonEvent): boolean { return true; }\r\n\r\n /** Called from data button down event to check if enough input has been gathered to complete the modification.\r\n * @return true to complete modification.\r\n */\r\n protected abstract accept(_ev: BeButtonEvent): boolean;\r\n\r\n /** Called following cancel or accept to update the handle provider\r\n * and return control to suspended PrimitiveTool.\r\n */\r\n protected async onComplete(_ev: BeButtonEvent, event: EventType): Promise<EventHandled> {\r\n await this.exitTool();\r\n this.manipulator.onManipulatorEvent(event);\r\n\r\n return EventHandled.Yes;\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (!this.accept(ev))\r\n return EventHandled.No;\r\n\r\n return this.onComplete(ev, EventType.Accept);\r\n }\r\n\r\n public override async onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (!this.cancel(ev))\r\n return EventHandled.No;\r\n\r\n return this.onComplete(ev, EventType.Cancel);\r\n }\r\n\r\n public override async onTouchMove(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchMoveToMotion(ev); }\r\n public override async onTouchComplete(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev); }\r\n public override async onTouchCancel(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev, BeButton.Reset); }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n this.init();\r\n }\r\n }\r\n\r\n /** A handle provider maintains a set of controls used to modify element(s) or pickable decorations.\r\n * The provider works in conjunction with any PrimitiveTool that raises events for [[ToolAdmin.manipulatorToolEvent]].\r\n * @see [[SelectTool]] The default PrimitiveTool that supports handle providers.\r\n */\r\n export abstract class HandleProvider {\r\n protected _isActive = false;\r\n protected _removeManipulatorToolListener?: () => void;\r\n protected _removeSelectionListener?: () => void;\r\n protected _removeDecorationListener?: () => void;\r\n\r\n /** Create a new handle provider to listen for [[ToolAdmin.manipulatorToolEvent]].\r\n * Usually followed by a call to [[IModelApp.toolAdmin.startDefaultTool]] to immediately raise the [[ManipulatorToolEvent.Start]] event.\r\n */\r\n public constructor(public iModel: IModelConnection) {\r\n this._removeManipulatorToolListener = IModelApp.toolAdmin.manipulatorToolEvent.addListener((tool, event) => this.onManipulatorToolEvent(tool, event));\r\n }\r\n\r\n /** Call to clear this handle provider. */\r\n protected stop(): void {\r\n if (this._removeSelectionListener) {\r\n this._removeSelectionListener();\r\n this._removeSelectionListener = undefined;\r\n }\r\n if (this._removeManipulatorToolListener) {\r\n this._removeManipulatorToolListener();\r\n this._removeManipulatorToolListener = undefined;\r\n }\r\n this.clearControls();\r\n }\r\n\r\n /** Event raised by a PrimitiveTool that supports handle providers.\r\n * Add listener for [[IModelConnection.selectionSet.onChanged]] on start event and remove on stop event.\r\n * Control handles can be created from the active selection set, which may include persistent elements and pickable decorations.\r\n * @see [[SelectionSet]]\r\n */\r\n public onManipulatorToolEvent(_tool: Tool, event: ManipulatorToolEvent): void {\r\n switch (event) {\r\n case ManipulatorToolEvent.Start: {\r\n if (this._removeSelectionListener)\r\n break;\r\n this._removeSelectionListener = this.iModel.selectionSet.onChanged.addListener((ev) => this.onSelectionChanged(ev));\r\n if (this.iModel.selectionSet.isActive)\r\n this.onManipulatorEvent(EventType.Synch); // Give opportunity to add controls when tool is started with an existing selection...\r\n break;\r\n }\r\n case ManipulatorToolEvent.Stop: {\r\n if (!this._removeSelectionListener)\r\n break;\r\n this._removeSelectionListener();\r\n this._removeSelectionListener = undefined;\r\n this.clearControls();\r\n }\r\n }\r\n }\r\n\r\n /** Event raised by [[SelectionSet]] when the active selection changes.\r\n * Calls onManipulatorEvent to let the provider create, update, or clear it's set of controls as appropriate.\r\n * @see [[SelectionSet]]\r\n */\r\n public onSelectionChanged(ev: SelectionSetEvent): void {\r\n if (this.iModel === ev.set.iModel)\r\n this.onManipulatorEvent(EventType.Synch);\r\n }\r\n\r\n /** Register for decorate event to start displaying control handles. */\r\n protected updateDecorationListener(add: boolean): void {\r\n if (this._removeDecorationListener) {\r\n if (!add) {\r\n this._removeDecorationListener();\r\n this._removeDecorationListener = undefined;\r\n }\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n } else if (add) {\r\n if (!this._removeDecorationListener)\r\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n }\r\n }\r\n\r\n /** Sub-classes should override to display the pickable graphics for their controls. */\r\n public decorate(_context: DecorateContext): void { }\r\n\r\n /** The provider is responsible for checking if modification by controls is valid.\r\n * May still wish to present controls for \"transient\" geometry in non-read/write applications, etc.\r\n */\r\n protected abstract createControls(): Promise<boolean>;\r\n\r\n /* Call to stop displaying the the control handles */\r\n protected clearControls(): void {\r\n this.updateDecorationListener(this._isActive = false);\r\n }\r\n\r\n /** A provider can install an [[InputCollector]] to support interactive modification.\r\n * @return true if a tool was successfully run.\r\n * @see [[EditManipulator.HandleTool]]\r\n */\r\n protected abstract modifyControls(_hit: HitDetail, _ev: BeButtonEvent): Promise<boolean>;\r\n\r\n /* Create, update, or clear based on the current selection. */\r\n protected async updateControls(): Promise<void> {\r\n const created = await this.createControls();\r\n if (this._isActive && !created)\r\n this.clearControls();\r\n else\r\n this.updateDecorationListener(this._isActive = created);\r\n }\r\n\r\n /* Update controls to reflect active selection or post-modification state. */\r\n public onManipulatorEvent(_eventType: EventType): void {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.updateControls();\r\n }\r\n\r\n /** Sub-classes can override to perform some operation for a double click on a handle. */\r\n protected async onDoubleClick(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.No; }\r\n\r\n /** Sub-classes can override to present a menu for a right click on a handle. */\r\n protected async onRightClick(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.No; }\r\n\r\n /** Sub-classes can override to respond to a touch tap on a handle. By default, handles are selected by touch drag and taps are ignored. */\r\n protected async onTouchTap(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.Yes; }\r\n\r\n /** Event raised by a PrimitiveTool that supports handle providers to allow a pickable decoration to respond to being located. */\r\n public async onDecorationButtonEvent(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled> {\r\n if (!this._isActive)\r\n return EventHandled.No;\r\n\r\n if (ev.isDoubleClick)\r\n return this.onDoubleClick(hit, ev); // Allow double click on handle to override default operation (ex. fit view).\r\n\r\n if (BeButton.Reset === ev.button && !ev.isDown && !ev.isDragging)\r\n return this.onRightClick(hit, ev); // Allow right click on handle to present a menu.\r\n\r\n if (BeButton.Data !== ev.button)\r\n return EventHandled.No;\r\n\r\n if (ev.isControlKey)\r\n return EventHandled.No; // Support ctrl+click to select multiple controls (ex. linestring vertices)...\r\n\r\n if (InputSource.Touch === ev.inputSource && !ev.isDragging)\r\n return this.onTouchTap(hit, ev); // Default is to select controls on touch drag only, ignore tap on control...\r\n\r\n if (ev.isDown && !ev.isDragging)\r\n return EventHandled.No; // Select controls on up event or down event only after drag started...\r\n\r\n if (!await this.modifyControls(hit, ev))\r\n return EventHandled.No;\r\n\r\n // In case InputCollector was installed for handle modification, don't wait for motion to show dynamic frame adjusted for AccuDraw hints...\r\n IModelApp.accuDraw.refreshDecorationsAndDynamics();\r\n\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n /** Utility methods for creating control handles and other decorations. */\r\n export class HandleUtils {\r\n /** Adjust input color for contrast against view background.\r\n * @param color The color to adjust.\r\n * @param vp The viewport to compare.\r\n * @return color adjusted for view background color or original color if view background color isn't being used.\r\n */\r\n public static adjustForBackgroundColor(color: ColorDef, vp: Viewport): ColorDef {\r\n if (vp.view.is3d() && vp.view.getDisplayStyle3d().environment.displaySky)\r\n return color;\r\n\r\n return color.adjustedForContrast(vp.view.backgroundColor);\r\n }\r\n\r\n /** Compute a transform that will try to orient a 2d shape (like an arrow) to face the camera.\r\n * @param vp The viewport to get the rotation from.\r\n * @param base The world coordinate point to pivot about.\r\n * @param direction The world coordinate axis to tilt along.\r\n * @param sizeInches The transform scale specified in screen inches.\r\n * @returns transform or undefined when input direction is almost perpendicular to viewing direction.\r\n * @see [[getArrowShape]]\r\n */\r\n public static getArrowTransform(vp: Viewport, base: Point3d, direction: Vector3d, sizeInches: number): Transform | undefined {\r\n const boresite = AccuDrawHintBuilder.getBoresite(base, vp);\r\n if (Math.abs(direction.dotProduct(boresite.direction)) >= 0.99)\r\n return undefined;\r\n\r\n const pixelSize = vp.pixelsFromInches(sizeInches);\r\n const scale = vp.viewingSpace.getPixelSizeAtPoint(base) * pixelSize;\r\n const matrix = Matrix3d.createRigidFromColumns(direction, boresite.direction, AxisOrder.XZY);\r\n if (undefined === matrix)\r\n return undefined;\r\n\r\n matrix.scaleColumnsInPlace(scale, scale, scale);\r\n return Transform.createRefs(base.clone(), matrix);\r\n }\r\n\r\n /** Return array of shape points representing a unit arrow in xy plane pointing in positive x direction. */\r\n public static getArrowShape(baseStart: number = 0.0, baseWidth: number = 0.15, tipStart: number = 0.55, tipEnd: number = 1.0, tipWidth: number = 0.3, flangeStart: number = tipStart, flangeWidth: number = baseWidth): Point3d[] {\r\n const shapePts: Point3d[] = [];\r\n shapePts[0] = Point3d.create(tipEnd, 0.0);\r\n shapePts[1] = Point3d.create(flangeStart, tipWidth);\r\n shapePts[2] = Point3d.create(tipStart, flangeWidth);\r\n shapePts[3] = Point3d.create(baseStart, baseWidth);\r\n shapePts[4] = Point3d.create(baseStart, -baseWidth);\r\n shapePts[5] = Point3d.create(tipStart, -flangeWidth);\r\n shapePts[6] = Point3d.create(flangeStart, -tipWidth);\r\n shapePts[7] = shapePts[0].clone();\r\n return shapePts;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"EditManipulator.js","sourceRoot":"","sources":["../../../src/tools/EditManipulator.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,wDAAyF;AAEzF,0CAAkD;AAElD,4CAAyC;AAKzC,iCAAyI;AACzI,2CAAmD;AAEnD;;;;;;;;EAQE;AACF,IAAiB,eAAe,CA2S/B;AA3SD,WAAiB,eAAe;IAC9B,oFAAoF;IACpF,IAAY,SAOX;IAPD,WAAY,SAAS;QACnB,4FAA4F;QAC5F,2CAAK,CAAA;QACL,yDAAyD;QACzD,6CAAM,CAAA;QACN,wDAAwD;QACxD,6CAAM,CAAA;IACR,CAAC,EAPW,SAAS,GAAT,yBAAS,KAAT,yBAAS,QAOpB;IAED;;;;;OAKG;IACH,MAAsB,UAAW,SAAQ,qBAAc;QAKrD,YAAmB,WAA2B;YAC5C,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACjC,CAAC;QAED;;;WAGG;QACO,IAAI;YACZ,qJAAqJ;YACrJ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAE9B,+DAA+D;YAC/D,qBAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAEjC,IAAI,IAAI,CAAC,YAAY;gBACnB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,8BAAuB,CAAC,IAAI,CAAC,CAAC;;gBAE9E,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,8BAAuB,CAAC,GAAG,CAAC,CAAC;QAClF,CAAC;QAED;;WAEG;QACH,IAAc,YAAY,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;QAEtD;;WAEG;QACO,MAAM,CAAC,GAAkB,IAAa,OAAO,IAAI,CAAC,CAAC,CAAC;QAO9D;;WAEG;QACO,KAAK,CAAC,UAAU,CAAC,GAAkB,EAAE,KAAgB;YAC7D,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAE3C,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,CAAC;QAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;YACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClB,OAAO,mBAAY,CAAC,EAAE,CAAC;YAEzB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAEe,KAAK,CAAC,eAAe,CAAC,EAAiB;YACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClB,OAAO,mBAAY,CAAC,EAAE,CAAC;YAEzB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAEe,KAAK,CAAC,WAAW,CAAC,EAAgB,IAAmB,OAAO,qBAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/G,KAAK,CAAC,eAAe,CAAC,EAAgB,IAAmB,OAAO,qBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpH,KAAK,CAAC,aAAa,CAAC,EAAgB,IAAmB,OAAO,qBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE,EAAE,eAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAElI,KAAK,CAAC,aAAa;YACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;;IAxEsB,iBAAM,GAAG,oBAAoB,CAAC,CAAC,mDAAmD;IAClF,iBAAM,GAAG,IAAI,CAAC;IAFjB,0BAAU,aA0E/B,CAAA;IAED;;;OAGG;IACH,MAAsB,cAAc;QAMlC;;WAEG;QACH,YAA0B,MAAwB;YAAxB,WAAM,GAAN,MAAM,CAAkB;YARxC,cAAS,GAAG,KAAK,CAAC;YAS1B,IAAI,CAAC,8BAA8B,GAAG,qBAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACxJ,CAAC;QAED,0CAA0C;QAChC,IAAI;YACZ,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBACjC,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;aAC3C;YACD,IAAI,IAAI,CAAC,8BAA8B,EAAE;gBACvC,IAAI,CAAC,8BAA8B,EAAE,CAAC;gBACtC,IAAI,CAAC,8BAA8B,GAAG,SAAS,CAAC;aACjD;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;QAED;;;;WAIG;QACI,sBAAsB,CAAC,KAAW,EAAE,KAA2B;YACpE,QAAQ,KAAK,EAAE;gBACb,KAAK,gCAAoB,CAAC,KAAK,CAAC,CAAC;oBAC/B,IAAI,IAAI,CAAC,wBAAwB;wBAC/B,MAAM;oBACR,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpH,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ;wBACnC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,sFAAsF;oBAClI,MAAM;iBACP;gBACD,KAAK,gCAAoB,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,IAAI,CAAC,wBAAwB;wBAChC,MAAM;oBACR,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBAChC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;oBAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;aACF;QACH,CAAC;QAED;;;WAGG;QACI,kBAAkB,CAAC,EAAqB;YAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,uEAAuE;QAC7D,wBAAwB,CAAC,GAAY;YAC7C,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,GAAG,EAAE;oBACR,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBACjC,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;iBAC5C;gBACD,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;aACvD;iBAAM,IAAI,GAAG,EAAE;gBACd,IAAI,CAAC,IAAI,CAAC,yBAAyB;oBACjC,IAAI,CAAC,yBAAyB,GAAG,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC5E,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;aACvD;QACH,CAAC;QAED,uFAAuF;QAChF,QAAQ,CAAC,QAAyB,IAAU,CAAC;QAOpD,qDAAqD;QAC3C,aAAa;YACrB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;QACxD,CAAC;QAQD,8DAA8D;QACpD,KAAK,CAAC,cAAc;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;gBAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;;gBAErB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC;QAC5D,CAAC;QAED,6EAA6E;QACtE,kBAAkB,CAAC,UAAqB;YAC7C,mEAAmE;YACnE,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;QAED,yFAAyF;QAC/E,KAAK,CAAC,aAAa,CAAC,IAAe,EAAE,GAAkB,IAA2B,OAAO,mBAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAErH,gFAAgF;QACtE,KAAK,CAAC,YAAY,CAAC,IAAe,EAAE,GAAkB,IAA2B,OAAO,mBAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpH,2IAA2I;QACjI,KAAK,CAAC,UAAU,CAAC,IAAe,EAAE,GAAkB,IAA2B,OAAO,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnH,iIAAiI;QAC1H,KAAK,CAAC,uBAAuB,CAAC,GAAc,EAAE,EAAiB;YACpE,IAAI,CAAC,IAAI,CAAC,SAAS;gBACjB,OAAO,mBAAY,CAAC,EAAE,CAAC;YAEzB,IAAI,EAAE,CAAC,aAAa;gBAClB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,6EAA6E;YAEnH,IAAI,eAAQ,CAAC,KAAK,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU;gBAC9D,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,iDAAiD;YAEtF,IAAI,eAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,MAAM;gBAC7B,OAAO,mBAAY,CAAC,EAAE,CAAC;YAEzB,IAAI,EAAE,CAAC,YAAY;gBACjB,OAAO,mBAAY,CAAC,EAAE,CAAC,CAAC,8EAA8E;YAExG,IAAI,kBAAW,CAAC,KAAK,KAAK,EAAE,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,UAAU;gBACxD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,6EAA6E;YAEhH,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU;gBAC7B,OAAO,mBAAY,CAAC,EAAE,CAAC,CAAC,uEAAuE;YAEjG,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC;gBACrC,OAAO,mBAAY,CAAC,EAAE,CAAC;YAEzB,2IAA2I;YAC3I,qBAAS,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;YAEnD,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,CAAC;KACF;IArJqB,8BAAc,iBAqJnC,CAAA;IAED,0EAA0E;IAC1E,MAAa,WAAW;QACtB;;;;WAIG;QACI,MAAM,CAAC,wBAAwB,CAAC,KAAe,EAAE,EAAY;YAClE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,UAAU;gBACtE,OAAO,KAAK,CAAC;YAEf,OAAO,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5D,CAAC;QAED;;;;;;;WAOG;QACI,MAAM,CAAC,iBAAiB,CAAC,EAAY,EAAE,IAAa,EAAE,SAAmB,EAAE,UAAkB;YAClG,MAAM,QAAQ,GAAG,8BAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI;gBAC5D,OAAO,SAAS,CAAC;YAEnB,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;YACpE,MAAM,MAAM,GAAG,wBAAQ,CAAC,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,yBAAS,CAAC,GAAG,CAAC,CAAC;YAC7F,IAAI,SAAS,KAAK,MAAM;gBACtB,OAAO,SAAS,CAAC;YAEnB,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,yBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,2GAA2G;QACpG,MAAM,CAAC,aAAa,CAAC,YAAoB,GAAG,EAAE,YAAoB,IAAI,EAAE,WAAmB,IAAI,EAAE,SAAiB,GAAG,EAAE,WAAmB,GAAG,EAAE,cAAsB,QAAQ,EAAE,cAAsB,SAAS;YACnN,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,QAAQ,CAAC,CAAC,CAAC,GAAG,uBAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC1C,QAAQ,CAAC,CAAC,CAAC,GAAG,uBAAO,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpD,QAAQ,CAAC,CAAC,CAAC,GAAG,uBAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACpD,QAAQ,CAAC,CAAC,CAAC,GAAG,uBAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACnD,QAAQ,CAAC,CAAC,CAAC,GAAG,uBAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;YACpD,QAAQ,CAAC,CAAC,CAAC,GAAG,uBAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC;YACrD,QAAQ,CAAC,CAAC,CAAC,GAAG,uBAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC;YACrD,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF;IAjDY,2BAAW,cAiDvB,CAAA;AACH,CAAC,EA3SgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QA2S/B","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 Tools\r\n */\r\n\r\nimport { AxisOrder, Matrix3d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { AccuDrawHintBuilder } from \"../AccuDraw\";\r\nimport { HitDetail } from \"../HitDetail\";\r\nimport { IModelApp } from \"../IModelApp\";\r\nimport { IModelConnection } from \"../IModelConnection\";\r\nimport { SelectionSetEvent } from \"../SelectionSet\";\r\nimport { DecorateContext } from \"../ViewContext\";\r\nimport { Viewport } from \"../Viewport\";\r\nimport { BeButton, BeButtonEvent, BeTouchEvent, CoordinateLockOverrides, EventHandled, InputCollector, InputSource, Tool } from \"./Tool\";\r\nimport { ManipulatorToolEvent } from \"./ToolAdmin\";\r\n\r\n/** Classes and methods to create on screen control handles for interactive modification of element(s) and pickable decorations.\r\n * The basic flow is:\r\n * - Create a sub-class of [[EditManipulator.HandleProvider]] to listen for start of [[SelectTool]] or any other PrimitiveTool that supports handle providers.\r\n * - Respond to [[ManipulatorToolEvent.Start]] by adding a listener for [[SelectionSet]] change event.\r\n * - Respond to selection changed event to create control handles as pickable decorations when the desired element(s) or pickable decoration is selected.\r\n * - Respond to button events on the control handle decoration and run a sub-class of [[EditManipulator.HandleTool]] to modify.\r\n * @public\r\n * @extensions\r\n*/\r\nexport namespace EditManipulator {\r\n /** Specifies the event for [[EditManipulator.HandleProvider.onManipulatorEvent]] */\r\n export enum EventType {\r\n /** Control handles should be created, updated, or cleared based on the active selection. */\r\n Synch,\r\n /** Control handle modification was cancelled by user. */\r\n Cancel,\r\n /** Control handle modification was accepted by user. */\r\n Accept\r\n }\r\n\r\n /** Interactive control handle modification is done by installing an [[InputCollector]].\r\n * Modification typically is started from a click or press and drag while over the handle graphics.\r\n * The HandleTool base class is set up to define an offset by 2 points. The second point is\r\n * defined by either another click, or up event when initiated from press and drag.\r\n * @see [[EditManipulator.HandleProvider]]\r\n */\r\n export abstract class HandleTool extends InputCollector {\r\n public static override toolId = \"Select.Manipulator\"; // Doesn't matter, not included in tool registry...\r\n public static override hidden = true;\r\n public readonly manipulator: HandleProvider;\r\n\r\n public constructor(manipulator: HandleProvider) {\r\n super();\r\n this.manipulator = manipulator;\r\n }\r\n\r\n /** Establish the initial tool state for handle modification.\r\n * Default implementation honors the active locks and enables AccuSnap; behavior suitable for a shape vertex handle.\r\n * @note An InputCollector inherits the tool state of the suspended primitive tool.\r\n */\r\n protected init(): void {\r\n // Set this.receivedDownEvent to still get up events sent to this tool instance when installed from another tool's down event (ex. onModelStartDrag).\r\n this.receivedDownEvent = true;\r\n\r\n // Override inherited tool state from suspended primitive tool.\r\n IModelApp.accuSnap.onStartTool();\r\n\r\n if (this.wantAccuSnap)\r\n this.initLocateElements(false, true, undefined, CoordinateLockOverrides.None);\r\n else\r\n this.initLocateElements(false, false, undefined, CoordinateLockOverrides.All);\r\n }\r\n\r\n /** Whether to call [[AccuSnap.enableSnap]] for handle modification.\r\n * @return true to enable snapping to elements.\r\n */\r\n protected get wantAccuSnap(): boolean { return true; }\r\n\r\n /** Called from reset button up event to allow modification to be cancelled.\r\n * @return true to cancel modification.\r\n */\r\n protected cancel(_ev: BeButtonEvent): boolean { return true; }\r\n\r\n /** Called from data button down event to check if enough input has been gathered to complete the modification.\r\n * @return true to complete modification.\r\n */\r\n protected abstract accept(_ev: BeButtonEvent): boolean;\r\n\r\n /** Called following cancel or accept to update the handle provider\r\n * and return control to suspended PrimitiveTool.\r\n */\r\n protected async onComplete(_ev: BeButtonEvent, event: EventType): Promise<EventHandled> {\r\n await this.exitTool();\r\n this.manipulator.onManipulatorEvent(event);\r\n\r\n return EventHandled.Yes;\r\n }\r\n\r\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (!this.accept(ev))\r\n return EventHandled.No;\r\n\r\n return this.onComplete(ev, EventType.Accept);\r\n }\r\n\r\n public override async onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\r\n if (!this.cancel(ev))\r\n return EventHandled.No;\r\n\r\n return this.onComplete(ev, EventType.Cancel);\r\n }\r\n\r\n public override async onTouchMove(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchMoveToMotion(ev); }\r\n public override async onTouchComplete(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev); }\r\n public override async onTouchCancel(ev: BeTouchEvent): Promise<void> { return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev, BeButton.Reset); }\r\n\r\n public override async onPostInstall() {\r\n await super.onPostInstall();\r\n this.init();\r\n }\r\n }\r\n\r\n /** A handle provider maintains a set of controls used to modify element(s) or pickable decorations.\r\n * The provider works in conjunction with any PrimitiveTool that raises events for [[ToolAdmin.manipulatorToolEvent]].\r\n * @see [[SelectTool]] The default PrimitiveTool that supports handle providers.\r\n */\r\n export abstract class HandleProvider {\r\n protected _isActive = false;\r\n protected _removeManipulatorToolListener?: () => void;\r\n protected _removeSelectionListener?: () => void;\r\n protected _removeDecorationListener?: () => void;\r\n\r\n /** Create a new handle provider to listen for [[ToolAdmin.manipulatorToolEvent]].\r\n * Usually followed by a call to [[IModelApp.toolAdmin.startDefaultTool]] to immediately raise the [[ManipulatorToolEvent.Start]] event.\r\n */\r\n public constructor(public iModel: IModelConnection) {\r\n this._removeManipulatorToolListener = IModelApp.toolAdmin.manipulatorToolEvent.addListener((tool, event) => this.onManipulatorToolEvent(tool, event));\r\n }\r\n\r\n /** Call to clear this handle provider. */\r\n protected stop(): void {\r\n if (this._removeSelectionListener) {\r\n this._removeSelectionListener();\r\n this._removeSelectionListener = undefined;\r\n }\r\n if (this._removeManipulatorToolListener) {\r\n this._removeManipulatorToolListener();\r\n this._removeManipulatorToolListener = undefined;\r\n }\r\n this.clearControls();\r\n }\r\n\r\n /** Event raised by a PrimitiveTool that supports handle providers.\r\n * Add listener for [[IModelConnection.selectionSet.onChanged]] on start event and remove on stop event.\r\n * Control handles can be created from the active selection set, which may include persistent elements and pickable decorations.\r\n * @see [[SelectionSet]]\r\n */\r\n public onManipulatorToolEvent(_tool: Tool, event: ManipulatorToolEvent): void {\r\n switch (event) {\r\n case ManipulatorToolEvent.Start: {\r\n if (this._removeSelectionListener)\r\n break;\r\n this._removeSelectionListener = this.iModel.selectionSet.onChanged.addListener((ev) => this.onSelectionChanged(ev));\r\n if (this.iModel.selectionSet.isActive)\r\n this.onManipulatorEvent(EventType.Synch); // Give opportunity to add controls when tool is started with an existing selection...\r\n break;\r\n }\r\n case ManipulatorToolEvent.Stop: {\r\n if (!this._removeSelectionListener)\r\n break;\r\n this._removeSelectionListener();\r\n this._removeSelectionListener = undefined;\r\n this.clearControls();\r\n }\r\n }\r\n }\r\n\r\n /** Event raised by [[SelectionSet]] when the active selection changes.\r\n * Calls onManipulatorEvent to let the provider create, update, or clear it's set of controls as appropriate.\r\n * @see [[SelectionSet]]\r\n */\r\n public onSelectionChanged(ev: SelectionSetEvent): void {\r\n if (this.iModel === ev.set.iModel)\r\n this.onManipulatorEvent(EventType.Synch);\r\n }\r\n\r\n /** Register for decorate event to start displaying control handles. */\r\n protected updateDecorationListener(add: boolean): void {\r\n if (this._removeDecorationListener) {\r\n if (!add) {\r\n this._removeDecorationListener();\r\n this._removeDecorationListener = undefined;\r\n }\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n } else if (add) {\r\n if (!this._removeDecorationListener)\r\n this._removeDecorationListener = IModelApp.viewManager.addDecorator(this);\r\n IModelApp.viewManager.invalidateDecorationsAllViews();\r\n }\r\n }\r\n\r\n /** Sub-classes should override to display the pickable graphics for their controls. */\r\n public decorate(_context: DecorateContext): void { }\r\n\r\n /** The provider is responsible for checking if modification by controls is valid.\r\n * May still wish to present controls for \"transient\" geometry in non-read/write applications, etc.\r\n */\r\n protected abstract createControls(): Promise<boolean>;\r\n\r\n /* Call to stop displaying the the control handles */\r\n protected clearControls(): void {\r\n this.updateDecorationListener(this._isActive = false);\r\n }\r\n\r\n /** A provider can install an [[InputCollector]] to support interactive modification.\r\n * @return true if a tool was successfully run.\r\n * @see [[EditManipulator.HandleTool]]\r\n */\r\n protected abstract modifyControls(_hit: HitDetail, _ev: BeButtonEvent): Promise<boolean>;\r\n\r\n /* Create, update, or clear based on the current selection. */\r\n protected async updateControls(): Promise<void> {\r\n const created = await this.createControls();\r\n if (this._isActive && !created)\r\n this.clearControls();\r\n else\r\n this.updateDecorationListener(this._isActive = created);\r\n }\r\n\r\n /* Update controls to reflect active selection or post-modification state. */\r\n public onManipulatorEvent(_eventType: EventType): void {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.updateControls();\r\n }\r\n\r\n /** Sub-classes can override to perform some operation for a double click on a handle. */\r\n protected async onDoubleClick(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.No; }\r\n\r\n /** Sub-classes can override to present a menu for a right click on a handle. */\r\n protected async onRightClick(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.No; }\r\n\r\n /** Sub-classes can override to respond to a touch tap on a handle. By default, handles are selected by touch drag and taps are ignored. */\r\n protected async onTouchTap(_hit: HitDetail, _ev: BeButtonEvent): Promise<EventHandled> { return EventHandled.Yes; }\r\n\r\n /** Event raised by a PrimitiveTool that supports handle providers to allow a pickable decoration to respond to being located. */\r\n public async onDecorationButtonEvent(hit: HitDetail, ev: BeButtonEvent): Promise<EventHandled> {\r\n if (!this._isActive)\r\n return EventHandled.No;\r\n\r\n if (ev.isDoubleClick)\r\n return this.onDoubleClick(hit, ev); // Allow double click on handle to override default operation (ex. fit view).\r\n\r\n if (BeButton.Reset === ev.button && !ev.isDown && !ev.isDragging)\r\n return this.onRightClick(hit, ev); // Allow right click on handle to present a menu.\r\n\r\n if (BeButton.Data !== ev.button)\r\n return EventHandled.No;\r\n\r\n if (ev.isControlKey)\r\n return EventHandled.No; // Support ctrl+click to select multiple controls (ex. linestring vertices)...\r\n\r\n if (InputSource.Touch === ev.inputSource && !ev.isDragging)\r\n return this.onTouchTap(hit, ev); // Default is to select controls on touch drag only, ignore tap on control...\r\n\r\n if (ev.isDown && !ev.isDragging)\r\n return EventHandled.No; // Select controls on up event or down event only after drag started...\r\n\r\n if (!await this.modifyControls(hit, ev))\r\n return EventHandled.No;\r\n\r\n // In case InputCollector was installed for handle modification, don't wait for motion to show dynamic frame adjusted for AccuDraw hints...\r\n IModelApp.accuDraw.refreshDecorationsAndDynamics();\r\n\r\n return EventHandled.Yes;\r\n }\r\n }\r\n\r\n /** Utility methods for creating control handles and other decorations. */\r\n export class HandleUtils {\r\n /** Adjust input color for contrast against view background.\r\n * @param color The color to adjust.\r\n * @param vp The viewport to compare.\r\n * @return color adjusted for view background color or original color if view background color isn't being used.\r\n */\r\n public static adjustForBackgroundColor(color: ColorDef, vp: Viewport): ColorDef {\r\n if (vp.view.is3d() && vp.view.getDisplayStyle3d().environment.displaySky)\r\n return color;\r\n\r\n return color.adjustedForContrast(vp.view.backgroundColor);\r\n }\r\n\r\n /** Compute a transform that will try to orient a 2d shape (like an arrow) to face the camera.\r\n * @param vp The viewport to get the rotation from.\r\n * @param base The world coordinate point to pivot about.\r\n * @param direction The world coordinate axis to tilt along.\r\n * @param sizeInches The transform scale specified in screen inches.\r\n * @returns transform or undefined when input direction is almost perpendicular to viewing direction.\r\n * @see [[getArrowShape]]\r\n */\r\n public static getArrowTransform(vp: Viewport, base: Point3d, direction: Vector3d, sizeInches: number): Transform | undefined {\r\n const boresite = AccuDrawHintBuilder.getBoresite(base, vp);\r\n if (Math.abs(direction.dotProduct(boresite.direction)) >= 0.99)\r\n return undefined;\r\n\r\n const pixelSize = vp.pixelsFromInches(sizeInches);\r\n const scale = vp.viewingSpace.getPixelSizeAtPoint(base) * pixelSize;\r\n const matrix = Matrix3d.createRigidFromColumns(direction, boresite.direction, AxisOrder.XZY);\r\n if (undefined === matrix)\r\n return undefined;\r\n\r\n matrix.scaleColumnsInPlace(scale, scale, scale);\r\n return Transform.createRefs(base.clone(), matrix);\r\n }\r\n\r\n /** Return array of shape points representing a unit arrow in xy plane pointing in positive x direction. */\r\n public static getArrowShape(baseStart: number = 0.0, baseWidth: number = 0.15, tipStart: number = 0.55, tipEnd: number = 1.0, tipWidth: number = 0.3, flangeStart: number = tipStart, flangeWidth: number = baseWidth): Point3d[] {\r\n const shapePts: Point3d[] = [];\r\n shapePts[0] = Point3d.create(tipEnd, 0.0);\r\n shapePts[1] = Point3d.create(flangeStart, tipWidth);\r\n shapePts[2] = Point3d.create(tipStart, flangeWidth);\r\n shapePts[3] = Point3d.create(baseStart, baseWidth);\r\n shapePts[4] = Point3d.create(baseStart, -baseWidth);\r\n shapePts[5] = Point3d.create(tipStart, -flangeWidth);\r\n shapePts[6] = Point3d.create(flangeStart, -tipWidth);\r\n shapePts[7] = shapePts[0].clone();\r\n return shapePts;\r\n }\r\n }\r\n}\r\n"]}
|
package/lib/cjs/tools/Tool.js
CHANGED
|
@@ -311,7 +311,7 @@ class Tool {
|
|
|
311
311
|
}
|
|
312
312
|
static getLocalizedKey(name) {
|
|
313
313
|
const key = `tools.${this.toolId}.${name}`;
|
|
314
|
-
const val = IModelApp_1.IModelApp.localization.
|
|
314
|
+
const val = IModelApp_1.IModelApp.localization.getLocalizedString(key, { ns: this.namespace });
|
|
315
315
|
return key === val ? undefined : val; // if translation for key doesn't exist, `translate` returns the key as the result
|
|
316
316
|
}
|
|
317
317
|
/**
|