@itwin/core-frontend 4.1.0-dev.3 → 4.1.0-dev.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -1
- package/lib/cjs/AccuSnap.d.ts.map +1 -1
- package/lib/cjs/AccuSnap.js +8 -0
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.d.ts +2 -2
- package/lib/cjs/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +18 -7
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.d.ts +2 -2
- package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
- package/lib/cjs/BriefcaseTxns.js +3 -3
- package/lib/cjs/BriefcaseTxns.js.map +1 -1
- package/lib/cjs/CheckpointConnection.js +1 -1
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +1 -1
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.js +1 -1
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +1 -1
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/GeoServices.d.ts +37 -7
- package/lib/cjs/GeoServices.d.ts.map +1 -1
- package/lib/cjs/GeoServices.js +75 -25
- package/lib/cjs/GeoServices.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.d.ts +2 -2
- package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js +1 -1
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/IModelApp.js +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +26 -9
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +78 -11
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +3 -3
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/Marker.d.ts +1 -1
- package/lib/cjs/Marker.d.ts.map +1 -1
- package/lib/cjs/Marker.js +3 -3
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/NativeApp.d.ts.map +1 -1
- package/lib/cjs/NativeApp.js +4 -4
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NoRenderApp.d.ts +1 -1
- package/lib/cjs/NoRenderApp.d.ts.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/RealityDataSource.js +1 -1
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +2 -2
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/Sprites.js +2 -2
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.d.ts.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js +4 -3
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewState.d.ts +22 -4
- package/lib/cjs/ViewState.d.ts.map +1 -1
- package/lib/cjs/ViewState.js +36 -6
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +1 -1
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.d.ts +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +2 -2
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/FrontendLoggerCategory.d.ts.map +1 -0
- package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -0
- package/lib/cjs/common/ImageUtil.d.ts.map +1 -0
- package/lib/cjs/{ImageUtil.js → common/ImageUtil.js} +2 -0
- package/lib/cjs/common/ImageUtil.js.map +1 -0
- package/lib/cjs/common/ViewRect.d.ts.map +1 -0
- package/lib/cjs/common/ViewRect.js.map +1 -0
- package/lib/cjs/common/WorkerProxy.d.ts +73 -0
- package/lib/cjs/common/WorkerProxy.d.ts.map +1 -0
- package/lib/cjs/common/WorkerProxy.js +54 -0
- package/lib/cjs/common/WorkerProxy.js.map +1 -0
- package/lib/{esm → cjs/common}/gltf/GltfModel.d.ts +1 -1
- package/lib/cjs/common/gltf/GltfModel.d.ts.map +1 -0
- package/lib/cjs/common/gltf/GltfModel.js.map +1 -0
- package/lib/cjs/common/gltf/GltfParser.d.ts.map +1 -0
- package/lib/cjs/common/gltf/GltfParser.js.map +1 -0
- package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -0
- package/lib/cjs/common/gltf/GltfSchema.js.map +1 -0
- package/lib/cjs/common/imdl/CompactEdges.d.ts +27 -0
- package/lib/cjs/common/imdl/CompactEdges.d.ts.map +1 -0
- package/lib/cjs/common/imdl/CompactEdges.js +96 -0
- package/lib/cjs/common/imdl/CompactEdges.js.map +1 -0
- package/lib/cjs/common/imdl/ImdlModel.d.ts +186 -0
- package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -0
- package/lib/cjs/common/imdl/ImdlModel.js +71 -0
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -0
- package/lib/cjs/common/imdl/ImdlSchema.d.ts +412 -0
- package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -0
- package/lib/cjs/common/imdl/ImdlSchema.js +23 -0
- package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -0
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +45 -0
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -0
- package/lib/cjs/common/imdl/ParseImdlDocument.js +1011 -0
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -0
- package/lib/cjs/common/render/AnimationNodeId.d.ts +11 -0
- package/lib/cjs/common/render/AnimationNodeId.d.ts.map +1 -0
- package/lib/cjs/common/render/AnimationNodeId.js +19 -0
- package/lib/cjs/common/render/AnimationNodeId.js.map +1 -0
- package/lib/{esm/render/RenderMaterial.d.ts → cjs/common/render/MaterialParams.d.ts} +7 -20
- package/lib/cjs/common/render/MaterialParams.d.ts.map +1 -0
- package/lib/cjs/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
- package/lib/cjs/common/render/MaterialParams.js.map +1 -0
- package/lib/cjs/common/render/TextureParams.d.ts +30 -0
- package/lib/cjs/common/render/TextureParams.d.ts.map +1 -0
- package/lib/cjs/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
- package/lib/cjs/common/render/TextureParams.js.map +1 -0
- package/lib/{esm → cjs/common}/render/primitives/AuxChannelTable.d.ts +12 -8
- package/lib/cjs/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
- package/lib/cjs/{render → common/render}/primitives/AuxChannelTable.js +42 -9
- package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -0
- package/lib/cjs/common/render/primitives/DisplayParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/EdgeParams.d.ts +94 -0
- package/lib/cjs/common/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/EdgeParams.js +46 -0
- package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/MeshParams.d.ts +20 -0
- package/lib/cjs/common/render/primitives/MeshParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/MeshParams.js +10 -0
- package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts +29 -0
- package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/MeshPrimitive.js +18 -0
- package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -0
- package/lib/cjs/common/render/primitives/PointStringParams.d.ts +14 -0
- package/lib/cjs/common/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/PointStringParams.js +10 -0
- package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/PolylineParams.d.ts +29 -0
- package/lib/cjs/common/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/PolylineParams.js +10 -0
- package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -0
- package/lib/{esm → cjs/common}/render/primitives/SurfaceParams.d.ts +1 -1
- package/lib/cjs/common/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/cjs/common/render/primitives/VertexIndices.d.ts +26 -0
- package/lib/cjs/common/render/primitives/VertexIndices.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/VertexIndices.js +64 -0
- package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -0
- package/lib/cjs/common/render/primitives/VertexTable.d.ts +45 -0
- package/lib/cjs/common/render/primitives/VertexTable.d.ts.map +1 -0
- package/lib/cjs/common/render/primitives/VertexTable.js +38 -0
- package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -0
- package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
- package/lib/cjs/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
- package/lib/cjs/{render → common/render}/primitives/VertexTableSplitter.js +46 -35
- package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -0
- package/lib/cjs/core-frontend.d.ts +26 -6
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +26 -6
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/render/CreateRenderMaterialArgs.d.ts +24 -0
- package/lib/cjs/render/CreateRenderMaterialArgs.d.ts.map +1 -0
- package/lib/cjs/render/CreateRenderMaterialArgs.js +10 -0
- package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -0
- package/lib/{esm/render/RenderTexture.d.ts → cjs/render/CreateTextureArgs.d.ts} +4 -28
- package/lib/cjs/render/CreateTextureArgs.d.ts.map +1 -0
- package/lib/cjs/render/CreateTextureArgs.js +10 -0
- package/lib/cjs/render/CreateTextureArgs.js.map +1 -0
- package/lib/cjs/render/GraphicBranch.d.ts +1 -7
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js +1 -9
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/MockRender.d.ts +4 -4
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/MockRender.js +1 -1
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js +5 -5
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js +2 -2
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +7 -6
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +6 -6
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.d.ts +1 -1
- package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.d.ts +1 -1
- package/lib/cjs/render/VisibleFeature.d.ts.map +1 -1
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.d.ts +2 -89
- package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js +35 -71
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/PointStringParams.d.ts +2 -11
- package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/PointStringParams.js +26 -30
- package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
- package/lib/cjs/render/primitives/Polyface.d.ts +1 -1
- package/lib/cjs/render/primitives/Polyface.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Polyface.js.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.d.ts +4 -36
- package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.js +29 -40
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/render/primitives/Strokes.d.ts +1 -1
- package/lib/cjs/render/primitives/Strokes.d.ts.map +1 -1
- package/lib/cjs/render/primitives/Strokes.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableBuilder.d.ts +28 -0
- package/lib/cjs/render/primitives/VertexTableBuilder.d.ts.map +1 -0
- package/lib/cjs/render/primitives/{VertexTable.js → VertexTableBuilder.js} +61 -175
- package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -0
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +3 -2
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +9 -14
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.d.ts +1 -1
- package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts +2 -2
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.d.ts +1 -1
- package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts +2 -2
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +1 -1
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.d.ts +2 -2
- package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -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/PointString.d.ts +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +7 -6
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +1 -1
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts +1 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +4 -4
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts +1 -1
- package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +1 -1
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
- package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render-primitives.d.ts +1 -4
- package/lib/cjs/render-primitives.d.ts.map +1 -1
- package/lib/cjs/render-primitives.js +1 -4
- package/lib/cjs/render-primitives.js.map +1 -1
- package/lib/cjs/tile/B3dmReader.d.ts +1 -1
- package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
- package/lib/cjs/tile/B3dmReader.js +1 -1
- package/lib/cjs/tile/B3dmReader.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 +3 -3
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +12 -21
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTile.js +11 -17
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.d.ts +4 -1
- package/lib/cjs/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js +15 -0
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlDecoder.d.ts +52 -0
- package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -0
- package/lib/cjs/tile/ImdlDecoder.js +35 -0
- package/lib/cjs/tile/ImdlDecoder.js.map +1 -0
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +19 -0
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -0
- package/lib/cjs/tile/ImdlGraphicsCreator.js +328 -0
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -0
- package/lib/cjs/tile/ImdlParser.d.ts +26 -0
- package/lib/cjs/tile/ImdlParser.d.ts.map +1 -0
- package/lib/cjs/tile/ImdlParser.js +72 -0
- package/lib/cjs/tile/ImdlParser.js.map +1 -0
- package/lib/cjs/tile/ImdlReader.d.ts +16 -420
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +69 -902
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js +1 -1
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +2 -1
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +1 -1
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +14 -10
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +6 -15
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/internal.d.ts +3 -0
- package/lib/cjs/tile/internal.d.ts.map +1 -1
- package/lib/cjs/tile/internal.js +3 -0
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts +8 -1
- package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +21 -0
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +14 -7
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +3 -0
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts +4 -1
- package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js +3 -0
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.d.ts +6 -1
- package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +8 -7
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +9 -3
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js +1 -1
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +1 -1
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +1 -1
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +1 -1
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/workers/ImdlParser/Worker.d.ts +20 -0
- package/lib/cjs/workers/ImdlParser/Worker.d.ts.map +1 -0
- package/lib/cjs/workers/ImdlParser/Worker.js +32 -0
- package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -0
- package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -0
- package/lib/cjs/workers/RegisterWorker.d.ts +9 -0
- package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -0
- package/lib/cjs/workers/RegisterWorker.js +36 -0
- package/lib/cjs/workers/RegisterWorker.js.map +1 -0
- package/lib/esm/AccuSnap.d.ts.map +1 -1
- package/lib/esm/AccuSnap.js +8 -0
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.d.ts +2 -2
- package/lib/esm/BackgroundMapGeometry.d.ts.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +18 -7
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BriefcaseTxns.d.ts +2 -2
- package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
- package/lib/esm/BriefcaseTxns.js +3 -3
- package/lib/esm/BriefcaseTxns.js.map +1 -1
- package/lib/esm/CheckpointConnection.js +1 -1
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/DrawingViewState.js +1 -1
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/ElementLocateManager.js +1 -1
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +1 -1
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/GeoServices.d.ts +37 -7
- package/lib/esm/GeoServices.d.ts.map +1 -1
- package/lib/esm/GeoServices.js +75 -25
- package/lib/esm/GeoServices.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.d.ts +2 -2
- package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
- package/lib/esm/GraphicalEditingScope.js +2 -2
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/IModelApp.js +1 -1
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +26 -9
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +78 -11
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +4 -4
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +2 -2
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/Marker.d.ts +1 -1
- package/lib/esm/Marker.d.ts.map +1 -1
- package/lib/esm/Marker.js +3 -3
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/NativeApp.d.ts.map +1 -1
- package/lib/esm/NativeApp.js +5 -5
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NoRenderApp.d.ts +1 -1
- package/lib/esm/NoRenderApp.d.ts.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/RealityDataSource.js +1 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +2 -2
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/Sprites.js +2 -2
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.d.ts.map +1 -1
- package/lib/esm/ViewGlobalLocation.js +4 -3
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewState.d.ts +22 -4
- package/lib/esm/ViewState.d.ts.map +1 -1
- package/lib/esm/ViewState.js +36 -6
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.js +1 -1
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.d.ts +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +2 -2
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/FrontendLoggerCategory.d.ts.map +1 -0
- package/lib/esm/common/FrontendLoggerCategory.js.map +1 -0
- package/lib/esm/common/ImageUtil.d.ts.map +1 -0
- package/lib/esm/{ImageUtil.js → common/ImageUtil.js} +2 -0
- package/lib/esm/common/ImageUtil.js.map +1 -0
- package/lib/esm/common/ViewRect.d.ts.map +1 -0
- package/lib/esm/common/ViewRect.js.map +1 -0
- package/lib/esm/common/WorkerProxy.d.ts +73 -0
- package/lib/esm/common/WorkerProxy.d.ts.map +1 -0
- package/lib/esm/common/WorkerProxy.js +50 -0
- package/lib/esm/common/WorkerProxy.js.map +1 -0
- package/lib/{cjs → esm/common}/gltf/GltfModel.d.ts +1 -1
- package/lib/esm/common/gltf/GltfModel.d.ts.map +1 -0
- package/lib/esm/common/gltf/GltfModel.js.map +1 -0
- package/lib/esm/common/gltf/GltfParser.d.ts.map +1 -0
- package/lib/esm/common/gltf/GltfParser.js.map +1 -0
- package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -0
- package/lib/esm/common/gltf/GltfSchema.js.map +1 -0
- package/lib/esm/common/imdl/CompactEdges.d.ts +27 -0
- package/lib/esm/common/imdl/CompactEdges.d.ts.map +1 -0
- package/lib/esm/common/imdl/CompactEdges.js +92 -0
- package/lib/esm/common/imdl/CompactEdges.js.map +1 -0
- package/lib/esm/common/imdl/ImdlModel.d.ts +186 -0
- package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -0
- package/lib/esm/common/imdl/ImdlModel.js +67 -0
- package/lib/esm/common/imdl/ImdlModel.js.map +1 -0
- package/lib/esm/common/imdl/ImdlSchema.d.ts +412 -0
- package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -0
- package/lib/esm/common/imdl/ImdlSchema.js +20 -0
- package/lib/esm/common/imdl/ImdlSchema.js.map +1 -0
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts +45 -0
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -0
- package/lib/esm/common/imdl/ParseImdlDocument.js +1003 -0
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -0
- package/lib/esm/common/render/AnimationNodeId.d.ts +11 -0
- package/lib/esm/common/render/AnimationNodeId.d.ts.map +1 -0
- package/lib/esm/common/render/AnimationNodeId.js +16 -0
- package/lib/esm/common/render/AnimationNodeId.js.map +1 -0
- package/lib/{cjs/render/RenderMaterial.d.ts → esm/common/render/MaterialParams.d.ts} +7 -20
- package/lib/esm/common/render/MaterialParams.d.ts.map +1 -0
- package/lib/esm/{render/RenderMaterial.js → common/render/MaterialParams.js} +1 -1
- package/lib/esm/common/render/MaterialParams.js.map +1 -0
- package/lib/esm/common/render/TextureParams.d.ts +30 -0
- package/lib/esm/common/render/TextureParams.d.ts.map +1 -0
- package/lib/esm/{render/RenderTexture.js → common/render/TextureParams.js} +1 -1
- package/lib/esm/common/render/TextureParams.js.map +1 -0
- package/lib/{cjs → esm/common}/render/primitives/AuxChannelTable.d.ts +12 -8
- package/lib/esm/common/render/primitives/AuxChannelTable.d.ts.map +1 -0
- package/lib/esm/{render → common/render}/primitives/AuxChannelTable.js +42 -9
- package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -0
- package/lib/esm/common/render/primitives/DisplayParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -0
- package/lib/esm/common/render/primitives/EdgeParams.d.ts +94 -0
- package/lib/esm/common/render/primitives/EdgeParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/EdgeParams.js +42 -0
- package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -0
- package/lib/esm/common/render/primitives/MeshParams.d.ts +20 -0
- package/lib/esm/common/render/primitives/MeshParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/MeshParams.js +9 -0
- package/lib/esm/common/render/primitives/MeshParams.js.map +1 -0
- package/lib/esm/common/render/primitives/MeshPrimitive.d.ts +29 -0
- package/lib/esm/common/render/primitives/MeshPrimitive.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/MeshPrimitive.js +15 -0
- package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -0
- package/lib/esm/common/render/primitives/PointStringParams.d.ts +14 -0
- package/lib/esm/common/render/primitives/PointStringParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/PointStringParams.js +9 -0
- package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -0
- package/lib/esm/common/render/primitives/PolylineParams.d.ts +29 -0
- package/lib/esm/common/render/primitives/PolylineParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/PolylineParams.js +9 -0
- package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -0
- package/lib/{cjs → esm/common}/render/primitives/SurfaceParams.d.ts +1 -1
- package/lib/esm/common/render/primitives/SurfaceParams.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -0
- package/lib/esm/common/render/primitives/VertexIndices.d.ts +26 -0
- package/lib/esm/common/render/primitives/VertexIndices.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/VertexIndices.js +60 -0
- package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -0
- package/lib/esm/common/render/primitives/VertexTable.d.ts +45 -0
- package/lib/esm/common/render/primitives/VertexTable.d.ts.map +1 -0
- package/lib/esm/common/render/primitives/VertexTable.js +34 -0
- package/lib/esm/common/render/primitives/VertexTable.js.map +1 -0
- package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.d.ts +23 -2
- package/lib/esm/common/render/primitives/VertexTableSplitter.d.ts.map +1 -0
- package/lib/esm/{render → common/render}/primitives/VertexTableSplitter.js +44 -33
- package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -0
- package/lib/esm/core-frontend.d.ts +26 -6
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +26 -6
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js +1 -1
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/render/CreateRenderMaterialArgs.d.ts +24 -0
- package/lib/esm/render/CreateRenderMaterialArgs.d.ts.map +1 -0
- package/lib/esm/render/CreateRenderMaterialArgs.js +9 -0
- package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -0
- package/lib/{cjs/render/RenderTexture.d.ts → esm/render/CreateTextureArgs.d.ts} +4 -28
- package/lib/esm/render/CreateTextureArgs.d.ts.map +1 -0
- package/lib/esm/render/CreateTextureArgs.js +9 -0
- package/lib/esm/render/CreateTextureArgs.js.map +1 -0
- package/lib/esm/render/GraphicBranch.d.ts +1 -7
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js +0 -8
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/MockRender.d.ts +4 -4
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/MockRender.js +1 -1
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js +5 -5
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js +2 -2
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +7 -6
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +7 -7
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.d.ts +1 -1
- package/lib/esm/render/RenderTarget.d.ts.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/VisibleFeature.d.ts +1 -1
- package/lib/esm/render/VisibleFeature.d.ts.map +1 -1
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.d.ts +2 -89
- package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js +29 -65
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/PointStringParams.d.ts +2 -11
- package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/PointStringParams.js +24 -28
- package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
- package/lib/esm/render/primitives/Polyface.d.ts +1 -1
- package/lib/esm/render/primitives/Polyface.d.ts.map +1 -1
- package/lib/esm/render/primitives/Polyface.js.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.d.ts +4 -36
- package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.js +24 -36
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/render/primitives/Strokes.d.ts +1 -1
- package/lib/esm/render/primitives/Strokes.d.ts.map +1 -1
- package/lib/esm/render/primitives/Strokes.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableBuilder.d.ts +28 -0
- package/lib/esm/render/primitives/VertexTableBuilder.d.ts.map +1 -0
- package/lib/esm/render/primitives/{VertexTable.js → VertexTableBuilder.js} +60 -171
- package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -0
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts +6 -5
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +4 -3
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +4 -25
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js +9 -14
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.d.ts +1 -1
- package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.d.ts +2 -2
- package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.d.ts +1 -1
- package/lib/esm/render/webgl/Material.d.ts.map +1 -1
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts +2 -2
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +1 -1
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.d.ts +2 -2
- package/lib/esm/render/webgl/MeshData.d.ts.map +1 -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/PointString.d.ts +1 -1
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +1 -1
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +7 -6
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +1 -1
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts +1 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +3 -3
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Texture.d.ts +1 -1
- package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
- package/lib/esm/render/webgl/Texture.js +1 -1
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.js +1 -1
- package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
- package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render-primitives.d.ts +1 -4
- package/lib/esm/render-primitives.d.ts.map +1 -1
- package/lib/esm/render-primitives.js +1 -4
- package/lib/esm/render-primitives.js.map +1 -1
- package/lib/esm/tile/B3dmReader.d.ts +1 -1
- package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
- package/lib/esm/tile/B3dmReader.js +1 -1
- package/lib/esm/tile/B3dmReader.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 +3 -3
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +12 -21
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.d.ts.map +1 -1
- package/lib/esm/tile/IModelTile.js +12 -18
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.d.ts +4 -1
- package/lib/esm/tile/IModelTileTree.d.ts.map +1 -1
- package/lib/esm/tile/IModelTileTree.js +16 -1
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlDecoder.d.ts +52 -0
- package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -0
- package/lib/esm/tile/ImdlDecoder.js +31 -0
- package/lib/esm/tile/ImdlDecoder.js.map +1 -0
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts +19 -0
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -0
- package/lib/esm/tile/ImdlGraphicsCreator.js +324 -0
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -0
- package/lib/esm/tile/ImdlParser.d.ts +26 -0
- package/lib/esm/tile/ImdlParser.d.ts.map +1 -0
- package/lib/esm/tile/ImdlParser.js +68 -0
- package/lib/esm/tile/ImdlParser.js.map +1 -0
- package/lib/esm/tile/ImdlReader.d.ts +16 -420
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +71 -903
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/PntsReader.js +1 -1
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +2 -1
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +1 -1
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +14 -10
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +6 -15
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/internal.d.ts +3 -0
- package/lib/esm/tile/internal.d.ts.map +1 -1
- package/lib/esm/tile/internal.js +3 -0
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts +8 -1
- package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +21 -0
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +14 -7
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +3 -0
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts +4 -1
- package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js +3 -0
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapTile.d.ts +6 -1
- package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTile.js +8 -7
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +9 -3
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.js +1 -1
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +1 -1
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +1 -1
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +1 -1
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/workers/ImdlParser/Worker.d.ts +20 -0
- package/lib/esm/workers/ImdlParser/Worker.d.ts.map +1 -0
- package/lib/esm/workers/ImdlParser/Worker.js +30 -0
- package/lib/esm/workers/ImdlParser/Worker.js.map +1 -0
- package/lib/esm/workers/ImdlParser/webpack.config.js +40 -0
- package/lib/esm/workers/RegisterWorker.d.ts +9 -0
- package/lib/esm/workers/RegisterWorker.d.ts.map +1 -0
- package/lib/esm/workers/RegisterWorker.js +32 -0
- package/lib/esm/workers/RegisterWorker.js.map +1 -0
- package/lib/public/scripts/parse-imdl-worker.js +1 -0
- package/lib/workers/webpack/parse-imdl-worker.js +1 -0
- package/package.json +23 -20
- package/lib/cjs/FrontendLoggerCategory.d.ts.map +0 -1
- package/lib/cjs/FrontendLoggerCategory.js.map +0 -1
- package/lib/cjs/ImageUtil.d.ts.map +0 -1
- package/lib/cjs/ImageUtil.js.map +0 -1
- package/lib/cjs/ViewRect.d.ts.map +0 -1
- package/lib/cjs/ViewRect.js.map +0 -1
- package/lib/cjs/WebWorkerManager.d.ts +0 -49
- package/lib/cjs/WebWorkerManager.d.ts.map +0 -1
- package/lib/cjs/WebWorkerManager.js +0 -155
- package/lib/cjs/WebWorkerManager.js.map +0 -1
- package/lib/cjs/gltf/GltfModel.d.ts.map +0 -1
- package/lib/cjs/gltf/GltfModel.js.map +0 -1
- package/lib/cjs/gltf/GltfParser.d.ts.map +0 -1
- package/lib/cjs/gltf/GltfParser.js.map +0 -1
- package/lib/cjs/gltf/GltfSchema.d.ts.map +0 -1
- package/lib/cjs/gltf/GltfSchema.js.map +0 -1
- package/lib/cjs/render/RenderMaterial.d.ts.map +0 -1
- package/lib/cjs/render/RenderMaterial.js.map +0 -1
- package/lib/cjs/render/RenderTexture.d.ts.map +0 -1
- package/lib/cjs/render/RenderTexture.js.map +0 -1
- package/lib/cjs/render/primitives/AuxChannelTable.d.ts.map +0 -1
- package/lib/cjs/render/primitives/AuxChannelTable.js.map +0 -1
- package/lib/cjs/render/primitives/DisplayParams.d.ts.map +0 -1
- package/lib/cjs/render/primitives/DisplayParams.js.map +0 -1
- package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +0 -1
- package/lib/cjs/render/primitives/SurfaceParams.js.map +0 -1
- package/lib/cjs/render/primitives/VertexTable.d.ts +0 -152
- package/lib/cjs/render/primitives/VertexTable.d.ts.map +0 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +0 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +0 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +0 -1
- package/lib/esm/FrontendLoggerCategory.d.ts.map +0 -1
- package/lib/esm/FrontendLoggerCategory.js.map +0 -1
- package/lib/esm/ImageUtil.d.ts.map +0 -1
- package/lib/esm/ImageUtil.js.map +0 -1
- package/lib/esm/ViewRect.d.ts.map +0 -1
- package/lib/esm/ViewRect.js.map +0 -1
- package/lib/esm/WebWorkerManager.d.ts +0 -49
- package/lib/esm/WebWorkerManager.d.ts.map +0 -1
- package/lib/esm/WebWorkerManager.js +0 -150
- package/lib/esm/WebWorkerManager.js.map +0 -1
- package/lib/esm/gltf/GltfModel.d.ts.map +0 -1
- package/lib/esm/gltf/GltfModel.js.map +0 -1
- package/lib/esm/gltf/GltfParser.d.ts.map +0 -1
- package/lib/esm/gltf/GltfParser.js.map +0 -1
- package/lib/esm/gltf/GltfSchema.d.ts.map +0 -1
- package/lib/esm/gltf/GltfSchema.js.map +0 -1
- package/lib/esm/render/RenderMaterial.d.ts.map +0 -1
- package/lib/esm/render/RenderMaterial.js.map +0 -1
- package/lib/esm/render/RenderTexture.d.ts.map +0 -1
- package/lib/esm/render/RenderTexture.js.map +0 -1
- package/lib/esm/render/primitives/AuxChannelTable.d.ts.map +0 -1
- package/lib/esm/render/primitives/AuxChannelTable.js.map +0 -1
- package/lib/esm/render/primitives/DisplayParams.d.ts.map +0 -1
- package/lib/esm/render/primitives/DisplayParams.js.map +0 -1
- package/lib/esm/render/primitives/SurfaceParams.d.ts.map +0 -1
- package/lib/esm/render/primitives/SurfaceParams.js.map +0 -1
- package/lib/esm/render/primitives/VertexTable.d.ts +0 -152
- package/lib/esm/render/primitives/VertexTable.d.ts.map +0 -1
- package/lib/esm/render/primitives/VertexTable.js.map +0 -1
- package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +0 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +0 -1
- /package/lib/cjs/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
- /package/lib/cjs/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
- /package/lib/cjs/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
- /package/lib/cjs/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
- /package/lib/cjs/{ViewRect.js → common/ViewRect.js} +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfModel.js +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfParser.d.ts +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfParser.js +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
- /package/lib/cjs/{gltf → common/gltf}/GltfSchema.js +0 -0
- /package/lib/cjs/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
- /package/lib/cjs/{render → common/render}/primitives/DisplayParams.js +0 -0
- /package/lib/cjs/{render → common/render}/primitives/SurfaceParams.js +0 -0
- /package/lib/esm/{FrontendLoggerCategory.d.ts → common/FrontendLoggerCategory.d.ts} +0 -0
- /package/lib/esm/{FrontendLoggerCategory.js → common/FrontendLoggerCategory.js} +0 -0
- /package/lib/esm/{ImageUtil.d.ts → common/ImageUtil.d.ts} +0 -0
- /package/lib/esm/{ViewRect.d.ts → common/ViewRect.d.ts} +0 -0
- /package/lib/esm/{ViewRect.js → common/ViewRect.js} +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfModel.js +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfParser.d.ts +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfParser.js +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfSchema.d.ts +0 -0
- /package/lib/esm/{gltf → common/gltf}/GltfSchema.js +0 -0
- /package/lib/esm/{render → common/render}/primitives/DisplayParams.d.ts +0 -0
- /package/lib/esm/{render → common/render}/primitives/DisplayParams.js +0 -0
- /package/lib/esm/{render → common/render}/primitives/SurfaceParams.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalhostIpcApp.js","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"LocalhostIpcApp.js","sourceRoot":"","sources":["../../src/LocalhostIpcApp.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 IModelApp\r\n */\r\n\r\nimport { InterceptedRpcRequest, IpcSession, IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketMessage, IpcWebSocketTransport, rpcOverIpcStrings } from \"@itwin/core-common\";\r\nimport { IpcApp } from \"./IpcApp\";\r\nimport { IModelApp, IModelAppOptions } from \"./IModelApp\";\r\n\r\n/** @internal */\r\nexport interface LocalHostIpcAppOpts {\r\n iModelApp?: IModelAppOptions;\r\n\r\n localhostIpcApp?: {\r\n socketPort?: number;\r\n socketUrl?: URL;\r\n };\r\n}\r\n\r\nclass LocalTransport extends IpcWebSocketTransport {\r\n private _client: WebSocket;\r\n private _next: number;\r\n private _pending?: IpcWebSocketMessage[] = [];\r\n\r\n public constructor(opts: LocalHostIpcAppOpts) {\r\n super();\r\n\r\n let url: URL;\r\n if (opts?.localhostIpcApp?.socketUrl) {\r\n url = opts?.localhostIpcApp?.socketUrl;\r\n } else {\r\n const port = opts?.localhostIpcApp?.socketPort ?? 3002;\r\n url = new URL(`ws://localhost:${port}/`);\r\n }\r\n\r\n this._client = new WebSocket(url);\r\n this._next = -1;\r\n\r\n this._client.addEventListener(\"open\", () => {\r\n const pending = this._pending!;\r\n this._pending = undefined;\r\n pending.forEach((m) => this.send(m));\r\n });\r\n\r\n this._client.addEventListener(\"message\", async (event) => {\r\n const message = await this.notifyIncoming(event.data, this._client);\r\n if (IpcWebSocketMessage.skip(message)) {\r\n return;\r\n }\r\n\r\n for (const listener of IpcWebSocket.receivers)\r\n listener({} as Event, message);\r\n });\r\n }\r\n\r\n public send(message: IpcWebSocketMessage): void {\r\n if (this._pending) {\r\n this._pending.push(message);\r\n return;\r\n }\r\n\r\n message.sequence = ++this._next;\r\n const parts = this.serialize(message);\r\n parts.forEach((part) => this._client.send(part));\r\n }\r\n}\r\n\r\nclass LocalSession extends IpcSession {\r\n public override async handleRpc(info: InterceptedRpcRequest) {\r\n return IpcApp.callIpcChannel(rpcOverIpcStrings.channelName, \"request\", info);\r\n }\r\n}\r\n\r\n/**\r\n * To be used only by test applications that want to test web-based editing using localhost.\r\n * @internal\r\n */\r\nexport class LocalhostIpcApp {\r\n private static _initialized = false;\r\n private static _ipc: IpcWebSocketFrontend;\r\n\r\n public static buildUrlForSocket(base: URL, path = \"ipc\"): URL {\r\n const url = new URL(base);\r\n url.protocol = \"ws\";\r\n url.pathname = [...url.pathname.split(\"/\"), path].filter((v) => v).join(\"/\");\r\n return url;\r\n }\r\n\r\n public static async startup(opts: LocalHostIpcAppOpts) {\r\n if (!this._initialized) {\r\n IpcWebSocket.transport = new LocalTransport(opts);\r\n this._ipc = new IpcWebSocketFrontend();\r\n this._initialized = true;\r\n }\r\n\r\n await IpcApp.startup(this._ipc, opts);\r\n\r\n if (!IpcSession.active) {\r\n IpcSession.start(new LocalSession());\r\n IModelApp.onBeforeShutdown.addListener(() => IpcSession.stop());\r\n }\r\n }\r\n}\r\n"]}
|
package/lib/cjs/Marker.d.ts
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Matrix4d, Point2d, Point3d, Range1d, Range1dProps, XAndY, XYAndZ } from "@itwin/core-geometry";
|
|
5
5
|
import { ColorDef } from "@itwin/core-common";
|
|
6
|
+
import { ViewRect } from "./common/ViewRect";
|
|
6
7
|
import { ToolTipOptions } from "./NotificationManager";
|
|
7
8
|
import { CanvasDecoration } from "./render/CanvasDecoration";
|
|
8
9
|
import { BeButtonEvent } from "./tools/Tool";
|
|
9
10
|
import { DecorateContext } from "./ViewContext";
|
|
10
11
|
import { ScreenViewport, Viewport } from "./Viewport";
|
|
11
|
-
import { ViewRect } from "./ViewRect";
|
|
12
12
|
/** The types that may be used for Markers
|
|
13
13
|
* @public
|
|
14
14
|
* @extensions
|
package/lib/cjs/Marker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../src/Marker.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAY,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAY,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC5H,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../src/Marker.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/Marker.js
CHANGED
|
@@ -10,10 +10,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.MarkerSet = exports.Cluster = exports.Marker = void 0;
|
|
11
11
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
12
|
const core_geometry_1 = require("@itwin/core-geometry");
|
|
13
|
-
const FrontendLoggerCategory_1 = require("./FrontendLoggerCategory");
|
|
14
|
-
const ImageUtil_1 = require("./ImageUtil");
|
|
13
|
+
const FrontendLoggerCategory_1 = require("./common/FrontendLoggerCategory");
|
|
14
|
+
const ImageUtil_1 = require("./common/ImageUtil");
|
|
15
|
+
const ViewRect_1 = require("./common/ViewRect");
|
|
15
16
|
const IModelApp_1 = require("./IModelApp");
|
|
16
|
-
const ViewRect_1 = require("./ViewRect");
|
|
17
17
|
function getMinScaleViewW(vp) {
|
|
18
18
|
let zHigh;
|
|
19
19
|
const origin = vp.view.getCenter();
|
package/lib/cjs/Marker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Marker.js","sourceRoot":"","sources":["../../src/Marker.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAoE;AACpE,wDAA4H;AAE5H,qEAAkE;AAClE,2CAAkD;AAClD,2CAAwC;AAMxC,yCAAsC;AA0BtC,SAAS,gBAAgB,CAAC,EAAY;IACpC,IAAI,KAAK,CAAC;IACV,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACvC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,wBAAQ,CAAC,MAAM,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,wBAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,SAAS,KAAK,KAAK,IAAI,UAAU,GAAG,KAAK;YAC3C,KAAK,GAAG,UAAU,CAAC;KACtB;IACD,IAAI,SAAS,KAAK,KAAK;QACrB,OAAO,GAAG,CAAC;IACb,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAa,MAAM;IAoDjB,oDAAoD;IACpD,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IAKvC,wDAAwD;IACjD,YAAY,CAAC,EAAiB;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,QAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QAC9C,qBAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,wDAAwD;IACjD,YAAY,KAAK,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;IAElD,2DAA2D;IACpD,WAAW,CAAC,EAAiB;QAClC,IAAI,IAAI,CAAC,KAAK;YACZ,EAAE,CAAC,QAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5E,CAAC;IAID,0DAA0D;IACnD,IAAI,CAAC,EAAS,IAAa,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvE;;;;OAIG;IACI,cAAc,CAAC,KAAmB;QACvC,IAAI,CAAC,iBAAiB,GAAG,uBAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,uBAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,YAAY,aAAqB,EAAE,IAAW;QAzF9C,wFAAwF;QACjF,YAAO,GAAG,IAAI,CAAC;QACtB,uDAAuD;QAC7C,eAAU,GAAG,KAAK,CAAC;QAO7B,iIAAiI;QAC1H,aAAQ,GAAG,IAAI,uBAAO,EAAE,CAAC;QAChC,kIAAkI;QAClH,SAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;QA6EpC,IAAI,CAAC,aAAa,GAAG,uBAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,uBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAQ,CAAmB,KAAa,EAAE,GAAG,IAAW;QACpE,MAAM,GAAG,GAAG,IAAK,IAAY,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,CAAM,CAAC;QAC7E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,YAAY;YACpB,GAAG,CAAC,YAAY,GAAG,uBAAO,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5D,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAChD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;OAIG;IACO,WAAW,CAAC,GAA6B;QACjD,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;QACpB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAChF,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sFAAsF;IAC/E,cAAc,CAAC,GAA6B;QACjD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YAC1C,OAAO;QAET,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YACjC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEtD,wGAAwG;QACxG,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAErB,8CAA8C;QAC9C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACzD,MAAM,MAAM,GAAG,IAAI,uBAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,WAAW;gBAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACxC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SACjE;QAED,iGAAiG;QACjG,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YAC5B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC7D,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;YACtE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC/D,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5D,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACtI;IACH,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,KAAyC;QACvD,IAAI,KAAK,YAAY,OAAO,EAAE;YAC5B,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAC3B,IAAI,CAAC,KAAK,GAAG,aAAa,CAC3B,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;gBACrB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAa,CAAC;gBACjC,MAAM,GAAG,GAAG,wBAAwB,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;gBACpF,qBAAM,CAAC,QAAQ,CAAC,GAAG,+CAAsB,CAAC,OAAO,UAAU,EAAE,GAAG,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;YACrD,CAAC,CAAC,CAAC;SACJ;;YACC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,gDAAgD;IACzC,WAAW,CAAC,GAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAA,+BAAmB,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E;;;OAGG;IACI,WAAW,CAAC,EAAY,EAAE,SAA6B;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,4BAA4B;YAC7C,OAAO,KAAK,CAAC;QAEf,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,0CAA0C;YAC3E,OAAO,KAAK,CAAC;QAEf,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3C,OAAO,KAAK,CAAC,CAAC,6BAA6B;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAEvF,sDAAsD;QACtD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC/C,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,IAAI,EAAE,CAAC,UAAU,EAAE;gBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACrC,MAAM,aAAa,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxG,IAAI,aAAa,GAAG,GAAG;oBACrB,KAAK,GAAG,wBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;;oBAEvF,KAAK,GAAG,wBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9E,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACrC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACO,YAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAY,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,2DAA2D;QACtG,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,KAAK,CAAC,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;QACnD,KAAK,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAED,uDAAuD;IAChD,SAAS,CAAC,OAAwB;QACvC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE;YAClC,6BAA6B;YAC7B,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,uBAAuB;SAC7C;IACH,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,OAAwB;QAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF;AAvPD,wBAuPC;AAED;;;;GAIG;AACH,MAAa,OAAO;IAIlB,YAAmB,OAAY;QAC7B,IAAA,qBAAM,EAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,kBAAkB;QACvB,MAAM,QAAQ,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;YAC5E,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAChD;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAzBD,0BAyBC;AAED;;;;GAIG;AACH,MAAsB,SAAS;IAa7B,4EAA4E;IAC5E,IAAW,OAAO,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAItD;;OAEG;IACH,YAAmB,QAAyB;QAlB5C,gBAAgB;QACN,aAAQ,GAA0B,EAAE,CAAC,CAAC,sEAAsE;QACtH,gBAAgB;QACG,oBAAe,GAAG,wBAAQ,CAAC,UAAU,EAAE,CAAC;QAG1C,aAAQ,GAAG,IAAI,4BAAa,EAAK,CAAC;QAEnD,qKAAqK;QAC9J,uBAAkB,GAAG,CAAC,CAAC;QAG9B,+OAA+O;QACrO,kBAAa,GAAG,CAAC,CAAC;QAM1B,IAAI,CAAC,SAAS,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,4CAA4C;IAC5C,IAAW,QAAQ,KAAiC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAE5E;;;OAGG;IACI,cAAc,CAAC,QAAwB;QAC5C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACI,SAAS;QACd,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IASD,sGAAsG;IAC/F,gBAAgB,CAAC,EAAY;QAClC,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc;YACnC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,OAAwB;QAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC5B,IAAI,EAAE,KAAK,IAAI,CAAC,SAAS;YACvB,OAAO,CAAC,4CAA4C;QAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,mIAAmI;QACnI,2EAA2E;QAC3E,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YACrE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,4BAA4B;YAC7D,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,cAAc;YAElC,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAE1D,oDAAoD;YACpD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBACjC,gGAAgG;gBAChG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;oBAC/B,SAAS;gBAEX,IAAI,WAAW,IAAI,CAAC,EAAE;oBACpB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBAC5C,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;iBAC3B;gBAED,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,6DAA6D;oBACtG,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE;wBACpE,KAAK,GAAG,IAAI,CAAC,CAAC,2CAA2C;wBACzD,IAAI,KAAK,YAAY,OAAO,EAAE,EAAE,kCAAkC;4BAChE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,6CAA6C;yBAC1E;6BAAM;4BACL,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,sCAAsC;yBAClF;wBACD,MAAM,CAAC,iEAAiE;qBACzE;iBACF;gBACD,IAAI,CAAC,KAAK;oBACR,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qDAAqD;aAC9E;SACF;QAED,oEAAoE;QACpE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YAC3B,IAAI,KAAK,YAAY,OAAO,EAAE,EAAE,2BAA2B;gBACzD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,6DAA6D;oBAClH,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mCAAmC;iBAClG;qBAAM;oBACL,gDAAgD;oBAChD,IAAI,SAAS,KAAK,KAAK,CAAC,aAAa,EAAE,EAAE,+CAA+C;wBACtF,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB;wBACtE,gEAAgE;wBAChE,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM;4BAC3B,aAAa,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBACtC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;qBACrC;oBACD,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;iBACxC;aACF;iBAAM;gBACL,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,8CAA8C;aACzE;SACF;IACH,CAAC;CACF;AAzID,8BAyIC","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 { assert, Logger, ObservableSet } from \"@itwin/core-bentley\";\r\nimport { Geometry, Matrix4d, Point2d, Point3d, Range1d, Range1dProps, Vector3d, XAndY, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { imageElementFromUrl } from \"./ImageUtil\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { ToolTipOptions } from \"./NotificationManager\";\r\nimport { CanvasDecoration } from \"./render/CanvasDecoration\";\r\nimport { BeButtonEvent } from \"./tools/Tool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\nimport { ViewRect } from \"./ViewRect\";\r\n\r\n/** The types that may be used for Markers\r\n * @public\r\n * @extensions\r\n */\r\nexport type MarkerImage = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap;\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport type MarkerFillStyle = string | CanvasGradient | CanvasPattern;\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport type MarkerTextAlign = \"left\" | \"right\" | \"center\" | \"start\" | \"end\";\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport type MarkerTextBaseline = \"top\" | \"hanging\" | \"middle\" | \"alphabetic\" | \"ideographic\" | \"bottom\";\r\n\r\nfunction getMinScaleViewW(vp: Viewport): number {\r\n let zHigh;\r\n const origin = vp.view.getCenter();\r\n const direction = vp.view.getZVector();\r\n direction.scaleInPlace(-1);\r\n const corners = vp.view.iModel.projectExtents.corners();\r\n const delta = Vector3d.create();\r\n for (const corner of corners) {\r\n Vector3d.createStartEnd(origin, corner, delta);\r\n const projection = delta.dotProduct(direction);\r\n if (undefined === zHigh || projection > zHigh)\r\n zHigh = projection;\r\n }\r\n if (undefined === zHigh)\r\n return 0.0;\r\n origin.plusScaled(direction, zHigh, origin);\r\n return vp.worldToView4d(origin).w;\r\n}\r\n\r\n/** A Marker is a [[CanvasDecoration]], whose position follows a fixed location in world space.\r\n * Markers draw on top of all scene graphics, and show visual cues about locations of interest.\r\n * @see [Markers]($docs/learning/frontend/Markers)\r\n * @public\r\n * @extensions\r\n */\r\nexport class Marker implements CanvasDecoration {\r\n protected _scaleFactor?: Point2d;\r\n protected _scaleFactorRange?: Range1d;\r\n\r\n /** Whether this marker is currently enabled. If false, this Marker is not displayed. */\r\n public visible = true;\r\n /** Whether this marker is currently hilited or not. */\r\n protected _isHilited = false;\r\n /** The color for the shadowBlur when this Marker is hilited */\r\n protected _hiliteColor?: ColorDef;\r\n /** The location of this Marker in world coordinates. */\r\n public worldLocation: Point3d;\r\n /** The size of this Marker, in pixels. */\r\n public size: Point2d;\r\n /** The current position for the marker, in view coordinates (pixels). This value will be updated by calls to [[setPosition]]. */\r\n public position = new Point3d();\r\n /** The current rectangle for the marker, in view coordinates (pixels). This value will be updated by calls to [[setPosition]]. */\r\n public readonly rect = new ViewRect();\r\n /** An image to draw for this Marker. If undefined, no image is shown. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage. */\r\n public image?: MarkerImage;\r\n /** The offset for [[image]], in pixels, from the *center* of this Marker. If undefined, (0,0). */\r\n public imageOffset?: XAndY;\r\n /** The size of [[image]], in pixels. If undefined, use [[size]]. */\r\n public imageSize?: XAndY;\r\n /** A text Label for this Marker. If undefined, no label is displayed. */\r\n public label?: string;\r\n /** The offset for [[label]], in pixels, from the *center* of this Marker. If undefined, (0,0). */\r\n public labelOffset?: XAndY;\r\n /** The maximum with for [[label]], in pixels. If undefined label will not be condensed or use a smaller font size. */\r\n public labelMaxWidth?: number;\r\n /** The color for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle. If undefined, \"white\". */\r\n public labelColor?: MarkerFillStyle;\r\n /** The text alignment for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textAlign. If undefined, \"center\" */\r\n public labelAlign?: MarkerTextAlign;\r\n /** The text baseline for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textBaseline. If undefined, \"middle\" */\r\n public labelBaseline?: MarkerTextBaseline;\r\n /** The font for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. */\r\n public labelFont?: string;\r\n /** The title string, or HTMLElement, to show (only) in the ToolTip when the pointer is over this Marker. See [[NotificationManager.openToolTip]] */\r\n public title?: HTMLElement | string;\r\n /** The ToolTipOptions to use for [[title]]. */\r\n public tooltipOptions?: ToolTipOptions;\r\n\r\n /** An Optional (unique) HTMLElement to display with this Marker. Generally, HTMLElements are more expensive than\r\n * images and labels, since they are added/removed from the DOM every frame. But, some types of markers are more convenient to construct\r\n * as HTMLElements, and if there aren't too many of them performance is fine.\r\n * @note HTMLElements may only appear in the DOM one time. Therefore, they *may not be shared* by more than one Marker.\r\n * You must ensure that each marker has its own HTMLElement. For this reason, you should probably only use HTMLElements in Markers if\r\n * each one is meant to be unique. For shared content, use images.\r\n */\r\n public htmlElement?: HTMLElement;\r\n\r\n /** Return true to display [[image]], if present. */\r\n public get wantImage() { return true; }\r\n\r\n /** Implement this function to draw onto the CanvasRenderingContext2D when this Marker is displayed. The [0,0] point will be the center of the Marker. */\r\n public drawFunc?(ctx: CanvasRenderingContext2D): void;\r\n\r\n /** Called when the mouse pointer enters this Marker. */\r\n public onMouseEnter(ev: BeButtonEvent) {\r\n this._isHilited = true;\r\n this._hiliteColor = ev.viewport!.hilite.color;\r\n IModelApp.accuSnap.clear();\r\n }\r\n\r\n /** Called when the mouse pointer leaves this Marker. */\r\n public onMouseLeave() { this._isHilited = false; }\r\n\r\n /** Called when the mouse pointer moves over this Marker */\r\n public onMouseMove(ev: BeButtonEvent): void {\r\n if (this.title)\r\n ev.viewport!.openToolTip(this.title, ev.viewPoint, this.tooltipOptions);\r\n }\r\n /** Called when a mouse button is pressed over this Marker. */\r\n public onMouseButton?(_ev: BeButtonEvent): boolean;\r\n\r\n /** Determine whether the point is within this Marker. */\r\n public pick(pt: XAndY): boolean { return this.rect.containsPoint(pt); }\r\n\r\n /** Establish a range of scale factors to increases and decrease the size of this Marker based on its distance from the camera.\r\n * @param range The minimum and maximum scale factors to be applied to the size of this Marker based on its distance from the camera. `range.Low` is the scale factor\r\n * for Markers at the back of the view frustum and `range.high` is the scale factor at the front of the view frustum.\r\n * @note Marker size scaling is only applied in views with the camera enabled. It has no effect on orthographic views.\r\n */\r\n public setScaleFactor(range: Range1dProps) {\r\n this._scaleFactorRange = Range1d.fromJSON(range);\r\n this._scaleFactor = Point2d.create(1, 1);\r\n }\r\n\r\n /** Constructor for Marker\r\n * @param worldLocation The location of this Marker in world coordinates.\r\n * @param size The size of this Marker in pixels.\r\n */\r\n constructor(worldLocation: XYAndZ, size: XAndY) {\r\n this.worldLocation = Point3d.createFrom(worldLocation);\r\n this.size = Point2d.createFrom(size);\r\n }\r\n\r\n /** Make a new Marker at the same position and size as this Marker.\r\n * The new Marker will share the world location and size, but will be otherwise blank.\r\n */\r\n public static makeFrom<T extends Marker>(other: Marker, ...args: any[]): T {\r\n const out = new (this as any)(other.worldLocation, other.size, ...args) as T;\r\n out.rect.setFrom(other.rect);\r\n out.position.setFrom(other.position);\r\n if (other._scaleFactor)\r\n out._scaleFactor = Point2d.createFrom(other._scaleFactor);\r\n out._scaleFactorRange = other._scaleFactorRange;\r\n return out;\r\n }\r\n\r\n /** When a Marker is displayed in its hilited state, this method is called first. If it returns true, no further action is taken.\r\n * Otherwise the Marker's normal drawing operations are also called. By default, this method adds a shadowBlur effect and increases\r\n * the size of the Marker by 25%.\r\n * @return true to stop drawing this Marker\r\n */\r\n protected drawHilited(ctx: CanvasRenderingContext2D) {\r\n ctx.shadowBlur = 30;\r\n ctx.shadowColor = this._hiliteColor ? this._hiliteColor.toHexString() : \"white\";\r\n ctx.scale(1.25, 1.25);\r\n return false;\r\n }\r\n\r\n /** Called during frame rendering to display this Marker onto the supplied context. */\r\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\r\n if (this._isHilited && this.drawHilited(ctx))\r\n return;\r\n\r\n if (this._scaleFactor !== undefined)\r\n ctx.scale(this._scaleFactor.x, this._scaleFactor.y);\r\n\r\n // first call the \"drawFunc\" if defined. This means it will be below the image and label if they overlap\r\n if (undefined !== this.drawFunc)\r\n this.drawFunc(ctx);\r\n\r\n // next draw the image, if defined and desired\r\n if (this.wantImage && this.image !== undefined) {\r\n const size = this.imageSize ? this.imageSize : this.size;\r\n const offset = new Point2d(size.x / 2, size.y / 2);\r\n if (this.imageOffset)\r\n offset.plus(this.imageOffset, offset);\r\n ctx.drawImage(this.image, -offset.x, -offset.y, size.x, size.y);\r\n }\r\n\r\n // lastly, draw the label, if defined. This puts it on top of all other graphics for this Marker.\r\n if (this.label !== undefined) {\r\n ctx.textAlign = this.labelAlign ? this.labelAlign : \"center\";\r\n ctx.textBaseline = this.labelBaseline ? this.labelBaseline : \"middle\";\r\n ctx.font = this.labelFont ? this.labelFont : \"14px sans-serif\";\r\n ctx.fillStyle = this.labelColor ? this.labelColor : \"white\";\r\n ctx.fillText(this.label, this.labelOffset ? -this.labelOffset.x : 0, this.labelOffset ? -this.labelOffset.y : 0, this.labelMaxWidth);\r\n }\r\n }\r\n\r\n /** Set the [[image]] for this marker.\r\n * @param image Either a [[MarkerImage]] or a Promise for a [[MarkerImage]]. If a Promise is supplied, the [[image]] member is set\r\n * when the Promise resolves.\r\n */\r\n public setImage(image: MarkerImage | Promise<MarkerImage>) {\r\n if (image instanceof Promise) {\r\n image.then((resolvedImage) =>\r\n this.image = resolvedImage,\r\n ).catch((err: Event) => {\r\n const target = err.target as any;\r\n const msg = `Could not load image ${target && target.src ? target.src : \"unknown\"}`;\r\n Logger.logError(`${FrontendLoggerCategory.Package}.markers`, msg);\r\n console.log(msg); // eslint-disable-line no-console\r\n });\r\n } else\r\n this.image = image;\r\n }\r\n\r\n /** Set the image for this Marker from a URL. */\r\n public setImageUrl(url: string) { this.setImage(imageElementFromUrl(url)); }\r\n\r\n /** Set the position (in pixels) for this Marker in the supplied Viewport, based on its worldLocation.\r\n * @param markerSet The MarkerSet if this Marker is included in a set.\r\n * @return true if the Marker is visible and its new position is inside the Viewport.\r\n */\r\n public setPosition(vp: Viewport, markerSet?: MarkerSet<Marker>): boolean {\r\n if (!this.visible) // if we're turned off, skip\r\n return false;\r\n\r\n const pt4 = vp.worldToView4d(this.worldLocation);\r\n if (pt4.w > 1.0 || pt4.w < 1.0e-6) // outside of frustum or too close to eye.\r\n return false;\r\n\r\n pt4.realPoint(this.position);\r\n if (!vp.viewRect.containsPoint(this.position))\r\n return false; // outside this viewport rect\r\n\r\n const origin = this.position;\r\n const sizeX = this.size.x / 2;\r\n const sizeY = this.size.y / 2;\r\n this.rect.init(origin.x - sizeX, origin.y - sizeY, origin.x + sizeX, origin.y + sizeY);\r\n\r\n // if there's a scale factor active, calculate it now.\r\n if (this._scaleFactor && this._scaleFactorRange) {\r\n let scale = 1.0;\r\n if (vp.isCameraOn) {\r\n const range = this._scaleFactorRange;\r\n const minScaleViewW = (undefined !== markerSet ? markerSet.getMinScaleViewW(vp) : getMinScaleViewW(vp));\r\n if (minScaleViewW > 0.0)\r\n scale = Geometry.clamp(range.high - (pt4.w / minScaleViewW) * range.length(), .4, 2.0);\r\n else\r\n scale = Geometry.clamp(range.low + ((1 - pt4.w) * range.length()), .4, 2.0);\r\n this.rect.scaleAboutCenter(scale, scale);\r\n }\r\n this._scaleFactor.set(scale, scale);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Position the HTMLElement for this Marker relative to the Marker's position in the view.\r\n * The default implementation centers the HTMLElement (using its boundingClientRect) on the Marker.\r\n * Override this method to provide an alternative positioning approach.\r\n */\r\n protected positionHtml() {\r\n const html = this.htmlElement!;\r\n const style = html.style;\r\n style.position = \"absolute\";\r\n const size = html.getBoundingClientRect(); // Note: only call this *after* setting position = absolute\r\n const markerPos = this.position;\r\n style.left = `${markerPos.x - (size.width / 2)}px`;\r\n style.top = `${markerPos.y - (size.height / 2)}px`;\r\n }\r\n\r\n /** Add this Marker to the supplied DecorateContext. */\r\n public addMarker(context: DecorateContext) {\r\n context.addCanvasDecoration(this);\r\n if (undefined !== this.htmlElement) {\r\n // add this Marker to the DOM\r\n context.addHtmlDecoration(this.htmlElement);\r\n this.positionHtml(); // always reposition it\r\n }\r\n }\r\n\r\n /** Set the position and add this Marker to the supplied DecorateContext, if it's visible.\r\n * This method should be called from your implementation of [[Decorator.decorate]]. It will set this Marker's position based on the\r\n * Viewport from the context, and add this this Marker to the supplied DecorateContext.\r\n * @param context The DecorateContext for the Marker\r\n */\r\n public addDecoration(context: DecorateContext) {\r\n if (this.setPosition(context.viewport))\r\n this.addMarker(context);\r\n }\r\n}\r\n\r\n/** A cluster of one or more Markers that overlap one another in the view. The cluster's screen position is taken from its first entry.\r\n * Clusters also have a Marker themselves, that represents the whole group. The cluster marker isn't created until all entries have been added.\r\n * @public\r\n * @extensions\r\n */\r\nexport class Cluster<T extends Marker> {\r\n public readonly markers: T[];\r\n public clusterMarker?: Marker;\r\n\r\n public constructor(markers: T[]) {\r\n assert(markers.length > 0);\r\n this.markers = markers;\r\n }\r\n\r\n public get position() {\r\n return this.markers[0].position;\r\n }\r\n\r\n /**\r\n * Gets the location for the cluster\r\n * @returns The average of the cluster markers worldLocation.\r\n */\r\n public getClusterLocation() {\r\n const location = Point3d.createZero();\r\n if (this.markers.length > 0) {\r\n this.markers.forEach((marker) => location.addInPlace(marker.worldLocation));\r\n location.scaleInPlace(1 / this.markers.length);\r\n }\r\n return location;\r\n }\r\n}\r\n\r\n/** A *set* of Markers that are logically related, such that they *cluster* when they overlap one another in screen space.\r\n * In that case, a *cluster marker* is drawn instead of the overlapping Markers.\r\n * @public\r\n * @extensions\r\n */\r\nexport abstract class MarkerSet<T extends Marker> {\r\n private _viewport?: ScreenViewport;\r\n\r\n /** @internal */\r\n protected _entries: Array<T | Cluster<T>> = []; // this is an array that holds either Markers or a cluster of markers.\r\n /** @internal */\r\n protected readonly _worldToViewMap = Matrix4d.createZero();\r\n /** @internal */\r\n protected _minScaleViewW?: number;\r\n private readonly _markers = new ObservableSet<T>();\r\n\r\n /** The minimum number of Markers that must overlap before they are clustered. Otherwise they are each drawn individually. Default is 1 (always create a cluster.) */\r\n public minimumClusterSize = 1;\r\n /** The set of Markers in this MarkerSet. Add your [[Marker]]s into this. */\r\n public get markers(): Set<T> { return this._markers; }\r\n /** The radius (in pixels) representing the distance between the screen X,Y positions of two Markers to be clustered. When less than or equal to 0 (the default), the radius is calculated based on the first visible marker imageSize/size. */\r\n protected clusterRadius = 0;\r\n\r\n /** Construct a new MarkerSet for a specific ScreenViewport.\r\n * @param viewport the ScreenViewport for this MarkerSet. If undefined, use [[IModelApp.viewManager.selectedView]]\r\n */\r\n public constructor(viewport?: ScreenViewport) {\r\n this._viewport = undefined === viewport ? IModelApp.viewManager.selectedView : viewport;\r\n const markDirty = () => this.markDirty();\r\n this._markers.onAdded.addListener(markDirty);\r\n this._markers.onDeleted.addListener(markDirty);\r\n this._markers.onCleared.addListener(markDirty);\r\n }\r\n\r\n /** The ScreenViewport of this MarkerSet. */\r\n public get viewport(): ScreenViewport | undefined { return this._viewport; }\r\n\r\n /** Change the ScreenViewport for this MarkerSet.\r\n * After this call, the markers from this MarkerSet will only appear in the supplied ScreenViewport.\r\n * @beta\r\n */\r\n public changeViewport(viewport: ScreenViewport) {\r\n this._viewport = viewport;\r\n this.markDirty();\r\n }\r\n\r\n /** Indicate that this MarkerSet has been changed and is now *dirty*.\r\n * This is necessary because [[addDecoration]] does not recreate the set of decoration graphics\r\n * if it can detect that the previously-created set remains valid.\r\n * The set becomes invalid when the view frustum changes, or the contents of [[markers]] changes.\r\n * If some other criterion affecting the graphics changes, invoke this method. This should not be necessary for most use cases.\r\n * @public\r\n */\r\n public markDirty(): void {\r\n this._worldToViewMap.setZero();\r\n }\r\n\r\n /** Implement this method to create a new Marker that is shown as a *stand-in* for a Cluster of Markers that overlap one another.\r\n * @param cluster The [[Cluster]] that the new Marker will represent.\r\n * @returns The Marker that will be displayed to represent the Cluster.\r\n * @note You must create a new Marker each time this method is called.\r\n */\r\n protected abstract getClusterMarker(cluster: Cluster<T>): Marker;\r\n\r\n /** Get weight value limit establishing the distance from camera for the back of view scale factor. */\r\n public getMinScaleViewW(vp: Viewport): number {\r\n if (undefined === this._minScaleViewW)\r\n this._minScaleViewW = getMinScaleViewW(vp);\r\n return this._minScaleViewW;\r\n }\r\n\r\n /** This method should be called from [[Decorator.decorate]]. It will add this this MarkerSet to the supplied DecorateContext.\r\n * This method implements the logic that turns overlapping Markers into a Cluster.\r\n * @param context The DecorateContext for the Markers\r\n */\r\n public addDecoration(context: DecorateContext): void {\r\n const vp = context.viewport;\r\n if (vp !== this._viewport)\r\n return; // not viewport of this MarkerSet, ignore it\r\n\r\n const entries = this._entries;\r\n\r\n // Don't recreate the entries array if the view hasn't changed. This is important for performance, but also necessary for hilite of\r\n // clusters (otherwise they're recreated continually and never hilited.) */\r\n if (!this._worldToViewMap.isAlmostEqual(vp.worldToViewMap.transform0)) {\r\n this._worldToViewMap.setFrom(vp.worldToViewMap.transform0);\r\n this._minScaleViewW = undefined; // Invalidate current value.\r\n entries.length = 0; // start over.\r\n\r\n let distSquared = this.clusterRadius * this.clusterRadius;\r\n\r\n // loop through all of the Markers in the MarkerSet.\r\n for (const marker of this.markers) {\r\n // establish the screen position for this marker. If it's not in view, setPosition returns false\r\n if (!marker.setPosition(vp, this))\r\n continue;\r\n\r\n if (distSquared <= 0) {\r\n const size = marker.imageSize ? marker.imageSize : marker.size;\r\n const dist = Math.max(size.x, size.y) * 1.5;\r\n distSquared = dist * dist;\r\n }\r\n\r\n let added = false;\r\n for (let i = 0; i < entries.length; ++i) { // loop through all of the currently visible markers/clusters\r\n const entry = entries[i];\r\n if (marker.position.distanceSquaredXY(entry.position) <= distSquared) {\r\n added = true; // yes, we're going to save it as a Cluster\r\n if (entry instanceof Cluster) { // is the entry already a Cluster?\r\n entry.markers.push(marker); // yes, just add this to the existing cluster\r\n } else {\r\n entries[i] = new Cluster([entry, marker]); // no, make a new Cluster holding both\r\n }\r\n break; // this Marker has been handled, we can stop looking for overlaps\r\n }\r\n }\r\n if (!added)\r\n entries.push(marker); // there was no overlap, save this Marker to be drawn\r\n }\r\n }\r\n\r\n // we now have an array of Markers and Clusters, add them to context\r\n for (const entry of entries) {\r\n if (entry instanceof Cluster) { // is this entry a Cluster?\r\n if (entry.markers.length <= this.minimumClusterSize) { // yes, does it have more than the minimum number of entries?\r\n entry.markers.forEach((marker) => marker.addMarker(context)); // no, just draw all of its Markers\r\n } else {\r\n // yes, get and draw the Marker for this Cluster\r\n if (undefined === entry.clusterMarker) { // have we already created this cluster marker?\r\n const clusterMarker = this.getClusterMarker(entry); // no, get it now.\r\n // set the marker's position as getClusterMarker may not set it.\r\n if (clusterMarker.rect.isNull)\r\n clusterMarker.setPosition(vp, this);\r\n entry.clusterMarker = clusterMarker;\r\n }\r\n entry.clusterMarker.addMarker(context);\r\n }\r\n } else {\r\n entry.addMarker(context); // entry is a non-overlapping Marker, draw it.\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Marker.js","sourceRoot":"","sources":["../../src/Marker.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 { assert, Logger, ObservableSet } from \"@itwin/core-bentley\";\r\nimport { Geometry, Matrix4d, Point2d, Point3d, Range1d, Range1dProps, Vector3d, XAndY, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { ColorDef } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./common/FrontendLoggerCategory\";\r\nimport { imageElementFromUrl } from \"./common/ImageUtil\";\r\nimport { ViewRect } from \"./common/ViewRect\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { ToolTipOptions } from \"./NotificationManager\";\r\nimport { CanvasDecoration } from \"./render/CanvasDecoration\";\r\nimport { BeButtonEvent } from \"./tools/Tool\";\r\nimport { DecorateContext } from \"./ViewContext\";\r\nimport { ScreenViewport, Viewport } from \"./Viewport\";\r\n\r\n/** The types that may be used for Markers\r\n * @public\r\n * @extensions\r\n */\r\nexport type MarkerImage = HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap;\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport type MarkerFillStyle = string | CanvasGradient | CanvasPattern;\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport type MarkerTextAlign = \"left\" | \"right\" | \"center\" | \"start\" | \"end\";\r\n\r\n/**\r\n * @public\r\n * @extensions\r\n */\r\nexport type MarkerTextBaseline = \"top\" | \"hanging\" | \"middle\" | \"alphabetic\" | \"ideographic\" | \"bottom\";\r\n\r\nfunction getMinScaleViewW(vp: Viewport): number {\r\n let zHigh;\r\n const origin = vp.view.getCenter();\r\n const direction = vp.view.getZVector();\r\n direction.scaleInPlace(-1);\r\n const corners = vp.view.iModel.projectExtents.corners();\r\n const delta = Vector3d.create();\r\n for (const corner of corners) {\r\n Vector3d.createStartEnd(origin, corner, delta);\r\n const projection = delta.dotProduct(direction);\r\n if (undefined === zHigh || projection > zHigh)\r\n zHigh = projection;\r\n }\r\n if (undefined === zHigh)\r\n return 0.0;\r\n origin.plusScaled(direction, zHigh, origin);\r\n return vp.worldToView4d(origin).w;\r\n}\r\n\r\n/** A Marker is a [[CanvasDecoration]], whose position follows a fixed location in world space.\r\n * Markers draw on top of all scene graphics, and show visual cues about locations of interest.\r\n * @see [Markers]($docs/learning/frontend/Markers)\r\n * @public\r\n * @extensions\r\n */\r\nexport class Marker implements CanvasDecoration {\r\n protected _scaleFactor?: Point2d;\r\n protected _scaleFactorRange?: Range1d;\r\n\r\n /** Whether this marker is currently enabled. If false, this Marker is not displayed. */\r\n public visible = true;\r\n /** Whether this marker is currently hilited or not. */\r\n protected _isHilited = false;\r\n /** The color for the shadowBlur when this Marker is hilited */\r\n protected _hiliteColor?: ColorDef;\r\n /** The location of this Marker in world coordinates. */\r\n public worldLocation: Point3d;\r\n /** The size of this Marker, in pixels. */\r\n public size: Point2d;\r\n /** The current position for the marker, in view coordinates (pixels). This value will be updated by calls to [[setPosition]]. */\r\n public position = new Point3d();\r\n /** The current rectangle for the marker, in view coordinates (pixels). This value will be updated by calls to [[setPosition]]. */\r\n public readonly rect = new ViewRect();\r\n /** An image to draw for this Marker. If undefined, no image is shown. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage. */\r\n public image?: MarkerImage;\r\n /** The offset for [[image]], in pixels, from the *center* of this Marker. If undefined, (0,0). */\r\n public imageOffset?: XAndY;\r\n /** The size of [[image]], in pixels. If undefined, use [[size]]. */\r\n public imageSize?: XAndY;\r\n /** A text Label for this Marker. If undefined, no label is displayed. */\r\n public label?: string;\r\n /** The offset for [[label]], in pixels, from the *center* of this Marker. If undefined, (0,0). */\r\n public labelOffset?: XAndY;\r\n /** The maximum with for [[label]], in pixels. If undefined label will not be condensed or use a smaller font size. */\r\n public labelMaxWidth?: number;\r\n /** The color for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/fillStyle. If undefined, \"white\". */\r\n public labelColor?: MarkerFillStyle;\r\n /** The text alignment for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textAlign. If undefined, \"center\" */\r\n public labelAlign?: MarkerTextAlign;\r\n /** The text baseline for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/textBaseline. If undefined, \"middle\" */\r\n public labelBaseline?: MarkerTextBaseline;\r\n /** The font for [[label]]. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. */\r\n public labelFont?: string;\r\n /** The title string, or HTMLElement, to show (only) in the ToolTip when the pointer is over this Marker. See [[NotificationManager.openToolTip]] */\r\n public title?: HTMLElement | string;\r\n /** The ToolTipOptions to use for [[title]]. */\r\n public tooltipOptions?: ToolTipOptions;\r\n\r\n /** An Optional (unique) HTMLElement to display with this Marker. Generally, HTMLElements are more expensive than\r\n * images and labels, since they are added/removed from the DOM every frame. But, some types of markers are more convenient to construct\r\n * as HTMLElements, and if there aren't too many of them performance is fine.\r\n * @note HTMLElements may only appear in the DOM one time. Therefore, they *may not be shared* by more than one Marker.\r\n * You must ensure that each marker has its own HTMLElement. For this reason, you should probably only use HTMLElements in Markers if\r\n * each one is meant to be unique. For shared content, use images.\r\n */\r\n public htmlElement?: HTMLElement;\r\n\r\n /** Return true to display [[image]], if present. */\r\n public get wantImage() { return true; }\r\n\r\n /** Implement this function to draw onto the CanvasRenderingContext2D when this Marker is displayed. The [0,0] point will be the center of the Marker. */\r\n public drawFunc?(ctx: CanvasRenderingContext2D): void;\r\n\r\n /** Called when the mouse pointer enters this Marker. */\r\n public onMouseEnter(ev: BeButtonEvent) {\r\n this._isHilited = true;\r\n this._hiliteColor = ev.viewport!.hilite.color;\r\n IModelApp.accuSnap.clear();\r\n }\r\n\r\n /** Called when the mouse pointer leaves this Marker. */\r\n public onMouseLeave() { this._isHilited = false; }\r\n\r\n /** Called when the mouse pointer moves over this Marker */\r\n public onMouseMove(ev: BeButtonEvent): void {\r\n if (this.title)\r\n ev.viewport!.openToolTip(this.title, ev.viewPoint, this.tooltipOptions);\r\n }\r\n /** Called when a mouse button is pressed over this Marker. */\r\n public onMouseButton?(_ev: BeButtonEvent): boolean;\r\n\r\n /** Determine whether the point is within this Marker. */\r\n public pick(pt: XAndY): boolean { return this.rect.containsPoint(pt); }\r\n\r\n /** Establish a range of scale factors to increases and decrease the size of this Marker based on its distance from the camera.\r\n * @param range The minimum and maximum scale factors to be applied to the size of this Marker based on its distance from the camera. `range.Low` is the scale factor\r\n * for Markers at the back of the view frustum and `range.high` is the scale factor at the front of the view frustum.\r\n * @note Marker size scaling is only applied in views with the camera enabled. It has no effect on orthographic views.\r\n */\r\n public setScaleFactor(range: Range1dProps) {\r\n this._scaleFactorRange = Range1d.fromJSON(range);\r\n this._scaleFactor = Point2d.create(1, 1);\r\n }\r\n\r\n /** Constructor for Marker\r\n * @param worldLocation The location of this Marker in world coordinates.\r\n * @param size The size of this Marker in pixels.\r\n */\r\n constructor(worldLocation: XYAndZ, size: XAndY) {\r\n this.worldLocation = Point3d.createFrom(worldLocation);\r\n this.size = Point2d.createFrom(size);\r\n }\r\n\r\n /** Make a new Marker at the same position and size as this Marker.\r\n * The new Marker will share the world location and size, but will be otherwise blank.\r\n */\r\n public static makeFrom<T extends Marker>(other: Marker, ...args: any[]): T {\r\n const out = new (this as any)(other.worldLocation, other.size, ...args) as T;\r\n out.rect.setFrom(other.rect);\r\n out.position.setFrom(other.position);\r\n if (other._scaleFactor)\r\n out._scaleFactor = Point2d.createFrom(other._scaleFactor);\r\n out._scaleFactorRange = other._scaleFactorRange;\r\n return out;\r\n }\r\n\r\n /** When a Marker is displayed in its hilited state, this method is called first. If it returns true, no further action is taken.\r\n * Otherwise the Marker's normal drawing operations are also called. By default, this method adds a shadowBlur effect and increases\r\n * the size of the Marker by 25%.\r\n * @return true to stop drawing this Marker\r\n */\r\n protected drawHilited(ctx: CanvasRenderingContext2D) {\r\n ctx.shadowBlur = 30;\r\n ctx.shadowColor = this._hiliteColor ? this._hiliteColor.toHexString() : \"white\";\r\n ctx.scale(1.25, 1.25);\r\n return false;\r\n }\r\n\r\n /** Called during frame rendering to display this Marker onto the supplied context. */\r\n public drawDecoration(ctx: CanvasRenderingContext2D): void {\r\n if (this._isHilited && this.drawHilited(ctx))\r\n return;\r\n\r\n if (this._scaleFactor !== undefined)\r\n ctx.scale(this._scaleFactor.x, this._scaleFactor.y);\r\n\r\n // first call the \"drawFunc\" if defined. This means it will be below the image and label if they overlap\r\n if (undefined !== this.drawFunc)\r\n this.drawFunc(ctx);\r\n\r\n // next draw the image, if defined and desired\r\n if (this.wantImage && this.image !== undefined) {\r\n const size = this.imageSize ? this.imageSize : this.size;\r\n const offset = new Point2d(size.x / 2, size.y / 2);\r\n if (this.imageOffset)\r\n offset.plus(this.imageOffset, offset);\r\n ctx.drawImage(this.image, -offset.x, -offset.y, size.x, size.y);\r\n }\r\n\r\n // lastly, draw the label, if defined. This puts it on top of all other graphics for this Marker.\r\n if (this.label !== undefined) {\r\n ctx.textAlign = this.labelAlign ? this.labelAlign : \"center\";\r\n ctx.textBaseline = this.labelBaseline ? this.labelBaseline : \"middle\";\r\n ctx.font = this.labelFont ? this.labelFont : \"14px sans-serif\";\r\n ctx.fillStyle = this.labelColor ? this.labelColor : \"white\";\r\n ctx.fillText(this.label, this.labelOffset ? -this.labelOffset.x : 0, this.labelOffset ? -this.labelOffset.y : 0, this.labelMaxWidth);\r\n }\r\n }\r\n\r\n /** Set the [[image]] for this marker.\r\n * @param image Either a [[MarkerImage]] or a Promise for a [[MarkerImage]]. If a Promise is supplied, the [[image]] member is set\r\n * when the Promise resolves.\r\n */\r\n public setImage(image: MarkerImage | Promise<MarkerImage>) {\r\n if (image instanceof Promise) {\r\n image.then((resolvedImage) =>\r\n this.image = resolvedImage,\r\n ).catch((err: Event) => {\r\n const target = err.target as any;\r\n const msg = `Could not load image ${target && target.src ? target.src : \"unknown\"}`;\r\n Logger.logError(`${FrontendLoggerCategory.Package}.markers`, msg);\r\n console.log(msg); // eslint-disable-line no-console\r\n });\r\n } else\r\n this.image = image;\r\n }\r\n\r\n /** Set the image for this Marker from a URL. */\r\n public setImageUrl(url: string) { this.setImage(imageElementFromUrl(url)); }\r\n\r\n /** Set the position (in pixels) for this Marker in the supplied Viewport, based on its worldLocation.\r\n * @param markerSet The MarkerSet if this Marker is included in a set.\r\n * @return true if the Marker is visible and its new position is inside the Viewport.\r\n */\r\n public setPosition(vp: Viewport, markerSet?: MarkerSet<Marker>): boolean {\r\n if (!this.visible) // if we're turned off, skip\r\n return false;\r\n\r\n const pt4 = vp.worldToView4d(this.worldLocation);\r\n if (pt4.w > 1.0 || pt4.w < 1.0e-6) // outside of frustum or too close to eye.\r\n return false;\r\n\r\n pt4.realPoint(this.position);\r\n if (!vp.viewRect.containsPoint(this.position))\r\n return false; // outside this viewport rect\r\n\r\n const origin = this.position;\r\n const sizeX = this.size.x / 2;\r\n const sizeY = this.size.y / 2;\r\n this.rect.init(origin.x - sizeX, origin.y - sizeY, origin.x + sizeX, origin.y + sizeY);\r\n\r\n // if there's a scale factor active, calculate it now.\r\n if (this._scaleFactor && this._scaleFactorRange) {\r\n let scale = 1.0;\r\n if (vp.isCameraOn) {\r\n const range = this._scaleFactorRange;\r\n const minScaleViewW = (undefined !== markerSet ? markerSet.getMinScaleViewW(vp) : getMinScaleViewW(vp));\r\n if (minScaleViewW > 0.0)\r\n scale = Geometry.clamp(range.high - (pt4.w / minScaleViewW) * range.length(), .4, 2.0);\r\n else\r\n scale = Geometry.clamp(range.low + ((1 - pt4.w) * range.length()), .4, 2.0);\r\n this.rect.scaleAboutCenter(scale, scale);\r\n }\r\n this._scaleFactor.set(scale, scale);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** Position the HTMLElement for this Marker relative to the Marker's position in the view.\r\n * The default implementation centers the HTMLElement (using its boundingClientRect) on the Marker.\r\n * Override this method to provide an alternative positioning approach.\r\n */\r\n protected positionHtml() {\r\n const html = this.htmlElement!;\r\n const style = html.style;\r\n style.position = \"absolute\";\r\n const size = html.getBoundingClientRect(); // Note: only call this *after* setting position = absolute\r\n const markerPos = this.position;\r\n style.left = `${markerPos.x - (size.width / 2)}px`;\r\n style.top = `${markerPos.y - (size.height / 2)}px`;\r\n }\r\n\r\n /** Add this Marker to the supplied DecorateContext. */\r\n public addMarker(context: DecorateContext) {\r\n context.addCanvasDecoration(this);\r\n if (undefined !== this.htmlElement) {\r\n // add this Marker to the DOM\r\n context.addHtmlDecoration(this.htmlElement);\r\n this.positionHtml(); // always reposition it\r\n }\r\n }\r\n\r\n /** Set the position and add this Marker to the supplied DecorateContext, if it's visible.\r\n * This method should be called from your implementation of [[Decorator.decorate]]. It will set this Marker's position based on the\r\n * Viewport from the context, and add this this Marker to the supplied DecorateContext.\r\n * @param context The DecorateContext for the Marker\r\n */\r\n public addDecoration(context: DecorateContext) {\r\n if (this.setPosition(context.viewport))\r\n this.addMarker(context);\r\n }\r\n}\r\n\r\n/** A cluster of one or more Markers that overlap one another in the view. The cluster's screen position is taken from its first entry.\r\n * Clusters also have a Marker themselves, that represents the whole group. The cluster marker isn't created until all entries have been added.\r\n * @public\r\n * @extensions\r\n */\r\nexport class Cluster<T extends Marker> {\r\n public readonly markers: T[];\r\n public clusterMarker?: Marker;\r\n\r\n public constructor(markers: T[]) {\r\n assert(markers.length > 0);\r\n this.markers = markers;\r\n }\r\n\r\n public get position() {\r\n return this.markers[0].position;\r\n }\r\n\r\n /**\r\n * Gets the location for the cluster\r\n * @returns The average of the cluster markers worldLocation.\r\n */\r\n public getClusterLocation() {\r\n const location = Point3d.createZero();\r\n if (this.markers.length > 0) {\r\n this.markers.forEach((marker) => location.addInPlace(marker.worldLocation));\r\n location.scaleInPlace(1 / this.markers.length);\r\n }\r\n return location;\r\n }\r\n}\r\n\r\n/** A *set* of Markers that are logically related, such that they *cluster* when they overlap one another in screen space.\r\n * In that case, a *cluster marker* is drawn instead of the overlapping Markers.\r\n * @public\r\n * @extensions\r\n */\r\nexport abstract class MarkerSet<T extends Marker> {\r\n private _viewport?: ScreenViewport;\r\n\r\n /** @internal */\r\n protected _entries: Array<T | Cluster<T>> = []; // this is an array that holds either Markers or a cluster of markers.\r\n /** @internal */\r\n protected readonly _worldToViewMap = Matrix4d.createZero();\r\n /** @internal */\r\n protected _minScaleViewW?: number;\r\n private readonly _markers = new ObservableSet<T>();\r\n\r\n /** The minimum number of Markers that must overlap before they are clustered. Otherwise they are each drawn individually. Default is 1 (always create a cluster.) */\r\n public minimumClusterSize = 1;\r\n /** The set of Markers in this MarkerSet. Add your [[Marker]]s into this. */\r\n public get markers(): Set<T> { return this._markers; }\r\n /** The radius (in pixels) representing the distance between the screen X,Y positions of two Markers to be clustered. When less than or equal to 0 (the default), the radius is calculated based on the first visible marker imageSize/size. */\r\n protected clusterRadius = 0;\r\n\r\n /** Construct a new MarkerSet for a specific ScreenViewport.\r\n * @param viewport the ScreenViewport for this MarkerSet. If undefined, use [[IModelApp.viewManager.selectedView]]\r\n */\r\n public constructor(viewport?: ScreenViewport) {\r\n this._viewport = undefined === viewport ? IModelApp.viewManager.selectedView : viewport;\r\n const markDirty = () => this.markDirty();\r\n this._markers.onAdded.addListener(markDirty);\r\n this._markers.onDeleted.addListener(markDirty);\r\n this._markers.onCleared.addListener(markDirty);\r\n }\r\n\r\n /** The ScreenViewport of this MarkerSet. */\r\n public get viewport(): ScreenViewport | undefined { return this._viewport; }\r\n\r\n /** Change the ScreenViewport for this MarkerSet.\r\n * After this call, the markers from this MarkerSet will only appear in the supplied ScreenViewport.\r\n * @beta\r\n */\r\n public changeViewport(viewport: ScreenViewport) {\r\n this._viewport = viewport;\r\n this.markDirty();\r\n }\r\n\r\n /** Indicate that this MarkerSet has been changed and is now *dirty*.\r\n * This is necessary because [[addDecoration]] does not recreate the set of decoration graphics\r\n * if it can detect that the previously-created set remains valid.\r\n * The set becomes invalid when the view frustum changes, or the contents of [[markers]] changes.\r\n * If some other criterion affecting the graphics changes, invoke this method. This should not be necessary for most use cases.\r\n * @public\r\n */\r\n public markDirty(): void {\r\n this._worldToViewMap.setZero();\r\n }\r\n\r\n /** Implement this method to create a new Marker that is shown as a *stand-in* for a Cluster of Markers that overlap one another.\r\n * @param cluster The [[Cluster]] that the new Marker will represent.\r\n * @returns The Marker that will be displayed to represent the Cluster.\r\n * @note You must create a new Marker each time this method is called.\r\n */\r\n protected abstract getClusterMarker(cluster: Cluster<T>): Marker;\r\n\r\n /** Get weight value limit establishing the distance from camera for the back of view scale factor. */\r\n public getMinScaleViewW(vp: Viewport): number {\r\n if (undefined === this._minScaleViewW)\r\n this._minScaleViewW = getMinScaleViewW(vp);\r\n return this._minScaleViewW;\r\n }\r\n\r\n /** This method should be called from [[Decorator.decorate]]. It will add this this MarkerSet to the supplied DecorateContext.\r\n * This method implements the logic that turns overlapping Markers into a Cluster.\r\n * @param context The DecorateContext for the Markers\r\n */\r\n public addDecoration(context: DecorateContext): void {\r\n const vp = context.viewport;\r\n if (vp !== this._viewport)\r\n return; // not viewport of this MarkerSet, ignore it\r\n\r\n const entries = this._entries;\r\n\r\n // Don't recreate the entries array if the view hasn't changed. This is important for performance, but also necessary for hilite of\r\n // clusters (otherwise they're recreated continually and never hilited.) */\r\n if (!this._worldToViewMap.isAlmostEqual(vp.worldToViewMap.transform0)) {\r\n this._worldToViewMap.setFrom(vp.worldToViewMap.transform0);\r\n this._minScaleViewW = undefined; // Invalidate current value.\r\n entries.length = 0; // start over.\r\n\r\n let distSquared = this.clusterRadius * this.clusterRadius;\r\n\r\n // loop through all of the Markers in the MarkerSet.\r\n for (const marker of this.markers) {\r\n // establish the screen position for this marker. If it's not in view, setPosition returns false\r\n if (!marker.setPosition(vp, this))\r\n continue;\r\n\r\n if (distSquared <= 0) {\r\n const size = marker.imageSize ? marker.imageSize : marker.size;\r\n const dist = Math.max(size.x, size.y) * 1.5;\r\n distSquared = dist * dist;\r\n }\r\n\r\n let added = false;\r\n for (let i = 0; i < entries.length; ++i) { // loop through all of the currently visible markers/clusters\r\n const entry = entries[i];\r\n if (marker.position.distanceSquaredXY(entry.position) <= distSquared) {\r\n added = true; // yes, we're going to save it as a Cluster\r\n if (entry instanceof Cluster) { // is the entry already a Cluster?\r\n entry.markers.push(marker); // yes, just add this to the existing cluster\r\n } else {\r\n entries[i] = new Cluster([entry, marker]); // no, make a new Cluster holding both\r\n }\r\n break; // this Marker has been handled, we can stop looking for overlaps\r\n }\r\n }\r\n if (!added)\r\n entries.push(marker); // there was no overlap, save this Marker to be drawn\r\n }\r\n }\r\n\r\n // we now have an array of Markers and Clusters, add them to context\r\n for (const entry of entries) {\r\n if (entry instanceof Cluster) { // is this entry a Cluster?\r\n if (entry.markers.length <= this.minimumClusterSize) { // yes, does it have more than the minimum number of entries?\r\n entry.markers.forEach((marker) => marker.addMarker(context)); // no, just draw all of its Markers\r\n } else {\r\n // yes, get and draw the Marker for this Cluster\r\n if (undefined === entry.clusterMarker) { // have we already created this cluster marker?\r\n const clusterMarker = this.getClusterMarker(entry); // no, get it now.\r\n // set the marker's position as getClusterMarker may not set it.\r\n if (clusterMarker.rect.isNull)\r\n clusterMarker.setPosition(vp, this);\r\n entry.clusterMarker = clusterMarker;\r\n }\r\n entry.clusterMarker.addMarker(context);\r\n }\r\n } else {\r\n entry.addMarker(context); // entry is a non-overlapping Marker, draw it.\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeApp.d.ts","sourceRoot":"","sources":["../../src/NativeApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAU,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EACL,mBAAmB,EAAE,cAAc,EAAE,aAAa,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"NativeApp.d.ts","sourceRoot":"","sources":["../../src/NativeApp.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/NativeApp.js
CHANGED
|
@@ -11,12 +11,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
11
11
|
exports.Storage = exports.NativeApp = void 0;
|
|
12
12
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
13
13
|
const core_common_1 = require("@itwin/core-common");
|
|
14
|
-
const FrontendLoggerCategory_1 = require("./FrontendLoggerCategory");
|
|
14
|
+
const FrontendLoggerCategory_1 = require("./common/FrontendLoggerCategory");
|
|
15
15
|
const IpcApp_1 = require("./IpcApp");
|
|
16
16
|
const NativeAppLogger_1 = require("./NativeAppLogger");
|
|
17
17
|
/** NativeApp notifications from backend */
|
|
18
18
|
class NativeAppNotifyHandler extends IpcApp_1.NotificationHandler {
|
|
19
|
-
get channelName() { return core_common_1.
|
|
19
|
+
get channelName() { return core_common_1.nativeAppIpcStrings.notifyChannel; }
|
|
20
20
|
notifyInternetConnectivityChanged(status) {
|
|
21
21
|
core_bentley_1.Logger.logInfo(FrontendLoggerCategory_1.FrontendLoggerCategory.NativeApp, "Internet connectivity changed");
|
|
22
22
|
NativeApp.onInternetConnectivityChanged.raiseEvent(status);
|
|
@@ -30,7 +30,7 @@ class NativeAppNotifyHandler extends IpcApp_1.NotificationHandler {
|
|
|
30
30
|
class NativeApp {
|
|
31
31
|
/** @deprecated in 3.x. use nativeAppIpc */
|
|
32
32
|
static async callNativeHost(methodName, ...args) {
|
|
33
|
-
return IpcApp_1.IpcApp.callIpcChannel(core_common_1.
|
|
33
|
+
return IpcApp_1.IpcApp.callIpcChannel(core_common_1.nativeAppIpcStrings.channelName, methodName, ...args);
|
|
34
34
|
}
|
|
35
35
|
static async setConnectivity(by, status) {
|
|
36
36
|
await this.nativeAppIpc.overrideInternetConnectivity(by, status);
|
|
@@ -154,7 +154,7 @@ class NativeApp {
|
|
|
154
154
|
}
|
|
155
155
|
_a = NativeApp;
|
|
156
156
|
/** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */
|
|
157
|
-
NativeApp.nativeAppIpc = IpcApp_1.IpcApp.makeIpcProxy(core_common_1.
|
|
157
|
+
NativeApp.nativeAppIpc = IpcApp_1.IpcApp.makeIpcProxy(core_common_1.nativeAppIpcStrings.channelName);
|
|
158
158
|
NativeApp._storages = new Map();
|
|
159
159
|
NativeApp._onOnline = async () => {
|
|
160
160
|
await NativeApp.setConnectivity(core_common_1.OverriddenBy.Browser, core_common_1.InternetConnectivityStatus.Online);
|
package/lib/cjs/NativeApp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeApp.js","sourceRoot":"","sources":["../../src/NativeApp.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;AAEH,sDAAqG;AACrG,oDAI4B;AAE5B,qEAAkE;AAClE,qCAAsE;AACtE,uDAAoD;AAwBpD,2CAA2C;AAC3C,MAAM,sBAAuB,SAAQ,4BAAmB;IACtD,IAAW,WAAW,KAAK,OAAO,6BAAe,CAAC,CAAC,CAAC;IAC7C,iCAAiC,CAAC,MAAkC;QACzE,qBAAM,CAAC,OAAO,CAAC,+CAAsB,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;QAClF,SAAS,CAAC,6BAA6B,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;CACF;AAUD;;;;GAIG;AACH,MAAa,SAAS;IAGpB,2CAA2C;IACpC,MAAM,CAAC,KAAK,CAAC,cAAc,CAA+C,UAAa,EAAE,GAAG,IAAuC;QACxI,OAAO,eAAM,CAAC,cAAc,CAAC,8BAAgB,EAAE,UAAU,EAAE,GAAG,IAAI,CAA6C,CAAC;IAClH,CAAC;IAWO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAgB,EAAE,MAAkC;QACvF,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IACO,MAAM,CAAC,6BAA6B;QAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;YACrE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACrD;IACH,CAAC;IACO,MAAM,CAAC,+BAA+B;QAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;YACrE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACxD;IACH,CAAC;IAID,8EAA8E;IACvE,MAAM,CAAC,KAAK,CAAC,yBAAyB;QAC3C,OAAO,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,CAAC;IACvD,CAAC;IACD,gBAAgB;IACT,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,MAAkC;QACjF,OAAO,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,0BAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAEM,MAAM,KAAK,OAAO,KAAc,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9D;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAsB,EAAE,IAAoB;QACtE,MAAM,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ;YACf,OAAO;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC,CAAC,sCAAsC;QACjG,SAAS,CAAC,6BAA6B,EAAE,CAAC;QAE1C,mCAAmC;QACnC,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;YAC3B,MAAM,IAAI,CAAC,eAAe,CAAC,0BAAY,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,wCAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,wCAA0B,CAAC,OAAO,CAAC,CAAC;SACpJ;IACH,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC1B,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC1B,SAAS,CAAC,+BAA+B,EAAE,CAAC;QAC5C,MAAM,iCAAe,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,eAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAYM,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAC1C,OAAe,EACf,QAAgB,EAChB,eAAyC,EACzC,OAAsB,2BAAa,CAAC,MAAM,EAAE,EAC5C,QAA2B;QAE3B,MAAM,oBAAoB,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC;QAE9E,IAAI,kBAAkB,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,IAAI,oBAAoB,EAAE;YACxB,MAAM,cAAc,GAAG,CAAC,IAAW,EAAE,IAAuC,EAAE,EAAE;gBAC9E,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjB,eAAe,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC,CAAC;YAEF,kBAAkB,GAAG,eAAM,CAAC,WAAW,CAAC,sBAAsB,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;SAC3F;QAED,MAAM,WAAW,GAAG,CAAC,SAAS,KAAK,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAC7F,CAAC,eAAe,CAAC,QAAQ,KAAK,sBAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEjH,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,IAAI,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxG,MAAM,YAAY,GAA6B,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC;QAEjH,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;YAC3C,IAAI;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE,oBAAoB,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;aACjH;oBAAS;gBACR,kBAAkB,EAAE,CAAC;aACtB;QACH,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,KAAK,IAAsB,EAAE;YACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;YAChF,IAAI,MAAM;gBACR,kBAAkB,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,CAAC;IACjF,CAAC;IAED,4EAA4E;IACrE,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAqB;QAC5D,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,QAAgB;QAClD,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,oFAAoF;IAC7E,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAqB;QAC3D,OAAO,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAY;QAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAgB,EAAE,gBAAyB,KAAK;QAC/E,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;QAEzD,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,2DAA2D;IACpD,MAAM,CAAC,KAAK,CAAC,eAAe;QACjC,OAAO,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;IAClD,CAAC;;;AAvKD,kFAAkF;AACpE,sBAAY,GAAG,eAAM,CAAC,YAAY,CAAqB,8BAAgB,CAAC,AAA5D,CAA6D;AAExE,mBAAS,GAAG,IAAI,GAAG,EAAmB,AAA7B,CAA8B;AACvC,mBAAS,GAAG,KAAK,IAAI,EAAE;IACpC,MAAM,SAAS,CAAC,eAAe,CAAC,0BAAY,CAAC,OAAO,EAAE,wCAA0B,CAAC,MAAM,CAAC,CAAC;AAC3F,CAAC,AAFuB,CAEtB;AACa,oBAAU,GAAG,KAAK,IAAI,EAAE;IACrC,MAAM,SAAS,CAAC,eAAe,CAAC,0BAAY,CAAC,OAAO,EAAE,wCAA0B,CAAC,OAAO,CAAC,CAAC;AAC5F,CAAC,AAFwB,CAEvB;AAgBF,gEAAgE;AAClD,uCAA6B,GAAG,IAAI,sBAAO,EAAgD,AAA9D,CAA+D;AAU3F,kBAAQ,GAAG,KAAK,AAAR,CAAS;AA3CrB,8BAAS;AAiLtB;;;;GAIG;AACH,MAAa,OAAO;IAClB,YAA4B,EAAU;QAAV,OAAE,GAAF,EAAE,CAAQ;IAAI,CAAC;IAE3C,sEAAsE;IAC/D,KAAK,CAAC,YAAY,CAAC,GAAW;QACnC,OAAO,SAAS,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,8BAA8B;IACvB,KAAK,CAAC,OAAO,CAAC,GAAW;QAC9B,OAAO,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,0BAA0B;IACnB,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAmB;QACnD,OAAO,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO;QAClB,OAAO,SAAS,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,iCAAiC;IAC1B,KAAK,CAAC,UAAU,CAAC,GAAW;QACjC,OAAO,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,sCAAsC;IAC/B,KAAK,CAAC,SAAS;QACpB,OAAO,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;CACF;AAnCD,0BAmCC","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 NativeApp\r\n */\r\n\r\nimport { AsyncMethodsOf, BeEvent, GuidString, Logger, PromiseReturnType } from \"@itwin/core-bentley\";\r\nimport {\r\n BriefcaseDownloader, BriefcaseProps, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps,\r\n nativeAppChannel, NativeAppFunctions, NativeAppNotifications, nativeAppNotify, OverriddenBy,\r\n RemoveFunction, RequestNewBriefcaseProps, StorageValue, SyncMode,\r\n} from \"@itwin/core-common\";\r\nimport { ProgressCallback } from \"./request/Request\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { IpcApp, IpcAppOptions, NotificationHandler } from \"./IpcApp\";\r\nimport { NativeAppLogger } from \"./NativeAppLogger\";\r\nimport { OnDownloadProgress } from \"./BriefcaseConnection\";\r\n\r\n/** Properties for specifying the BriefcaseId for downloading. May either specify a BriefcaseId directly (preferable) or, for\r\n * backwards compatibility, a [SyncMode]($common). If [SyncMode.PullAndPush]($common) is supplied, a new briefcaseId will be acquired.\r\n * @public\r\n */\r\nexport type DownloadBriefcaseId =\r\n { syncMode?: SyncMode, briefcaseId?: never } |\r\n { briefcaseId: number, syncMode?: never };\r\n\r\n/**\r\n* Options to download a briefcase\r\n* @public\r\n*/\r\nexport type DownloadBriefcaseOptions = DownloadBriefcaseId & {\r\n /** the full path for the briefcase file */\r\n fileName?: string;\r\n /** Function called regularly to report progress of download. */\r\n progressCallback?: OnDownloadProgress;\r\n /** interval for calling progress function, in milliseconds */\r\n progressInterval?: number;\r\n};\r\n\r\n/** NativeApp notifications from backend */\r\nclass NativeAppNotifyHandler extends NotificationHandler implements NativeAppNotifications {\r\n public get channelName() { return nativeAppNotify; }\r\n public notifyInternetConnectivityChanged(status: InternetConnectivityStatus) {\r\n Logger.logInfo(FrontendLoggerCategory.NativeApp, \"Internet connectivity changed\");\r\n NativeApp.onInternetConnectivityChanged.raiseEvent(status);\r\n }\r\n}\r\n\r\n/**\r\n * Options for [[NativeApp.startup]]\r\n * @public\r\n */\r\nexport interface NativeAppOpts extends IpcAppOptions {\r\n nativeApp?: {};\r\n}\r\n\r\n/**\r\n * The frontend of a native application\r\n * @see [Native Applications]($docs/learning/NativeApps.md)\r\n * @public\r\n */\r\nexport class NativeApp {\r\n private static _removeAppNotify?: RemoveFunction;\r\n\r\n /** @deprecated in 3.x. use nativeAppIpc */\r\n public static async callNativeHost<T extends AsyncMethodsOf<NativeAppFunctions>>(methodName: T, ...args: Parameters<NativeAppFunctions[T]>) {\r\n return IpcApp.callIpcChannel(nativeAppChannel, methodName, ...args) as PromiseReturnType<NativeAppFunctions[T]>;\r\n }\r\n /** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */\r\n public static nativeAppIpc = IpcApp.makeIpcProxy<NativeAppFunctions>(nativeAppChannel);\r\n\r\n private static _storages = new Map<string, Storage>();\r\n private static _onOnline = async () => {\r\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Online);\r\n };\r\n private static _onOffline = async () => {\r\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Offline);\r\n };\r\n private static async setConnectivity(by: OverriddenBy, status: InternetConnectivityStatus) {\r\n await this.nativeAppIpc.overrideInternetConnectivity(by, status);\r\n }\r\n private static hookBrowserConnectivityEvents() {\r\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\r\n window.addEventListener(\"online\", this._onOnline);\r\n window.addEventListener(\"offline\", this._onOffline);\r\n }\r\n }\r\n private static unhookBrowserConnectivityEvents() {\r\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\r\n window.removeEventListener(\"online\", this._onOnline);\r\n window.removeEventListener(\"offline\", this._onOffline);\r\n }\r\n }\r\n /** event called when internet connectivity changes, if known */\r\n public static onInternetConnectivityChanged = new BeEvent<(status: InternetConnectivityStatus) => void>();\r\n\r\n /** determine whether the app currently has internet connectivity, if known */\r\n public static async checkInternetConnectivity(): Promise<InternetConnectivityStatus> {\r\n return this.nativeAppIpc.checkInternetConnectivity();\r\n }\r\n /** @internal */\r\n public static async overrideInternetConnectivity(status: InternetConnectivityStatus): Promise<void> {\r\n return this.nativeAppIpc.overrideInternetConnectivity(OverriddenBy.User, status);\r\n }\r\n private static _isValid = false;\r\n public static get isValid(): boolean { return this._isValid; }\r\n\r\n /**\r\n * This is called by either ElectronApp.startup or MobileApp.startup - it should not be called directly\r\n * @internal\r\n */\r\n public static async startup(ipc: IpcSocketFrontend, opts?: NativeAppOpts) {\r\n await IpcApp.startup(ipc, opts);\r\n if (this._isValid)\r\n return;\r\n this._isValid = true;\r\n\r\n this._removeAppNotify = NativeAppNotifyHandler.register(); // receives notifications from backend\r\n NativeApp.hookBrowserConnectivityEvents();\r\n\r\n // initialize current online state.\r\n if (window.navigator.onLine) {\r\n await this.setConnectivity(OverriddenBy.Browser, window.navigator.onLine ? InternetConnectivityStatus.Online : InternetConnectivityStatus.Offline);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static async shutdown() {\r\n this._removeAppNotify?.();\r\n NativeApp.unhookBrowserConnectivityEvents();\r\n await NativeAppLogger.flush();\r\n await IpcApp.shutdown();\r\n this._isValid = false;\r\n }\r\n\r\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\r\n asOf?: IModelVersion): Promise<BriefcaseDownloader>;\r\n\r\n /**\r\n * @deprecated in 3.6. `progress` argument is now deprecated, use [[DownloadBriefcaseOptions.progressCallback]] instead.\r\n */\r\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\r\n // eslint-disable-next-line @typescript-eslint/unified-signatures, deprecation/deprecation\r\n asOf?: IModelVersion, progress?: ProgressCallback): Promise<BriefcaseDownloader>;\r\n\r\n public static async requestDownloadBriefcase(\r\n iTwinId: string,\r\n iModelId: string,\r\n downloadOptions: DownloadBriefcaseOptions,\r\n asOf: IModelVersion = IModelVersion.latest(),\r\n progress?: ProgressCallback, // eslint-disable-line deprecation/deprecation\r\n ): Promise<BriefcaseDownloader> {\r\n const shouldReportProgress = !!progress || !!downloadOptions.progressCallback;\r\n\r\n let stopProgressEvents = () => { };\r\n if (shouldReportProgress) {\r\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\r\n progress?.(data);\r\n downloadOptions.progressCallback?.(data);\r\n };\r\n\r\n stopProgressEvents = IpcApp.addListener(`nativeApp.progress-${iModelId}`, handleProgress);\r\n }\r\n\r\n const briefcaseId = (undefined !== downloadOptions.briefcaseId) ? downloadOptions.briefcaseId :\r\n (downloadOptions.syncMode === SyncMode.PullOnly ? 0 : await this.nativeAppIpc.acquireNewBriefcaseId(iModelId));\r\n\r\n const fileName = downloadOptions.fileName ?? await this.getBriefcaseFileName({ briefcaseId, iModelId });\r\n const requestProps: RequestNewBriefcaseProps = { iModelId, briefcaseId, iTwinId, asOf: asOf.toJSON(), fileName };\r\n\r\n const doDownload = async (): Promise<void> => {\r\n try {\r\n await this.nativeAppIpc.downloadBriefcase(requestProps, shouldReportProgress, downloadOptions.progressInterval);\r\n } finally {\r\n stopProgressEvents();\r\n }\r\n };\r\n\r\n const requestCancel = async (): Promise<boolean> => {\r\n const status = await this.nativeAppIpc.requestCancelDownloadBriefcase(fileName);\r\n if (status)\r\n stopProgressEvents();\r\n return status;\r\n };\r\n\r\n return { briefcaseId, fileName, downloadPromise: doDownload(), requestCancel };\r\n }\r\n\r\n /** Get the full path filename for a briefcase within the briefcase cache */\r\n public static async getBriefcaseFileName(props: BriefcaseProps): Promise<string> {\r\n return this.nativeAppIpc.getBriefcaseFileName(props);\r\n }\r\n\r\n /** Delete an existing briefcase\r\n * @param fileName the briefcase fileName\r\n */\r\n public static async deleteBriefcase(fileName: string): Promise<void> {\r\n await this.nativeAppIpc.deleteBriefcaseFiles(fileName);\r\n }\r\n\r\n /** Get a list of all briefcase files held in the local briefcase cache directory */\r\n public static async getCachedBriefcases(iModelId?: GuidString): Promise<LocalBriefcaseProps[]> {\r\n return this.nativeAppIpc.getCachedBriefcases(iModelId);\r\n }\r\n\r\n /**\r\n * Open a [[Storage]]. Creates a new Storage with that name if it does not already exist.\r\n * @param name Should be a local filename without an extension.\r\n * @returns a Promise for the [[Storage]].\r\n */\r\n public static async openStorage(name: string): Promise<Storage> {\r\n if (this._storages.has(name))\r\n return this._storages.get(name)!;\r\n\r\n const storage = new Storage(await this.nativeAppIpc.storageMgrOpen(name));\r\n this._storages.set(storage.id, storage);\r\n return storage;\r\n }\r\n\r\n /**\r\n * Close a Storage and optionally delete it.\r\n * @param storage normally not call directly instead use Storage.close()\r\n * @param deleteStorage if true, delete the storage from disk after closing it.\r\n */\r\n public static async closeStorage(storage: Storage, deleteStorage: boolean = false): Promise<void> {\r\n if (!this._storages.has(storage.id))\r\n throw new Error(`Storage [Id=${storage.id}] not open`);\r\n\r\n await this.nativeAppIpc.storageMgrClose(storage.id, deleteStorage);\r\n this._storages.delete(storage.id);\r\n }\r\n\r\n /** Get the list of existing Storages on the local disk. */\r\n public static async getStorageNames(): Promise<string[]> {\r\n return NativeApp.nativeAppIpc.storageMgrNames();\r\n }\r\n}\r\n\r\n/**\r\n * A local disk-based cache for key value pairs for NativeApps.\r\n * @note This should be used only for local caching, since its not guaranteed to exist permanently.\r\n * @public\r\n */\r\nexport class Storage {\r\n constructor(public readonly id: string) { }\r\n\r\n /** get the type of a value for a key, or undefined if not present. */\r\n public async getValueType(key: string): Promise<\"number\" | \"string\" | \"boolean\" | \"Uint8Array\" | \"null\" | undefined> {\r\n return NativeApp.nativeAppIpc.storageGetValueType(this.id, key);\r\n }\r\n\r\n /** Get the value for a key */\r\n public async getData(key: string): Promise<StorageValue> {\r\n return NativeApp.nativeAppIpc.storageGet(this.id, key);\r\n }\r\n\r\n /** Set value for a key */\r\n public async setData(key: string, value: StorageValue): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageSet(this.id, key, value);\r\n }\r\n\r\n /**\r\n * Return an array of all keys in this Storage.\r\n * @note This can be expensive, depending on the number of keys present.\r\n */\r\n public async getKeys(): Promise<string[]> {\r\n return NativeApp.nativeAppIpc.storageKeys(this.id);\r\n }\r\n\r\n /** Remove a key and its data. */\r\n public async removeData(key: string): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageRemove(this.id, key);\r\n }\r\n\r\n /** Remove all keys and their data. */\r\n public async removeAll(): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageRemoveAll(this.id);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"NativeApp.js","sourceRoot":"","sources":["../../src/NativeApp.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 NativeApp\r\n */\r\n\r\nimport { AsyncMethodsOf, BeEvent, GuidString, Logger, PromiseReturnType } from \"@itwin/core-bentley\";\r\nimport {\r\n BriefcaseDownloader, BriefcaseProps, IModelVersion, InternetConnectivityStatus, IpcSocketFrontend, LocalBriefcaseProps,\r\n NativeAppFunctions, nativeAppIpcStrings, NativeAppNotifications, OverriddenBy,\r\n RemoveFunction, RequestNewBriefcaseProps, StorageValue, SyncMode,\r\n} from \"@itwin/core-common\";\r\nimport { ProgressCallback } from \"./request/Request\";\r\nimport { FrontendLoggerCategory } from \"./common/FrontendLoggerCategory\";\r\nimport { IpcApp, IpcAppOptions, NotificationHandler } from \"./IpcApp\";\r\nimport { NativeAppLogger } from \"./NativeAppLogger\";\r\nimport { OnDownloadProgress } from \"./BriefcaseConnection\";\r\n\r\n/** Properties for specifying the BriefcaseId for downloading. May either specify a BriefcaseId directly (preferable) or, for\r\n * backwards compatibility, a [SyncMode]($common). If [SyncMode.PullAndPush]($common) is supplied, a new briefcaseId will be acquired.\r\n * @public\r\n */\r\nexport type DownloadBriefcaseId =\r\n { syncMode?: SyncMode, briefcaseId?: never } |\r\n { briefcaseId: number, syncMode?: never };\r\n\r\n/**\r\n* Options to download a briefcase\r\n* @public\r\n*/\r\nexport type DownloadBriefcaseOptions = DownloadBriefcaseId & {\r\n /** the full path for the briefcase file */\r\n fileName?: string;\r\n /** Function called regularly to report progress of download. */\r\n progressCallback?: OnDownloadProgress;\r\n /** interval for calling progress function, in milliseconds */\r\n progressInterval?: number;\r\n};\r\n\r\n/** NativeApp notifications from backend */\r\nclass NativeAppNotifyHandler extends NotificationHandler implements NativeAppNotifications {\r\n public get channelName() { return nativeAppIpcStrings.notifyChannel; }\r\n public notifyInternetConnectivityChanged(status: InternetConnectivityStatus) {\r\n Logger.logInfo(FrontendLoggerCategory.NativeApp, \"Internet connectivity changed\");\r\n NativeApp.onInternetConnectivityChanged.raiseEvent(status);\r\n }\r\n}\r\n\r\n/**\r\n * Options for [[NativeApp.startup]]\r\n * @public\r\n */\r\nexport interface NativeAppOpts extends IpcAppOptions {\r\n nativeApp?: {};\r\n}\r\n\r\n/**\r\n * The frontend of a native application\r\n * @see [Native Applications]($docs/learning/NativeApps.md)\r\n * @public\r\n */\r\nexport class NativeApp {\r\n private static _removeAppNotify?: RemoveFunction;\r\n\r\n /** @deprecated in 3.x. use nativeAppIpc */\r\n public static async callNativeHost<T extends AsyncMethodsOf<NativeAppFunctions>>(methodName: T, ...args: Parameters<NativeAppFunctions[T]>) {\r\n return IpcApp.callIpcChannel(nativeAppIpcStrings.channelName, methodName, ...args) as PromiseReturnType<NativeAppFunctions[T]>;\r\n }\r\n /** A Proxy to call one of the [NativeAppFunctions]($common) functions via IPC. */\r\n public static nativeAppIpc = IpcApp.makeIpcProxy<NativeAppFunctions>(nativeAppIpcStrings.channelName);\r\n\r\n private static _storages = new Map<string, Storage>();\r\n private static _onOnline = async () => {\r\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Online);\r\n };\r\n private static _onOffline = async () => {\r\n await NativeApp.setConnectivity(OverriddenBy.Browser, InternetConnectivityStatus.Offline);\r\n };\r\n private static async setConnectivity(by: OverriddenBy, status: InternetConnectivityStatus) {\r\n await this.nativeAppIpc.overrideInternetConnectivity(by, status);\r\n }\r\n private static hookBrowserConnectivityEvents() {\r\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\r\n window.addEventListener(\"online\", this._onOnline);\r\n window.addEventListener(\"offline\", this._onOffline);\r\n }\r\n }\r\n private static unhookBrowserConnectivityEvents() {\r\n if (typeof window === \"object\" && window.ononline && window.onoffline) {\r\n window.removeEventListener(\"online\", this._onOnline);\r\n window.removeEventListener(\"offline\", this._onOffline);\r\n }\r\n }\r\n /** event called when internet connectivity changes, if known */\r\n public static onInternetConnectivityChanged = new BeEvent<(status: InternetConnectivityStatus) => void>();\r\n\r\n /** determine whether the app currently has internet connectivity, if known */\r\n public static async checkInternetConnectivity(): Promise<InternetConnectivityStatus> {\r\n return this.nativeAppIpc.checkInternetConnectivity();\r\n }\r\n /** @internal */\r\n public static async overrideInternetConnectivity(status: InternetConnectivityStatus): Promise<void> {\r\n return this.nativeAppIpc.overrideInternetConnectivity(OverriddenBy.User, status);\r\n }\r\n private static _isValid = false;\r\n public static get isValid(): boolean { return this._isValid; }\r\n\r\n /**\r\n * This is called by either ElectronApp.startup or MobileApp.startup - it should not be called directly\r\n * @internal\r\n */\r\n public static async startup(ipc: IpcSocketFrontend, opts?: NativeAppOpts) {\r\n await IpcApp.startup(ipc, opts);\r\n if (this._isValid)\r\n return;\r\n this._isValid = true;\r\n\r\n this._removeAppNotify = NativeAppNotifyHandler.register(); // receives notifications from backend\r\n NativeApp.hookBrowserConnectivityEvents();\r\n\r\n // initialize current online state.\r\n if (window.navigator.onLine) {\r\n await this.setConnectivity(OverriddenBy.Browser, window.navigator.onLine ? InternetConnectivityStatus.Online : InternetConnectivityStatus.Offline);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static async shutdown() {\r\n this._removeAppNotify?.();\r\n NativeApp.unhookBrowserConnectivityEvents();\r\n await NativeAppLogger.flush();\r\n await IpcApp.shutdown();\r\n this._isValid = false;\r\n }\r\n\r\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\r\n asOf?: IModelVersion): Promise<BriefcaseDownloader>;\r\n\r\n /**\r\n * @deprecated in 3.6. `progress` argument is now deprecated, use [[DownloadBriefcaseOptions.progressCallback]] instead.\r\n */\r\n public static async requestDownloadBriefcase(iTwinId: string, iModelId: string, downloadOptions: DownloadBriefcaseOptions,\r\n // eslint-disable-next-line @typescript-eslint/unified-signatures, deprecation/deprecation\r\n asOf?: IModelVersion, progress?: ProgressCallback): Promise<BriefcaseDownloader>;\r\n\r\n public static async requestDownloadBriefcase(\r\n iTwinId: string,\r\n iModelId: string,\r\n downloadOptions: DownloadBriefcaseOptions,\r\n asOf: IModelVersion = IModelVersion.latest(),\r\n progress?: ProgressCallback, // eslint-disable-line deprecation/deprecation\r\n ): Promise<BriefcaseDownloader> {\r\n const shouldReportProgress = !!progress || !!downloadOptions.progressCallback;\r\n\r\n let stopProgressEvents = () => { };\r\n if (shouldReportProgress) {\r\n const handleProgress = (_evt: Event, data: { loaded: number, total: number }) => {\r\n progress?.(data);\r\n downloadOptions.progressCallback?.(data);\r\n };\r\n\r\n stopProgressEvents = IpcApp.addListener(`nativeApp.progress-${iModelId}`, handleProgress);\r\n }\r\n\r\n const briefcaseId = (undefined !== downloadOptions.briefcaseId) ? downloadOptions.briefcaseId :\r\n (downloadOptions.syncMode === SyncMode.PullOnly ? 0 : await this.nativeAppIpc.acquireNewBriefcaseId(iModelId));\r\n\r\n const fileName = downloadOptions.fileName ?? await this.getBriefcaseFileName({ briefcaseId, iModelId });\r\n const requestProps: RequestNewBriefcaseProps = { iModelId, briefcaseId, iTwinId, asOf: asOf.toJSON(), fileName };\r\n\r\n const doDownload = async (): Promise<void> => {\r\n try {\r\n await this.nativeAppIpc.downloadBriefcase(requestProps, shouldReportProgress, downloadOptions.progressInterval);\r\n } finally {\r\n stopProgressEvents();\r\n }\r\n };\r\n\r\n const requestCancel = async (): Promise<boolean> => {\r\n const status = await this.nativeAppIpc.requestCancelDownloadBriefcase(fileName);\r\n if (status)\r\n stopProgressEvents();\r\n return status;\r\n };\r\n\r\n return { briefcaseId, fileName, downloadPromise: doDownload(), requestCancel };\r\n }\r\n\r\n /** Get the full path filename for a briefcase within the briefcase cache */\r\n public static async getBriefcaseFileName(props: BriefcaseProps): Promise<string> {\r\n return this.nativeAppIpc.getBriefcaseFileName(props);\r\n }\r\n\r\n /** Delete an existing briefcase\r\n * @param fileName the briefcase fileName\r\n */\r\n public static async deleteBriefcase(fileName: string): Promise<void> {\r\n await this.nativeAppIpc.deleteBriefcaseFiles(fileName);\r\n }\r\n\r\n /** Get a list of all briefcase files held in the local briefcase cache directory */\r\n public static async getCachedBriefcases(iModelId?: GuidString): Promise<LocalBriefcaseProps[]> {\r\n return this.nativeAppIpc.getCachedBriefcases(iModelId);\r\n }\r\n\r\n /**\r\n * Open a [[Storage]]. Creates a new Storage with that name if it does not already exist.\r\n * @param name Should be a local filename without an extension.\r\n * @returns a Promise for the [[Storage]].\r\n */\r\n public static async openStorage(name: string): Promise<Storage> {\r\n if (this._storages.has(name))\r\n return this._storages.get(name)!;\r\n\r\n const storage = new Storage(await this.nativeAppIpc.storageMgrOpen(name));\r\n this._storages.set(storage.id, storage);\r\n return storage;\r\n }\r\n\r\n /**\r\n * Close a Storage and optionally delete it.\r\n * @param storage normally not call directly instead use Storage.close()\r\n * @param deleteStorage if true, delete the storage from disk after closing it.\r\n */\r\n public static async closeStorage(storage: Storage, deleteStorage: boolean = false): Promise<void> {\r\n if (!this._storages.has(storage.id))\r\n throw new Error(`Storage [Id=${storage.id}] not open`);\r\n\r\n await this.nativeAppIpc.storageMgrClose(storage.id, deleteStorage);\r\n this._storages.delete(storage.id);\r\n }\r\n\r\n /** Get the list of existing Storages on the local disk. */\r\n public static async getStorageNames(): Promise<string[]> {\r\n return NativeApp.nativeAppIpc.storageMgrNames();\r\n }\r\n}\r\n\r\n/**\r\n * A local disk-based cache for key value pairs for NativeApps.\r\n * @note This should be used only for local caching, since its not guaranteed to exist permanently.\r\n * @public\r\n */\r\nexport class Storage {\r\n constructor(public readonly id: string) { }\r\n\r\n /** get the type of a value for a key, or undefined if not present. */\r\n public async getValueType(key: string): Promise<\"number\" | \"string\" | \"boolean\" | \"Uint8Array\" | \"null\" | undefined> {\r\n return NativeApp.nativeAppIpc.storageGetValueType(this.id, key);\r\n }\r\n\r\n /** Get the value for a key */\r\n public async getData(key: string): Promise<StorageValue> {\r\n return NativeApp.nativeAppIpc.storageGet(this.id, key);\r\n }\r\n\r\n /** Set value for a key */\r\n public async setData(key: string, value: StorageValue): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageSet(this.id, key, value);\r\n }\r\n\r\n /**\r\n * Return an array of all keys in this Storage.\r\n * @note This can be expensive, depending on the number of keys present.\r\n */\r\n public async getKeys(): Promise<string[]> {\r\n return NativeApp.nativeAppIpc.storageKeys(this.id);\r\n }\r\n\r\n /** Remove a key and its data. */\r\n public async removeData(key: string): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageRemove(this.id, key);\r\n }\r\n\r\n /** Remove all keys and their data. */\r\n public async removeAll(): Promise<void> {\r\n return NativeApp.nativeAppIpc.storageRemoveAll(this.id);\r\n }\r\n}\r\n"]}
|
package/lib/cjs/NoRenderApp.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { IModelAppOptions } from "./IModelApp";
|
|
|
5
5
|
import { AnimationBranchStates } from "./render/GraphicBranch";
|
|
6
6
|
import { RenderSystem } from "./render/RenderSystem";
|
|
7
7
|
import { RenderTarget } from "./render/RenderTarget";
|
|
8
|
-
import { ViewRect } from "./ViewRect";
|
|
8
|
+
import { ViewRect } from "./common/ViewRect";
|
|
9
9
|
/**
|
|
10
10
|
* A RenderTarget for applications that must run in environments where WebGL is not present.
|
|
11
11
|
* This is typically used in tests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoRenderApp.d.ts","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"NoRenderApp.d.ts","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAC1C,IAAW,gBAAgB,IAAI,MAAM,CAAc;IACnD,IAAW,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAK;IAClD,IAAW,YAAY,QAA+B;IACtD,IAAW,QAAQ,IAAI,QAAQ,CAA2B;IAC1D,IAAW,yBAAyB,IAAI,OAAO,CAAkB;IACjE,IAAoB,iBAAiB,IAAI,qBAAqB,GAAG,SAAS,CAAsB;IAChG,IAAoB,iBAAiB,CAAC,SAAS,EAAE,qBAAqB,GAAG,SAAS,EAAK;IAChF,SAAS,IAAI,IAAI;IACR,KAAK,IAAI,IAAI;IACtB,WAAW,IAAI,IAAI;IACnB,cAAc,IAAI,IAAI;IACtB,iBAAiB,IAAI,IAAI;IACzB,gBAAgB,IAAI,IAAI;IACxB,SAAS,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI;IACpC,wBAAwB,IAAI,IAAI;IAChC,YAAY,IAAI,IAAI;IACpB,UAAU,IAAI,IAAI;IAC3B,WAAW,IAAI,IAAI;IACV,SAAS,IAAI,IAAI;IACjB,OAAO,IAAI,IAAI;IACxB,cAAc,IAAI,OAAO;IACzB,UAAU,IAAI,IAAI;IACzB,IAAW,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAe;IAChE,IAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAK;CAC9D;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,IAAW,OAAO,IAAI,OAAO,CAAkB;IACxC,UAAU,IAAI,OAAO;IACrB,YAAY;IACZ,qBAAqB;IACrB,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,WAAW;IACX,OAAO;;IAEE,mBAAmB;CACpC;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACtB;;OAEG;WACiB,OAAO,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAOpE"}
|
package/lib/cjs/NoRenderApp.js
CHANGED
|
@@ -12,7 +12,7 @@ const core_common_1 = require("@itwin/core-common");
|
|
|
12
12
|
const IModelApp_1 = require("./IModelApp");
|
|
13
13
|
const RenderSystem_1 = require("./render/RenderSystem");
|
|
14
14
|
const RenderTarget_1 = require("./render/RenderTarget");
|
|
15
|
-
const ViewRect_1 = require("./ViewRect");
|
|
15
|
+
const ViewRect_1 = require("./common/ViewRect");
|
|
16
16
|
/**
|
|
17
17
|
* A RenderTarget for applications that must run in environments where WebGL is not present.
|
|
18
18
|
* This is typically used in tests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoRenderApp.js","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,oDAAuD;AACvD,2CAA0D;AAE1D,wDAAqD;AACrD,wDAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"NoRenderApp.js","sourceRoot":"","sources":["../../src/NoRenderApp.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,oDAAuD;AACvD,2CAA0D;AAE1D,wDAAqD;AACrD,wDAAqD;AACrD,gDAA6C;AAE7C;;;;GAIG;AACH,MAAa,UAAW,SAAQ,2BAAY;IAC1C,IAAW,gBAAgB,KAAa,OAAO,CAAC,CAAC,CAAC,CAAC;IACnD,IAAW,gBAAgB,CAAC,SAAiB,IAAI,CAAC;IAClD,IAAW,YAAY,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IACtD,IAAW,QAAQ,KAAe,OAAO,IAAI,mBAAQ,EAAE,CAAC,CAAC,CAAC;IAC1D,IAAW,yBAAyB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACjE,IAAoB,iBAAiB,KAAwC,OAAO,SAAS,CAAC,CAAC,CAAC;IAChG,IAAoB,iBAAiB,CAAC,SAA4C,IAAI,CAAC;IAChF,SAAS,KAAW,CAAC;IACZ,KAAK,KAAW,CAAC;IAC1B,WAAW,KAAW,CAAC;IACvB,cAAc,KAAW,CAAC;IAC1B,iBAAiB,KAAW,CAAC;IAC7B,gBAAgB,KAAW,CAAC;IAC5B,SAAS,CAAC,mBAA4B,IAAU,CAAC;IACxC,wBAAwB,KAAW,CAAC;IACpC,YAAY,KAAW,CAAC;IACxB,UAAU,KAAW,CAAC;IAC/B,WAAW,KAAW,CAAC;IACd,SAAS,KAAW,CAAC;IACrB,OAAO,KAAW,CAAC;IAC5B,cAAc,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC3C,UAAU,KAAW,CAAC;IAC7B,IAAW,kBAAkB,KAAuB,OAAO,EAAE,CAAC,CAAC,CAAC;IAChE,IAAW,kBAAkB,CAAC,QAA0B,IAAI,CAAC;CAC9D;AAzBD,gCAyBC;AAED;;;;GAIG;AACH,MAAa,gBAAiB,SAAQ,2BAAY;IAChD,IAAW,OAAO,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACxC,UAAU,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACvC,YAAY,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3C,qBAAqB,KAAK,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;IACpD,aAAa,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAC5C,iBAAiB,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAChD,mBAAmB,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAClD,WAAW,KAAK,OAAO,SAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;IACpB,gBAAuB,KAAK,EAAE,CAAC,CAAC,CAAC;IACjB,mBAAmB,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC;CAC5D;AAZD,4CAYC;AAED;;;;;GAKG;AACH,MAAa,WAAW;IACtB;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAuB;QACjD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,+BAAiB,EAAE,CAAC;QACjE,MAAM,qBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAXD,kCAWC","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 IModelApp\r\n */\r\n\r\nimport { EmptyLocalization } from \"@itwin/core-common\";\r\nimport { IModelApp, IModelAppOptions } from \"./IModelApp\";\r\nimport { AnimationBranchStates } from \"./render/GraphicBranch\";\r\nimport { RenderSystem } from \"./render/RenderSystem\";\r\nimport { RenderTarget } from \"./render/RenderTarget\";\r\nimport { ViewRect } from \"./common/ViewRect\";\r\n\r\n/**\r\n * A RenderTarget for applications that must run in environments where WebGL is not present.\r\n * This is typically used in tests.\r\n * @internal\r\n */\r\nexport class NullTarget extends RenderTarget {\r\n public get analysisFraction(): number { return 0; }\r\n public set analysisFraction(_fraction: number) { }\r\n public get renderSystem() { return undefined as any; }\r\n public get viewRect(): ViewRect { return new ViewRect(); }\r\n public get wantInvertBlackBackground(): boolean { return false; }\r\n public override get animationBranches(): AnimationBranchStates | undefined { return undefined; }\r\n public override set animationBranches(_branches: AnimationBranchStates | undefined) { }\r\n public onDestroy(): void { }\r\n public override reset(): void { }\r\n public changeScene(): void { }\r\n public changeDynamics(): void { }\r\n public changeDecorations(): void { }\r\n public changeRenderPlan(): void { }\r\n public drawFrame(_sceneMilSecElapsed?: number): void { }\r\n public override overrideFeatureSymbology(): void { }\r\n public override setHiliteSet(): void { }\r\n public override setFlashed(): void { }\r\n public setViewRect(): void { }\r\n public override onResized(): void { }\r\n public override dispose(): void { }\r\n public updateViewRect(): boolean { return false; }\r\n public readPixels(): void { }\r\n public get screenSpaceEffects(): Iterable<string> { return []; }\r\n public set screenSpaceEffects(_effects: Iterable<string>) { }\r\n}\r\n\r\n/**\r\n * A RenderSystem for applications that must run in environments where WebGL is not present.\r\n * This is typically used in tests.\r\n * @internal\r\n */\r\nexport class NullRenderSystem extends RenderSystem {\r\n public get isValid(): boolean { return false; }\r\n public doIdleWork(): boolean { return false; }\r\n public createTarget() { return new NullTarget(); }\r\n public createOffscreenTarget() { return new NullTarget(); }\r\n public createGraphic() { return undefined as any; }\r\n public createGraphicList() { return undefined as any; }\r\n public createGraphicBranch() { return undefined as any; }\r\n public createBatch() { return undefined as any; }\r\n public dispose() { }\r\n public constructor() { super(); }\r\n public override createRenderGraphic() { return undefined; }\r\n}\r\n\r\n/** A utility class intended for applications (primarily test-runners) that run in environments that lack support for WebGL.\r\n * It installs a [[RenderSystem]] that produces no graphics.\r\n * Use [[NoRenderApp.startup]] instead of [[IModelApp.startup]] to initialize your application frontend.\r\n * You may then use the [[IModelApp]] API as normal.\r\n * @public\r\n */\r\nexport class NoRenderApp {\r\n /** Initializes [[IModelApp]] with a [[RenderSystem]] that produces no graphics.\r\n * Use this in place of [[IModelApp.startup]], then proceed to use [[IModelApp]]'s API as normal.\r\n */\r\n public static async startup(opts?: IModelAppOptions): Promise<void> {\r\n opts = opts ? opts : {};\r\n opts.renderSys = new NullRenderSystem();\r\n opts.noRender = true;\r\n opts.localization = opts.localization ?? new EmptyLocalization();\r\n await IModelApp.startup(opts);\r\n }\r\n}\r\n"]}
|
|
@@ -10,7 +10,7 @@ exports.RealityDataSourceProviderRegistry = exports.RealityDataSource = exports.
|
|
|
10
10
|
*/
|
|
11
11
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
12
|
const core_common_1 = require("@itwin/core-common");
|
|
13
|
-
const FrontendLoggerCategory_1 = require("./FrontendLoggerCategory");
|
|
13
|
+
const FrontendLoggerCategory_1 = require("./common/FrontendLoggerCategory");
|
|
14
14
|
const internal_1 = require("./tile/internal");
|
|
15
15
|
const RealityDataSourceTilesetUrlImpl_1 = require("./RealityDataSourceTilesetUrlImpl");
|
|
16
16
|
const RealityDataSourceContextShareImpl_1 = require("./RealityDataSourceContextShareImpl");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealityDataSource.js","sourceRoot":"","sources":["../../src/RealityDataSource.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,sDAA2G;AAC3G,oDAA6J;AAC7J,qEAAkE;AAClE,8CAAkG;AAClG,uFAAoF;AACpF,2FAAwF;AACxF,+FAA4F;AAC5F,2CAAwC;AAGxC,MAAM,cAAc,GAAW,+CAAsB,CAAC,WAAW,CAAC;AAElE;;;GAGG;AACH,MAAa,gBAAiB,SAAQ,2BAAY;IAChD,YAAmB,WAA8B,EAAE,OAAe,EAAE,WAA6B;QAC/F,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3C,CAAC;CACF;AAJD,4CAIC;AA6FD;;GAEG;AACH,IAAiB,iBAAiB,CAuFjC;AAvFD,WAAiB,iBAAiB;IAChC;;;;;OAKG;IACH,SAAgB,gBAAgB,CAAC,UAAkB,EAAE,aAAmC,EAAE,WAA+B;QACvH,IAAI,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,+BAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/E,IAAI,iCAAsB,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YACpD,MAAM,QAAQ,GAAG,iCAAmB,CAAC,cAAc,CAAC;YACpD,IAAI,iBAAiB,GAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAG,iCAAsB,CAAC,aAAa,EAAE,CAAC,CAAC,uBAAuB;YACtI,6DAA6D;YAC7D,MAAM,WAAW,GAAG,iCAAsB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACtE,IAAI,WAAW,EAAE;gBACf,iBAAiB,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;aAChG;YACD,OAAO,iBAAiB,CAAC;SAC1B;QAED,oFAAoF;QACpF,IAAI,+BAAoB,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YAClD,MAAM,IAAI,GAAG,+BAAoB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/D,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACjD,MAAM,eAAe,GAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACvG,OAAO,eAAe,CAAC;SACxB;QAED,wBAAwB;QACxB,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iCAAmB,CAAC,UAAU,CAAC;QACjF,MAAM,MAAM,GAAyB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;QACrF,OAAO,MAAM,CAAC;IAChB,CAAC;IA1Be,kCAAgB,mBA0B/B,CAAA;IACD,gHAAgH;IAChH,SAAgB,oBAAoB,CAAC,OAAe,EAAE,aAAmC,EAAE,WAA+B;QACxH,MAAM,IAAI,GAAG,+BAAoB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/D,MAAM,eAAe,GAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAChF,OAAO,eAAe,CAAC;IACzB,CAAC;IANe,sCAAoB,uBAMnC,CAAA;IACD,yCAAyC;IACzC,SAAgB,6BAA6B,CAAC,WAA6B,EAAE,aAAmC,EAAE,WAA+B;QAC/I,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,+BAAiB,CAAC,GAAG,CAAC;QACjE,IAAI,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzF,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;SAChG;aAAM,IAAI,WAAW,CAAC,MAAM,EAAE;YAC7B,OAAO,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;SACtF;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iCAAmB,CAAC,WAAW,CAAC;QACjF,MAAM,EAAE,GAAG,GAAG,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,aAAa,IAAI,WAAW,CAAC,YAAY,KAAK,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1H,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IAVe,+CAA6B,gCAU5C,CAAA;IACD,yCAAyC;IACzC,SAAgB,6BAA6B,CAAC,WAAiC;QAC7E,IAAI,WAAW,CAAC,QAAQ,KAAK,iCAAmB,CAAC,WAAW;YAC1D,OAAO,SAAS,CAAC;QACnB,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAqB;YACpC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxB,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1B,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;YACzB,QAAQ;SACT,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAbe,+CAA6B,gCAa5C,CAAA;IACD,4DAA4D;IAC5D,SAAgB,uBAAuB,CAAC,UAAkB,EAAE,UAAkB;QAC5E,MAAM,EAAE,GAAG,IAAA,4BAAiB,EAAC,UAAU,EAAC,UAAU,CAAC,CAAC;QACpD,OAAO,EAAC,QAAQ,EAAE,iCAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,+BAAiB,CAAC,UAAU,EAAE,EAAE,EAAC,CAAC;IAClG,CAAC;IAHe,yCAAuB,0BAGtC,CAAA;IACD;;;OAGG;IACI,KAAK,UAAU,OAAO,CAAC,GAAyB,EAAE,OAA+B;QACtF,MAAM,QAAQ,GAAG,qBAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,EAAE;YACb,qBAAM,CAAC,UAAU,CAAC,cAAc,EAAE,8BAA8B,GAAG,CAAC,QAAQ,qBAAqB,CAAC,CAAC;YACnG,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,QAAQ,CAAC,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IARqB,yBAAO,UAQ5B,CAAA;AACH,CAAC,EAvFgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAuFjC;AAiBD;;;;GAIG;AACH,MAAa,iCAAiC;IAG5C,gBAAgB;IAChB;QAHiB,eAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;QAIzE,IAAI,CAAC,QAAQ,CAAC,iCAAmB,CAAC,cAAc,EAAE;YAChD,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,yEAAmC,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;SACjH,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,iCAAmB,CAAC,UAAU,EAAE;YAC5C,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,iEAA+B,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;SAC7G,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,iCAAmB,CAAC,YAAY,EAAE;YAC9C,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,qEAAiC,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;SAC/G,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,iCAAmB,CAAC,WAAW,EAAE;YAC7C,kCAAkC;YAClC,uBAAuB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,iEAA+B,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC;SAC7G,CAAC,CAAC;IACL,CAAC;IAED,+FAA+F;IACxF,QAAQ,CAAC,IAAY,EAAE,QAAmC;QAC/D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,+DAA+D;IACxD,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AA7BD,8EA6BC","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 Tiles\r\n */\r\nimport { BentleyError, GuidString, Logger, LoggingMetaData, RealityDataStatus } from \"@itwin/core-bentley\";\r\nimport { Cartographic, EcefLocation, OrbitGtBlobProps, RealityData, RealityDataFormat, RealityDataProvider, RealityDataSourceKey } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./FrontendLoggerCategory\";\r\nimport { CesiumIonAssetProvider, ContextShareProvider, getCesiumAssetUrl } from \"./tile/internal\";\r\nimport { RealityDataSourceTilesetUrlImpl } from \"./RealityDataSourceTilesetUrlImpl\";\r\nimport { RealityDataSourceContextShareImpl } from \"./RealityDataSourceContextShareImpl\";\r\nimport { RealityDataSourceCesiumIonAssetImpl } from \"./RealityDataSourceCesiumIonAssetImpl\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\n\r\nconst loggerCategory: string = FrontendLoggerCategory.RealityData;\r\n\r\n/**\r\n * Reality Data Operation error\r\n * @alpha\r\n */\r\nexport class RealityDataError extends BentleyError {\r\n public constructor(errorNumber: RealityDataStatus, message: string, getMetaData?: LoggingMetaData) {\r\n super(errorNumber, message, getMetaData);\r\n }\r\n}\r\n\r\n/** This interface provide spatial location and volume of interest, in meters, centered around `spatial location`\r\n * @alpha\r\n */\r\nexport interface SpatialLocationAndExtents {\r\n /** location of the point at the center of the reaity data */\r\n location: Cartographic | EcefLocation;\r\n /** extents of the volume around location */\r\n worldRange: Range3d;\r\n /** true if this reality data is geolocated\r\n * A reality data is geolocated when we can compute a valid position relative to the earth surface.\r\n * Note that some reality data contains custom coordinate system without any information on the relative position on earth.\r\n * These reality data will have a location and worldRange but will be identified by the isGeoLocated set to false.\r\n */\r\n isGeolocated: boolean;\r\n}\r\n\r\n/** This interface provides information to identify the product and engine that create this reality data\r\n * @alpha\r\n */\r\nexport interface PublisherProductInfo {\r\n /** product that create this reality data */\r\n product: string;\r\n /** engine that create this reality data */\r\n engine: string;\r\n /** the version of the engine that create this reality data */\r\n version: string;\r\n}\r\n\r\n/** This interface provide methods used to access a reality data from a reality data provider\r\n * @beta\r\n */\r\nexport interface RealityDataSource {\r\n readonly key: RealityDataSourceKey;\r\n readonly isContextShare: boolean;\r\n readonly realityDataId: string | undefined;\r\n /** Metatdata on the reality data source */\r\n readonly realityData: RealityData | undefined;\r\n /** The reality data type (e.g.: \"RealityMesh3DTiles\", OPC, Terrain3DTiles, Cesium3DTiles, ... )*/\r\n readonly realityDataType: string | undefined;\r\n /** This method returns the URL to obtain the Reality Data properties.\r\n * @param iTwinId id of associated iTwin project\r\n * @returns string containing the URL to reality data.\r\n */\r\n getServiceUrl(iTwinId: GuidString | undefined): Promise<string | undefined>;\r\n /** If true, the geometricError property of the tiles will be used to compute screen-space error.\r\n * @alpha\r\n */\r\n readonly usesGeometricError?: boolean;\r\n /** If [[usesGeometricError]] is `true`, optionally specifies the maximum error, in pixels, to permit for a tile before requiring refinement of that tile.\r\n * Default: 16\r\n * @alpha\r\n */\r\n readonly maximumScreenSpaceError?: number;\r\n /** Given the URL of a tile's content, return the type of that content.\r\n * \"tileset\" indicates the content points to a JSON tileset describing the structure of the tile tree below the tile.\r\n * \"tile\" indicates the content points to a binary representation of the tile's graphics.\r\n * @alpha\r\n */\r\n getTileContentType(url: string): \"tile\" | \"tileset\";\r\n\r\n /** Gets a reality data root document json\r\n * @returns tile data json\r\n * @internal\r\n */\r\n getRootDocument(iTwinId: GuidString | undefined): Promise<any>;\r\n /** Gets tile content\r\n * @param name name or path of tile\r\n * @returns array buffer of tile content\r\n * @internal\r\n */\r\n getTileContent(name: string): Promise<any>;\r\n /** Gets a tileset's app data json\r\n * @param name name or path of tile\r\n * @returns app data json object\r\n * @internal\r\n */\r\n getTileJson(name: string): Promise<any>;\r\n /** Gets spatial location and extents of this reality data source.\r\n * Will return undefined if cannot be resolved or is unbounded (cover entire earth eg: Open Street Map Building from Ion Asset)\r\n * @returns spatial location and extents\r\n * @throws [[RealityDataError]] if source is invalid or cannot be read\r\n * @alpha\r\n */\r\n getSpatialLocationAndExtents(): Promise<SpatialLocationAndExtents | undefined>;\r\n /** Gets information to identify the product and engine that create this reality data\r\n * Will return undefined if cannot be resolved\r\n * @returns information to identify the product and engine that create this reality data\r\n * @alpha\r\n */\r\n getPublisherProductInfo(): Promise<PublisherProductInfo | undefined>;\r\n}\r\n/** Utility functions for RealityDataSource\r\n * @beta\r\n */\r\nexport namespace RealityDataSource {\r\n /** Create a RealityDataSourceKey from a tilesetUrl.\r\n * @param tilesetUrl the reality data attachment url\r\n * @param inputProvider identify the RealityDataProvider if known, otherwise function will try to extract it from the tilesetUrl\r\n * @param inputFormat identify the RealityDataFormat if known, otherwise function will try to extract it from the tilesetUrl\r\n * @returns the RealityDataSourceKey that uniquely identify a reality data for a provider\r\n */\r\n export function createKeyFromUrl(tilesetUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n let format = inputFormat ? inputFormat : RealityDataFormat.fromUrl(tilesetUrl);\r\n if (CesiumIonAssetProvider.isProviderUrl(tilesetUrl)) {\r\n const provider = RealityDataProvider.CesiumIonAsset;\r\n let cesiumIonAssetKey: RealityDataSourceKey = { provider, format, id: CesiumIonAssetProvider.osmBuildingId }; // default OSM building\r\n // Parse URL to extract possible asset id and key if provided\r\n const cesiumAsset = CesiumIonAssetProvider.parseCesiumUrl(tilesetUrl);\r\n if (cesiumAsset) {\r\n cesiumIonAssetKey = RealityDataSource.createCesiumIonAssetKey(cesiumAsset.id, cesiumAsset.key);\r\n }\r\n return cesiumIonAssetKey;\r\n }\r\n\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n if (ContextShareProvider.isProviderUrl(tilesetUrl)) {\r\n const info = ContextShareProvider.getInfoFromUrl(tilesetUrl);\r\n const provider = inputProvider ? inputProvider : info.provider;\r\n format = inputFormat ? inputFormat : info.format;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: info.id, iTwinId: info.iTwinId };\r\n return contextShareKey;\r\n }\r\n\r\n // default to tileSetUrl\r\n const provider2 = inputProvider ? inputProvider : RealityDataProvider.TilesetUrl;\r\n const urlKey: RealityDataSourceKey = { provider: provider2, format, id: tilesetUrl };\r\n return urlKey;\r\n }\r\n /** @alpha - was used for a very specific case of point cloud (opc) attachment that should not be made public */\r\n export function createKeyFromBlobUrl(blobUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const info = ContextShareProvider.getInfoFromBlobUrl(blobUrl);\r\n const format = inputFormat ? inputFormat : info.format;\r\n const provider = inputProvider ? inputProvider : info.provider;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: info.id };\r\n return contextShareKey;\r\n }\r\n /** @alpha - OrbitGtBlobProps is alpha */\r\n export function createKeyFromOrbitGtBlobProps(orbitGtBlob: OrbitGtBlobProps, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const format = inputFormat ? inputFormat : RealityDataFormat.OPC;\r\n if (orbitGtBlob.blobFileName && orbitGtBlob.blobFileName.toLowerCase().startsWith(\"http\")) {\r\n return RealityDataSource.createKeyFromBlobUrl(orbitGtBlob.blobFileName, inputProvider, format);\r\n } else if (orbitGtBlob.rdsUrl) {\r\n return RealityDataSource.createKeyFromUrl(orbitGtBlob.rdsUrl, inputProvider, format);\r\n }\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.OrbitGtBlob;\r\n const id = `${orbitGtBlob.accountName}:${orbitGtBlob.containerName}:${orbitGtBlob.blobFileName}:?${orbitGtBlob.sasToken}`;\r\n return { provider, format, id };\r\n }\r\n /** @alpha - OrbitGtBlobProps is alpha */\r\n export function createOrbitGtBlobPropsFromKey(rdSourceKey: RealityDataSourceKey): OrbitGtBlobProps | undefined {\r\n if (rdSourceKey.provider !== RealityDataProvider.OrbitGtBlob)\r\n return undefined;\r\n const splitIds = rdSourceKey.id.split(\":\");\r\n const sasTokenIndex = rdSourceKey.id.indexOf(\":?\");\r\n const sasToken = rdSourceKey.id.substring(sasTokenIndex + 2);\r\n const orbitGtBlob: OrbitGtBlobProps = {\r\n accountName: splitIds[0],\r\n containerName: splitIds[1],\r\n blobFileName: splitIds[2],\r\n sasToken,\r\n };\r\n return orbitGtBlob;\r\n }\r\n /** @internal - Is used by \"fdt attach cesium asset\" keyin*/\r\n export function createCesiumIonAssetKey(osmAssetId: number, requestKey: string): RealityDataSourceKey {\r\n const id = getCesiumAssetUrl(osmAssetId,requestKey);\r\n return {provider: RealityDataProvider.CesiumIonAsset, format: RealityDataFormat.ThreeDTile, id};\r\n }\r\n /** Return an instance of a RealityDataSource from a source key.\r\n * There will aways be only one reality data RealityDataSource for a corresponding reality data source key.\r\n * @alpha\r\n */\r\n export async function fromKey(key: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n const provider = IModelApp.realityDataSourceProviders.find(key.provider);\r\n if (!provider) {\r\n Logger.logWarning(loggerCategory, `RealityDataSourceProvider \"${key.provider}\" is not registered`);\r\n return undefined;\r\n }\r\n\r\n return provider.createRealityDataSource(key, iTwinId);\r\n }\r\n}\r\n\r\n/** A named supplier of [RealityDataSource]]s.\r\n * The provider's name is stored in a [RealityDataSourceKey]($common). When the [[RealityDataSource]] is requested from the key,\r\n * the provider is looked up in [[IModelApp.realityDataSourceProviders]] by its name and, if found, its [[createRealityDataSource]] method\r\n * is invoked to produce the reality data source.\r\n * @alpha\r\n */\r\nexport interface RealityDataSourceProvider {\r\n /** Produce a RealityDataSource for the specified `key`.\r\n * @param key Identifies the reality data source.\r\n * @param iTwinId A default iTwinId to use.\r\n * @returns the requested reality data source, or `undefined` if it could not be produced.\r\n */\r\n createRealityDataSource(key: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined>;\r\n}\r\n\r\n/** A registry of [[RealityDataSourceProvider]]s identified by their unique names. The registry can be accessed via [[IModelApp.realityDataSourceProviders]].\r\n * It includes a handful of built-in providers for sources like Cesium ION, ContextShare, OrbitGT, and arbitrary public-accessible URLs.\r\n * Any number of additional providers can be registered. They should typically be registered just after [[IModelAp.startup]].\r\n * @alpha\r\n */\r\nexport class RealityDataSourceProviderRegistry {\r\n private readonly _providers = new Map<string, RealityDataSourceProvider>();\r\n\r\n /** @internal */\r\n public constructor() {\r\n this.register(RealityDataProvider.CesiumIonAsset, {\r\n createRealityDataSource: async (key, iTwinId) => RealityDataSourceCesiumIonAssetImpl.createFromKey(key, iTwinId),\r\n });\r\n this.register(RealityDataProvider.TilesetUrl, {\r\n createRealityDataSource: async (key, iTwinId) => RealityDataSourceTilesetUrlImpl.createFromKey(key, iTwinId),\r\n });\r\n this.register(RealityDataProvider.ContextShare, {\r\n createRealityDataSource: async (key, iTwinId) => RealityDataSourceContextShareImpl.createFromKey(key, iTwinId),\r\n });\r\n this.register(RealityDataProvider.OrbitGtBlob, {\r\n // ###TODO separate TilesetUrlImpl\r\n createRealityDataSource: async (key, iTwinId) => RealityDataSourceTilesetUrlImpl.createFromKey(key, iTwinId),\r\n });\r\n }\r\n\r\n /** Register `provider` to produce [[RealityDataSource]]s for the specified provider `name`. */\r\n public register(name: string, provider: RealityDataSourceProvider): void {\r\n this._providers.set(name, provider);\r\n }\r\n\r\n /** Look up the provider registered by the specified `name`. */\r\n public find(name: string): RealityDataSourceProvider | undefined {\r\n return this._providers.get(name);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RealityDataSource.js","sourceRoot":"","sources":["../../src/RealityDataSource.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 Tiles\r\n */\r\nimport { BentleyError, GuidString, Logger, LoggingMetaData, RealityDataStatus } from \"@itwin/core-bentley\";\r\nimport { Cartographic, EcefLocation, OrbitGtBlobProps, RealityData, RealityDataFormat, RealityDataProvider, RealityDataSourceKey } from \"@itwin/core-common\";\r\nimport { FrontendLoggerCategory } from \"./common/FrontendLoggerCategory\";\r\nimport { CesiumIonAssetProvider, ContextShareProvider, getCesiumAssetUrl } from \"./tile/internal\";\r\nimport { RealityDataSourceTilesetUrlImpl } from \"./RealityDataSourceTilesetUrlImpl\";\r\nimport { RealityDataSourceContextShareImpl } from \"./RealityDataSourceContextShareImpl\";\r\nimport { RealityDataSourceCesiumIonAssetImpl } from \"./RealityDataSourceCesiumIonAssetImpl\";\r\nimport { IModelApp } from \"./IModelApp\";\r\nimport { Range3d } from \"@itwin/core-geometry\";\r\n\r\nconst loggerCategory: string = FrontendLoggerCategory.RealityData;\r\n\r\n/**\r\n * Reality Data Operation error\r\n * @alpha\r\n */\r\nexport class RealityDataError extends BentleyError {\r\n public constructor(errorNumber: RealityDataStatus, message: string, getMetaData?: LoggingMetaData) {\r\n super(errorNumber, message, getMetaData);\r\n }\r\n}\r\n\r\n/** This interface provide spatial location and volume of interest, in meters, centered around `spatial location`\r\n * @alpha\r\n */\r\nexport interface SpatialLocationAndExtents {\r\n /** location of the point at the center of the reaity data */\r\n location: Cartographic | EcefLocation;\r\n /** extents of the volume around location */\r\n worldRange: Range3d;\r\n /** true if this reality data is geolocated\r\n * A reality data is geolocated when we can compute a valid position relative to the earth surface.\r\n * Note that some reality data contains custom coordinate system without any information on the relative position on earth.\r\n * These reality data will have a location and worldRange but will be identified by the isGeoLocated set to false.\r\n */\r\n isGeolocated: boolean;\r\n}\r\n\r\n/** This interface provides information to identify the product and engine that create this reality data\r\n * @alpha\r\n */\r\nexport interface PublisherProductInfo {\r\n /** product that create this reality data */\r\n product: string;\r\n /** engine that create this reality data */\r\n engine: string;\r\n /** the version of the engine that create this reality data */\r\n version: string;\r\n}\r\n\r\n/** This interface provide methods used to access a reality data from a reality data provider\r\n * @beta\r\n */\r\nexport interface RealityDataSource {\r\n readonly key: RealityDataSourceKey;\r\n readonly isContextShare: boolean;\r\n readonly realityDataId: string | undefined;\r\n /** Metatdata on the reality data source */\r\n readonly realityData: RealityData | undefined;\r\n /** The reality data type (e.g.: \"RealityMesh3DTiles\", OPC, Terrain3DTiles, Cesium3DTiles, ... )*/\r\n readonly realityDataType: string | undefined;\r\n /** This method returns the URL to obtain the Reality Data properties.\r\n * @param iTwinId id of associated iTwin project\r\n * @returns string containing the URL to reality data.\r\n */\r\n getServiceUrl(iTwinId: GuidString | undefined): Promise<string | undefined>;\r\n /** If true, the geometricError property of the tiles will be used to compute screen-space error.\r\n * @alpha\r\n */\r\n readonly usesGeometricError?: boolean;\r\n /** If [[usesGeometricError]] is `true`, optionally specifies the maximum error, in pixels, to permit for a tile before requiring refinement of that tile.\r\n * Default: 16\r\n * @alpha\r\n */\r\n readonly maximumScreenSpaceError?: number;\r\n /** Given the URL of a tile's content, return the type of that content.\r\n * \"tileset\" indicates the content points to a JSON tileset describing the structure of the tile tree below the tile.\r\n * \"tile\" indicates the content points to a binary representation of the tile's graphics.\r\n * @alpha\r\n */\r\n getTileContentType(url: string): \"tile\" | \"tileset\";\r\n\r\n /** Gets a reality data root document json\r\n * @returns tile data json\r\n * @internal\r\n */\r\n getRootDocument(iTwinId: GuidString | undefined): Promise<any>;\r\n /** Gets tile content\r\n * @param name name or path of tile\r\n * @returns array buffer of tile content\r\n * @internal\r\n */\r\n getTileContent(name: string): Promise<any>;\r\n /** Gets a tileset's app data json\r\n * @param name name or path of tile\r\n * @returns app data json object\r\n * @internal\r\n */\r\n getTileJson(name: string): Promise<any>;\r\n /** Gets spatial location and extents of this reality data source.\r\n * Will return undefined if cannot be resolved or is unbounded (cover entire earth eg: Open Street Map Building from Ion Asset)\r\n * @returns spatial location and extents\r\n * @throws [[RealityDataError]] if source is invalid or cannot be read\r\n * @alpha\r\n */\r\n getSpatialLocationAndExtents(): Promise<SpatialLocationAndExtents | undefined>;\r\n /** Gets information to identify the product and engine that create this reality data\r\n * Will return undefined if cannot be resolved\r\n * @returns information to identify the product and engine that create this reality data\r\n * @alpha\r\n */\r\n getPublisherProductInfo(): Promise<PublisherProductInfo | undefined>;\r\n}\r\n/** Utility functions for RealityDataSource\r\n * @beta\r\n */\r\nexport namespace RealityDataSource {\r\n /** Create a RealityDataSourceKey from a tilesetUrl.\r\n * @param tilesetUrl the reality data attachment url\r\n * @param inputProvider identify the RealityDataProvider if known, otherwise function will try to extract it from the tilesetUrl\r\n * @param inputFormat identify the RealityDataFormat if known, otherwise function will try to extract it from the tilesetUrl\r\n * @returns the RealityDataSourceKey that uniquely identify a reality data for a provider\r\n */\r\n export function createKeyFromUrl(tilesetUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n let format = inputFormat ? inputFormat : RealityDataFormat.fromUrl(tilesetUrl);\r\n if (CesiumIonAssetProvider.isProviderUrl(tilesetUrl)) {\r\n const provider = RealityDataProvider.CesiumIonAsset;\r\n let cesiumIonAssetKey: RealityDataSourceKey = { provider, format, id: CesiumIonAssetProvider.osmBuildingId }; // default OSM building\r\n // Parse URL to extract possible asset id and key if provided\r\n const cesiumAsset = CesiumIonAssetProvider.parseCesiumUrl(tilesetUrl);\r\n if (cesiumAsset) {\r\n cesiumIonAssetKey = RealityDataSource.createCesiumIonAssetKey(cesiumAsset.id, cesiumAsset.key);\r\n }\r\n return cesiumIonAssetKey;\r\n }\r\n\r\n // Try to extract realityDataId from URL and if not possible, use the url as the key\r\n if (ContextShareProvider.isProviderUrl(tilesetUrl)) {\r\n const info = ContextShareProvider.getInfoFromUrl(tilesetUrl);\r\n const provider = inputProvider ? inputProvider : info.provider;\r\n format = inputFormat ? inputFormat : info.format;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: info.id, iTwinId: info.iTwinId };\r\n return contextShareKey;\r\n }\r\n\r\n // default to tileSetUrl\r\n const provider2 = inputProvider ? inputProvider : RealityDataProvider.TilesetUrl;\r\n const urlKey: RealityDataSourceKey = { provider: provider2, format, id: tilesetUrl };\r\n return urlKey;\r\n }\r\n /** @alpha - was used for a very specific case of point cloud (opc) attachment that should not be made public */\r\n export function createKeyFromBlobUrl(blobUrl: string, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const info = ContextShareProvider.getInfoFromBlobUrl(blobUrl);\r\n const format = inputFormat ? inputFormat : info.format;\r\n const provider = inputProvider ? inputProvider : info.provider;\r\n const contextShareKey: RealityDataSourceKey = { provider, format, id: info.id };\r\n return contextShareKey;\r\n }\r\n /** @alpha - OrbitGtBlobProps is alpha */\r\n export function createKeyFromOrbitGtBlobProps(orbitGtBlob: OrbitGtBlobProps, inputProvider?: RealityDataProvider, inputFormat?: RealityDataFormat): RealityDataSourceKey {\r\n const format = inputFormat ? inputFormat : RealityDataFormat.OPC;\r\n if (orbitGtBlob.blobFileName && orbitGtBlob.blobFileName.toLowerCase().startsWith(\"http\")) {\r\n return RealityDataSource.createKeyFromBlobUrl(orbitGtBlob.blobFileName, inputProvider, format);\r\n } else if (orbitGtBlob.rdsUrl) {\r\n return RealityDataSource.createKeyFromUrl(orbitGtBlob.rdsUrl, inputProvider, format);\r\n }\r\n const provider = inputProvider ? inputProvider : RealityDataProvider.OrbitGtBlob;\r\n const id = `${orbitGtBlob.accountName}:${orbitGtBlob.containerName}:${orbitGtBlob.blobFileName}:?${orbitGtBlob.sasToken}`;\r\n return { provider, format, id };\r\n }\r\n /** @alpha - OrbitGtBlobProps is alpha */\r\n export function createOrbitGtBlobPropsFromKey(rdSourceKey: RealityDataSourceKey): OrbitGtBlobProps | undefined {\r\n if (rdSourceKey.provider !== RealityDataProvider.OrbitGtBlob)\r\n return undefined;\r\n const splitIds = rdSourceKey.id.split(\":\");\r\n const sasTokenIndex = rdSourceKey.id.indexOf(\":?\");\r\n const sasToken = rdSourceKey.id.substring(sasTokenIndex + 2);\r\n const orbitGtBlob: OrbitGtBlobProps = {\r\n accountName: splitIds[0],\r\n containerName: splitIds[1],\r\n blobFileName: splitIds[2],\r\n sasToken,\r\n };\r\n return orbitGtBlob;\r\n }\r\n /** @internal - Is used by \"fdt attach cesium asset\" keyin*/\r\n export function createCesiumIonAssetKey(osmAssetId: number, requestKey: string): RealityDataSourceKey {\r\n const id = getCesiumAssetUrl(osmAssetId,requestKey);\r\n return {provider: RealityDataProvider.CesiumIonAsset, format: RealityDataFormat.ThreeDTile, id};\r\n }\r\n /** Return an instance of a RealityDataSource from a source key.\r\n * There will aways be only one reality data RealityDataSource for a corresponding reality data source key.\r\n * @alpha\r\n */\r\n export async function fromKey(key: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined> {\r\n const provider = IModelApp.realityDataSourceProviders.find(key.provider);\r\n if (!provider) {\r\n Logger.logWarning(loggerCategory, `RealityDataSourceProvider \"${key.provider}\" is not registered`);\r\n return undefined;\r\n }\r\n\r\n return provider.createRealityDataSource(key, iTwinId);\r\n }\r\n}\r\n\r\n/** A named supplier of [RealityDataSource]]s.\r\n * The provider's name is stored in a [RealityDataSourceKey]($common). When the [[RealityDataSource]] is requested from the key,\r\n * the provider is looked up in [[IModelApp.realityDataSourceProviders]] by its name and, if found, its [[createRealityDataSource]] method\r\n * is invoked to produce the reality data source.\r\n * @alpha\r\n */\r\nexport interface RealityDataSourceProvider {\r\n /** Produce a RealityDataSource for the specified `key`.\r\n * @param key Identifies the reality data source.\r\n * @param iTwinId A default iTwinId to use.\r\n * @returns the requested reality data source, or `undefined` if it could not be produced.\r\n */\r\n createRealityDataSource(key: RealityDataSourceKey, iTwinId: GuidString | undefined): Promise<RealityDataSource | undefined>;\r\n}\r\n\r\n/** A registry of [[RealityDataSourceProvider]]s identified by their unique names. The registry can be accessed via [[IModelApp.realityDataSourceProviders]].\r\n * It includes a handful of built-in providers for sources like Cesium ION, ContextShare, OrbitGT, and arbitrary public-accessible URLs.\r\n * Any number of additional providers can be registered. They should typically be registered just after [[IModelAp.startup]].\r\n * @alpha\r\n */\r\nexport class RealityDataSourceProviderRegistry {\r\n private readonly _providers = new Map<string, RealityDataSourceProvider>();\r\n\r\n /** @internal */\r\n public constructor() {\r\n this.register(RealityDataProvider.CesiumIonAsset, {\r\n createRealityDataSource: async (key, iTwinId) => RealityDataSourceCesiumIonAssetImpl.createFromKey(key, iTwinId),\r\n });\r\n this.register(RealityDataProvider.TilesetUrl, {\r\n createRealityDataSource: async (key, iTwinId) => RealityDataSourceTilesetUrlImpl.createFromKey(key, iTwinId),\r\n });\r\n this.register(RealityDataProvider.ContextShare, {\r\n createRealityDataSource: async (key, iTwinId) => RealityDataSourceContextShareImpl.createFromKey(key, iTwinId),\r\n });\r\n this.register(RealityDataProvider.OrbitGtBlob, {\r\n // ###TODO separate TilesetUrlImpl\r\n createRealityDataSource: async (key, iTwinId) => RealityDataSourceTilesetUrlImpl.createFromKey(key, iTwinId),\r\n });\r\n }\r\n\r\n /** Register `provider` to produce [[RealityDataSource]]s for the specified provider `name`. */\r\n public register(name: string, provider: RealityDataSourceProvider): void {\r\n this._providers.set(name, provider);\r\n }\r\n\r\n /** Look up the provider registered by the specified `name`. */\r\n public find(name: string): RealityDataSourceProvider | undefined {\r\n return this._providers.get(name);\r\n }\r\n}\r\n"]}
|
|
@@ -11,7 +11,7 @@ exports.RealityDataSourceContextShareImpl = void 0;
|
|
|
11
11
|
const Request_1 = require("./request/Request");
|
|
12
12
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
13
13
|
const core_common_1 = require("@itwin/core-common");
|
|
14
|
-
const FrontendLoggerCategory_1 = require("./FrontendLoggerCategory");
|
|
14
|
+
const FrontendLoggerCategory_1 = require("./common/FrontendLoggerCategory");
|
|
15
15
|
const IModelApp_1 = require("./IModelApp");
|
|
16
16
|
const internal_1 = require("./tile/internal");
|
|
17
17
|
/** This class provides access to the reality data provider services.
|