@arcgis/core 6.0.0-next.26 → 6.0.0-next.28
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/Map.d.ts +6 -0
- package/analysis/AreaMeasurementAnalysis.d.ts +4 -2
- package/analysis/DirectLineMeasurementAnalysis.d.ts +8 -4
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/0363d29fc665d169ebc4.js +1 -0
- package/assets/esri/core/workers/chunks/037c67ef5c4398d5954d.js +1 -0
- package/assets/esri/core/workers/chunks/03f33cb78b5405ab7e23.js +1 -0
- package/assets/esri/core/workers/chunks/07b726a46864501b90a0.js +1 -0
- package/assets/esri/core/workers/chunks/0864da8f8f147016cf1c.js +1 -0
- package/assets/esri/core/workers/chunks/{768389f7f8dba6080df7.js → 0cc7fba402a93e6d2455.js} +2 -2
- package/assets/esri/core/workers/chunks/0cfdeb53fb7d5532cf01.js +1 -0
- package/assets/esri/core/workers/chunks/112ed86f812e4400a7e0.js +1 -0
- package/assets/esri/core/workers/chunks/177f353ce72133e2eeed.js +1 -0
- package/assets/esri/core/workers/chunks/1dc6f093028530a492e6.js +1 -0
- package/assets/esri/core/workers/chunks/2294254af2c6afb560ee.js +1 -0
- package/assets/esri/core/workers/chunks/23a4806b4cdf7cc32e4d.js +1 -0
- package/assets/esri/core/workers/chunks/2447d2e2a4a3ab8fcf94.js +1 -0
- package/assets/esri/core/workers/chunks/271ae7deccb94112c2df.js +1 -0
- package/assets/esri/core/workers/chunks/2df37a9a95ceebb87a5f.js +1 -0
- package/assets/esri/core/workers/chunks/2e00c155e447e4930442.js +1 -0
- package/assets/esri/core/workers/chunks/2e9a1673b1d51aa082b6.js +1 -0
- package/assets/esri/core/workers/chunks/344f5334ad95c7974349.js +1 -0
- package/assets/esri/core/workers/chunks/348f1def9cd2ddf92e87.js +1 -0
- package/assets/esri/core/workers/chunks/{8e4206068c6953bb7df2.js → 3a47fc97c400fca2c736.js} +1 -1
- package/assets/esri/core/workers/chunks/47c97640ec525676918b.js +1 -0
- package/assets/esri/core/workers/chunks/50763ea061d5fb3f2e49.js +1 -0
- package/assets/esri/core/workers/chunks/518ab22f80c3300bcfff.js +1 -0
- package/assets/esri/core/workers/chunks/58609bf94f72bc4f1952.js +1 -0
- package/assets/esri/core/workers/chunks/586a929bc037e23857af.js +1 -0
- package/assets/esri/core/workers/chunks/58d10e0b35968680fd9f.js +1 -0
- package/assets/esri/core/workers/chunks/59bc55880e6fd8ce20c0.js +1 -0
- package/assets/esri/core/workers/chunks/{7c75a8ee266c36baa902.js → 5eec1c1162779574f46e.js} +1 -1
- package/assets/esri/core/workers/chunks/62a0abcf45a2bd14ecbe.js +1 -0
- package/assets/esri/core/workers/chunks/63c4412c16d8a44a5668.js +1 -0
- package/assets/esri/core/workers/chunks/6b4c3411f63a9ad9354c.js +1 -0
- package/assets/esri/core/workers/chunks/{f528ac5c648ca6a98582.js → 711cfb84659cb4437679.js} +1 -1
- package/assets/esri/core/workers/chunks/{9dd1fc56eb1ea6eb705e.js → 76e27e36050a3dd9d249.js} +1 -1
- package/assets/esri/core/workers/chunks/76f877e2d2493d56afab.js +1 -0
- package/assets/esri/core/workers/chunks/77463141652bf1ca6fb2.js +1 -0
- package/assets/esri/core/workers/chunks/7d3f7940815fa5dc244e.js +1 -0
- package/assets/esri/core/workers/chunks/914a0b5d9fef683cdf9c.js +1 -0
- package/assets/esri/core/workers/chunks/96f87c8efd4b11b37686.js +1 -0
- package/assets/esri/core/workers/chunks/97ec46605f16333144b7.js +1 -0
- package/assets/esri/core/workers/chunks/{7b482afb9fd1229f5707.js → 9934e8e19f94e9169eea.js} +1 -1
- package/assets/esri/core/workers/chunks/99f51d5d9da6e9bfc430.js +1 -0
- package/assets/esri/core/workers/chunks/9aebe876b1a2fb075f9c.js +1 -0
- package/assets/esri/core/workers/chunks/9c3db7a7c05fa0e81f0a.js +1 -0
- package/assets/esri/core/workers/chunks/{6f1d6453184e0a1530ad.js → 9c4961213ac6ec283dd9.js} +25 -25
- package/assets/esri/core/workers/chunks/a2cc53ad1a514167e4b8.js +1 -0
- package/assets/esri/core/workers/chunks/a33ba23aee3f8f40200f.js +1 -0
- package/assets/esri/core/workers/chunks/{45ba4aa87a4732198596.js → b13d8f4e4e80ef00b1bd.js} +1 -1
- package/assets/esri/core/workers/chunks/b3801d58c024224917df.js +1 -0
- package/assets/esri/core/workers/chunks/b3aa29589dcfb5b93106.js +1 -0
- package/assets/esri/core/workers/chunks/b3dbcf43f136ba2dadc5.js +1 -0
- package/assets/esri/core/workers/chunks/b9596d862da1ec342cd3.js +1 -0
- package/assets/esri/core/workers/chunks/bc1fcc9c897461e68e29.js +1 -0
- package/assets/esri/core/workers/chunks/{8b4e9fd88c0c313416d4.js → be04f40f8b403befd0ef.js} +1 -1
- package/assets/esri/core/workers/chunks/{150e7a7bd5df25693da7.js → c90388932a7825d9d933.js} +1 -1
- package/assets/esri/core/workers/chunks/ca21786e519c914fc9e1.js +1 -0
- package/assets/esri/core/workers/chunks/cdb5c26fed7d9a97db49.js +1 -0
- package/assets/esri/core/workers/chunks/cdf0c7706d3e1221f49b.js +1 -0
- package/assets/esri/core/workers/chunks/d63e181f0e48bde73395.js +1 -0
- package/assets/esri/core/workers/chunks/d77888c84a8b49478807.js +1 -0
- package/assets/esri/core/workers/chunks/d7f2f1708d2a2668676c.js +1 -0
- package/assets/esri/core/workers/chunks/{13c64087be3b2985a21b.js → dbda982485d3fe26c729.js} +1 -1
- package/assets/esri/core/workers/chunks/dc7aa0a1eb6c6e361f9f.js +1 -0
- package/assets/esri/core/workers/chunks/ec1c4d66142b6efb0e8b.js +1 -0
- package/assets/esri/core/workers/chunks/ef2c3febcceedc44b3ac.js +1 -0
- package/assets/esri/core/workers/chunks/f08a2a262a3b55149396.js +1 -0
- package/assets/esri/core/workers/chunks/f2d56f5c15d5977e1d19.js +1 -0
- package/assets/esri/core/workers/chunks/ffe2077a9df7c838ea27.js +1 -0
- package/assets/esri/layers/raster/formats/lerc-wasm.wasm +0 -0
- package/chunks/BlendLayers.glsl.js +1 -1
- package/chunks/Component.glsl.js +9 -12
- package/chunks/GaussianSplat.glsl.js +65 -21
- package/chunks/GaussianSplatDepth.glsl.js +45 -4
- package/chunks/GaussianSplatShadow.glsl.js +73 -19
- package/chunks/GlobalIllumination.glsl.js +17 -47
- package/chunks/LineMarker.glsl.js +32 -31
- package/chunks/OITAddEmission.glsl.js +1 -1
- package/chunks/RasterColorizer.glsl.js +1 -1
- package/chunks/RibbonLine.glsl.js +36 -36
- package/chunks/Terrain.glsl.js +3 -4
- package/chunks/Water.glsl.js +22 -23
- package/config.js +1 -1
- package/core/ReentrantObjectPool.js +1 -1
- package/core/memoryEstimations.js +1 -1
- package/core/workers/workers.js +2 -2
- package/core/workers.d.ts +1 -1
- package/form/elements/inputs/DynamicChoiceInput.d.ts +2 -2
- package/form/elements/inputs.d.ts +126 -25
- package/form/elements/inputs.js +1 -1
- package/form/elements.d.ts +1 -0
- package/geometry/operators/containsOperator.d.ts +1 -1
- package/geometry/operators/densifyOperator.d.ts +1 -1
- package/geometry/operators/differenceOperator.d.ts +6 -4
- package/geometry/operators/distanceOperator.d.ts +1 -1
- package/geometry/operators/geodesicProximityOperator.d.ts +8 -8
- package/geometry/operators/graphicBufferOperator.d.ts +6 -6
- package/geometry/operators/integrateOperator.d.ts +2 -2
- package/geometry/operators/intersectsOperator.d.ts +3 -3
- package/geometry/operators/linesToPolygonsOperator.d.ts +2 -2
- package/geometry/operators/locateBetweenOperator.d.ts +2 -2
- package/geometry/operators/minimumBoundingCircleOperator.d.ts +1 -1
- package/geometry/operators/multiPartToSinglePartOperator.d.ts +2 -2
- package/geometry/operators/polygonSlicerOperator.d.ts +2 -2
- package/geometry/operators/projectOperator.d.ts +2 -2
- package/geometry/operators/proximityOperator.d.ts +15 -15
- package/geometry/operators/shapePreservingProjectOperator.d.ts +2 -2
- package/geometry/operators/simplifyOperator.d.ts +2 -2
- package/geometry/operators/support/GeographicTransformationStep.d.ts +3 -3
- package/geometry/operators/support/Transformation.d.ts +8 -8
- package/geometry/operators/support/geographicTransformationUtils.d.ts +3 -3
- package/geometry/operators/symmetricDifferenceOperator.d.ts +2 -2
- package/geometry/operators/withinOperator.d.ts +3 -3
- package/geometry/support/Indices.js +1 -1
- package/graphic/MapNotesGraphicOrigin.d.ts +1 -0
- package/kernel.js +1 -1
- package/layers/GeospatialPDFLayer.d.ts +2 -2
- package/layers/GeospatialPDFLayer.js +1 -1
- package/layers/MapNotesLayer.d.ts +3 -2
- package/layers/ParquetLayer.d.ts +1 -1
- package/layers/VectorTileLayer.d.ts +10 -1
- package/layers/buildingSublayers/BuildingGroupSublayer.d.ts +2 -1
- package/layers/geospatialPDF/CIM2DLayerview.js +2 -0
- package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
- package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
- package/layers/mixins/SublayersOwner.js +1 -1
- package/layers/orientedImagery/transformations/imageToWorld.js +1 -1
- package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
- package/layers/support/Sublayer.d.ts +2 -2
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/layers/support/layerUtils.js +1 -1
- package/package.json +3 -3
- package/popup/FeaturesModel.js +1 -1
- package/popup/support/featureUtils.js +1 -1
- package/rest/featureService/FeatureService.d.ts +0 -5
- package/rest/networks/support/TraceLocation.d.ts +2 -1
- package/rest/networks/support/TraceResult.d.ts +0 -4
- package/rest/support/AttributeBinsQuery.d.ts +3 -2
- package/rest/support/ImageGPSInfoParameters.d.ts +2 -1
- package/rest/support/OutDistance.d.ts +2 -2
- package/rest/support/Query.d.ts +3 -2
- package/rest/support/TopFeaturesQuery.d.ts +2 -1
- package/rest/support/types.d.ts +10 -1
- package/smartMapping/raster/renderers/flow.d.ts +2 -1
- package/smartMapping/renderers/color.d.ts +11 -8
- package/smartMapping/renderers/location.d.ts +7 -4
- package/smartMapping/renderers/predominance.d.ts +7 -4
- package/smartMapping/renderers/relationship.d.ts +7 -4
- package/smartMapping/renderers/size.d.ts +6 -4
- package/smartMapping/renderers/type.d.ts +7 -4
- package/smartMapping/renderers/types.d.ts +15 -0
- package/smartMapping/renderers/univariateColorSize.d.ts +4 -2
- package/smartMapping/statistics/histogramForTimeSeries.js +1 -1
- package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +1 -1
- package/smartMapping/symbology/flow.d.ts +2 -1
- package/smartMapping/symbology/types.d.ts +2 -1
- package/support/BasemapStyle.d.ts +2 -2
- package/symbols/cim/CIMCursor.js +1 -1
- package/symbols/cim/types.d.ts +7 -9
- package/tables/elements.d.ts +1 -0
- package/views/2d/engine/vectorTiles/TileHandler3D.js +1 -1
- package/views/2d/engine/webgl/animations/instructions.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerMeshWriter.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriterVertexPack.js +1 -1
- package/views/2d/engine/webgl/textureUtils.js +1 -1
- package/views/2d/layers/GeospatialPDFLayerView2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementPathHelper.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementController.js +1 -1
- package/views/3d/analysis/support/projectionUtils.js +1 -1
- package/views/3d/environment/SunLighting.d.ts +15 -2
- package/views/3d/environment/VirtualLighting.d.ts +15 -2
- package/views/3d/input/SceneInputManager.js +1 -1
- package/views/3d/input/handlers/ground/GroundMouseWheelMove.js +2 -0
- package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
- package/views/3d/layers/GeospatialPDFLayerView3D.js +1 -1
- package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DBufferGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DDrapedGraphicLayerBase.js +1 -1
- package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DFeatureStore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
- package/views/3d/layers/graphics/Graphics3DGraphicCreationContext.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DStageObjectGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
- package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
- package/views/3d/layers/support/featureReference.js +1 -1
- package/views/3d/navigation/Navigation3D.js +1 -1
- package/views/3d/state/controllers/GroundMouseWheelController.js +2 -0
- package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
- package/views/3d/state/utils/groundNavigationUtils.js +1 -1
- package/views/3d/terrain/BlendLayers.glsl.js +1 -1
- package/views/3d/terrain/PatchRenderData.js +1 -1
- package/views/3d/terrain/RasterColorizer.glsl.js +1 -1
- package/views/3d/terrain/TerrainData.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TextureFader.js +1 -1
- package/views/3d/terrain/TextureReference.js +1 -1
- package/views/3d/terrain/TileCompositor.js +1 -1
- package/views/3d/terrain/TileRenderInfo.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/terrain/terrainUtils.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTangent.glsl.js +7 -8
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +25 -25
- package/views/3d/webgl-engine/core/shaderLibrary/shading/NormalUtils.glsl.js +3 -5
- package/views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js +6 -0
- package/views/3d/webgl-engine/core/shaderLibrary/shading/getLocalUp.glsl.js +4 -0
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/{TileBackground.glsl.js → blendLayers.glsl.js} +10 -11
- package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatEvaluation.glsl.js +8 -2
- package/views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/BoundingInfo.js +1 -1
- package/views/3d/webgl-engine/lib/BufferGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/BufferObject3D.js +1 -1
- package/views/3d/webgl-engine/lib/DirtyEvents.js +1 -1
- package/views/3d/webgl-engine/lib/Geometry.js +1 -1
- package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
- package/views/3d/webgl-engine/lib/ModelDirtySet.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/PathGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextureBackedBuffer/TextureBuffer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/geometryMemoryUtils.js +2 -0
- package/views/3d/webgl-engine/materials/Water.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplat.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatDepth.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/GaussianSplatPass.glsl.js +61 -108
- package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Terrain.glsl.js +1 -1
- package/views/VideoView.js +1 -1
- package/views/draw/DrawOperation.js +1 -1
- package/views/draw/DrawScreenTool.js +1 -1
- package/views/input/types.d.ts +2 -4
- package/views/interactive/options/LabelOptions.d.ts +5 -5
- package/views/interactive/options/SnappingOptions.d.ts +2 -2
- package/views/selection/SelectionOperation.js +1 -1
- package/views/selection/types.d.ts +43 -3
- package/views/support/layerViewUtils.js +1 -1
- package/views/support/selectionUtils.js +1 -1
- package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +0 -1
- package/widgets/Editor/VisibleElements.d.ts +4 -0
- package/widgets/Editor.d.ts +2 -0
- package/widgets/FeatureTable.js +1 -1
- package/widgets/Features/FeaturesViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/services/SuperimposeService.js +1 -1
- package/widgets/OrientedImageryViewer/support/NonPanoramicMedia.js +1 -1
- package/widgets/OrientedImageryViewer/support/dataCaptureUtils.js +1 -1
- package/widgets/OrientedImageryViewer.js +2 -2
- package/widgets/PanoramicViewer/utils.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/Search/LayerSearchSource.d.ts +1 -1
- package/widgets/Sketch/VisibleElements.d.ts +4 -0
- package/widgets/Sketch.d.ts +2 -0
- package/widgets/support/SelectionList/GroupLayerItem.d.ts +6 -0
- package/widgets/support/SelectionList/GroupLayerItem.js +1 -1
- package/widgets/support/SelectionList/ItemBase.js +1 -1
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.d.ts +6 -1
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.js +1 -1
- package/widgets/support/SelectionToolbar.d.ts +8 -1
- package/widgets/support/SelectionToolbar.js +1 -1
- package/widgets/support/Selector2D/selectorUtils.js +1 -1
- package/assets/esri/core/workers/chunks/0320cbd825f9a4222042.js +0 -1
- package/assets/esri/core/workers/chunks/067de1910190da228291.js +0 -1
- package/assets/esri/core/workers/chunks/09bd5df07eab80ae7b15.js +0 -1
- package/assets/esri/core/workers/chunks/164e74d586297946a717.js +0 -1
- package/assets/esri/core/workers/chunks/1c0c5cb13c2590aae906.js +0 -1
- package/assets/esri/core/workers/chunks/1c77de1e79860f8d2228.js +0 -1
- package/assets/esri/core/workers/chunks/24dac4970526a4e0ae63.js +0 -1
- package/assets/esri/core/workers/chunks/2acf2952cef69e382a35.js +0 -1
- package/assets/esri/core/workers/chunks/30dcf2cfb31cb70de7df.js +0 -1
- package/assets/esri/core/workers/chunks/371e2ddb88cc6b9a41e8.js +0 -1
- package/assets/esri/core/workers/chunks/42f6194633c2d879c8da.js +0 -1
- package/assets/esri/core/workers/chunks/44f90e75c1dc3d726a95.js +0 -1
- package/assets/esri/core/workers/chunks/4abd3753cd9b80e4d937.js +0 -1
- package/assets/esri/core/workers/chunks/4bb9a5f4ca944d3fc206.js +0 -1
- package/assets/esri/core/workers/chunks/4c389472b8cdb0c55154.js +0 -1
- package/assets/esri/core/workers/chunks/4d93bed14945e3d34d5c.js +0 -1
- package/assets/esri/core/workers/chunks/4e3f651ac76fcd53df2b.js +0 -1
- package/assets/esri/core/workers/chunks/505227797bcf2a1d908d.js +0 -1
- package/assets/esri/core/workers/chunks/58da3f8cf0f7f6a7e4fa.js +0 -1
- package/assets/esri/core/workers/chunks/5a19a9c3e01d3d415188.js +0 -1
- package/assets/esri/core/workers/chunks/5a830bc35adbedd33783.js +0 -1
- package/assets/esri/core/workers/chunks/6db0f8fe1402643fbe1a.js +0 -1
- package/assets/esri/core/workers/chunks/7124ad8dc5ad40dc66f3.js +0 -1
- package/assets/esri/core/workers/chunks/7446d0dfebf93e86c098.js +0 -1
- package/assets/esri/core/workers/chunks/7c631e2947243e2c9bde.js +0 -1
- package/assets/esri/core/workers/chunks/7f0f9dddc44b1f1600f0.js +0 -1
- package/assets/esri/core/workers/chunks/7fb7493f483cd9878bfa.js +0 -1
- package/assets/esri/core/workers/chunks/8e310e9cb9d84ac3ca2f.js +0 -1
- package/assets/esri/core/workers/chunks/950d4578dc450467404c.js +0 -1
- package/assets/esri/core/workers/chunks/99a0a434ea2162166754.js +0 -1
- package/assets/esri/core/workers/chunks/9afc87474cef1fc4fe4a.js +0 -1
- package/assets/esri/core/workers/chunks/9cbde13e536676767900.js +0 -1
- package/assets/esri/core/workers/chunks/9cd3fcb5fca6f9dbbcd8.js +0 -1
- package/assets/esri/core/workers/chunks/a025ee38d402504193df.js +0 -1
- package/assets/esri/core/workers/chunks/a4b822ee45810c4c292a.js +0 -1
- package/assets/esri/core/workers/chunks/a51576d84edca88e41dd.js +0 -1
- package/assets/esri/core/workers/chunks/ac24b4370dc7194a3107.js +0 -1
- package/assets/esri/core/workers/chunks/ace41659a5ca0e5abfc3.js +0 -1
- package/assets/esri/core/workers/chunks/b01804aa6c47a220a603.js +0 -1
- package/assets/esri/core/workers/chunks/b3273f847405799e3362.js +0 -1
- package/assets/esri/core/workers/chunks/ba3d5abff65aefcb8dee.js +0 -1
- package/assets/esri/core/workers/chunks/bca6b469940b7b954123.js +0 -1
- package/assets/esri/core/workers/chunks/c0d7ae314ebfad1e3791.js +0 -1
- package/assets/esri/core/workers/chunks/c337fc0e6dc69c233e6d.js +0 -1
- package/assets/esri/core/workers/chunks/c8eae00b0ec87d8b2ff3.js +0 -1
- package/assets/esri/core/workers/chunks/cd9aa950cb74b09008fe.js +0 -1
- package/assets/esri/core/workers/chunks/e0d9dc97985561320bd4.js +0 -1
- package/assets/esri/core/workers/chunks/e2775b4b753306dc8477.js +0 -1
- package/assets/esri/core/workers/chunks/eaddffcc7004101fc230.js +0 -1
- package/assets/esri/core/workers/chunks/ebbf425af348e6ede814.js +0 -1
- package/assets/esri/core/workers/chunks/efc53007cd2e4991d7d4.js +0 -1
- package/assets/esri/core/workers/chunks/f46e92c67986c8c09bdd.js +0 -1
- package/assets/esri/core/workers/chunks/f8bc474434fd365ab174.js +0 -1
- package/assets/esri/core/workers/chunks/f8d2225f333524ce1d88.js +0 -1
- package/assets/esri/core/workers/chunks/f95a1f878c9c1146180e.js +0 -1
- package/assets/esri/core/workers/chunks/fb37f0848196c28b7fd7.js +0 -1
- /package/assets/esri/core/workers/chunks/{768389f7f8dba6080df7.js.LICENSE.txt → 0cc7fba402a93e6d2455.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{equals as n,isSome as r}from"../../core/arrayUtils.js";import{createTask as i}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{deprecatedProperty as o}from"../../core/deprecate.js";import s from"../../core/Error.js";import{EventedMixin as c}from"../../core/Evented.js";import{makeHandle as l}from"../../core/handleUtils.js";import{equalsShallow as u}from"../../core/lang.js";import d from"../../core/Logger.js";import{clamp as f,deg2rad as p}from"../../core/mathUtils.js";import{destroyMaybe as m,abortMaybe as h}from"../../core/maybe.js";import{EsriPromise as g}from"../../core/Promise.js";import{isAbortError as _,throwIfAborted as v,waitTick as y}from"../../core/promiseUtils.js";import b from"../../core/ReactiveMap.js";import{whenOnce as x,on as S,watch as C,syncAndInitial as w,initial as ee,when as te}from"../../core/reactiveUtils.js";import{sqlAnd as T}from"../../core/sql.js";import{getMetersPerUnitForSR as E}from"../../core/units.js";import{property as D,subclass as ne}from"../../core/accessorSupport/decorators.js";import{isSerializable as re}from"../../core/support/jsonUtils.js";import{UpdatingHandles as ie}from"../../core/support/UpdatingHandles.js";import ae from"../../geometry/Extent.js";import O from"../../geometry/Point.js";import{projectAsync as k}from"../../geometry/projectionUtils.js";import oe from"../../geometry/SpatialReference.js";import{polygonCentroidPoint as se}from"../../geometry/support/centroid.js";import{isClockwise as ce}from"../../geometry/support/coordsUtils.js";import{normalizeMapX as le}from"../../geometry/support/normalizeUtils.js";import{geographicToWebMercator as ue}from"../../geometry/support/webMercatorUtils.js";import A from"../../layers/GraphicsLayer.js";import de from"../../layers/MediaLayer.js";import{searchImages as j}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as fe}from"../../layers/orientedImagery/core/bestImageUtils.js";import{computePolygonForInspection as pe,resizePolygon as me,checkIfFrustumContainsSelectedPoint as he,checkIfPolygonContainsSelectedPoint as ge}from"../../layers/orientedImagery/core/coverageUtils.js";import{isElevationSource as _e}from"../../layers/orientedImagery/core/ElevationSourceDefinitions.js";import{convertGeographicToWebMercator as M}from"../../layers/orientedImagery/core/utils.js";import ve from"../../layers/orientedImagery/transformations/updateElevation.js";import{getElevationSampler as ye}from"../../layers/orientedImagery/transformations/updateElevationUtils.js";import{or as be,getInitialAngle as N,convertPixelLocationToSphereVertex as xe,getUpdateElevationProps as P,adjustHorizonAngles as Se,convertOrientationToPixelLocation as Ce,getImageToWorldProperties as F}from"../../layers/orientedImagery/transformations/utils.js";import we from"../../layers/support/ExtentAndRotationGeoreference.js";import{getFloorFilterClause as Te}from"../../layers/support/floorFilterUtils.js";import Ee from"../../layers/support/VideoElement.js";import De from"../../views/MapView.js";import Oe from"../../views/draw/Draw.js";import{scale as ke}from"../../views/draw/support/drawUtils.js";import{ViewEventPriorities as Ae}from"../../views/input/InputManager.js";import je from"../PanoramicVideoViewer.js";import I from"../PanoramicViewer.js";import{defaultAngleThresholdInDegrees as L,videoMapViewConstraint as Me,fixedImageSize as R,clockwiseDirections as Ne,videoFitScaleTolerance as Pe,videoExtent as z,invalidCameraHeading as B,sectorsInOrder as V,sampleExtent as Fe,sectorsRadii as H}from"./constants.js";import{createFeatureCoverage as U}from"./featureCoverage.js";import{isFeatureAttachment as W}from"./galleryUtils.js";import{getPanoramicImageProperties as G}from"./panoramicImageProperties.js";import{crossSymbol as K,crossSymbol3D as Ie,measurementPolygonSymbol as Le,polylineSymbolPanoramic as Re,measurementPolylineSymbol as ze,cameraOverlaySymbol3D as Be,cameraOverlaySymbol as Ve,diamondSymbol as q,diamondSymbol3D as J,activeSourcePointSymbol as He,sourcePointSymbol as Ue}from"./symbols.js";import{registryKeys as Y}from"./types.js";import{isNoAttachmentError as We,extractHorizonAnglesFromMedia as X,isDepthImage as Ge,isTifOrMrf as Ke,filterOILLayerView as qe,assignElevationSampleToFeatures as Je,filterByZ as Ye,createPanoramicMedia as Xe,createNonPanoramicMedia as Ze,isSceneView as Qe,isGraphic as $e,calculateSegment as et,calculateDirection as tt}from"./utils.js";import{disableVideoZoomAndPan as nt,getUpdatedConstraints as rt,getUpdatedExtentPoints as it,normalizeVideoSource as at,isSelectedPointWithinVideoFootprint as ot,isVideoPixelWithinFrame as st}from"./videoViewerUtils.js";import ct from"./components/ImageViewer.js";import lt from"./components/NavigationNode.js";import ut from"./components/OrientedImageryVideoViewModel.js";import{NoFeatureFoundWithObjectIdError as dt}from"./navigation/errors.js";import{queryFeatureByObjectIds as ft}from"./navigation/queries.js";import{ImageMeasurementService as pt}from"./services/ImageMeasurementService.js";import mt from"./services/SuperimposeService.js";import{configureSketchTool as ht,extractFieldsFromDataCaptureLayer as gt,constructGraphicFromImageGeometry as _t}from"./support/dataCaptureUtils.js";import{removeZFromGeometry as vt,imageSpaceToPoint as Z,pointToImageSpace as yt}from"./support/geometryUtils.js";import{restorePanoramicNavigationViewState as bt,restoreDefaultNavigationViewState as xt}from"./support/navigationViewStateUtils.js";import St from"./support/resolveMediaProps.js";import{isValidDataCaptureLayer as Ct}from"./support/typeUtils.js";import wt from"./support/VideoFeatureCache.js";const Q=()=>new s(`orientedimageryviewer:sketch-not-initialized`,`Sketch property is not initialized, call loadSketch first`);let $=class extends c(g){constructor(e){super(e),this.additionalFeatures=new a,this.additionalCameraLocations=new a,this.additionalFootprints=new a,this.areaMeasurementResult=0,this.areaMeasurementAccuracy=0,this.bestFeatureAngle=0,this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null,this.cameraHeadingThreshold=L,this.cameraPitchThreshold=L,this.clickAction=`hittest`,this.correctedLocationPointOnImage=null,this.videoViewModel=null,this.collectionId=null,this.coverageFrustums=new a,this.coveragePolygons=new a,this.currentBestFeature=null,this.currentBestFeatureMeasurementImage=null,this.currentBestFeatureLocation=null,this.currentCoverageVisible=!0,this.depthImage=null,this.featureCache=[],this.videoFeatureIndex=[],this.navigationNodes=new a,this.determineWorkflowForFeature=async(e,t,n)=>{let{currentBestFeature:r,selectedPoint:i}=this;if(this.emit(`popup-close`),r&&i){this.displayMessage=null,this._initialCurrentCoverageUpdate=!0;try{await this._updatePointsAndPolygons(n),await this._loadDepthImage(n),await this._loadCurrentFeatureMedia(r,n)}catch(e){_(e)||(this.loadImageError(e),d.getLogger(this).error(`#loadIImage()`,`error occured while loading image`,e))}}},this.determineWorkflowForTriangularMeasurement=async(e,t,n)=>{if(this.emit(`popup-close`),this.currentBestFeatureMeasurementImage&&this.selectedPoint)try{await this._loadMeasurementViewerImage(n)}catch(e){_(e)||(this.loadImageError(e),d.getLogger(this).error(`#loadIImage()`,`error occured while loading image`,e))}},this.disabled=!1,this.displayMessage={key:`onLoadMessage`,type:`info`},this.displayNewMeasurementButton=!0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.dataCaptureLayer=null,this.features=new a,this.groundCoordinates=null,this.groundCoordinatesAccuracy=null,this.groundCoordinatesAccuracyLoading=!1,this.heightGraphic=null,this.heightMeasurementResult=0,this.heightMeasurementAccuracy=0,this.imageGeometryField=null,this.imageLocationToolState=!1,this.initialVideoMapViewExtent=null,this.imageMeasurementViewer=new ct,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.layer=null,this.localPort=null,this.locationPointOnImage=null,this.mapImageConversionToolState=!1,this.measureType=null,this.measurementGraphic=null,this.navigatorCurrentBestFeature=null,this.oiObjectIdField=null,this.overlayedCameraLocations=new a,this.overlayedMapFeatures=new b,this.pixelCoordinates=null,this.preserveAngle=`none`,this.pointSources=new a,this.preloadMedia=!1,this.preloadMediaSize=5,this.previousFeatureAngle=0,this.selectedPoint=null,this.shouldShowSelectedImage=!1,this.superimposeViewEnabled=!1,this.defaultSuperimposeCameraLockEnabled=!0,this.sketch=null,this.sketchTriangular=null,this.sketchTriangularGraphicsLayer=null,this.draw=null,this.drawAdapter=null,this.polylineDrawAction=null,this.scheduledFrameId=null,this.superimposeScheduledFrameId=null,this.superimposeDebounceTimeoutId=null,this.sketchAdapter=null,this.triangularMeasurementActive=!1,this.triangulatedDistanceMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaMeasurement=null,this.triangulatedAreaAccuracy=0,this.triangulatedMeasurementGraphic=null,this.triangulatedPoint=null,this.triangulatedMeasurementAdapter=null,this.updateFootprint=async(e,t,n)=>{(this.mode!=="default"||this.state===`image-loaded`)&&await this._adapter?.updateFootprint(e,t,n)},this.updateVideoFootprint=async e=>{this.mode.includes(`video`)&&this.videoElement?.content&&await this._adapter?.updateVideoFootprint(e)},this.updateFootprintPanorama=async(e,t)=>{await this._adapter?.updateFootprintPanorama(e,t)},this.updatingTriangularMeasurementState=!1,this.videoElement=null,this.videoLayer=null,this.videoMapView=new De({map:new Map,attributionVisible:!1,constraints:Me}),this.verticalFilterEnabled=!1,this.frustumSearchEnabled=!1,this._adapter=null,this._highlightedFeatureHandle=null,this._imageViewer=new ct,this._initialCurrentCoverageUpdate=!0,this._locationViewModel=null,this._measurementService=null,this._mediaPrefetcher=null,this._navigationManager=null,this._overlays=new A({listMode:`hide`,internal:!0,elevationInfo:{mode:`absolute-height`},title:`OrentedImageryViewerViewModel overlays layer`}),this._superimposePreviousCurrentCoverageVisible=null,this._superimposeService=new mt({getMapPoint:(e,t)=>this.getMapPoint(e,t),getPanoramicTransformationState:()=>{let{imageToWorldProperties:e,mode:t,updateElevationProps:n}=this._transformationService;return t!==`panoramic`||!e?null:{imageToWorldProperties:e,updateElevationProps:n}},pointToPixel:(e,t)=>this._transformationService.pointToPixel(e,t),overlays:this._overlays,getPointAtDistance:(e,t,n)=>this._transformationService.pixelToPointAtDistance(e,t,n)}),this._panoramicVideoViewer=new je,this._panoramicViewer=new I,this._panoramicMeasurementViewer=new I,this._referencePointOnGround=null,this._referencePointOnImage=null,this._referenceTransformationService=null,this._sectorData=null,this._transformationService=null,this._featureToSector=null,this._updatingHandles=new ie,this._clickTask=null,this._crossSymbol=null,this._cameraOverlayTask=null,this.footprintExtent=null,this._featureChangedTask=null,this._mediaPrefetchTask=null,this._navigationViewStateTask=null,this._pendingPanoramicNavigationViewState=null,this._restoreSuperimposeMediaTask=null,this._superimposeScheduleController=null,this._suitabilities=null,this._pendingDefaultNavigationViewState=null,this._transformController=new AbortController,this._updateFootprintTask=null,this._videoFeatureCache=new wt,this.addUpdatingPromise=e=>this._updatingHandles.addPromise(e),this.filterCapturedFeatures=e=>{let t=this.currentBestFeature?.attributes.objectId,n=this.layer?.imageReferenceField;t&&e&&n&&this.overlayedMapFeatures.get(e)?.forEach(e=>{let r=e.attributes??{},i=Object.keys(r).find(e=>e.toLowerCase()===n.toLowerCase());(i?r[i]:null)!==t&&(e.visible=!e.visible)})},this.hideImageGeometry=e=>{},this.highlight=e=>{if(!this._overlaysView)return;this.removeHighlight();let t=this.additionalFootprints.find(({attributes:{imageID:t}})=>t===Number(e));this._highlightedFeatureHandle=t?this._overlaysView?.highlight(t):null},this.loadDataCaptureAdapter=async e=>{await this.loadSketch(e);let{default:t}=await import(`./adapters/sketch/DataCaptureAdapter.js`);return v(e),this.sketchAdapter=new t({viewModel:this}),this.sketchAdapter},this.loadImageFromFeature=(e,t,n)=>this._updatingHandles.addPromise(this._loadImageFromFeature(e,t,n)),this.storeImageMeasurementViewer=e=>{this.imageMeasurementViewer=e},this.storePanoramicMeasurementViewer=e=>{this._panoramicMeasurementViewer=e},this.loadImageViewer=e=>{this._imageViewer?.destroy(),this._imageViewer=e},this.loadPanoramicViewer=e=>{this._panoramicViewer?.destroy(),this._panoramicViewer=e},this.loadPanoramicVideoViewer=e=>{this._panoramicVideoViewer?.destroy(),this._panoramicVideoViewer=e},this.loadVideoViewer=e=>{this.videoMapView.container=e},this.showImageByObjectId=async(e,t)=>{let n=this.additionalFeatures.find(({attributes:t})=>t.objectId===e);if(n&&t?.selectedPoint==null)this.currentBestFeature=n;else{let{layer:n,layerFloorFilterClause:r,layerTimeExtent:i}=this;if(!n){this.setMessage(`noLayerSelected`,`info`);return}this.beforeLoad();let a=this._updatingHandles.addPromise(this._queryAndLoadByObjectId(n,e,r,i,t));try{await a,await this.selectBestFeature(e,t)}catch(t){_(t)||(d.getLogger(this).error(`oriented-imagery-viewer:show-image`,t),t.name===`NoFeatureFoundWithObjectIdError`?this.setMessage(`noFeatureFoundWithObjectId`,`error`,``,{objectId:e}):this.setMessage(`imageLoadError`,`error`,t.message))}}},this.getSectorFeatureById=e=>this._suitabilities?.find(({feature:{attributes:{objectId:t}}})=>t===e),this.getFeatureSectorById=e=>this._featureToSector?.[`${e}`],this.navigate=async(e,t)=>{let{mode:n}=this;if(n!=="default"&&n!==`panoramic`)throw new s(`NavigationError`,`Navigation is only supported in 'default' and 'panoramic' modes.`);if(this._pendingDefaultNavigationViewState=null,this._pendingPanoramicNavigationViewState=null,this._navigationManager==null||!(e=>n==="default"&&e.declaredClass.endsWith(`NavigationManager`)||n===`panoramic`&&e.declaredClass.endsWith(`NavigationManagerPanoramic`))(this._navigationManager)){m(this._navigationManager);let e=n==="default"?import(`./navigation/NavigationManager.js`):import(`./navigation/NavigationManagerPanoramic.js`);this._navigationManager=new(await e).default({viewModel:this})}return this._navigationManager.navigate(e,t)},this.removeHighlight=()=>this._highlightedFeatureHandle?.remove(),this.revealImageGeometry=e=>{},this.selectBestFeature=async(e,t)=>(v(t),this.currentBestFeature=this.features?.find(({attributes:t})=>`${t.objectId}`==`${e}`),x(()=>{switch(this.mode){case`video`:return this.state===`video-loaded`;case`panoramic-video`:return this.panoramicVideoLoaded;default:return this.state===`image-loaded`}},t)),this.toggleImageAttributes=()=>{let{currentBestFeature:e,popupEnabled:n,layer:r,view:i}=this;if(this.emit(`popup-close`),!i||!e||!n||!r)return;let{attributes:a,geometry:o}=e,s=new t({geometry:o,attributes:a.toJSON(),origin:r.graphicOrigin,sourceLayer:r});this.emit(`popup-open`,{features:[s],location:a.location.clone()})},this.updateSuitabilities=(e,t=!0)=>{e.sort((e,t)=>e.suitability-t.suitability),this._suitabilities=e;let n=this._suitabilities.map(({feature:e})=>e);this._initialCurrentCoverageUpdate=!0,this._updateFeatures(n,t),this._groupFeaturesBySectors()},this._computeOverlayImageSize=()=>{let{mode:e}=this;return e===`video`?R:e===`panoramic-video`?this._panoramicVideoViewer.imageSize:this.activeViewer?.imageSize},this._geometryToOverlayImageGeometry=async(e,t,n,r)=>{let{mode:i,videoViewModel:a,_panoramicVideoViewer:o}=this;if(i===`video`)return await a?.geometryToOverlayGeometry(e,t,r)??null;if(i===`panoramic-video`){let a={feature:t,mode:i,imageSize:n,footprintExtent:this.footprintExtent};return await this._transformationService.geometryToImageGeometryForFeature(e,a,o.horizonAngles,r)}return await this._transformationService.geometryToImageGeometry(e,r)},this._createViewClickHandle=()=>{if(this.removeHandles(Y.click),this.disabled||this.view==null)return;let e=this.mapImageConversionToolState&&(this.state===`image-loaded`||this.state===`video-loaded`&&this.mode===`video`&&this.videoViewModel?.videoPaused||this.panoramicVideoLoaded&&this.mode===`panoramic-video`&&this.panoramicVideoPaused)?this._mapImageConversionToolViewClickHandler:this._viewClickHandler;this.addHandles(this.view.on(`click`,e,Ae.DEFAULT),Y.click)},this._createImageClickHandle=()=>{this.removeHandles(Y.imageClick),this.videoViewModel?.syncMapImageConversionHandle();let{mapImageConversionToolState:e,mode:t,footprintExtent:n,panoramicVideoLoaded:r}=this,a=t===`panoramic-video`?this._panoramicVideoViewer:this.activeViewer,o=a?.imageSize;if(!e||t===`none`||t===`video`||!o||!n)return;let s=t===`panoramic-video`,c=this._getActiveFeatureForCurrentMode(),u=!s||r&&this.panoramicVideoPaused;if(!c||!u)return;let d=a.clickAction;this.clickAction=`pixel-location`;let f=l(()=>{this.clickAction=d}),p=null,m=S(()=>a,`pixel-location`,e=>{this.plotReferencePointOnImage(e),p?.abort(),p=i(async r=>{if(!e)return;let i=this._getActiveFeatureForCurrentMode();if(!i)return;let a={feature:i,mode:t,imageSize:o,footprintExtent:n},c=s?await this.getMapPointForFeature(e,a,{signal:r}):await this._transformationService.pixelToMapPoint(e),l=this.view?.spatialReference;c&&!be(!l,c.spatialReference.equals(l))&&(c=await k(c,l,{signal:r})),v(r),this.plotReferencePointOnGround(c)})});this.addHandles([m,f],Y.imageClick)},this._createTriangularImageClickHandle=()=>{this.removeHandles(Y.triangularImageClick),this.triangularMeasurementActive&&this.mode!==`none`&&this.currentBestFeature&&this.currentBestFeatureMeasurementImage&&this.activeTriangulatedViewer&&this.addHandles(this.activeTriangulatedViewer.imageRenderer.on(`double-click`,this._measurementImageClickHandler),Y.triangularImageClick)},this._enablePan=()=>{this.removeHandles(Y.videoPanHandles)},this._disablePan=()=>{this.removeHandles(Y.videoPanHandles),this.addHandles(nt(this.videoMapView),Y.videoPanHandles)},this._handleImageHitTestResponse=async e=>{let{layer:t,overlayedCameraLocations:n}=this;if(!t)return;let r=e.results.find(({graphic:e,graphic:{attributes:r}})=>n.includes(e)&&r&&!r[t.imageReferenceField]&&!r[t.imageGeometryField]);if(!r)return;let i=r.graphic.attributes[t.objectIdField];await this.showImageByObjectId(i)},this._loadCurrentFeatureMedia=async(e,t)=>{this.mode===`video`?await this._loadFlatVideo(e,t):this.mode===`panoramic-video`?await this._loadVideo(t):await this._loadImage(t)},this._loadFlatVideo=async(e,t)=>{this._initializeVideo(),this.videoViewModel?.playVideoFromSelectedLocation(e);let n=e.attributes.objectId;this._waitForFlatVideoAndPlotSelectedLocation(e,n,t)},this._waitForFlatVideoAndPlotSelectedLocation=async(e,t,n)=>{try{if(await x(()=>this.videoElement?.loaded===!0,n),`${this.currentBestFeature?.attributes.objectId}`!=`${t}`)return;await this.transformAndPlotSelectedLocation(n)}catch(t){_(t)||d.getLogger(this).error(`failed to plot selected point on video`,{error:t,selectedPoint:this.selectedPoint,feature:e})}},this._loadDepthImage=async e=>{let{currentBestFeature:t,layer:n,depthImageNotSupported:r}=this;if(this.depthImage?.destroy(),this.depthImage=null,!n||!t||r)return;let{depthImage:i}=t.attributes;if(!i)return;let a=(await import(`./services/DepthImageService.js`)).default;v(e),this.depthImage=new a({url:i});try{await this.depthImage.load(e)}catch(e){_(e)||(d.getLogger(this).error(`error occurred while loading depth image`,e),this.depthImage?.destroy(),this.depthImage=null)}},this._loadImage=async e=>{let{currentBestFeature:t,layer:n,mode:r}=this,i=this._pendingDefaultNavigationViewState;if(this._pendingDefaultNavigationViewState=null,this.clearGraphics(),n&&t&&r!==`none`&&r!==`video`&&r!==`panoramic-video`)try{if(await this.loadImageFromFeature(n,t,e),v(e),i)try{await this._restoreNavigationViewState(i,e)}catch(e){if(_(e))throw e;d.getLogger(this).warn(`oriented-imagery-viewer:failed-to-restore-navigation-view-state`,e)}await this.transformAndPlotSelectedLocation(e)}catch(e){_(e)||this.loadImageError(e)}},this._loadVideo=async e=>{let{currentBestFeature:t,mode:n,selectedPoint:r}=this,i=t?.attributes.imagePath;if(!t||n!==`panoramic-video`||!i)return;let{attributes:a}=t,{cameraPitch:o,cameraOrientation:s,location:c}=a,l=c.spatialReference.isWGS84&&s?.type!==4?ue(c):new O(c);try{this._panoramicVideoViewer.viewModel.video&&(this._panoramicVideoViewer.viewModel.video.pause(),this._panoramicVideoViewer.viewModel.videoPaused=!0),this._panoramicVideoViewer.videoSource=i;let t=0;l&&r&&(t=await N(l,r)-t),this._panoramicVideoViewer.pitch=o??0,this._panoramicVideoViewer.yaw=t,await this._panoramicVideoViewer.loadVideo(e),v(e)}catch(e){_(e)||this.loadImageError(e)}},this._loadImageFromFeature=async(e,t,n)=>{let{mode:r}=this;if(r!=="default"&&r!==`panoramic`)return;let i;try{i=await St(t.attributes,e,n),v(n)}catch(n){if(_(n))return;if(We(n)){d.getLogger(this).error(n),this.setMessage(`noAttachment`,`error`,`${e.objectIdField}: ${t.attributes.objectId}`);return}d.getLogger(this).error(n,{[e.objectIdField]:t.attributes.objectId,layer:e}),this.setMessage(`imageLoadError`,`error`,`query-attachments-failed:${e.objectIdField} ${t.attributes.objectId}`);return}if(!i)return;let{mediaUrl:a,datasetFormat:o,rotation:s,searchParams:c,location:l,cameraHeading:u,matrix:f,cameraPitch:p,getDataSetFormatError:m}=i,h=`${t.attributes.objectId}`;try{let i=this._mediaPrefetcher?.getCachedMedia(h);if(!i){let n=this.navigationNodes.find(e=>e.id===t.attributes.objectId);if(n){try{await this._mediaPrefetcher?.startPrefetchForNode(n,e)}catch{}i=this._mediaPrefetcher?.getCachedMedia(h)}}if(i){if(r===`panoramic`){let e=this.triangularMeasurementActive?this._panoramicMeasurementViewer:this._panoramicViewer,r=0;l&&this.selectedPoint&&(r=await N(l,this.selectedPoint)-r),await e.loadMedia(i,n),this.selectedPoint?e.set({yaw:r,pitch:p}):`viewAngle`in t.attributes&&Number.isFinite(t.attributes.viewAngle)&&e.set({yaw:t.attributes.viewAngle,pitch:p}),this.triangularMeasurementActive?await this.initializeReferenceTransformationService(n):await this.initializeTransformationService(n);return}await this._setImageSource(this.triangularMeasurementActive?this.imageMeasurementViewer:this._imageViewer,i,n),this.triangularMeasurementActive?await this.initializeReferenceTransformationService(n):await this.initializeTransformationService(n);return}}catch{}m&&d.getLogger(this).warn(`error occurred while getting dataset format`,m),r===`panoramic`?await this.loadPanoramicMediaSource({lookAt:{yaw:this.selectedPoint?await N(l,this.selectedPoint):`viewAngle`in t.attributes&&Number.isFinite(t.attributes.viewAngle)?t.attributes.viewAngle:0,pitch:p},extension:o?.toUpperCase(),url:a,cameraHeading:u,matrix:f},n):await this.loadMediaSource({datasetFormat:o?.toUpperCase(),url:a,customParameters:c,rotation:s},n),this.triangularMeasurementActive?await this.initializeReferenceTransformationService(n):await this.initializeTransformationService(n)},this._loadMeasurementViewerImage=async e=>{let{currentBestFeatureMeasurementImage:t,layer:n,mode:r}=this;if(this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearGraphics(),n&&t&&r!==`none`&&r!==`video`&&r!==`panoramic-video`)try{await this.loadImageFromFeature(n,t,e),v(e)}catch(e){_(e)||this.loadImageError(e)}},this._loadMediaPrefetcher=async e=>{if(!this._mediaPrefetcher){let{default:t}=await import(`./support/MediaPrefetcher.js`);v(e),this._mediaPrefetcher=new t({maxEntries:this.preloadMediaSize*Ne.length})}return this._mediaPrefetcher},this._loadViewAdapter=async e=>{let{view:t}=this;if(this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),!t)this._adapter=null;else switch(t.type){case`2d`:{let{default:t}=await import(`./adapters/view/MapViewAdapter.js`);v(e),this._adapter=new t(this);break}case`3d`:{let{default:t}=await import(`./adapters/view/SceneViewAdapter.js`);v(e),this._adapter=new t(this);break}}},this._mapImageConversionToolViewClickHandler=e=>{if(e.stopPropagation(),e.preventDefault(),e.mapPoint){let t=e.mapPoint;t.x=le(t.x,t.spatialReference),this.plotMapPoint(e.mapPoint)}},this._measurementImageClickHandler=e=>{e.stopPropagation(),e.preventDefault();let{sketchTriangular:t,triangularMeasurementActive:n,currentBestFeatureMeasurementImage:r,triangulatedMeasurementGraphic:i}=this;t&&n&&r&&i&&t.state!==`active`&&(t.update([i],{tool:`reshape`}),this.updatingTriangularMeasurementState=!0)},this._updateInteraction=()=>{let e=this.videoMapView.extent;if(!e)return;let{minScale:t}=this.videoMapView.constraints,n=this.videoMapView.scale<t-Pe,r=rt(e);n&&r?(this._enablePan(),this.videoMapView.constraints.geometry=r):n?(this._disablePan(),this.videoMapView.constraints.geometry=null):(this.initialVideoMapViewExtent&&!this.videoMapView.extent.equals(this.initialVideoMapViewExtent)&&(this.videoMapView.extent=this.initialVideoMapViewExtent),this._disablePan(),this.videoMapView.constraints.geometry=null)},this._viewClickHandler=e=>{this._clickTask?.abort(),this._clickTask=i(async t=>{let{pointerType:n,button:r,mapPoint:i}=e;if(n===`mouse`&&r!==0||!i)return;e.stopPropagation(),e.preventDefault();let{view:a,layer:o}=this;if(a){if(!o)this.setMessage(`noLayerSelected`,`info`);else{if(this.shouldShowSelectedImage){let n=a.hitTest(e,{include:[o]});this._updatingHandles.addPromise(n);let r=await n;return v(t),await this._processHitTestResults(o,r,{signal:t})}return this._updatingHandles.addPromise(this.loadBestImage(i,{signal:t}))}}})},this.plotSelectedPointOnImage=async(e,n)=>{if(await y(n),!e)return;let r=new O({...re(e)?e.toJSON():e});if(this.mode==="default")r.x-=.5,r.y=.5-r.y,r.spatialReference=this._imageViewer.imageRenderer.spatialReference.clone(),this._crossSymbol=new t({geometry:r,symbol:K}),this._imageViewer.addGraphic(this._crossSymbol,0);else if(this.mode===`video`)this._crossSymbol=this.videoViewModel?.plotSelectedPointOnVideo(r)??null;else if(this.mode===`panoramic`){let{imageSize:n,media:r}=this._panoramicViewer;if(!n||!r)return;let i=X(r),a=xe(e,...n,i);this._crossSymbol=new t({geometry:new O(a,oe.WebMercator),symbol:Ie}),this._panoramicViewer.addGraphic(this._crossSymbol,0)}},this.handleSectorClick=this.handleSectorClick.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this)}initialize(){this.addHandles([C(()=>this.view,()=>this.load(),w),C(()=>this.view?.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},ee),C(()=>this.view?.map?.allLayers?.length,e=>{e&&this.view?.map?.layers.reorder(this._overlays,e-1)},ee),C(()=>[this.state,this.panoramicVideoLoaded,this.mapImageConversionToolState,this.view,this.disabled,this.panoramicVideoPaused,this.videoViewModel?.videoPaused],(e,t)=>{let n=e[2];t?.[2]&&!n&&(this.plotReferencePointOnGround(null),this.clearReferencePointOnImage()),this._createViewClickHandle(),this._createImageClickHandle()},w),C(()=>[this.triangularMeasurementActive,this.currentBestFeatureMeasurementImage],()=>{this._createTriangularImageClickHandle()},w),C(()=>[this.state,this.imageLocationToolState,this.view],()=>{this._initializeMeasurementService(),this._initializeLocationViewModel()},w),C(()=>this.measureType,()=>{this.clearPreviousMeasurements(),this._initializeMeasurementService()},w),C(()=>this.bestFeatureAngle,(e,t)=>{this.previousFeatureAngle=t??0},w),C(()=>[this.superimposeViewEnabled,this.defaultSuperimposeCameraLockEnabled,this.superimposeViewSupported,this.currentBestFeature,this.mode,this.state,this.view?.type],()=>{this._shouldDisableUnsupportedSuperimposeView()?this.superimposeViewEnabled=!1:this._hasActiveSuperimposeCameraContext()?this._updateSuperimposedImage():this._resetInactiveSuperimposeState()},w),C(()=>this._getSuperimposeCameraWatchState(),()=>this._handleSuperimposeCameraChange(),w),C(()=>this.currentBestFeature,async(e,t)=>{h(this._featureChangedTask),this._featureChangedTask=i(async n=>this.determineWorkflowForFeature.apply(this,[e,t,{signal:n}])),await this._featureChangedTask.promise},{sync:!0}),C(()=>[this.currentNode,this.preloadMedia,this.navigationMode],()=>{this._mediaPrefetchTask?.abort(),this._mediaPrefetchTask=i(async e=>{this.preloadMedia&&this.navigationMode!=null?(this._mediaPrefetcher??=await this._loadMediaPrefetcher({signal:e}),v(e),this.navigationMode===`directional`?this._mediaPrefetcher.enqueueDirectionalPrefetch(this.layer,this.currentNode,this.preloadMediaSize):this._mediaPrefetcher.enqueueSequentialPrefetch(this.layer,this.currentNode,this.preloadMediaSize)):this._mediaPrefetcher?.clear()})},w),C(()=>this.currentBestFeatureMeasurementImage,(e,t)=>{h(this._featureChangedTask),t&&e!==t&&(this.triangulatedPoint=null,this.sketchTriangularGraphicsLayer?.graphics.destroyAll(),this._measurementService?.resetMeasurementVectors()),this._featureChangedTask=i(async n=>{await this.determineWorkflowForTriangularMeasurement(e,t,{signal:n}),v(n),this._reorderTriangularSketchLayer()})},w),C(()=>this.triangularMeasurementActive,(e,t)=>{t&&!e&&(this._measurementService?.resetMeasurementVectors(),this.currentBestFeatureMeasurementImage=null,this.triangulatedDistanceMeasurement=null,this.triangulatedMeasurementGraphic=null,this.triangulatedPoint=null,this.updatingTriangularMeasurementState=!1,this.triangulatedAreaMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaAccuracy=0,this.sketchTriangularGraphicsLayer?.graphics.destroyAll(),this.clearReferencePointOnImage(),this.imageMeasurementViewer.clearImage(),this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearImage(),this._panoramicMeasurementViewer.clearGraphics())}),C(()=>this.mode,e=>{switch(this.removeHandles(Y.interactionHandles),e){case`default`:this.addHandles(C(()=>{let{state:e}=this;return e===`image-loaded`?this._imageViewer.imagePointsInView:null},e=>{e&&(h(this._updateFootprintTask),this._updateFootprintTask=i(async t=>{await this.updateFootprint(e,void 0,{signal:t})}))},{...w,equals:(e,t)=>n(e,t,u)}),Y.interactionHandles);break;case`video`:this.addHandles(C(()=>{let{footprintExtent:e,videoElement:t,bestFeatureFootprint:n}=this;if(e&&t?.loaded&&n)return{videoExtent:z,bestFeatureFootprint:n}},e=>{e?.videoExtent&&e?.bestFeatureFootprint&&(h(this._updateFootprintTask),this._updateFootprintTask=i(async t=>{let n={points:e.videoExtent,feature:void 0,scale:void 0,options:{signal:t}};await this.updateVideoFootprint(n)}))},{...w,equals:(e,t)=>n(e?.videoExtent,t?.videoExtent,u)&&e?.bestFeatureFootprint===t?.bestFeatureFootprint}),Y.interactionHandles);break;case`panoramic`:this.addHandles(C(()=>{let{currentBestFeature:e,state:t,_panoramicViewer:n}=this,{imageSize:r,vfov:i,hfov:a,pitch:o,yaw:s}=n;return!e||!r||t.includes(`loading`)||i==null||a==null||o==null||s==null?null:[i,a,s,o]},e=>{if(!e||this.state.includes(`loading`))return;let[t,n,r,a]=e;this.currentNode&&(this.currentNode.currentHeading=r,this.currentNode.currentPitch=a),h(this._updateFootprintTask),this._updateFootprintTask=i(async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:n,yaw:r,pitch:a},{signal:e}),this._updateFootprintTask=null})},{equals:(e,t)=>n(e,t,u)}),Y.interactionHandles);break;case`panoramic-video`:this.addHandles(C(()=>{let{currentBestFeature:e,state:t,_panoramicVideoViewer:n}=this,{imageSize:r,vfov:i,hfov:a,pitch:o,yaw:s,viewModel:c}=n,l=c.closestFeature??e;return!l||!r||t.includes(`loading`)||i==null||a==null||o==null||s==null?null:[i,a,s,o,l]},e=>{if(!e)return;let[t,n,r,a,o]=e;h(this._updateFootprintTask),this._updateFootprintTask=i(async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:n,yaw:r,pitch:a,feature:o,horizonAngles:this._panoramicVideoViewer.horizonAngles},{signal:e}),v(e),this._updateFootprintTask=null})},{equals:(e,t)=>n(e,t,u)}),Y.interactionHandles)}},w),C(()=>[this.brightness,this.contrast,this.sharpness],()=>{let{_imageViewer:e,brightness:t,contrast:n,mode:r,sharpness:i}=this;r==="default"&&(e.brightness=t,e.contrast=n,e.sharpness=i)},w),C(()=>this.activeViewer?.imageRenderer,()=>{this.sketch&&(this.sketch.view=this.activeViewer?.imageRenderer)}),C(()=>this.activeViewer,e=>{this.removeHandles(Y.hittestHandles),e&&this.addHandles(S(()=>e,`hittest-response`,this._handleImageHitTestResponse),Y.hittestHandles)}),C(()=>this.videoMapView.extent,async()=>{this._scheduleVideoInteractionUpdate();let e=this.videoViewModel?.closestFeature;e&&(h(this._updateFootprintTask),this._updateFootprintTask=i(async t=>{let n={points:this.videoExtentPoints,feature:e,options:{signal:t}};await this.updateVideoFootprint(n)}))}),C(()=>[this.videoMapView.interacting,this.videoMapView.navigating,this.videoMapView.scale],()=>{this._scheduleVideoInteractionUpdate()},{initial:!0}),te(()=>this.videoMapView.extent!=null,()=>{this.initialVideoMapViewExtent=this.videoMapView.extent},{once:!0})]),this.when().finally(()=>{this.notifyChange(`state`)})}destroy(){this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),this._abortSuperimposeSchedule(),this.currentBestFeature=null,this._updateFootprintTask=h(this._updateFootprintTask),this._clickTask=h(this._clickTask),this._cameraOverlayTask=h(this._cameraOverlayTask),this._navigationViewStateTask=h(this._navigationViewStateTask),this._restoreSuperimposeMediaTask=h(this._restoreSuperimposeMediaTask),this.coverageFrustums.destroy(),this.coveragePolygons.destroy(),this.pointSources.destroy(),this.additionalFootprints.destroy(),this.additionalCameraLocations.destroy(),this.bestFeatureFootprint=m(this.bestFeatureFootprint),this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),this.videoViewModel=m(this.videoViewModel),this._locationViewModel=m(this._locationViewModel),this.clearSelectedPointOnViewer(),this._referencePointOnGround=m(this._referencePointOnGround),this.clearReferencePointOnImage(),this._superimposeService.destroy(),this._overlays&&this.view?.map?.remove(this._overlays),this._overlays.destroy(),this._imageViewer.destroy(),this.imageMeasurementViewer.destroy(),this._panoramicViewer.destroy(),this._panoramicVideoViewer.destroy(),this._panoramicMeasurementViewer.destroy(),this._mediaPrefetcher?.destroy(),this._videoFeatureCache.destroy()}get activeLayer(){return o(d.getLogger(this),`activeLayer`,{replacement:`layer`}),this.layer}set activeLayer(e){o(d.getLogger(this),`activeLayer`,{replacement:`layer`}),this.layer=e}get activeViewer(){let{_imageViewer:e,_panoramicViewer:t,mode:n}=this;switch(n){case`default`:return e;case`panoramic`:return t;default:return null}}get activeTriangulatedViewer(){switch(this.mode){case`default`:return this.imageMeasurementViewer;case`panoramic`:return this._panoramicMeasurementViewer;default:return null}}get accuracyParametersMissing(){let e=this.currentBestFeature?.attributes.orientationAccuracy;return!e||e.every(e=>e===0)}get brightness(){return this._get(`brightness`)??0}set brightness(e){this._set(`brightness`,f(e,-10,10))}get contrast(){return this._get(`contrast`)??0}set contrast(e){this._set(`contrast`,f(e,-10,10))}get currentNode(){let{currentBestFeature:e,navigationNodes:t}=this;return t.find(t=>t.id===e?.attributes.objectId)}get depthImageNotSupported(){if(this.currentBestFeature?.attributes.depthImage)return!Ge(this.currentBestFeature.attributes.depthImage)}get featureCount(){return this.features?.length??0}get hasPendingPanoramicNavigationViewState(){return this._pendingPanoramicNavigationViewState!=null}get imageGalleryEnabled(){let{currentBestFeature:e}=this;if(!e)return!1;let t=e.attributes.imagePath?.trim();return Ke(t)||W(t)}get imageLoaded(){return o(d.getLogger(this),`imageLoaded`,{replacement:`Use OrientedImageryViewer.state === "image-loaded"`,version:`4.29`,warnOnce:!0}),this.state===`image-loaded`}get invalidCameraHeading(){return this.currentBestFeature?.attributes?.cameraHeading===B}get imagePointsInView(){let{mode:e,_imageViewer:t}=this;return e==="default"?t.imagePointsInView:null}get layerView(){let{layer:e,view:t}=this;if(e&&t)return t.allLayerViews.find(qe(e))}get layerFloorFilterClause(){let{layerView:e}=this;return e?Te(e):null}get layerTimeExtent(){return this.layerView?.timeExtent??null}get mode(){let e=this.currentBestFeature?.attributes;if(!e)return`none`;let t=e.orientedImageryType;if(t?.includes(`video`))return t.includes(`360`)?`panoramic-video`:`video`;let{horizontalFieldOfView:n,isSpherical:r}=e;return n===360||r?`panoramic`:`default`}get panoramicVideoLoaded(){let{mode:e,_panoramicVideoViewer:t}=this,{videoLoaded:n}=t.viewModel;return e===`panoramic-video`&&n===!0}get overlayGraphicsEnabled(){let{mode:e,state:t,panoramicVideoLoaded:n,videoViewModel:r,panoramicVideoPaused:i}=this;return t===`image-loaded`||e===`video`&&t===`video-loaded`&&r?.videoPaused===!0||e===`panoramic-video`&&n&&i}get panoramicVideoPaused(){return!!this._panoramicVideoViewer.viewModel.videoPaused}get popupEnabled(){return this.layer?.popupEnabled===!0}get referencePoint(){return this._referencePointOnGround?.geometry}get sectorData(){let{_sectorData:e}=this;return e?V.map(t=>e[t]):null}get sharpness(){return this._get(`sharpness`)??0}set sharpness(e){this._set(`sharpness`,f(e,0,1))}get superimposeViewSupported(){return this.mode==="default"||this.mode===`panoramic`}get sketchGraphicsLayer(){let{sketch:e}=this;return e?.layer?.type===`graphics`?e.layer:void 0}get state(){let{mode:e,_updatingHandles:{updating:t},_featureChangedTask:n,_navigationManager:r}=this;if(!this.isFulfilled()||t||n?.finished===!1||r?.navigating)return`loading`;if(this.isRejected())return`error`;if(this.displayMessage?.type===`error`)return`image-load-error`;switch(e){case`default`:return this._imageViewer.state;case`panoramic`:return this._panoramicViewer.state;case`video`:return this.videoElement?.loaded?`video-loaded`:`video-not-loaded`;case`panoramic-video`:return this.panoramicVideoLoaded?`video-loaded`:`video-not-loaded`}return`ready`}get thumbnails(){let{features:e}=this;return e?new a(e.map(({attributes:{imagePath:e,objectId:t,cameraRoll:n,imageRotation:r}})=>{let i=e?.trim();return Ke(i)||W(i)?{url:i,objectId:t,rotation:(n??0)+(r??0)}:null}).filter(r)):null}get videoExtentPoints(){let e=it(this.videoMapView.extent);return e.length?e:z}set view(e){this._set(`view`,e)}get _defaultGraphicsLayer(){let e={blendMode:`source-atop`};switch(this.mode){case`panoramic`:return new A({...e,elevationInfo:{mode:`absolute-height`}});case`default`:return new A({...e});default:return}}get _overlaysView(){return this.view?.layerViews.find(({layer:e})=>e===this._overlays)}updatePanoramicSuperimposeRadiusOffset(e){this._superimposeService.updatePanoramicRadiusOffset(e)}setDefaultSuperimposeZOffsetPercentage(e){this._superimposeService.setDefaultZOffsetPercentage(e)}setFrustumSearchEnabled(e){this.frustumSearchEnabled=e}setPanoramicSuperimposeRadiusPercentage(e){this._superimposeService.setPanoramicRadiusPercentage(e)}updateDefaultSuperimposeCameraLock(e){this.defaultSuperimposeCameraLockEnabled=e,this.superimposeViewEnabled&&this.mode==="default"&&(e?this._adapter?.enableDefaultSuperimposeNavigation?.():this._adapter?.disableDefaultSuperimposeNavigation?.())}beforeLoad(e=!0){this.emit(`popup-close`),e&&(this.displayMessage=null),this._pendingDefaultNavigationViewState=null,this._pendingPanoramicNavigationViewState=null,this._abortSuperimposeSchedule(),this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),this.clearPreviousGroundLocation(),this.triangularMeasurementActive=!1,this.currentBestFeatureMeasurementImage=null,this.measureType=null,this.imageLocationToolState=!1,this.features.removeAll(),this.currentBestFeature=null,this.additionalFeatures.removeAll(),this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),this._restoreSuperimposeMediaTask=h(this._restoreSuperimposeMediaTask),this._superimposeService.clear(),this._overlays?.removeAll()}async calculateLocationAccuracy(e){return this._measurementService?.calculateLocationAccuracy(e)}clearLocationPointOnImage(e=!1){this.locationPointOnImage&&!e&&(this._imageViewer.removeGraphic(this.locationPointOnImage),this._panoramicViewer.removeGraphic(this.locationPointOnImage),this.locationPointOnImage=m(this.locationPointOnImage)),this.correctedLocationPointOnImage&&=(this.imageMeasurementViewer.removeGraphic(this.correctedLocationPointOnImage),this._panoramicMeasurementViewer.removeGraphic(this.correctedLocationPointOnImage),m(this.correctedLocationPointOnImage))}clearPreviousMeasurements(){this.clearMeasurementGraphics(),this.resetMeasurementData(),this.stopMeasurement()}clearPreviousGroundLocation(){this.groundCoordinates=null,this.groundCoordinatesAccuracy=null,this.groundCoordinatesAccuracyLoading=!1,this.pixelCoordinates=null,this.clearLocationPointOnImage()}clearMeasurementGraphics(){this.measurementGraphic&&=(this.activeViewer?.removeGraphic(this.measurementGraphic),null),this.heightGraphic&&=(this.activeViewer?.removeGraphic(this.heightGraphic),null),this.triangularMeasurementActive&&this.sketchTriangularGraphicsLayer?.graphics.destroyAll()}digitizeCancel(){return this.sketch?.cancel()}digitizeCanRedo(){return this.sketch?.canRedo()??!1}digitizeCanUndo(){return this.sketch?.canUndo()??!1}digitizeComplete(){return this.sketch?.complete()}async digitizeCreate(e,t){let{sketch:n,dataCaptureLayer:r}=this;if(!n)throw Q();ht(r,e,n),await n.create(e,{...t,defaultZ:0})}digitizeDelete(){if(!this.sketch)throw Q();return this.sketch.delete()}digitizeDuplicate(){if(!this.sketch)throw Q();return this.sketch.duplicate()}digitizePlace(e,t){if(!this.sketch)throw Q();return this.sketch.place(e,t)}digitizeRedo(){if(!this.sketch)throw Q();return this.sketch.redo()}digitizeUndo(){if(!this.sketch)throw Q();return this.sketch.undo()}digitizeUpdate(e,t){if(!this.sketch)throw Q();return this.sketch.update(e,t)}filterByFootprints(e,t,n){let r=n?.filterByFrustum??!1,i=n?.skipFilter??!1,a=[],o=[],s=[];return e.forEach(e=>{let{attributes:n}=e,c=e.layer?.coveragePercent,l,{polygon:u,frustum:d}=U(n);l=u.clone(),n.isInspection&&(l=pe(n)),c&&(l=me(l,c));let{cameraHeading:f,objectId:p}=n;if(this._matchesSelectedPointFilter({skipFilter:i,selectedPoint:t,filterByFrustum:r,cameraHeading:f,attributes:n,polygon:l})){s.push(e);let t=n.location.clone();t.imageID=p,this.pointSources.push(t),f!==B&&(a.push(u),d&&o.push(d))}}),{features:s,polygons:a,frustums:o}}async deleteDataCaptureFeatures(e){let{dataCaptureLayer:t}=this;if(!t)throw new s(`orientedimageryviewer:missing-featurelayer`,`Data capture layer is not available`);return t.queryFeatures({objectIds:e,outFields:[t.objectIdField]}).then(({features:e})=>t.applyEdits({deleteFeatures:e}))}handleSectorClick(e){if(isNaN(e))return;let t=(this._sectorData?.[V[e]])?.at(0);t&&(this.triangularMeasurementActive&&this.currentBestFeature?this._updateImageMeasurementBestFeature(t):this._scheduleCurrentBestFeatureUpdate(t))}handleFeatureClick(e){let{sector:t,featureIndexInSector:n}=e;if(isNaN(n))return;let r=(this._sectorData?.[t])?.at(n);r&&(this.triangularMeasurementActive&&this.currentBestFeature?this._updateImageMeasurementBestFeature(r):this._scheduleCurrentBestFeatureUpdate(r))}load(e){return this.addResolvingPromise(this._loadViewAdapter(e).catch(e=>{if(!_(e))throw e})),this}async loadBestImage(e,t){return this.selectedPoint=M(e),this.beforeLoad(),this._fetchFeaturesWithController(e,t)}async loadHeightMeasurementAdapter(e){if(!this.drawAdapter){let{default:t}=await import(`./adapters/draw/HeightMeasurementAdapter.js`);if(v(e),this.drawAdapter=new t({viewModel:this,measurementService:this._measurementService}),!this.drawAdapter.viewModel.isResolved())return}return this.drawAdapter}loadImageError(e){d.getLogger(this).error(`oriented-imagery-viewer:load-image`,e),this.setMessage(`imageLoadError`,`error`,e.message)}async loadSketch(e){if(!this.sketch){let{default:t}=await import(`../Sketch/SketchViewModel.js`);v(e),this.sketch=new t({layer:this._defaultGraphicsLayer,view:this.activeViewer?.imageRenderer,updateOnGraphicClick:!1,defaultUpdateOptions:{reshapeOptions:{edgeOperation:`none`,shapeOperation:`none`,vertexOperation:void 0},enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,multipleSelectionEnabled:!1,toggleToolOnClick:!1,tool:`transform`}})}return this.sketch}async loadMeasurementAdapter(e){if(!this.sketchAdapter){let{default:t}=await import(`./adapters/sketch/MeasurementAdapter.js`);if(v(e),this.sketchAdapter=new t({viewModel:this,measurementService:this._measurementService}),!this.sketchAdapter.viewModel.isResolved())return}return this.sketchAdapter}async processFeatureResponse(e,t,n){let{features:r}=e,i=this.layer?.verticalSearchRange,a=this._shouldUseVerticalFilter(),o=this._shouldUseFrustumSearch();if(this._clearFeatureGeometries(),!this._checkFeatures(r))return;let s=r[0].attributes.location.spatialReference.equals(t.spatialReference)?t:await k(t,r[0].attributes.location.spatialReference),{features:c,polygons:l}=o?this.filterByFootprints(r,s,{filterByFrustum:!0}):this.filterByFootprints(r,s,{skipFilter:n?.skipFilter});if(!this._checkFeatures(c))return;let u=await this.processElevationSample(l,c,n);v(n),await this._updateElevationOfSelectedPointAndLocations(c,t,u),v(n),c.forEach(({attributes:e})=>{if(e.cameraHeading!==B){let{polygon:t,frustum:n}=U(e);this.coveragePolygons.add(t),n&&this.coverageFrustums.add(n)}}),Je(c,u);let d=c;if(a&&t&&i!=null&&(d=Ye(c,t,i),!d.length)){this.setMessage(`noImageAtElevation`,`info`);return}let f=this._processSuitableFeatures(d,t);this.updateSuitabilities(f,n?.loadBestImage)}async processFeatureElevation(e,t,n){if(!t)return;let{features:r,polygons:i}=this.filterByFootprints(e,t,{skipFilter:!0});if(!r?.length)return;let a=await this.processElevationSample(i,r,n);return v(n),a}async startMeasurement(e,t){this.sketch||await this.loadSketch(t),await this.loadMeasurementAdapter(t);let{sketch:n,sketchAdapter:r,activeViewer:i,mode:a}=this;if(!n||!r||!i||a===`none`)return;if(this.displayNewMeasurementButton=!1,a===`panoramic`&&(n.defaultCreateOptions.defaultZ=0),await n.create(e),a===`panoramic`){let{drawOperation:e}=n.view.activeTool;e.constraintsEnabled=!1,e._set(`elevationDrawSurface`,null)}let o=this.activeViewer?.imageRenderer.effectiveTheme.accentColor;o&&this.sketch&&(this.sketch.polygonSymbol=Le(o),this.sketch.polylineSymbol=a===`panoramic`?Re:ze(o,2.5))}async startHeightMeasurement(){this.displayNewMeasurementButton=!1,this.draw??=new Oe({view:this.activeViewer?.imageRenderer}),this.polylineDrawAction=this.draw.create(`polyline`),await this.loadHeightMeasurementAdapter()}initializeMeasurement(e){switch(this.clearMeasurementGraphics(),this.resetMeasurementData(),e){case`distance`:this.startMeasurement(`polyline`);break;case`area`:this.startMeasurement(`polygon`);break;case`height`:this.startHeightMeasurement()}}async overlayCameraLocations(e){this._cameraOverlayTask=h(this._cameraOverlayTask);let{activeViewer:n,overlayedCameraLocations:a,layer:o,mode:s,layerFloorFilterClause:c,layerTimeExtent:l,videoViewModel:u,_panoramicVideoViewer:d}=this,f=s===`video`,p=s===`panoramic-video`,m=this._getActiveFeatureForCurrentMode(),g=this._computeOverlayImageSize();if(!g||!m||!o||s===`none`||!this.overlayGraphicsEnabled)return;let{polygon:y}=U(m.attributes);if(f?u?.removeOverlayGraphics(a.toArray()):p?d.removeManyGraphics(a.toArray()):n?.removeManyGraphics(a.toArray()),a.removeAll(),!e)return;let b=i(async e=>{let{features:i}=await o.queryFeatures({where:T(`${o.objectIdField} <> ${m.attributes.objectId}`,T(o.definitionExpression,c)),geometry:y,returnGeometry:!0,outFields:[o.objectIdField],timeExtent:l},{signal:e});v(e);let h=await Promise.all(i.map(async n=>{let{attributes:r,geometry:i}=n;if(i?.type!==`point`)return null;let a=await this._geometryToOverlayImageGeometry(i,m,g,{signal:e});if(v(e),!a)return null;let o=s===`panoramic`||s===`panoramic-video`?Be():Ve();return new t({attributes:r,symbol:o,geometry:a})}));v(e),m===this._getActiveFeatureForCurrentMode()&&this.overlayGraphicsEnabled&&(a.addMany(h.filter(r)),f?u?.addOverlayGraphics(a.toArray()):p?d.addManyGraphics(a.toArray()):n?.addManyGraphics(a.toArray()))});this._cameraOverlayTask=b;try{await b.promise}catch(e){if(!_(e))throw e}finally{this._cameraOverlayTask===b&&(this._cameraOverlayTask=null)}}overlayGraphicsOnImage(e,t){this.removeOverlayedGraphicsOnImage(e),this.overlayedMapFeatures.set(e,t),this.mode===`video`?this.videoViewModel?.addOverlayGraphics(t.toArray()):this.mode===`panoramic-video`?this._panoramicVideoViewer.addManyGraphics(t.toArray()):this.activeViewer?.addManyGraphics(t.toArray())}async overlayMapFeatures(e,n=!1){let{activeViewer:i,mode:o,layer:s,videoViewModel:c,_panoramicVideoViewer:l}=this,u=o===`video`,f=o===`panoramic-video`,p=this._getActiveFeatureForCurrentMode(),m=this._computeOverlayImageSize();if(!m||!p||o===`none`||!this.overlayGraphicsEnabled||!s)return;let{polygon:h}=U(p.attributes);try{let{imageGeometryField:t,oiObjectIdField:n}=gt(e,s.imageGeometryField,s.imageReferenceField);this.imageGeometryField=t.name,this.oiObjectIdField=n.name}catch(e){d.getLogger(this).warn(`oriented-imagery-viewer:overlay-map-features`,e)}let{features:g}=await e.queryFeatures({geometry:h,returnGeometry:!0,outFields:[`*`]}),_=await Promise.all(g.map(async r=>{let a=r.symbol?.clone()??e.renderer?.getSymbol(r)?.clone(),{attributes:s,geometry:h}=r,{imageGeometryField:g,oiObjectIdField:_}=this;if(g&&_&&Ct(e,g,_)&&`${s[_]}`==`${p.attributes.objectId}`)try{let r=f?l.horizonAngles:X(i?.media),d=_t(s,g,e,n,m,u?`default`:o,a,r);if(!u)return d;let p=d.geometry;if(!p)return null;let h=c?.imageGeometryToOverlayGeometry(p);return h?new t({attributes:s,layer:e,symbol:d.symbol,geometry:h,visible:d.visible}):null}catch(t){d.getLogger(this).warn(`oriented-imagery-viewer:overlay-map-features`,`couldn't create graphic from attributes, geometry will be used`,{error:t,feature:r,layer:e,imageGeometryField:this.imageGeometryField,imageReferenceField:this.oiObjectIdField})}if(!h)return null;let v={feature:p,imageSize:m,footprintExtent:this.footprintExtent},y=await this._geometryToOverlayImageGeometry(h,v.feature,v.imageSize);return y?new t({attributes:s,layer:e,symbol:a,geometry:y,visible:e.visible&&n}):null})),v=new a(_.filter(r));(o!==`video`&&o!==`panoramic-video`||this.overlayGraphicsEnabled)&&this.overlayGraphicsOnImage(`${e.id}`,v)}getDepthAt(e){let{activeViewer:t,currentBestFeature:n,mode:r,state:i,depthImage:a}=this,o=t?.imageSize;if(!o||!n||r===`none`||i.includes(`loading`))return d.getLogger(this).warnOnce(`oriented-imagery-viewer:get-depth-at`,`Load an image to use depth`),null;if(!a?.loaded)return d.getLogger(this).error(`oriented-imagery-viewer:get-depth-at`,`Depth image is not loaded`),this.emit(`depth-image-service:not-loaded`),null;let s=(Array.isArray(e)?e:[e]).map(e=>a.depthAt(e,{width:o[0],height:o[1]})??null);return Array.isArray(e)?s:s[0]}getActiveSectors(){return V.filter(e=>this._sectorData?.[e]?.length)}async getPixelLocationForFeature(e,t,n){return(await this._transformationService.pointToPixelForFeature([e],t,n))[0]}async getPixelLocationsForFeature(e,t,n){return await this._transformationService.pointToPixelForFeature(e,t,n)}async _getMapPointInViewSpatialReference(e,t){let n=await this.getMapPoint(e,t),r=this.view?.spatialReference;return await k(n,r,t)}async plotMapPoint(e){this.plotReferencePoint(e);let t=this._getActiveFeatureForCurrentMode();if(t)return this.transformAndPlotReferencePointOnImage({feature:t,selectedLocation:e,options:{signal:this._transformController?.signal}})}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),e!=null&&(this._referencePointOnGround=new t({geometry:new O({...e.toJSON()}),symbol:q}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit(`plot-ground-point`,{data:{point:this._referencePointOnGround?.geometry}}))}plotReferencePointOnImage(e){switch(this.mode){case`video`:this._plotReferencePointOnVideo(e);return;case`panoramic-video`:this._plotReferencePointOnPanoramicVideo(e);return;case`default`:this._plotReferencePointOnDefaultImage(e);return;case`panoramic`:this._plotReferencePointOnPanoramicImage(e);return}}removeAllOverlayMapFeatures(){let{mode:e}=this;this.overlayedMapFeatures.forEach(t=>{let n=t.toArray();switch(e){case`video`:this.videoViewModel?.removeOverlayGraphics(n);break;case`panoramic-video`:this._panoramicVideoViewer.removeManyGraphics(n);break;default:this.activeViewer?.removeManyGraphics(n)}}),this.overlayedMapFeatures.clear()}removeOverlayedGraphicsOnImage(e){let t=this.overlayedMapFeatures.get(e),{mode:n}=this;if(!t?.length)return;let r=t.toArray();switch(n){case`video`:this.videoViewModel?.removeOverlayGraphics(r);break;case`panoramic-video`:this._panoramicVideoViewer.removeManyGraphics(r);break;default:this.activeViewer?.removeManyGraphics(r)}this.overlayedMapFeatures.delete(e)}reset(){let{mode:e}=this;e==="default"||e===`panoramic`?this.resetImage():e===`video`?this.resetVideo():e===`panoramic-video`&&this.resetVideoPanoramic(),this.beforeLoad(!1)}resetImage(){switch(this.setMessage(`onLoadMessage`,`info`),this.mode){case`default`:this._imageViewer.clearImage(),this._imageViewer.clearGraphics();break;case`panoramic`:this._panoramicViewer.clearImage(),this._panoramicViewer.clearGraphics()}this._clickTask=h(this._clickTask)}resetVideo(){this.setMessage(`onLoadMessage`,`info`),this.videoViewModel?.resetVideoHandler(),this._overlays?.removeAll(),this.videoViewModel=null,this._videoFeatureCache.reset(),this._syncVideoFeatureCacheState(),this.currentBestFeature=null}resetVideoPanoramic(){this.setMessage(`onLoadMessage`,`info`),this._overlays?.removeAll(),this._panoramicVideoViewer.reset(),this.currentBestFeature=null}resetMeasurementData(){this.areaMeasurementResult=0,this.areaMeasurementAccuracy=0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.heightMeasurementResult=0,this.heightMeasurementAccuracy=0,this.heightGraphic=null,this.triangulatedDistanceMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaMeasurement=null,this.triangulatedMeasurementGraphic=null,this.updatingTriangularMeasurementState=!1,this.triangulatedAreaAccuracy=0,this._measurementService?.resetMeasurementVectors()}async saveDrawing(){let{dataCaptureLayer:e,sketchAdapter:t}=this;if(!e||t?.type!==`data-capture`)return;let{pendingGraphics:n,savedGraphics:r}=t,i=n.get(e.id),a=i?.toArray();if(!i||!a?.length)return;let{addFeatureResults:o}=await this.saveDataCaptureFeatures(a),s=o.reduce((t,{objectId:n,globalId:r,error:i},o)=>{let s=a[o],{attributes:c}=s;return i?t.error.push(s):(n&&(c[e.objectIdField]=n),r&&e.globalIdField&&(c[e.globalIdField]=r),t.success.push(s)),t},{success:[],error:[]});r.addMany(s.success),i.removeAll(),i.addMany(s.error)}async saveDataCaptureFeatures(e,t){let{activeViewer:n,currentBestFeature:i,dataCaptureLayer:a,mode:o}=this;if(!n?.imageSize||!i||o===`none`||o===`video`||o===`panoramic-video`)throw new s(`orientedimageryviewer:missing-input`,`Image size, current best feature and mode are required to save data capture features`);if(!a)throw new s(`orientedimageryviewer:missing-featurelayer`,`Data capture layer is not available`);let c=await Promise.all(e.map(async e=>{let n=e.clone(),{geometry:r}=n;if(!r)return;let i=r.type,o=a.hasZ,s=a.geometryType,c=i!==s,l=(c?await import(`./transformers.js`):null)?.default[s],u=c?l?.(r):r;if(u&&(n.geometry=await this._transformationService.imageGeometryToMapGeometry(u,t),n.geometry))return o||vt(n.geometry),n})),l=c.filter(r);return a.applyEdits({addFeatures:l}).then(e=>{let{addFeatureResults:t}=e,n=0,r=c.map(e=>{let r=t[n++];return e?r:{error:new s(`orientedimageryviewer:save-unsucccessful`,`Error in saving data capture features`),objectId:null,globalId:null}});return{...e,addFeatureResults:r}})}async searchBestImage(e,t){try{let n=await j(e,t);n&&await this.processFeatureResponse(n,e.point,t)}catch(e){_(e)||(this.setMessage(`imageLoadError`,`error`,e.message),d.getLogger(this).error(`error occurred while finding best image`,e))}}selectTriangularMeasurementFeature(e){this.currentBestFeatureMeasurementImage=this.features?.find(({attributes:t})=>t.objectId===Number(e))}setAdditionalCameraLocationsVisibility(e){this.additionalCameraLocations.forEach(t=>{t.visible=e})}setAdditionalCoverageVisibility(e){this.additionalFootprints.forEach(t=>{t.visible=e})}setCurrentCoverageVisibility(e){this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.visible=e),this.currentBestFeatureLocation&&(this.currentBestFeatureLocation.visible=e)}setMapImageConversionToolState(e){this.mapImageConversionToolState=e}setCurrentPanoramaView(e,t){this._panoramicViewer?.set({yaw:e,pitch:t})}async restorePendingPanoramicNavigationViewState(e){let t=this._pendingPanoramicNavigationViewState;this._pendingPanoramicNavigationViewState=null,this.mode===`panoramic`&&await this._restoreNavigationViewState(t,e)}async startDataCapture(e,t){let n=this.activeViewer?.imageRenderer,{oiObjectIdField:r,currentBestFeature:i}=this;if(!n||!i||!r)return;let{attributes:{objectId:o}}=i,s=this.overlayedMapFeatures.get(e.id)?.toArray()??[],c=[],l=[];for(let e of s)`${e.getAttribute(r)}`==`${o}`?c.push(e):l.push(e);this.overlayGraphicsOnImage(e.id,new a(l)),this.collectionId=e.id;let u=await this.loadSketch(t),d=await this.loadDataCaptureAdapter(t);v(t),u.addGraphics(c),d.savedGraphics.addMany(c);let f=n.ui.find(`zoom`);f.visible=!1,n.map.layers.add(this.sketchGraphicsLayer)}async stopDataCapture(e=!1){this.sketch?.cancel(),this.sketchGraphicsLayer?.removeAll(),this.sketchAdapter=m(this.sketchAdapter),this.sketch=m(this.sketch),this.collectionId=null;let{dataCaptureLayer:t}=this,n=this.activeViewer?.imageRenderer;if(!n||n.destroyed)return;n.map.layers.remove(this.sketchGraphicsLayer),e&&t&&await this.overlayMapFeatures(t,!0);let r=n.ui.find(`zoom`);r&&(r.visible=!0)}stopMeasurement(){this.draw?.reset(),this.sketch?.cancel()}async toggleAllOverlayMapFeatures(e){!e&&this.dataCaptureLayer&&(await this.stopDataCapture(!0),this.dataCaptureLayer=null),this.overlayedMapFeatures.forEach(t=>{this._toggleVisiblity(t,e)})}toggleOverlayMapFeatures(e,t,n){let r=this.overlayedMapFeatures.get(e);r&&n&&this._toggleVisiblity(r,t)}toggleSelection(e){let{sketch:t}=this;t&&(t.updateOnGraphicClick=e,t.cancel())}async transformAndPlotReferencePointOnImage(e){let{feature:t,selectedLocation:n,options:r}=e,i=!1,a=!1,o=this.mode===`video`?this.bestFeatureCurrentFootprint?.geometry:this.bestFeatureFootprint?.geometry;switch(o?.type){case`polygon`:{let e=n.spatialReference.equals(o.spatialReference)?n:await k(n,o.spatialReference);i=o.contains(e);break}case`mesh`:{let e=n.spatialReference.equals(o.spatialReference)?n:await k(n,o.spatialReference);a=o.extent.contains(e);break}}if(!i&&!a){this.clearReferencePointOnImage();return}let s=this.mode===`video`||this.mode===`panoramic-video`?await this.getPixelLocationForFeature(n,{feature:t,mode:this.mode,imageSize:R,footprintExtent:this.footprintExtent},r):await this._transformationService.pointToPixel(n,r);if(!s)this.clearReferencePointOnImage();else return v(r),this.plotReferencePointOnImage(s),{x:s.x,y:s.y}}async updateFeatureCache(e){await this._videoFeatureCache.updateIndex(e),this._syncVideoFeatureCacheState()}cacheHydratedVideoFeature(e){this._videoFeatureCache.cacheHydratedFeature(e),this._syncVideoFeatureCacheState()}getCachedVideoFeatureByOffset(e,t){return this._videoFeatureCache.getCachedFeatureByOffset(e,t)}async getVideoFeatureByOffset(e,t,n){let{layer:r}=this;if(!r)return null;let i=await this._videoFeatureCache.getFeatureByOffset({layer:r,layerFloorFilterClause:this.layerFloorFilterClause,layerTimeExtent:this.layerTimeExtent},e,t,n);return this._syncVideoFeatureCacheState(),i}_shouldUseVerticalFilter(){return!!(this.layer?.verticalSearchRange&&this.layer.hasZ&&this.verticalFilterEnabled)}_shouldUseFrustumSearch(){return!!(this.layer?.hasZ&&this.frustumSearchEnabled&&this.view?.type===`3d`)}_syncVideoFeatureCacheState(){this.featureCache=this._videoFeatureCache.featureCache,this.videoFeatureIndex=this._videoFeatureCache.videoFeatureIndex}_matchesSelectedPointFilter({skipFilter:e,selectedPoint:t,filterByFrustum:n,cameraHeading:r,attributes:i,polygon:a}){return e||!t||(n?r!==B&&he(i,t):ge(a,t))}_plotReferencePointOnVideo(e){this.state===`video-loaded`&&this.videoViewModel?.videoPaused&&(this.clearReferencePointOnImage(),this.videoViewModel.plotReferencePointOnVideo(e))}_plotReferencePointOnPanoramicVideo(e){let n=this._panoramicVideoViewer,{imageSize:r,media:i}=n.viewModel;if(!this.panoramicVideoLoaded||!this.panoramicVideoPaused||!r)return;this.clearReferencePointOnImage();let a=X(i),o=Z(e,`panoramic`,r,a);this._referencePointOnImage=new t({geometry:o,symbol:J.clone()}),n.addGraphic(this._referencePointOnImage,0)}_getActiveFeatureForCurrentMode(){switch(this.mode){case`video`:return this.videoViewModel?.closestFeature??this.currentBestFeature;case`panoramic-video`:return this._panoramicVideoViewer.viewModel.closestFeature??this.currentBestFeature;default:return this.currentBestFeature}}_plotReferencePointOnDefaultImage(e){let n=this._imageViewer,{imageSize:r}=n;if(this.state!==`image-loaded`||!r)return;this.clearReferencePointOnImage();let i=Z(e,`default`,r);this._referencePointOnImage=new t({geometry:i,symbol:q.clone()}),n.addGraphic(this._referencePointOnImage,0)}_plotReferencePointOnPanoramicImage(e){let n=this._panoramicViewer,{imageSize:r,media:i}=n;if(this.state!==`image-loaded`||!r)return;this.clearReferencePointOnImage();let a=X(i),o=Z(e,`panoramic`,r,a);this._referencePointOnImage=new t({geometry:o,symbol:J.clone()}),n.addGraphic(this._referencePointOnImage,0)}async _fetchFeatures(e,t){let{layer:n,layerFloorFilterClause:r,layerTimeExtent:i,view:a}=this;if(!a)return;if(!n){this.setMessage(`noLayerSelected`,`info`);return}e.x=le(e.x,e.spatialReference);let o=n.spatialReference.equals(e.spatialReference)?e:await k(e,n.spatialReference),s=o.spatialReference.isGeographic?ue(o):o,c=T(`1=1`,T(n.definitionExpression,r)),l=s.spatialReference.isGeographic?1:E(s.spatialReference),u={layerInstanceOrURL:n,point:s,queryParams:{where:c,maximumDistance:n.maximumDistance?n.maximumDistance/l:void 0,timeExtent:i}};return await this.searchBestImage(u,t)}async _fetchFeaturesWithController(e,t){try{await this._fetchFeatures(e,t)}catch(e){if(_(e))return;this.setMessage(`imageLoadError`,`error`),d.getLogger(this).error(`error occurred while fetching features`,e)}}_groupFeaturesBySectors(){let{_suitabilities:e,additionalFeatures:t,features:n,invalidCameraHeading:r}=this,i=n.at(0);if(!e||!t||!i||!n||r){this._sectorData=null;return}this._sectorData={};let o={};this._featureToSector=o;for(let e of V)this._sectorData[e]=new a;let s=e.map((e,t)=>({...e,featureIndex:t}));s.sort((e,t)=>e.trueSuitability-t.trueSuitability);let c=s.map(({distance:e})=>e),l=Math.max(...c);s.forEach(e=>{let{distance:t,angle:r,featureIndex:a}=e,s=t/l*H[2],c=et(t,l),u=tt(r);if(!this._sectorData)return;let d=H[3]+s*Math.sin(r*Math.PI/180),f=H[3]+s*Math.cos(r*Math.PI/180),p,m=n.at(a),h=m===i,{cameraPitch:g}=m.attributes,_=g<5;if(h&&_)p=-90;else{let e=d-H[3],t=f-H[3],n=t/Math.sqrt(e**2+t**2),r=Math.acos(n)*180/Math.PI;(e<0&&t<0||e<0&&t>0)&&(r*=-1),p=r}let v=c===``?u:`${c}_${u}`;h&&(p===this.bestFeatureAngle?this.previousFeatureAngle=p:this.bestFeatureAngle=p,this.navigatorCurrentBestFeature=_?null:{x:d,y:f,direction:u}),o[`${m.attributes.objectId}`]=v;let y=this._sectorData[v];y.add({angle:r,featureIndex:a,x:d,y:f,objectID:m.attributes.objectId,sector:v,featureIndexInSector:y.length})})}async _initializeLocationViewModel(e){if(!this._locationViewModel){let{default:t}=await import(`./components/ImageLocationViewModel.js`);v(e),this._locationViewModel=new t({oiViewModel:this,referenceTransformationService:this._referenceTransformationService})}}_initializeMeasurementService(){this._measurementService||=new pt({transformationService:this._transformationService,referenceTransformationService:this._referenceTransformationService})}_initializeVideo(){if(!this.currentBestFeature)return;let e=at(this.currentBestFeature.attributes.imagePath),t=at(this.videoElement?.video);if(e&&t===e&&this.videoViewModel)return;this.videoLayer&&=(this.videoMapView.map.layers.remove(this.videoLayer),this.videoLayer.destroy(),null),this.videoViewModel=m(this.videoViewModel),this.removeHandles(Y.videoPlayerHandles),this.videoElement=new Ee({video:e??this.currentBestFeature.attributes.imagePath,georeference:new we({extent:new ae(Fe)}),autoplay:!1}),this.videoElement.content?.loop&&(this.videoElement.content.loop=!1);let n=new de({source:this.videoElement,title:this.layer?.title,copyright:this.layer?.copyright});this.videoLayer=n,n&&this.videoMapView.map.layers.add(n),this.videoViewModel=new ut({oiViewModel:this})}async getMapPoint(e,t){let n=await this._transformationService.pixelToMapPoint(Array.isArray(e)?e:[e],t);return Array.isArray(e)?n:n[0]}async getMapPointForFeature(e,t,n){let r=await this._transformationService.pixelToMapPointForFeature(Array.isArray(e)?e:[e],t,n);return Array.isArray(e)?r:r[0]}async loadPanoramicMediaSource(e,t){let{lookAt:n,...r}=e,i=Xe(r);try{await i.load(t)}catch(e){if(_(e))return;if(e.name===`unsupported-format`){this.setMessage(`unsupportedPanoramicImageryError`,`error`,void 0,{datasetFormat:i?.extension??`UNKNOWN FORMAT`});return}}let a=this.triangularMeasurementActive?this._panoramicMeasurementViewer:this._panoramicViewer;await a.loadMedia(i,t),n&&a.set(n)}async loadMediaSource(e,t){let n=Ze(e);await this._setImageSource(this.triangularMeasurementActive?this.imageMeasurementViewer:this._imageViewer,n,t)}_clearFeatureGeometries(){this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll()}_checkFeatures(e){return e?.length?!0:(this.emit(`no-image-found`),this.setMessage(`noImageError`,`error`),this.videoElement?.content?.pause(),this.currentBestFeature=null,!1)}async _getElevationSampleFromGround(e,t,n){if(!e[0])return;let{unionExecuteMany:r}=await import(`../../geometry/operators/unionOperator.js`),i=r(e);if(this._updateFootprintWithFeatures(t,i),this.view?.type===`3d`)try{return await this.view.map.ground.createElevationSampler(this.footprintExtent,n)}catch(e){if(_(e))throw e;d.getLogger(this).error(e);return}}async processElevationSample(e,t,n){let{elevationSource:r}=t[0].attributes,i=await this._getElevationSampleFromGround(e,t,n);if(this.view?.type===`3d`||i)return i;if(r&&this.footprintExtent&&_e(r))return await ye({extent:this.footprintExtent,lod:r.lod,url:r.url,rasterFunction:r.rasterFunction})}_processSuitableFeatures(e,t){return fe({features:e,selectedPoint:t,camera:Qe(this.view)?this.view.camera:null,currentImage:this.currentBestFeature})}async _processHitTestResults(e,t,n){let{results:[r]}=t;if(r?.type!==`graphic`){this.beforeLoad(!1),this.emit(`no-image-found`),this.setMessage(`noImageError`,`error`);return}let i=r.graphic.getAttribute(e.objectIdField);return await this.showImageByObjectId(i,n)}async _queryAndLoadByObjectId(e,t,n,r,i){this.displayMessage=null;let{response:a}=await ft(e,t,n,r,i);if(v(i),!a?.features?.length)throw new dt(t);let{attributes:o}=a.features[0],s,c;if(s=i?.selectedPoint?M(i.selectedPoint):void 0,!s){if(o.orientedImageryType?.includes(`360`)){s=M(o.geometry);let{cameraHeading:e,farDistance:t,nearDistance:n}=o,r=[Math.sin(p(e)),Math.cos(p(e))],i=(t+n)/2;c=E(s.spatialReference),s.x+=i*r[0]/c,s.y+=i*r[1]/c,s.z=void 0}else{let e=await this.processFeatureElevation(a.features,o.geometry.clone(),i);v(i),await this._updateElevationOfSelectedPointAndLocations(a.features,o.geometry.clone(),e??void 0,i),v(i);let t=U(o).polygon,n=O.fromJSON(se(t));s=M(n),c=E(s.spatialReference)}}this.selectedPoint=s,c=E(s.spatialReference);let l={layerInstanceOrURL:e,point:s,queryParams:{where:T(T(`1=1`,T(e.definitionExpression,n)),`${e.objectIdField} <> ${t}`),maximumDistance:e.maximumDistance?e.maximumDistance/c:void 0,timeExtent:r}},u=await j(l,i);v(i);let{features:d}=u;return d.push(a.features[0]),await this.processFeatureResponse(u,s,{...i,loadBestImage:!1})}_reorderTriangularSketchLayer(){let e=this.imageMeasurementViewer.imageRenderer.map.layers?.length;this.sketchTriangularGraphicsLayer&&e&&this.imageMeasurementViewer.imageRenderer.map.layers.reorder(this.sketchTriangularGraphicsLayer,e-1)}async _setImageSource(e,t,n){e.media=t,await e.loadMedia(t,n)}async _restoreNavigationViewState(e,t){let n=e?.center?await this._transformationService.pointToPixel(e.center,t):null;if(v(t),this.mode===`panoramic`){let t=X(this._panoramicViewer.media);if(!t)return;bt({viewState:e,panoramicViewer:this._panoramicViewer,horizonAngles:t,imageCenter:n})}xt({viewState:e,imageViewer:this._imageViewer,imageCenter:n})}_toggleVisiblity(e,t){e.forEach(e=>{e.visible=t})}async _updateElevationOfSelectedPointAndLocations(e,t,n,r){let{cameraHeight:i}=e[0].attributes,a=e[0].attributes.location,o=await P(a.spatialReference,a.z,i,{elevationSample:n,elevationSource:this.view?.type===`3d`||n?void 0:e[0].attributes.elevationSource,extent:this.footprintExtent},r);v(r);let[s,...c]=await ve([t,...e.map(e=>e.attributes.geometry.clone())],o);v(r),t.elevation=s.z,e.forEach((e,t)=>{e.attributes.elevation=c[t].z;let n=this.pointSources.find(t=>t.imageID===e.attributes.objectId);n&&(n.z=e.attributes.location.z)})}_updateFeatures(e,t=!0){e.length?(this.features.removeAll(),this.features.addMany(e),this.navigationNodes.removeAll(),this.navigationNodes.addMany(e.map(e=>{let{geometry:t,attributes:n}=e,{isSpherical:r,cameraHeading:i,cameraPitch:a}=n;return new lt({geometry:t,attributes:n,currentHeading:r?0:i,currentPitch:r?0:a})})),e.length>1?this.additionalFeatures.addMany(e.slice(1)):this.additionalFeatures.removeAll(),t&&(this.currentBestFeature=e[0])):(this.currentBestFeature=null,this.additionalFeatures.removeAll())}_updateFootprintWithFeatures(e,t){let n=[];for(let{attributes:{geometry:r}}of e)t.contains(r)||n.push([r.x,r.y]);n.sort((e,t)=>+ce([e,t])),t.addRing(n),this.footprintExtent=ke(t.extent,2,2)}_scheduleVideoInteractionUpdate(){this.scheduledFrameId||=requestAnimationFrame(()=>{this.scheduledFrameId=null,this._updateInteraction()})}async _updatePointsAndPolygons(e){let{pointSources:n,currentBestFeature:r,currentCoverageVisible:i,isAdditionalPointSourcesVisible:a,mode:o,layer:s}=this;if(r&&(this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.destroy(),this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null),!this.invalidCameraHeading)){await this._adapter?.createFootprints(e),v(e);for(let o of n){let n=this.view&&!this.view.spatialReference?.equals(o.spatialReference)?await k(o.clone(),this.view?.spatialReference,e):o.clone();o.imageID===r.attributes.objectId?this.currentBestFeatureLocation=new t({attributes:{imageID:o.imageID},geometry:n,symbol:He,visible:i}):this.additionalCameraLocations.push(new t({attributes:{imageID:o.imageID},geometry:n,symbol:Ue,visible:a}))}(o===`video`||o===`panoramic-video`)&&(await this.initializeTransformationService(e),s&&!this.videoFeatureIndex.length&&await this.updateFeatureCache(s),this.cacheHydratedVideoFeature(r))}}_scheduleCurrentBestFeatureUpdate(e){h(this._navigationViewStateTask);let t=i(async t=>{await this._updateCurrentBestFeature(e,{signal:t})});this._navigationViewStateTask=t,t.promise.catch(e=>{if(!_(e))throw e}).finally(()=>{this._navigationViewStateTask===t&&(this._navigationViewStateTask=null)})}async _updateCurrentBestFeature(e,t){if(!e)return;if(await this._capturePendingNavigationViewState(t),v(t),this.currentBestFeature=this.features?.at(e.featureIndex),this.mode===`video`){this.currentBestFeature&&this.videoViewModel?.playVideoFromSelectedLocation(this.currentBestFeature);return}if(this.mode===`panoramic-video`){this.currentBestFeature&&this._panoramicVideoViewer.viewModel.playPanoramicVideoFromSelectedLocation(this.currentBestFeature);return}let n=this.currentBestFeature?.attributes.cameraPitch&&this.currentBestFeature?.attributes.cameraPitch<5,r;if(n)r=-90;else{let t=e.x-H[3],n=e.y-H[3],i=n/Math.sqrt(t**2+n**2),a=Math.acos(i)*180/Math.PI;(t<0&&n<0||t<0&&n>0)&&(a*=-1),r=a}r===this.bestFeatureAngle?this.previousFeatureAngle=r:this.bestFeatureAngle=r,this.navigatorCurrentBestFeature=n?null:{x:e.x,y:e.y,direction:e.sector.includes(`_`)?e.sector.split(`_`)[1]:e.sector},this.mode===`panoramic`&&(await x(()=>this.state===`image-loaded`,t),v(t),await this.restorePendingPanoramicNavigationViewState(t))}async _capturePendingNavigationViewState(e){this.mode==="default"?await this._capturePendingDefaultNavigationViewState(e):this.mode===`panoramic`&&await this._capturePendingPanoramicNavigationViewState(e)}async _capturePendingDefaultNavigationViewState(e){try{let{imageSize:t,imageRenderer:n}=this._imageViewer,r=n.center;if(this.state!==`image-loaded`||!t[0]||!t[1]||!r){this._pendingDefaultNavigationViewState=null;return}let i=yt(r,`default`,t),a=await this._getMapPointInViewSpatialReference(i,e);v(e),this._pendingDefaultNavigationViewState={center:a,scale:n.scale}}catch(e){this._handlePendingNavigationViewStateCaptureError(e)}}async _capturePendingPanoramicNavigationViewState(e){let t=X(this._panoramicViewer.media);if(t)try{let{fov:n,imageSize:r,pitch:i,yaw:a}=this._panoramicViewer;if(this.state!==`image-loaded`||!r||!n){this._pendingPanoramicNavigationViewState=null;return}let[o,s]=Se(a,i,t),c=Ce(o,s,r[0],r[1]),l=await this._getMapPointInViewSpatialReference(c,e);v(e),this._pendingPanoramicNavigationViewState={center:l,fov:n}}catch(e){this._handlePendingNavigationViewStateCaptureError(e)}}_handlePendingNavigationViewStateCaptureError(e){if(_(e))throw e;d.getLogger(this).warn(`oriented-imagery-viewer:failed-to-capture-navigation-view-state`,e)}_updateImageMeasurementBestFeature(e){e&&(this.currentBestFeatureMeasurementImage=this.features?.at(e.featureIndex))}clearGraphics(){this._cameraOverlayTask=h(this._cameraOverlayTask),this._imageViewer.clearGraphics(),this._panoramicViewer.clearGraphics(),this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearGraphics()}clearReferencePointOnImage(){this._referencePointOnImage&&=(this._imageViewer.removeGraphic(this._referencePointOnImage),this._panoramicViewer.removeGraphic(this._referencePointOnImage),this._panoramicVideoViewer.removeGraphic(this._referencePointOnImage),m(this._referencePointOnImage)),this.videoViewModel?.clearReferencePointOnVideo()}async initializeReferenceTransformationService(e){let{currentBestFeatureMeasurementImage:t,activeTriangulatedViewer:n,mode:r}=this;if(!t||!n||!n.imageSize||r!==`panoramic`&&r!=="default")return;let{imageSize:i}=n,{attributes:a,elevationSample:o}=t,{cameraHeight:s,elevationSource:c}=a,l=a.location;l.spatialReference.isGeographic&&(l=M(l));let u={...r==="default"?F(a,i[0],i[1]):G(a,i[0],i[1]),cameraLocation:l},d=await P(l.spatialReference,l.z??0,s,{elevationSample:o,elevationSource:this.view?.type===`3d`?void 0:c,extent:this.footprintExtent},e),f=(await import(`./services/TransformationService.js`)).default,p={imageToWorldProperties:u,updateElevationProps:d,mode:r,imageSize:i,depthImageService:this.depthImage};this._referenceTransformationService=new f(p),this._locationViewModel&&(this._locationViewModel.referenceTransformationService=this._referenceTransformationService),this._measurementService&&(this._measurementService.referenceTransformationService=this._referenceTransformationService)}async initializeTransformationService(e){let{currentBestFeature:t,activeViewer:n,mode:r}=this,i=r===`video`||r===`panoramic-video`?R:n?.imageSize;if(!t||!i||r===`none`)return;let{attributes:a,elevationSample:o}=t,{cameraHeight:s,elevationSource:c}=a,l=a.location;l.spatialReference.isGeographic&&(l=M(l));let u=r==="default"||r===`video`?`default`:`panoramic`,d={...u==="default"?F(a,i[0],i[1]):G(a,i[0],i[1]),cameraLocation:l},f=await P(l.spatialReference,l.z??0,s,{elevationSample:o,elevationSource:this.view?.type===`3d`?void 0:c,extent:this.footprintExtent},e),p=(await import(`./services/TransformationService.js`)).default,m={imageToWorldProperties:d,updateElevationProps:f,mode:u,imageSize:i,depthImageService:this.depthImage};this._transformationService=new p(m),this._measurementService&&(this._measurementService.transformationService=this._transformationService)}plotReferencePoint(e){`mapPoint`in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}clearSelectedPointOnViewer(){this._crossSymbol?this.mode===`video`?(this.videoViewModel?.clearSelectedPointOnVideo(),this._crossSymbol=null):(this._panoramicViewer.removeGraphic(this._crossSymbol),this._imageViewer.removeGraphic(this._crossSymbol),this.videoMapView.graphics.remove(this._crossSymbol),this._crossSymbol=m(this._crossSymbol)):this.videoViewModel?.clearSelectedPointOnVideo()}setMessage(e,t,n,r){this.displayMessage={key:e,type:t,data:n,map:r}}async transformAndPlotSelectedLocation(e){let{invalidCameraHeading:t,selectedPoint:n,activeViewer:r,videoElement:i}=this,a=this.mode===`video`?this.videoViewModel?.closestFeature??this.currentBestFeature:this.currentBestFeature;this.clearSelectedPointOnViewer();let o=this.mode===`video`?i?.loaded===!0&&this.videoViewModel?.videoPaused===!0:r?.state===`image-loaded`;if(!n||!a||!o||t||this.mode===`video`&&!await ot(n,this.bestFeatureCurrentFootprint?.geometry,e))return;let s;try{if(s=this.mode===`video`?await this.getPixelLocationForFeature(n,{feature:a,mode:this.mode,imageSize:R,footprintExtent:this.footprintExtent},e):await this._transformationService.pointToPixel(n,{signal:e?.signal}),this.mode===`video`&&!st(s))return;v(e),await this.plotSelectedPointOnImage(s,e)}catch(e){_(e)||d.getLogger(this).error(`failed to transform map point to pixel, cross symbol will not be plotted on image`,{error:e,selectedPoint:n,feature:a})}}updateCurrentCoveragePolygon(e){let{additionalFootprints:n,additionalCameraLocations:r,currentBestFeature:i,currentBestFeatureLocation:a,currentCoverageVisible:o,selectedPoint:s,view:c}=this;if(!i)return;let{attributes:{objectId:l}}=i;if(this._initialCurrentCoverageUpdate){if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),e&&!this.invalidCameraHeading&&(e.visible=o,this.bestFeatureCurrentFootprint=e),c){let e=[...n,...r,a].filter($e);s&&(this.bestFeatureCurrentFootprint&&e.splice(-2,0,this.bestFeatureCurrentFootprint),e.push(new t({geometry:s.clone(),symbol:K.clone(),attributes:{imageID:l}}))),this._overlays.graphics.addMany(e)}}else if(c){if(this.invalidCameraHeading){this._superimposeService.clear();return}this.bestFeatureCurrentFootprint&&=(this._overlays?.remove(this.bestFeatureCurrentFootprint),m(this.bestFeatureCurrentFootprint));let t=this.bestFeatureCurrentFootprint&&this._overlays?this._overlays.graphics.indexOf(this.bestFeatureCurrentFootprint):-1;e&&(this.bestFeatureCurrentFootprint=e,e.visible=this.currentCoverageVisible,this._overlays?.graphics.add(this.bestFeatureCurrentFootprint,t>=0?t:this._overlays.graphics.length-1))}}_updateSuperimposedImage(){if(!this._hasActiveSuperimposeCameraContext())return;let e=this.mode===`panoramic`?this._panoramicViewer:null,{currentBestFeature:t,defaultSuperimposeCameraLockEnabled:n,layer:r,mode:i,view:a,state:o,superimposeViewEnabled:s,superimposeViewSupported:c,activeViewer:l,depthImage:u}=this,d=this.coverageFrustums.find(({imageID:e})=>e===t?.attributes.objectId);this._superimposeService.update({activeImageSize:l?.imageSize||void 0,adapter:this._adapter,currentBestFeature:t,currentBestFeatureFrustum:d,defaultSuperimposeCameraLockEnabled:n,depthImageLoaded:u?.loaded??!1,layer:r,mode:i,panoramicCamera:e?.camera,state:o,superimposeViewEnabled:s&&c,view:a}),this.setMessage(`superimposeImageDescription`,`info`),this._superimposePreviousCurrentCoverageVisible??=this.currentCoverageVisible,this.currentCoverageVisible=!1}_getSuperimposeCameraWatchState(){let e=(this.view?.type===`3d`?this.view:null)?.camera;return[this.superimposeViewEnabled,this.superimposeViewSupported,this.mode,this.state,this.view?.type,this.view?.interacting,this.view?.navigating,e?.heading,e?.tilt,e?.fov,e?.position.x,e?.position.y,e?.position.z]}_handleSuperimposeCameraChange(){let e=this.view,t=e?.type===`3d`?e:null;this._hasActiveSuperimposeCameraContext()?this.mode===`panoramic`?this._schedulePanoramicSuperimposeUpdate():!t||t.interacting||t.navigating?this._abortSuperimposeSchedule():this._scheduleDefaultSuperimposeUpdate():this._abortSuperimposeSchedule()}_shouldDisableUnsupportedSuperimposeView(){return this.superimposeViewEnabled&&this.mode===`panoramic`&&!this.superimposeViewSupported}_hasActiveSuperimposeCameraContext(){return(this.mode==="default"||this.mode===`panoramic`)&&this.superimposeViewEnabled&&this.superimposeViewSupported&&this.state===`image-loaded`&&this.view?.type===`3d`&&!!this.view.camera}_abortSuperimposeSchedule(){this._superimposeScheduleController?.abort(),this._superimposeScheduleController=null,this._clearSuperimposeDebounceTimeout(),this._clearSuperimposeScheduledFrame()}_resetInactiveSuperimposeState(){let e=this._superimposePreviousCurrentCoverageVisible!=null;this._abortSuperimposeSchedule(),this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),this._superimposeService.clear(),this._restoreCurrentCoverageVisibilityAfterSuperimpose(),this._restoreDefaultMessageAfterSuperimpose(),e&&this._restoreViewerMediaAfterSuperimpose()}_restoreCurrentCoverageVisibilityAfterSuperimpose(){this._superimposePreviousCurrentCoverageVisible!=null&&(this.currentCoverageVisible=this._superimposePreviousCurrentCoverageVisible,this._superimposePreviousCurrentCoverageVisible=null)}_restoreViewerMediaAfterSuperimpose(){let{currentBestFeature:e,mode:t}=this;if(!e||t!=="default"&&t!==`panoramic`)return;this._restoreSuperimposeMediaTask?.abort();let n=i(async t=>{await this._loadCurrentFeatureMedia(e,{signal:t})});this._restoreSuperimposeMediaTask=n,n.promise.finally(()=>{this._restoreSuperimposeMediaTask===n&&(this._restoreSuperimposeMediaTask=null)})}_restoreDefaultMessageAfterSuperimpose(){this.displayMessage?.key===`superimposeImageDescription`&&(this.currentBestFeature&&(this.mode==="default"||this.mode===`panoramic`)?this.displayMessage=null:this.setMessage(`onLoadMessage`,`info`))}_clearSuperimposeDebounceTimeout(){this.superimposeDebounceTimeoutId!=null&&(clearTimeout(this.superimposeDebounceTimeoutId),this.superimposeDebounceTimeoutId=null)}_clearSuperimposeScheduledFrame(){this.superimposeScheduledFrameId!=null&&(cancelAnimationFrame(this.superimposeScheduledFrameId),this.superimposeScheduledFrameId=null)}_schedulePanoramicSuperimposeUpdate(){this._abortSuperimposeSchedule(),this.superimposeDebounceTimeoutId=window.setTimeout(()=>{this.superimposeDebounceTimeoutId=null,this._hasActiveSuperimposeCameraContext()&&this.mode===`panoramic`&&this._updateSuperimposedImage()},150)}_scheduleDefaultSuperimposeUpdate(){let e=this.view;if(!(e?.type===`3d`&&e)||this.superimposeScheduledFrameId)return;this._superimposeScheduleController?.abort();let t=new AbortController,{signal:n}=t,r=()=>{this._clearSuperimposeDebounceTimeout(),this._clearSuperimposeScheduledFrame(),this._superimposeScheduleController===t&&(this._superimposeScheduleController=null),n.removeEventListener(`abort`,r)};this._superimposeScheduleController=t,n.addEventListener(`abort`,r),this.superimposeScheduledFrameId=requestAnimationFrame(()=>{if(n.removeEventListener(`abort`,r),this.superimposeScheduledFrameId=null,this._superimposeScheduleController===t&&(this._superimposeScheduleController=null),n.aborted)return;let e=this.view,i=e?.type===`3d`?e:null;this._hasActiveSuperimposeCameraContext()&&i!=null&&!i.interacting&&!i.navigating&&this._updateSuperimposedImage()})}};e([D()],$.prototype,`activeLayer`,null),e([D({readOnly:!0})],$.prototype,`activeViewer`,null),e([D()],$.prototype,`activeTriangulatedViewer`,null),e([D()],$.prototype,`accuracyParametersMissing`,null),e([D()],$.prototype,`additionalFeatures`,void 0),e([D({type:a.ofType(t)})],$.prototype,`additionalCameraLocations`,void 0),e([D({type:a.ofType(t)})],$.prototype,`additionalFootprints`,void 0),e([D()],$.prototype,`areaMeasurementResult`,void 0),e([D()],$.prototype,`areaMeasurementAccuracy`,void 0),e([D()],$.prototype,`bestFeatureAngle`,void 0),e([D()],$.prototype,`bestFeatureCurrentFootprint`,void 0),e([D({type:t})],$.prototype,`bestFeatureFootprint`,void 0),e([D({type:Number})],$.prototype,`brightness`,null),e([D()],$.prototype,`cameraHeadingThreshold`,void 0),e([D()],$.prototype,`cameraPitchThreshold`,void 0),e([D()],$.prototype,`clickAction`,void 0),e([D()],$.prototype,`correctedLocationPointOnImage`,void 0),e([D()],$.prototype,`videoViewModel`,void 0),e([D()],$.prototype,`collectionId`,void 0),e([D({type:Number})],$.prototype,`contrast`,null),e([D()],$.prototype,`coverageFrustums`,void 0),e([D()],$.prototype,`coveragePolygons`,void 0),e([D()],$.prototype,`currentBestFeature`,void 0),e([D()],$.prototype,`currentBestFeatureMeasurementImage`,void 0),e([D()],$.prototype,`currentBestFeatureLocation`,void 0),e([D()],$.prototype,`currentCoverageVisible`,void 0),e([D()],$.prototype,`currentNode`,null),e([D()],$.prototype,`depthImage`,void 0),e([D()],$.prototype,`depthImageNotSupported`,null),e([D()],$.prototype,`featureCache`,void 0),e([D()],$.prototype,`videoFeatureIndex`,void 0),e([D()],$.prototype,`navigationNodes`,void 0),e([D({json:{write:!1}})],$.prototype,`determineWorkflowForFeature`,void 0),e([D({json:{write:!1}})],$.prototype,`determineWorkflowForTriangularMeasurement`,void 0),e([D()],$.prototype,`disabled`,void 0),e([D()],$.prototype,`displayMessage`,void 0),e([D()],$.prototype,`displayNewMeasurementButton`,void 0),e([D()],$.prototype,`distanceMeasurementResult`,void 0),e([D()],$.prototype,`distanceAccuracyArray`,void 0),e([D()],$.prototype,`dataCaptureLayer`,void 0),e([D({readOnly:!0})],$.prototype,`featureCount`,null),e([D()],$.prototype,`features`,void 0),e([D()],$.prototype,`groundCoordinates`,void 0),e([D()],$.prototype,`groundCoordinatesAccuracy`,void 0),e([D()],$.prototype,`groundCoordinatesAccuracyLoading`,void 0),e([D()],$.prototype,`hasPendingPanoramicNavigationViewState`,null),e([D()],$.prototype,`heightGraphic`,void 0),e([D()],$.prototype,`heightMeasurementResult`,void 0),e([D()],$.prototype,`heightMeasurementAccuracy`,void 0),e([D({readOnly:!0})],$.prototype,`imageGalleryEnabled`,null),e([D()],$.prototype,`imageGeometryField`,void 0),e([D({readOnly:!0})],$.prototype,`imageLoaded`,null),e([D()],$.prototype,`imageLocationToolState`,void 0),e([D()],$.prototype,`initialVideoMapViewExtent`,void 0),e([D({readOnly:!0})],$.prototype,`invalidCameraHeading`,null),e([D()],$.prototype,`imagePointsInView`,null),e([D()],$.prototype,`imageMeasurementViewer`,void 0),e([D()],$.prototype,`isAdditionalCoverageVisible`,void 0),e([D()],$.prototype,`isAdditionalPointSourcesVisible`,void 0),e([D()],$.prototype,`layer`,void 0),e([D()],$.prototype,`layerView`,null),e([D({readOnly:!0})],$.prototype,`layerFloorFilterClause`,null),e([D({readOnly:!0})],$.prototype,`layerTimeExtent`,null),e([D({type:Number})],$.prototype,`localPort`,void 0),e([D()],$.prototype,`locationPointOnImage`,void 0),e([D()],$.prototype,`mapImageConversionToolState`,void 0),e([D()],$.prototype,`measureType`,void 0),e([D()],$.prototype,`measurementGraphic`,void 0),e([D({readOnly:!0,value:`none`})],$.prototype,`mode`,null),e([D()],$.prototype,`navigationMode`,void 0),e([D()],$.prototype,`navigatorCurrentBestFeature`,void 0),e([D()],$.prototype,`oiObjectIdField`,void 0),e([D({type:a.ofType(t)})],$.prototype,`overlayedCameraLocations`,void 0),e([D()],$.prototype,`overlayedMapFeatures`,void 0),e([D()],$.prototype,`panoramicVideoLoaded`,null),e([D()],$.prototype,`panoramicVideoPaused`,null),e([D()],$.prototype,`pixelCoordinates`,void 0),e([D()],$.prototype,`preserveAngle`,void 0),e([D()],$.prototype,`pointSources`,void 0),e([D({readOnly:!0})],$.prototype,`popupEnabled`,null),e([D()],$.prototype,`preloadMedia`,void 0),e([D()],$.prototype,`preloadMediaSize`,void 0),e([D()],$.prototype,`previousFeatureAngle`,void 0),e([D()],$.prototype,`referencePoint`,null),e([D({readOnly:!0})],$.prototype,`sectorData`,null),e([D()],$.prototype,`selectedPoint`,void 0),e([D({type:Number})],$.prototype,`sharpness`,null),e([D()],$.prototype,`shouldShowSelectedImage`,void 0),e([D()],$.prototype,`superimposeViewEnabled`,void 0),e([D()],$.prototype,`defaultSuperimposeCameraLockEnabled`,void 0),e([D()],$.prototype,`superimposeViewSupported`,null),e([D()],$.prototype,`sketch`,void 0),e([D()],$.prototype,`sketchTriangular`,void 0),e([D()],$.prototype,`sketchTriangularGraphicsLayer`,void 0),e([D()],$.prototype,`draw`,void 0),e([D()],$.prototype,`drawAdapter`,void 0),e([D()],$.prototype,`polylineDrawAction`,void 0),e([D()],$.prototype,`scheduledFrameId`,void 0),e([D()],$.prototype,`superimposeScheduledFrameId`,void 0),e([D()],$.prototype,`superimposeDebounceTimeoutId`,void 0),e([D()],$.prototype,`sketchAdapter`,void 0),e([D({readOnly:!0})],$.prototype,`sketchGraphicsLayer`,null),e([D({readOnly:!0})],$.prototype,`state`,null),e([D({readOnly:!0})],$.prototype,`thumbnails`,null),e([D()],$.prototype,`videoExtentPoints`,null),e([D()],$.prototype,`triangularMeasurementActive`,void 0),e([D()],$.prototype,`triangulatedDistanceMeasurement`,void 0),e([D()],$.prototype,`triangulatedDistanceAccuracy`,void 0),e([D()],$.prototype,`triangulatedAreaMeasurement`,void 0),e([D()],$.prototype,`triangulatedAreaAccuracy`,void 0),e([D()],$.prototype,`triangulatedMeasurementGraphic`,void 0),e([D()],$.prototype,`triangulatedPoint`,void 0),e([D()],$.prototype,`triangulatedMeasurementAdapter`,void 0),e([D()],$.prototype,`updateFootprint`,void 0),e([D()],$.prototype,`updateVideoFootprint`,void 0),e([D()],$.prototype,`updateFootprintPanorama`,void 0),e([D()],$.prototype,`updatingTriangularMeasurementState`,void 0),e([D({value:null})],$.prototype,`view`,null),e([D()],$.prototype,`videoElement`,void 0),e([D()],$.prototype,`videoLayer`,void 0),e([D()],$.prototype,`videoMapView`,void 0),e([D()],$.prototype,`verticalFilterEnabled`,void 0),e([D()],$.prototype,`frustumSearchEnabled`,void 0),e([D()],$.prototype,`_adapter`,void 0),e([D()],$.prototype,`_defaultGraphicsLayer`,null),e([D()],$.prototype,`_highlightedFeatureHandle`,void 0),e([D()],$.prototype,`_imageViewer`,void 0),e([D()],$.prototype,`_initialCurrentCoverageUpdate`,void 0),e([D()],$.prototype,`_locationViewModel`,void 0),e([D()],$.prototype,`_measurementService`,void 0),e([D()],$.prototype,`_mediaPrefetcher`,void 0),e([D()],$.prototype,`_navigationManager`,void 0),e([D()],$.prototype,`_overlays`,void 0),e([D()],$.prototype,`_superimposePreviousCurrentCoverageVisible`,void 0),e([D()],$.prototype,`_superimposeService`,void 0),e([D({readOnly:!0})],$.prototype,`_overlaysView`,null),e([D()],$.prototype,`_panoramicVideoViewer`,void 0),e([D()],$.prototype,`_panoramicViewer`,void 0),e([D()],$.prototype,`_panoramicMeasurementViewer`,void 0),e([D()],$.prototype,`_referencePointOnGround`,void 0),e([D()],$.prototype,`_referencePointOnImage`,void 0),e([D()],$.prototype,`_referenceTransformationService`,void 0),e([D()],$.prototype,`_sectorData`,void 0),e([D()],$.prototype,`_transformationService`,void 0),e([D()],$.prototype,`_featureToSector`,void 0),e([D({readOnly:!0})],$.prototype,`_updatingHandles`,void 0),e([D()],$.prototype,`footprintExtent`,void 0),e([D()],$.prototype,`_featureChangedTask`,void 0),$=e([ne(`esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel`)],$);const Tt=$;export{Tt as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{equals as n,isSome as r}from"../../core/arrayUtils.js";import{createTask as i}from"../../core/asyncUtils.js";import a from"../../core/Collection.js";import{deprecatedProperty as o}from"../../core/deprecate.js";import s from"../../core/Error.js";import{EventedMixin as c}from"../../core/Evented.js";import{makeHandle as l}from"../../core/handleUtils.js";import{equalsShallow as u}from"../../core/lang.js";import d from"../../core/Logger.js";import{clamp as f,deg2rad as p}from"../../core/mathUtils.js";import{destroyMaybe as m,abortMaybe as h}from"../../core/maybe.js";import{EsriPromise as g}from"../../core/Promise.js";import{isAbortError as _,throwIfAborted as v,waitTick as y}from"../../core/promiseUtils.js";import b from"../../core/ReactiveMap.js";import{whenOnce as x,on as S,watch as C,syncAndInitial as w,initial as ee,when as te}from"../../core/reactiveUtils.js";import{sqlAnd as T}from"../../core/sql.js";import{getMetersPerUnitForSR as E}from"../../core/units.js";import{property as D,subclass as ne}from"../../core/accessorSupport/decorators.js";import{isSerializable as re}from"../../core/support/jsonUtils.js";import{UpdatingHandles as ie}from"../../core/support/UpdatingHandles.js";import ae from"../../geometry/Extent.js";import O from"../../geometry/Point.js";import{projectAsync as k}from"../../geometry/projectionUtils.js";import oe from"../../geometry/SpatialReference.js";import{polygonCentroidPoint as se}from"../../geometry/support/centroid.js";import{isClockwise as ce}from"../../geometry/support/coordsUtils.js";import{normalizeMapX as le}from"../../geometry/support/normalizeUtils.js";import{geographicToWebMercator as ue}from"../../geometry/support/webMercatorUtils.js";import A from"../../layers/GraphicsLayer.js";import de from"../../layers/MediaLayer.js";import{searchImages as j}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as fe}from"../../layers/orientedImagery/core/bestImageUtils.js";import{computePolygonForInspection as pe,resizePolygon as me,checkIfFrustumContainsSelectedPoint as he,checkIfPolygonContainsSelectedPoint as ge}from"../../layers/orientedImagery/core/coverageUtils.js";import{isElevationSource as _e}from"../../layers/orientedImagery/core/ElevationSourceDefinitions.js";import{convertGeographicToWebMercator as M}from"../../layers/orientedImagery/core/utils.js";import ve from"../../layers/orientedImagery/transformations/updateElevation.js";import{getElevationSampler as ye}from"../../layers/orientedImagery/transformations/updateElevationUtils.js";import{or as be,getInitialAngle as N,convertPixelLocationToSphereVertex as xe,getUpdateElevationProps as P,adjustHorizonAngles as Se,convertOrientationToPixelLocation as Ce,getImageToWorldProperties as F}from"../../layers/orientedImagery/transformations/utils.js";import we from"../../layers/support/ExtentAndRotationGeoreference.js";import{getFloorFilterClause as Te}from"../../layers/support/floorFilterUtils.js";import Ee from"../../layers/support/VideoElement.js";import De from"../../views/MapView.js";import Oe from"../../views/draw/Draw.js";import{scale as ke}from"../../views/draw/support/drawUtils.js";import{ViewEventPriorities as Ae}from"../../views/input/InputManager.js";import je from"../PanoramicVideoViewer.js";import I from"../PanoramicViewer.js";import{defaultAngleThresholdInDegrees as L,videoMapViewConstraint as Me,fixedImageSize as R,clockwiseDirections as Ne,videoFitScaleTolerance as Pe,videoExtent as z,invalidCameraHeading as B,sectorsInOrder as V,sampleExtent as Fe,sectorsRadii as H}from"./constants.js";import{createFeatureCoverage as U}from"./featureCoverage.js";import{isFeatureAttachment as W}from"./galleryUtils.js";import{getPanoramicImageProperties as G}from"./panoramicImageProperties.js";import{crossSymbol as K,crossSymbol3D as Ie,measurementPolygonSymbol as Le,polylineSymbolPanoramic as Re,measurementPolylineSymbol as ze,cameraOverlaySymbol3D as Be,cameraOverlaySymbol as Ve,diamondSymbol as q,diamondSymbol3D as J,activeSourcePointSymbol as He,sourcePointSymbol as Ue}from"./symbols.js";import{registryKeys as Y}from"./types.js";import{isNoAttachmentError as We,extractHorizonAnglesFromMedia as X,isDepthImage as Ge,isTifOrMrf as Ke,filterOILLayerView as qe,assignElevationSampleToFeatures as Je,filterByZ as Ye,createPanoramicMedia as Xe,createNonPanoramicMedia as Ze,isSceneView as Qe,isGraphic as $e,calculateSegment as et,calculateDirection as tt}from"./utils.js";import{disableVideoZoomAndPan as nt,getUpdatedConstraints as rt,getUpdatedExtentPoints as it,normalizeVideoSource as at,isSelectedPointWithinVideoFootprint as ot,isVideoPixelWithinFrame as st}from"./videoViewerUtils.js";import ct from"./components/ImageViewer.js";import lt from"./components/NavigationNode.js";import ut from"./components/OrientedImageryVideoViewModel.js";import{NoFeatureFoundWithObjectIdError as dt}from"./navigation/errors.js";import{queryFeatureByObjectIds as ft}from"./navigation/queries.js";import{ImageMeasurementService as pt}from"./services/ImageMeasurementService.js";import mt from"./services/SuperimposeService.js";import{configureSketchTool as ht,extractFieldsFromDataCaptureLayer as gt,constructGraphicFromImageGeometry as _t}from"./support/dataCaptureUtils.js";import{removeZFromGeometry as vt,imageSpaceToPoint as Z,pointToImageSpace as yt}from"./support/geometryUtils.js";import{restorePanoramicNavigationViewState as bt,restoreDefaultNavigationViewState as xt}from"./support/navigationViewStateUtils.js";import St from"./support/resolveMediaProps.js";import{isValidDataCaptureLayer as Ct}from"./support/typeUtils.js";import wt from"./support/VideoFeatureCache.js";const Q=()=>new s(`orientedimageryviewer:sketch-not-initialized`,`Sketch property is not initialized, call loadSketch first`);let $=class extends c(g){constructor(e){super(e),this.additionalFeatures=new a,this.additionalCameraLocations=new a,this.additionalFootprints=new a,this.areaMeasurementResult=0,this.areaMeasurementAccuracy=0,this.bestFeatureAngle=0,this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null,this.cameraHeadingThreshold=L,this.cameraPitchThreshold=L,this.clickAction=`hittest`,this.correctedLocationPointOnImage=null,this.videoViewModel=null,this.collectionId=null,this.coverageFrustums=new a,this.coveragePolygons=new a,this.currentBestFeature=null,this.currentBestFeatureMeasurementImage=null,this.currentBestFeatureLocation=null,this.currentCoverageVisible=!0,this.depthImage=null,this.featureCache=[],this.videoFeatureIndex=[],this.navigationNodes=new a,this.determineWorkflowForFeature=async(e,t,n)=>{let{currentBestFeature:r,selectedPoint:i}=this;if(this.emit(`popup-close`),r&&i){this.displayMessage=null,this._initialCurrentCoverageUpdate=!0;try{await this._updatePointsAndPolygons(n),await this._loadDepthImage(n),await this._loadCurrentFeatureMedia(r,n)}catch(e){_(e)||(this.loadImageError(e),d.getLogger(this).error(`#loadIImage()`,`error occured while loading image`,e))}}},this.determineWorkflowForTriangularMeasurement=async(e,t,n)=>{if(this.emit(`popup-close`),this.currentBestFeatureMeasurementImage&&this.selectedPoint)try{await this._loadMeasurementViewerImage(n)}catch(e){_(e)||(this.loadImageError(e),d.getLogger(this).error(`#loadIImage()`,`error occured while loading image`,e))}},this.disabled=!1,this.displayMessage={key:`onLoadMessage`,type:`info`},this.displayNewMeasurementButton=!0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.dataCaptureLayer=null,this.features=new a,this.groundCoordinates=null,this.groundCoordinatesAccuracy=null,this.groundCoordinatesAccuracyLoading=!1,this.heightGraphic=null,this.heightMeasurementResult=0,this.heightMeasurementAccuracy=0,this.imageGeometryField=null,this.imageLocationToolState=!1,this.initialVideoMapViewExtent=null,this.imageMeasurementViewer=new ct,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.layer=null,this.localPort=null,this.locationPointOnImage=null,this.mapImageConversionToolState=!1,this.measureType=null,this.measurementGraphic=null,this.navigatorCurrentBestFeature=null,this.oiObjectIdField=null,this.overlayedCameraLocations=new a,this.overlayedMapFeatures=new b,this.pixelCoordinates=null,this.preserveAngle=`none`,this.pointSources=new a,this.preloadMedia=!1,this.preloadMediaSize=5,this.previousFeatureAngle=0,this.selectedPoint=null,this.shouldShowSelectedImage=!1,this.superimposeViewEnabled=!1,this.defaultSuperimposeCameraLockEnabled=!0,this.sketch=null,this.sketchTriangular=null,this.sketchTriangularGraphicsLayer=null,this.draw=null,this.drawAdapter=null,this.polylineDrawAction=null,this.scheduledFrameId=null,this.superimposeScheduledFrameId=null,this.superimposeDebounceTimeoutId=null,this.sketchAdapter=null,this.triangularMeasurementActive=!1,this.triangulatedDistanceMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaMeasurement=null,this.triangulatedAreaAccuracy=0,this.triangulatedMeasurementGraphic=null,this.triangulatedPoint=null,this.triangulatedMeasurementAdapter=null,this.updateFootprint=async(e,t,n)=>{(this.mode!=="default"||this.state===`image-loaded`)&&await this._adapter?.updateFootprint(e,t,n)},this.updateVideoFootprint=async e=>{this.mode.includes(`video`)&&this.videoElement?.content&&await this._adapter?.updateVideoFootprint(e)},this.updateFootprintPanorama=async(e,t)=>{await this._adapter?.updateFootprintPanorama(e,t)},this.updatingTriangularMeasurementState=!1,this.videoElement=null,this.videoLayer=null,this.videoMapView=new De({map:new Map,attributionVisible:!1,constraints:Me}),this.verticalFilterEnabled=!1,this.frustumSearchEnabled=!1,this._adapter=null,this._highlightedFeatureHandle=null,this._imageViewer=new ct,this._initialCurrentCoverageUpdate=!0,this._locationViewModel=null,this._measurementService=null,this._mediaPrefetcher=null,this._navigationManager=null,this._overlays=new A({listMode:`hide`,internal:!0,elevationInfo:{mode:`absolute-height`},title:`OrentedImageryViewerViewModel overlays layer`}),this._superimposePreviousCurrentCoverageVisible=null,this._superimposeService=new mt({getMapPoint:(e,t)=>this.getMapPoint(e,t),getPanoramicTransformationState:()=>{let{imageToWorldProperties:e,mode:t,updateElevationProps:n}=this._transformationService;return t!==`panoramic`||!e?null:{imageToWorldProperties:e,updateElevationProps:n}},pointToPixel:(e,t)=>this._transformationService.pointToPixel(e,t),overlays:this._overlays,getPointAtDistance:(e,t,n)=>this._transformationService.pixelToPointAtDistance(e,t,n)}),this._panoramicVideoViewer=new je,this._panoramicViewer=new I,this._panoramicMeasurementViewer=new I,this._referencePointOnGround=null,this._referencePointOnImage=null,this._referenceTransformationService=null,this._sectorData=null,this._transformationService=null,this._featureToSector=null,this._updatingHandles=new ie,this._clickTask=null,this._crossSymbol=null,this._cameraOverlayTask=null,this.footprintExtent=null,this._featureChangedTask=null,this._mediaPrefetchTask=null,this._navigationViewStateTask=null,this._pendingPanoramicNavigationViewState=null,this._restoreSuperimposeMediaTask=null,this._superimposeScheduleController=null,this._suitabilities=null,this._pendingDefaultNavigationViewState=null,this._transformController=new AbortController,this._updateFootprintTask=null,this._videoFeatureCache=new wt,this.addUpdatingPromise=e=>this._updatingHandles.addPromise(e),this.filterCapturedFeatures=e=>{let t=this.currentBestFeature?.attributes.objectId,n=this.layer?.imageReferenceField;t&&e&&n&&this.overlayedMapFeatures.get(e)?.forEach(e=>{let r=e.attributes??{},i=Object.keys(r).find(e=>e.toLowerCase()===n.toLowerCase());(i?r[i]:null)!==t&&(e.visible=!e.visible)})},this.hideImageGeometry=e=>{},this.highlight=e=>{if(!this._overlaysView)return;this.removeHighlight();let t=this.additionalFootprints.find(({attributes:{imageID:t}})=>t===Number(e));this._highlightedFeatureHandle=t?this._overlaysView?.highlight(t):null},this.loadDataCaptureAdapter=async e=>{await this.loadSketch(e);let{default:t}=await import(`./adapters/sketch/DataCaptureAdapter.js`);return v(e),this.sketchAdapter=new t({viewModel:this}),this.sketchAdapter},this.loadImageFromFeature=(e,t,n)=>this._updatingHandles.addPromise(this._loadImageFromFeature(e,t,n)),this.storeImageMeasurementViewer=e=>{this.imageMeasurementViewer=e},this.storePanoramicMeasurementViewer=e=>{this._panoramicMeasurementViewer=e},this.loadImageViewer=e=>{this._imageViewer?.destroy(),this._imageViewer=e},this.loadPanoramicViewer=e=>{this._panoramicViewer?.destroy(),this._panoramicViewer=e},this.loadPanoramicVideoViewer=e=>{this._panoramicVideoViewer?.destroy(),this._panoramicVideoViewer=e},this.loadVideoViewer=e=>{this.videoMapView.container=e},this.showImageByObjectId=async(e,t)=>{let n=this.additionalFeatures.find(({attributes:t})=>t.objectId===e);if(n&&t?.selectedPoint==null)this.currentBestFeature=n;else{let{layer:n,layerFloorFilterClause:r,layerTimeExtent:i}=this;if(!n){this.setMessage(`noLayerSelected`,`info`);return}this.beforeLoad();let a=this._updatingHandles.addPromise(this._queryAndLoadByObjectId(n,e,r,i,t));try{await a,await this.selectBestFeature(e,t)}catch(t){_(t)||(d.getLogger(this).error(`oriented-imagery-viewer:show-image`,t),t.name===`NoFeatureFoundWithObjectIdError`?this.setMessage(`noFeatureFoundWithObjectId`,`error`,``,{objectId:e}):this.setMessage(`imageLoadError`,`error`,t.message))}}},this.getSectorFeatureById=e=>this._suitabilities?.find(({feature:{attributes:{objectId:t}}})=>t===e),this.getFeatureSectorById=e=>this._featureToSector?.[`${e}`],this.navigate=async(e,t)=>{let{mode:n}=this;if(n!=="default"&&n!==`panoramic`)throw new s(`NavigationError`,`Navigation is only supported in 'default' and 'panoramic' modes.`);if(this._pendingDefaultNavigationViewState=null,this._pendingPanoramicNavigationViewState=null,this._navigationManager==null||!(e=>n==="default"&&e.declaredClass.endsWith(`NavigationManager`)||n===`panoramic`&&e.declaredClass.endsWith(`NavigationManagerPanoramic`))(this._navigationManager)){m(this._navigationManager);let e=n==="default"?import(`./navigation/NavigationManager.js`):import(`./navigation/NavigationManagerPanoramic.js`);this._navigationManager=new(await e).default({viewModel:this})}return this._navigationManager.navigate(e,t)},this.removeHighlight=()=>this._highlightedFeatureHandle?.remove(),this.revealImageGeometry=e=>{},this.selectBestFeature=async(e,t)=>(v(t),this.currentBestFeature=this.features?.find(({attributes:t})=>`${t.objectId}`==`${e}`),x(()=>{switch(this.mode){case`video`:return this.state===`video-loaded`;case`panoramic-video`:return this.panoramicVideoLoaded;default:return this.state===`image-loaded`}},t)),this.toggleImageAttributes=()=>{let{currentBestFeature:e,popupEnabled:n,layer:r,view:i}=this;if(this.emit(`popup-close`),!i||!e||!n||!r)return;let{attributes:a,geometry:o}=e,s=new t({geometry:o,attributes:a.toJSON(),origin:r.graphicOrigin,sourceLayer:r});this.emit(`popup-open`,{features:[s],location:a.location.clone()})},this.updateSuitabilities=(e,t=!0)=>{e.sort((e,t)=>e.suitability-t.suitability),this._suitabilities=e;let n=this._suitabilities.map(({feature:e})=>e);this._initialCurrentCoverageUpdate=!0,this._updateFeatures(n,t),this._groupFeaturesBySectors()},this._computeOverlayImageSize=()=>{let{mode:e}=this;return e===`video`?R:e===`panoramic-video`?this._panoramicVideoViewer.imageSize:this.activeViewer?.imageSize},this._geometryToOverlayImageGeometry=async(e,t,n,r)=>{let{mode:i,videoViewModel:a,_panoramicVideoViewer:o}=this;if(i===`video`)return await a?.geometryToOverlayGeometry(e,t,r)??null;if(i===`panoramic-video`){let a={feature:t,mode:i,imageSize:n,footprintExtent:this.footprintExtent};return await this._transformationService.geometryToImageGeometryForFeature(e,a,o.horizonAngles,r)}return await this._transformationService.geometryToImageGeometry(e,r)},this._createViewClickHandle=()=>{if(this.removeHandles(Y.click),this.disabled||this.view==null)return;let e=this.mapImageConversionToolState&&(this.state===`image-loaded`||this.state===`video-loaded`&&this.mode===`video`&&this.videoViewModel?.videoPaused||this.panoramicVideoLoaded&&this.mode===`panoramic-video`&&this.panoramicVideoPaused)?this._mapImageConversionToolViewClickHandler:this._viewClickHandler;this.addHandles(this.view.on(`click`,e,Ae.DEFAULT),Y.click)},this._createImageClickHandle=()=>{this.removeHandles(Y.imageClick),this.videoViewModel?.syncMapImageConversionHandle();let{mapImageConversionToolState:e,mode:t,footprintExtent:n,panoramicVideoLoaded:r}=this,a=t===`panoramic-video`?this._panoramicVideoViewer:this.activeViewer,o=a?.imageSize;if(!e||t===`none`||t===`video`||!o||!n)return;let s=t===`panoramic-video`,c=this._getActiveFeatureForCurrentMode(),u=!s||r&&this.panoramicVideoPaused;if(!c||!u)return;let d=a.clickAction;this.clickAction=`pixel-location`;let f=l(()=>{this.clickAction=d}),p=null,m=S(()=>a,`pixel-location`,e=>{this.plotReferencePointOnImage(e),p?.abort(),p=i(async r=>{if(!e)return;let i=this._getActiveFeatureForCurrentMode();if(!i)return;let a={feature:i,mode:t,imageSize:o,footprintExtent:n},c=s?await this.getMapPointForFeature(e,a,{signal:r}):await this._transformationService.pixelToMapPoint(e),l=this.view?.spatialReference;c&&!be(!l,c.spatialReference.equals(l))&&(c=await k(c,l,{signal:r})),v(r),this.plotReferencePointOnGround(c)})});this.addHandles([m,f],Y.imageClick)},this._createTriangularImageClickHandle=()=>{this.removeHandles(Y.triangularImageClick),this.triangularMeasurementActive&&this.mode!==`none`&&this.currentBestFeature&&this.currentBestFeatureMeasurementImage&&this.activeTriangulatedViewer&&this.addHandles(this.activeTriangulatedViewer.imageRenderer.on(`double-click`,this._measurementImageClickHandler),Y.triangularImageClick)},this._enablePan=()=>{this.removeHandles(Y.videoPanHandles)},this._disablePan=()=>{this.removeHandles(Y.videoPanHandles),this.addHandles(nt(this.videoMapView),Y.videoPanHandles)},this._handleImageHitTestResponse=async e=>{let{layer:t,overlayedCameraLocations:n}=this;if(!t)return;let r=e.results.find(({graphic:e,graphic:{attributes:r}})=>n.includes(e)&&r&&!r[t.imageReferenceField]&&!r[t.imageGeometryField]);if(!r)return;let i=r.graphic.attributes[t.objectIdField];await this.showImageByObjectId(i)},this._loadCurrentFeatureMedia=async(e,t)=>{this.mode===`video`?await this._loadFlatVideo(e,t):this.mode===`panoramic-video`?await this._loadVideo(t):await this._loadImage(t)},this._loadFlatVideo=async(e,t)=>{this._initializeVideo(),this.videoViewModel?.playVideoFromSelectedLocation(e);let n=e.attributes.objectId;this._waitForFlatVideoAndPlotSelectedLocation(e,n,t)},this._waitForFlatVideoAndPlotSelectedLocation=async(e,t,n)=>{try{if(await x(()=>this.videoElement?.loaded===!0,n),`${this.currentBestFeature?.attributes.objectId}`!=`${t}`)return;await this.transformAndPlotSelectedLocation(n)}catch(t){_(t)||d.getLogger(this).error(`failed to plot selected point on video`,{error:t,selectedPoint:this.selectedPoint,feature:e})}},this._loadDepthImage=async e=>{let{currentBestFeature:t,layer:n,depthImageNotSupported:r}=this;if(this.depthImage?.destroy(),this.depthImage=null,!n||!t||r)return;let{depthImage:i}=t.attributes;if(!i)return;let a=(await import(`./services/DepthImageService.js`)).default;v(e),this.depthImage=new a({url:i});try{await this.depthImage.load(e)}catch(e){_(e)||(d.getLogger(this).error(`error occurred while loading depth image`,e),this.depthImage?.destroy(),this.depthImage=null)}},this._loadImage=async e=>{let{currentBestFeature:t,layer:n,mode:r}=this,i=this._pendingDefaultNavigationViewState;if(this._pendingDefaultNavigationViewState=null,this.clearGraphics(),n&&t&&r!==`none`&&r!==`video`&&r!==`panoramic-video`)try{if(await this.loadImageFromFeature(n,t,e),v(e),i)try{await this._restoreNavigationViewState(i,e)}catch(e){if(_(e))throw e;d.getLogger(this).warn(`oriented-imagery-viewer:failed-to-restore-navigation-view-state`,e)}await this.transformAndPlotSelectedLocation(e)}catch(e){_(e)||this.loadImageError(e)}},this._loadVideo=async e=>{let{currentBestFeature:t,mode:n,selectedPoint:r}=this,i=t?.attributes.imagePath;if(!t||n!==`panoramic-video`||!i)return;let{attributes:a}=t,{cameraPitch:o,cameraOrientation:s,location:c}=a,l=c.spatialReference.isWGS84&&s?.type!==4?ue(c):new O(c);try{this._panoramicVideoViewer.viewModel.video&&(this._panoramicVideoViewer.viewModel.video.pause(),this._panoramicVideoViewer.viewModel.videoPaused=!0),this._panoramicVideoViewer.videoSource=i;let t=0;l&&r&&(t=await N(l,r)-t),this._panoramicVideoViewer.pitch=o??0,this._panoramicVideoViewer.yaw=t,await this._panoramicVideoViewer.loadVideo(e),v(e)}catch(e){_(e)||this.loadImageError(e)}},this._loadImageFromFeature=async(e,t,n)=>{let{mode:r}=this;if(r!=="default"&&r!==`panoramic`)return;let i;try{i=await St(t.attributes,e,n),v(n)}catch(n){if(_(n))return;if(We(n)){d.getLogger(this).error(n),this.setMessage(`noAttachment`,`error`,`${e.objectIdField}: ${t.attributes.objectId}`);return}d.getLogger(this).error(n,{[e.objectIdField]:t.attributes.objectId,layer:e}),this.setMessage(`imageLoadError`,`error`,`query-attachments-failed:${e.objectIdField} ${t.attributes.objectId}`);return}if(!i)return;let{mediaUrl:a,datasetFormat:o,rotation:s,searchParams:c,location:l,cameraHeading:u,matrix:f,cameraPitch:p,getDataSetFormatError:m}=i,h=`${t.attributes.objectId}`;try{let i=this._mediaPrefetcher?.getCachedMedia(h);if(!i){let n=this.navigationNodes.find(e=>e.id===t.attributes.objectId);if(n){try{await this._mediaPrefetcher?.startPrefetchForNode(n,e)}catch{}i=this._mediaPrefetcher?.getCachedMedia(h)}}if(i){if(r===`panoramic`){let e=this.triangularMeasurementActive?this._panoramicMeasurementViewer:this._panoramicViewer,r=0;l&&this.selectedPoint&&(r=await N(l,this.selectedPoint)-r),await e.loadMedia(i,n),this.selectedPoint?e.set({yaw:r,pitch:p}):`viewAngle`in t.attributes&&Number.isFinite(t.attributes.viewAngle)&&e.set({yaw:t.attributes.viewAngle,pitch:p}),this.triangularMeasurementActive?await this.initializeReferenceTransformationService(n):await this.initializeTransformationService(n);return}await this._setImageSource(this.triangularMeasurementActive?this.imageMeasurementViewer:this._imageViewer,i,n),this.triangularMeasurementActive?await this.initializeReferenceTransformationService(n):await this.initializeTransformationService(n);return}}catch{}m&&d.getLogger(this).warn(`error occurred while getting dataset format`,m),r===`panoramic`?await this.loadPanoramicMediaSource({lookAt:{yaw:this.selectedPoint?await N(l,this.selectedPoint):`viewAngle`in t.attributes&&Number.isFinite(t.attributes.viewAngle)?t.attributes.viewAngle:0,pitch:p},extension:o?.toUpperCase(),url:a,cameraHeading:u,matrix:f},n):await this.loadMediaSource({datasetFormat:o?.toUpperCase(),url:a,customParameters:c,rotation:s},n),this.triangularMeasurementActive?await this.initializeReferenceTransformationService(n):await this.initializeTransformationService(n)},this._loadMeasurementViewerImage=async e=>{let{currentBestFeatureMeasurementImage:t,layer:n,mode:r}=this;if(this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearGraphics(),n&&t&&r!==`none`&&r!==`video`&&r!==`panoramic-video`)try{await this.loadImageFromFeature(n,t,e),v(e)}catch(e){_(e)||this.loadImageError(e)}},this._loadMediaPrefetcher=async e=>{if(!this._mediaPrefetcher){let{default:t}=await import(`./support/MediaPrefetcher.js`);v(e),this._mediaPrefetcher=new t({maxEntries:this.preloadMediaSize*Ne.length})}return this._mediaPrefetcher},this._loadViewAdapter=async e=>{let{view:t}=this;if(this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),!t)this._adapter=null;else switch(t.type){case`2d`:{let{default:t}=await import(`./adapters/view/MapViewAdapter.js`);v(e),this._adapter=new t(this);break}case`3d`:{let{default:t}=await import(`./adapters/view/SceneViewAdapter.js`);v(e),this._adapter=new t(this);break}}},this._mapImageConversionToolViewClickHandler=e=>{if(e.stopPropagation(),e.preventDefault(),e.mapPoint){let t=e.mapPoint;t.x=le(t.x,t.spatialReference),this.plotMapPoint(e.mapPoint)}},this._measurementImageClickHandler=e=>{e.stopPropagation(),e.preventDefault();let{sketchTriangular:t,triangularMeasurementActive:n,currentBestFeatureMeasurementImage:r,triangulatedMeasurementGraphic:i}=this;t&&n&&r&&i&&t.state!==`active`&&(t.update([i],{tool:`reshape`}),this.updatingTriangularMeasurementState=!0)},this._updateInteraction=()=>{let e=this.videoMapView.extent;if(!e)return;let{minScale:t}=this.videoMapView.constraints,n=this.videoMapView.scale<t-Pe,r=rt(e);n&&r?(this._enablePan(),this.videoMapView.constraints.geometry=r):n?(this._disablePan(),this.videoMapView.constraints.geometry=null):(this.initialVideoMapViewExtent&&!this.videoMapView.extent.equals(this.initialVideoMapViewExtent)&&(this.videoMapView.extent=this.initialVideoMapViewExtent),this._disablePan(),this.videoMapView.constraints.geometry=null)},this._viewClickHandler=e=>{this._clickTask?.abort(),this._clickTask=i(async t=>{let{pointerType:n,button:r,mapPoint:i}=e;if(n===`mouse`&&r!==0||!i)return;e.stopPropagation(),e.preventDefault();let{view:a,layer:o}=this;if(a){if(!o)this.setMessage(`noLayerSelected`,`info`);else{if(this.shouldShowSelectedImage){let n=a.hitTest(e,{include:[o]});this._updatingHandles.addPromise(n);let r=await n;return v(t),await this._processHitTestResults(o,r,{signal:t})}return this._updatingHandles.addPromise(this.loadBestImage(i,{signal:t}))}}})},this.plotSelectedPointOnImage=async(e,n)=>{if(await y(n),!e)return;let r=new O({...re(e)?e.toJSON():e});if(this.mode==="default")r.x-=.5,r.y=.5-r.y,r.spatialReference=this._imageViewer.imageRenderer.spatialReference.clone(),this._crossSymbol=new t({geometry:r,symbol:K}),this._imageViewer.addGraphic(this._crossSymbol,0);else if(this.mode===`video`)this._crossSymbol=this.videoViewModel?.plotSelectedPointOnVideo(r)??null;else if(this.mode===`panoramic`){let{imageSize:n,media:r}=this._panoramicViewer;if(!n||!r)return;let i=X(r),a=xe(e,...n,i);this._crossSymbol=new t({geometry:new O(a,oe.WebMercator),symbol:Ie}),this._panoramicViewer.addGraphic(this._crossSymbol,0)}},this.handleSectorClick=this.handleSectorClick.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this)}initialize(){this.addHandles([C(()=>this.view,()=>this.load(),w),C(()=>this.view?.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},ee),C(()=>this.view?.map?.allLayers?.length,e=>{e&&this.view?.map?.layers.reorder(this._overlays,e-1)},ee),C(()=>[this.state,this.panoramicVideoLoaded,this.mapImageConversionToolState,this.view,this.disabled,this.panoramicVideoPaused,this.videoViewModel?.videoPaused],(e,t)=>{let n=e[2];t?.[2]&&!n&&(this.plotReferencePointOnGround(null),this.clearReferencePointOnImage()),this._createViewClickHandle(),this._createImageClickHandle()},w),C(()=>[this.triangularMeasurementActive,this.currentBestFeatureMeasurementImage],()=>{this._createTriangularImageClickHandle()},w),C(()=>[this.state,this.imageLocationToolState,this.view],()=>{this._initializeMeasurementService(),this._initializeLocationViewModel()},w),C(()=>this.measureType,()=>{this.clearPreviousMeasurements(),this._initializeMeasurementService()},w),C(()=>this.bestFeatureAngle,(e,t)=>{this.previousFeatureAngle=t??0},w),C(()=>[this.superimposeViewEnabled,this.defaultSuperimposeCameraLockEnabled,this.superimposeViewSupported,this.currentBestFeature,this.mode,this.state,this.view?.type],()=>{this._shouldDisableUnsupportedSuperimposeView()?this.superimposeViewEnabled=!1:this._hasActiveSuperimposeCameraContext()?this._updateSuperimposedImage():this._resetInactiveSuperimposeState()},w),C(()=>this._getSuperimposeCameraWatchState(),()=>this._handleSuperimposeCameraChange(),w),C(()=>this.currentBestFeature,async(e,t)=>{h(this._featureChangedTask),this._featureChangedTask=i(async n=>this.determineWorkflowForFeature.apply(this,[e,t,{signal:n}])),await this._featureChangedTask.promise},{sync:!0}),C(()=>[this.currentNode,this.preloadMedia,this.navigationMode],()=>{this._mediaPrefetchTask?.abort(),this._mediaPrefetchTask=i(async e=>{this.preloadMedia&&this.navigationMode!=null?(this._mediaPrefetcher??=await this._loadMediaPrefetcher({signal:e}),v(e),this.navigationMode===`directional`?this._mediaPrefetcher.enqueueDirectionalPrefetch(this.layer,this.currentNode,this.preloadMediaSize):this._mediaPrefetcher.enqueueSequentialPrefetch(this.layer,this.currentNode,this.preloadMediaSize)):this._mediaPrefetcher?.clear()})},w),C(()=>this.currentBestFeatureMeasurementImage,(e,t)=>{h(this._featureChangedTask),t&&e!==t&&(this.triangulatedPoint=null,this.sketchTriangularGraphicsLayer?.graphics.destroyAll(),this._measurementService?.resetMeasurementVectors()),this._featureChangedTask=i(async n=>{await this.determineWorkflowForTriangularMeasurement(e,t,{signal:n}),v(n),this._reorderTriangularSketchLayer()})},w),C(()=>this.triangularMeasurementActive,(e,t)=>{t&&!e&&(this._measurementService?.resetMeasurementVectors(),this.currentBestFeatureMeasurementImage=null,this.triangulatedDistanceMeasurement=null,this.triangulatedMeasurementGraphic=null,this.triangulatedPoint=null,this.updatingTriangularMeasurementState=!1,this.triangulatedAreaMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaAccuracy=0,this.sketchTriangularGraphicsLayer?.graphics.destroyAll(),this.clearReferencePointOnImage(),this.imageMeasurementViewer.clearImage(),this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearImage(),this._panoramicMeasurementViewer.clearGraphics())}),C(()=>this.mode,e=>{switch(this.removeHandles(Y.interactionHandles),e){case`default`:this.addHandles(C(()=>{let{state:e}=this;return e===`image-loaded`?this._imageViewer.imagePointsInView:null},e=>{e&&(h(this._updateFootprintTask),this._updateFootprintTask=i(async t=>{await this.updateFootprint(e,void 0,{signal:t})}))},{...w,equals:(e,t)=>n(e,t,u)}),Y.interactionHandles);break;case`video`:this.addHandles(C(()=>{let{footprintExtent:e,videoElement:t,bestFeatureFootprint:n}=this;if(e&&t?.loaded&&n)return{videoExtent:z,bestFeatureFootprint:n}},e=>{e?.videoExtent&&e?.bestFeatureFootprint&&(h(this._updateFootprintTask),this._updateFootprintTask=i(async t=>{let n={points:e.videoExtent,feature:void 0,scale:void 0,options:{signal:t}};await this.updateVideoFootprint(n)}))},{...w,equals:(e,t)=>n(e?.videoExtent,t?.videoExtent,u)&&e?.bestFeatureFootprint===t?.bestFeatureFootprint}),Y.interactionHandles);break;case`panoramic`:this.addHandles(C(()=>{let{currentBestFeature:e,state:t,_panoramicViewer:n}=this,{imageSize:r,vfov:i,hfov:a,pitch:o,yaw:s}=n;return!e||!r||t.includes(`loading`)||i==null||a==null||o==null||s==null?null:[i,a,s,o]},e=>{if(!e||this.state.includes(`loading`))return;let[t,n,r,a]=e;this.currentNode&&(this.currentNode.currentHeading=r,this.currentNode.currentPitch=a),h(this._updateFootprintTask),this._updateFootprintTask=i(async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:n,yaw:r,pitch:a},{signal:e}),this._updateFootprintTask=null})},{equals:(e,t)=>n(e,t,u)}),Y.interactionHandles);break;case`panoramic-video`:this.addHandles(C(()=>{let{currentBestFeature:e,state:t,_panoramicVideoViewer:n}=this,{imageSize:r,vfov:i,hfov:a,pitch:o,yaw:s,viewModel:c}=n,l=c.closestFeature??e;return!l||!r||t.includes(`loading`)||i==null||a==null||o==null||s==null?null:[i,a,s,o,l]},e=>{if(!e)return;let[t,n,r,a,o]=e;h(this._updateFootprintTask),this._updateFootprintTask=i(async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:n,yaw:r,pitch:a,feature:o,horizonAngles:this._panoramicVideoViewer.horizonAngles},{signal:e}),v(e),this._updateFootprintTask=null})},{equals:(e,t)=>n(e,t,u)}),Y.interactionHandles)}},w),C(()=>[this.brightness,this.contrast,this.sharpness],()=>{let{_imageViewer:e,brightness:t,contrast:n,mode:r,sharpness:i}=this;r==="default"&&(e.brightness=t,e.contrast=n,e.sharpness=i)},w),C(()=>this.activeViewer?.imageRenderer,()=>{this.sketch&&(this.sketch.view=this.activeViewer?.imageRenderer)}),C(()=>this.activeViewer,e=>{this.removeHandles(Y.hittestHandles),e&&this.addHandles(S(()=>e,`hittest-response`,this._handleImageHitTestResponse),Y.hittestHandles)}),C(()=>this.videoMapView.extent,async()=>{this._scheduleVideoInteractionUpdate();let e=this.videoViewModel?.closestFeature;e&&(h(this._updateFootprintTask),this._updateFootprintTask=i(async t=>{let n={points:this.videoExtentPoints,feature:e,options:{signal:t}};await this.updateVideoFootprint(n)}))}),C(()=>[this.videoMapView.interacting,this.videoMapView.navigating,this.videoMapView.scale],()=>{this._scheduleVideoInteractionUpdate()},{initial:!0}),te(()=>this.videoMapView.extent!=null,()=>{this.initialVideoMapViewExtent=this.videoMapView.extent},{once:!0})]),this.when().finally(()=>{this.notifyChange(`state`)})}destroy(){this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),this._abortSuperimposeSchedule(),this.currentBestFeature=null,this._updateFootprintTask=h(this._updateFootprintTask),this._clickTask=h(this._clickTask),this._cameraOverlayTask=h(this._cameraOverlayTask),this._navigationViewStateTask=h(this._navigationViewStateTask),this._restoreSuperimposeMediaTask=h(this._restoreSuperimposeMediaTask),this.coverageFrustums.destroy(),this.coveragePolygons.destroy(),this.pointSources.destroy(),this.additionalFootprints.destroy(),this.additionalCameraLocations.destroy(),this.bestFeatureFootprint=m(this.bestFeatureFootprint),this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),this.videoViewModel=m(this.videoViewModel),this._locationViewModel=m(this._locationViewModel),this.clearSelectedPointOnViewer(),this._referencePointOnGround=m(this._referencePointOnGround),this.clearReferencePointOnImage(),this._superimposeService.destroy(),this._overlays&&this.view?.map?.remove(this._overlays),this._overlays.destroy(),this._imageViewer.destroy(),this.imageMeasurementViewer.destroy(),this._panoramicViewer.destroy(),this._panoramicVideoViewer.destroy(),this._panoramicMeasurementViewer.destroy(),this._mediaPrefetcher?.destroy(),this._videoFeatureCache.destroy()}get activeLayer(){return o(d.getLogger(this),`activeLayer`,{replacement:`layer`}),this.layer}set activeLayer(e){o(d.getLogger(this),`activeLayer`,{replacement:`layer`}),this.layer=e}get activeViewer(){let{_imageViewer:e,_panoramicViewer:t,mode:n}=this;switch(n){case`default`:return e;case`panoramic`:return t;default:return null}}get activeTriangulatedViewer(){switch(this.mode){case`default`:return this.imageMeasurementViewer;case`panoramic`:return this._panoramicMeasurementViewer;default:return null}}get accuracyParametersMissing(){let e=this.currentBestFeature?.attributes.orientationAccuracy;return!e||e.every(e=>e===0)}get brightness(){return this._get(`brightness`)??0}set brightness(e){this._set(`brightness`,f(e,-10,10))}get contrast(){return this._get(`contrast`)??0}set contrast(e){this._set(`contrast`,f(e,-10,10))}get currentNode(){let{currentBestFeature:e,navigationNodes:t}=this;return t.find(t=>t.id===e?.attributes.objectId)}get depthImageNotSupported(){if(this.currentBestFeature?.attributes.depthImage)return!Ge(this.currentBestFeature.attributes.depthImage)}get featureCount(){return this.features?.length??0}get hasPendingPanoramicNavigationViewState(){return this._pendingPanoramicNavigationViewState!=null}get imageGalleryEnabled(){let{currentBestFeature:e}=this;if(!e)return!1;let t=e.attributes.imagePath?.trim();return Ke(t)||W(t)}get imageLoaded(){return o(d.getLogger(this),`imageLoaded`,{replacement:`Use OrientedImageryViewer.state === "image-loaded"`,version:`4.29`,warnOnce:!0}),this.state===`image-loaded`}get invalidCameraHeading(){return this.currentBestFeature?.attributes?.cameraHeading===B}get imagePointsInView(){let{mode:e,_imageViewer:t}=this;return e==="default"?t.imagePointsInView:null}get layerView(){let{layer:e,view:t}=this;if(e&&t)return t.allLayerViews.find(qe(e))}get layerFloorFilterClause(){let{layerView:e}=this;return e?Te(e):null}get layerTimeExtent(){return this.layerView?.timeExtent??null}get mode(){let e=this.currentBestFeature?.attributes;if(!e)return`none`;let t=e.orientedImageryType;if(t?.includes(`video`))return t.includes(`360`)?`panoramic-video`:`video`;let{horizontalFieldOfView:n,isSpherical:r}=e;return n===360||r?`panoramic`:`default`}get panoramicVideoLoaded(){let{mode:e,_panoramicVideoViewer:t}=this,{videoLoaded:n}=t.viewModel;return e===`panoramic-video`&&n===!0}get overlayGraphicsEnabled(){let{mode:e,state:t,panoramicVideoLoaded:n,videoViewModel:r,panoramicVideoPaused:i}=this;return t===`image-loaded`||e===`video`&&t===`video-loaded`&&r?.videoPaused===!0||e===`panoramic-video`&&n&&i}get panoramicVideoPaused(){return!!this._panoramicVideoViewer.viewModel.videoPaused}get popupEnabled(){return this.layer?.popupEnabled===!0}get referencePoint(){return this._referencePointOnGround?.geometry}get sectorData(){let{_sectorData:e}=this;return e?V.map(t=>e[t]):null}get sharpness(){return this._get(`sharpness`)??0}set sharpness(e){this._set(`sharpness`,f(e,0,1))}get superimposeViewSupported(){return this.mode==="default"||this.mode===`panoramic`}get sketchGraphicsLayer(){let{sketch:e}=this;return e?.layer?.type===`graphics`?e.layer:void 0}get state(){let{mode:e,_updatingHandles:{updating:t},_featureChangedTask:n,_navigationManager:r}=this;if(!this.isFulfilled()||t||n?.finished===!1||r?.navigating)return`loading`;if(this.isRejected())return`error`;if(this.displayMessage?.type===`error`)return`image-load-error`;switch(e){case`default`:return this._imageViewer.state;case`panoramic`:return this._panoramicViewer.state;case`video`:return this.videoElement?.loaded?`video-loaded`:`video-not-loaded`;case`panoramic-video`:return this.panoramicVideoLoaded?`video-loaded`:`video-not-loaded`}return`ready`}get thumbnails(){let{features:e}=this;return e?new a(e.map(({attributes:{imagePath:e,objectId:t,cameraRoll:n,imageRotation:r}})=>{let i=e?.trim();return Ke(i)||W(i)?{url:i,objectId:t,rotation:(n??0)+(r??0)}:null}).filter(r)):null}get videoExtentPoints(){let e=it(this.videoMapView.extent);return e.length?e:z}set view(e){this._set(`view`,e)}get _defaultGraphicsLayer(){let e={blendMode:`source-atop`};switch(this.mode){case`panoramic`:return new A({...e,elevationInfo:{mode:`absolute-height`}});case`default`:return new A({...e});default:return}}get _overlaysView(){return this.view?.layerViews.find(({layer:e})=>e===this._overlays)}updatePanoramicSuperimposeRadiusOffset(e){this._superimposeService.updatePanoramicRadiusOffset(e)}setDefaultSuperimposeZOffsetPercentage(e){this._superimposeService.setDefaultZOffsetPercentage(e)}setFrustumSearchEnabled(e){this.frustumSearchEnabled=e}setPanoramicSuperimposeRadiusPercentage(e){this._superimposeService.setPanoramicRadiusPercentage(e)}updateDefaultSuperimposeCameraLock(e){this.defaultSuperimposeCameraLockEnabled=e,this.superimposeViewEnabled&&this.mode==="default"&&(e?this._adapter?.enableDefaultSuperimposeNavigation?.():this._adapter?.disableDefaultSuperimposeNavigation?.())}beforeLoad(e=!0){this.emit(`popup-close`),e&&(this.displayMessage=null),this._pendingDefaultNavigationViewState=null,this._pendingPanoramicNavigationViewState=null,this._abortSuperimposeSchedule(),this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),this.clearPreviousGroundLocation(),this.triangularMeasurementActive=!1,this.currentBestFeatureMeasurementImage=null,this.measureType=null,this.imageLocationToolState=!1,this.features.removeAll(),this.currentBestFeature=null,this.additionalFeatures.removeAll(),this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),this._restoreSuperimposeMediaTask=h(this._restoreSuperimposeMediaTask),this._superimposeService.clear(),this._overlays?.removeAll()}async calculateLocationAccuracy(e){return this._measurementService?.calculateLocationAccuracy(e)}clearLocationPointOnImage(e=!1){this.locationPointOnImage&&!e&&(this._imageViewer.removeGraphic(this.locationPointOnImage),this._panoramicViewer.removeGraphic(this.locationPointOnImage),this.locationPointOnImage=m(this.locationPointOnImage)),this.correctedLocationPointOnImage&&=(this.imageMeasurementViewer.removeGraphic(this.correctedLocationPointOnImage),this._panoramicMeasurementViewer.removeGraphic(this.correctedLocationPointOnImage),m(this.correctedLocationPointOnImage))}clearPreviousMeasurements(){this.clearMeasurementGraphics(),this.resetMeasurementData(),this.stopMeasurement()}clearPreviousGroundLocation(){this.groundCoordinates=null,this.groundCoordinatesAccuracy=null,this.groundCoordinatesAccuracyLoading=!1,this.pixelCoordinates=null,this.clearLocationPointOnImage()}clearMeasurementGraphics(){this.measurementGraphic&&=(this.activeViewer?.removeGraphic(this.measurementGraphic),null),this.heightGraphic&&=(this.activeViewer?.removeGraphic(this.heightGraphic),null),this.triangularMeasurementActive&&this.sketchTriangularGraphicsLayer?.graphics.destroyAll()}digitizeCancel(){return this.sketch?.cancel()}digitizeCanRedo(){return this.sketch?.canRedo()??!1}digitizeCanUndo(){return this.sketch?.canUndo()??!1}digitizeComplete(){return this.sketch?.complete()}async digitizeCreate(e,t){let{sketch:n,dataCaptureLayer:r}=this;if(!n)throw Q();ht(r,e,n),await n.create(e,{...t,defaultZ:0})}digitizeDelete(){if(!this.sketch)throw Q();return this.sketch.delete()}digitizeDuplicate(){if(!this.sketch)throw Q();return this.sketch.duplicate()}digitizePlace(e,t){if(!this.sketch)throw Q();return this.sketch.place(e,t)}digitizeRedo(){if(!this.sketch)throw Q();return this.sketch.redo()}digitizeUndo(){if(!this.sketch)throw Q();return this.sketch.undo()}digitizeUpdate(e,t){if(!this.sketch)throw Q();return this.sketch.update(e,t)}filterByFootprints(e,t,n){let r=n?.filterByFrustum??!1,i=n?.skipFilter??!1,a=[],o=[],s=[];return e.forEach(e=>{let{attributes:n}=e,c=e.layer?.coveragePercent,l,{polygon:u,frustum:d}=U(n);l=u.clone(),n.isInspection&&(l=pe(n)),c&&(l=me(l,c));let{cameraHeading:f,objectId:p}=n;if(this._matchesSelectedPointFilter({skipFilter:i,selectedPoint:t,filterByFrustum:r,cameraHeading:f,attributes:n,polygon:l})){s.push(e);let t=n.location.clone();t.imageID=p,this.pointSources.push(t),f!==B&&(a.push(u),d&&o.push(d))}}),{features:s,polygons:a,frustums:o}}async deleteDataCaptureFeatures(e){let{dataCaptureLayer:t}=this;if(!t)throw new s(`orientedimageryviewer:missing-featurelayer`,`Data capture layer is not available`);return t.queryFeatures({objectIds:e,outFields:[t.objectIdField]}).then(({features:e})=>t.applyEdits({deleteFeatures:e}))}handleSectorClick(e){if(isNaN(e))return;let t=(this._sectorData?.[V[e]])?.at(0);t&&(this.triangularMeasurementActive&&this.currentBestFeature?this._updateImageMeasurementBestFeature(t):this._scheduleCurrentBestFeatureUpdate(t))}handleFeatureClick(e){let{sector:t,featureIndexInSector:n}=e;if(isNaN(n))return;let r=(this._sectorData?.[t])?.at(n);r&&(this.triangularMeasurementActive&&this.currentBestFeature?this._updateImageMeasurementBestFeature(r):this._scheduleCurrentBestFeatureUpdate(r))}load(e){return this.addResolvingPromise(this._loadViewAdapter(e).catch(e=>{if(!_(e))throw e})),this}async loadBestImage(e,t){return this.selectedPoint=M(e),this.beforeLoad(),this._fetchFeaturesWithController(e,t)}async loadHeightMeasurementAdapter(e){if(!this.drawAdapter){let{default:t}=await import(`./adapters/draw/HeightMeasurementAdapter.js`);if(v(e),this.drawAdapter=new t({viewModel:this,measurementService:this._measurementService}),!this.drawAdapter.viewModel.isResolved())return}return this.drawAdapter}loadImageError(e){d.getLogger(this).error(`oriented-imagery-viewer:load-image`,e),this.setMessage(`imageLoadError`,`error`,e.message)}async loadSketch(e){if(!this.sketch){let{default:t}=await import(`../Sketch/SketchViewModel.js`);v(e),this.sketch=new t({layer:this._defaultGraphicsLayer,view:this.activeViewer?.imageRenderer,updateOnGraphicClick:!1,defaultUpdateOptions:{reshapeOptions:{edgeOperation:`none`,shapeOperation:`none`,vertexOperation:void 0},enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,multipleSelectionEnabled:!1,toggleToolOnClick:!1,tool:`transform`}})}return this.sketch}async loadMeasurementAdapter(e){if(!this.sketchAdapter){let{default:t}=await import(`./adapters/sketch/MeasurementAdapter.js`);if(v(e),this.sketchAdapter=new t({viewModel:this,measurementService:this._measurementService}),!this.sketchAdapter.viewModel.isResolved())return}return this.sketchAdapter}async processFeatureResponse(e,t,n){let{features:r}=e,i=this.layer?.verticalSearchRange,a=this._shouldUseVerticalFilter(),o=this._shouldUseFrustumSearch();if(this._clearFeatureGeometries(),!this._checkFeatures(r))return;let s=r[0].attributes.location.spatialReference.equals(t.spatialReference)?t:await k(t,r[0].attributes.location.spatialReference),{features:c,polygons:l}=o?this.filterByFootprints(r,s,{filterByFrustum:!0}):this.filterByFootprints(r,s,{skipFilter:n?.skipFilter});if(!this._checkFeatures(c))return;let u=await this.processElevationSample(l,c,n);v(n),await this._updateElevationOfSelectedPointAndLocations(c,t,u),v(n),c.forEach(({attributes:e})=>{if(e.cameraHeading!==B){let{polygon:t,frustum:n}=U(e);this.coveragePolygons.add(t),n&&this.coverageFrustums.add(n)}}),Je(c,u);let d=c;if(a&&t&&i!=null&&(d=Ye(c,t,i),!d.length)){this.setMessage(`noImageAtElevation`,`info`);return}let f=this._processSuitableFeatures(d,t);this.updateSuitabilities(f,n?.loadBestImage)}async processFeatureElevation(e,t,n){if(!t)return;let{features:r,polygons:i}=this.filterByFootprints(e,t,{skipFilter:!0});if(!r?.length)return;let a=await this.processElevationSample(i,r,n);return v(n),a}async startMeasurement(e,t){this.sketch||await this.loadSketch(t),await this.loadMeasurementAdapter(t);let{sketch:n,sketchAdapter:r,activeViewer:i,mode:a}=this;if(!n||!r||!i||a===`none`)return;if(this.displayNewMeasurementButton=!1,a===`panoramic`&&(n.defaultCreateOptions.defaultZ=0),await n.create(e),a===`panoramic`){let{drawOperation:e}=n.view.activeTool;e.constraintsEnabled=!1,e._set(`elevationDrawSurface`,null)}let o=this.activeViewer?.imageRenderer.effectiveTheme.accentColor;o&&this.sketch&&(this.sketch.polygonSymbol=Le(o),this.sketch.polylineSymbol=a===`panoramic`?Re:ze(o,2.5))}async startHeightMeasurement(){this.displayNewMeasurementButton=!1,this.draw??=new Oe({view:this.activeViewer?.imageRenderer}),this.polylineDrawAction=this.draw.create(`polyline`),await this.loadHeightMeasurementAdapter()}initializeMeasurement(e){switch(this.clearMeasurementGraphics(),this.resetMeasurementData(),e){case`distance`:this.startMeasurement(`polyline`);break;case`area`:this.startMeasurement(`polygon`);break;case`height`:this.startHeightMeasurement()}}async overlayCameraLocations(e){this._cameraOverlayTask=h(this._cameraOverlayTask);let{activeViewer:n,overlayedCameraLocations:a,layer:o,mode:s,layerFloorFilterClause:c,layerTimeExtent:l,videoViewModel:u,_panoramicVideoViewer:d}=this,f=s===`video`,p=s===`panoramic-video`,m=this._getActiveFeatureForCurrentMode(),g=this._computeOverlayImageSize();if(!g||!m||!o||s===`none`||!this.overlayGraphicsEnabled)return;let{polygon:y}=U(m.attributes);if(f?u?.removeOverlayGraphics(a.toArray()):p?d.removeManyGraphics(a.toArray()):n?.removeManyGraphics(a.toArray()),a.removeAll(),!e)return;let b=i(async e=>{let{features:i}=await o.queryFeatures({where:T(`${o.objectIdField} <> ${m.attributes.objectId}`,T(o.definitionExpression,c)),geometry:y,returnGeometry:!0,outFields:[o.objectIdField],timeExtent:l},{signal:e});v(e);let h=await Promise.all(i.map(async n=>{let{attributes:r,geometry:i}=n;if(i?.type!==`point`)return null;let a=await this._geometryToOverlayImageGeometry(i,m,g,{signal:e});if(v(e),!a)return null;let o=s===`panoramic`||s===`panoramic-video`?Be():Ve();return new t({attributes:r,symbol:o,geometry:a})}));v(e),m===this._getActiveFeatureForCurrentMode()&&this.overlayGraphicsEnabled&&(a.addMany(h.filter(r)),f?u?.addOverlayGraphics(a.toArray()):p?d.addManyGraphics(a.toArray()):n?.addManyGraphics(a.toArray()))});this._cameraOverlayTask=b;try{await b.promise}catch(e){if(!_(e))throw e}finally{this._cameraOverlayTask===b&&(this._cameraOverlayTask=null)}}overlayGraphicsOnImage(e,t){this.removeOverlayedGraphicsOnImage(e),this.overlayedMapFeatures.set(e,t),this.mode===`video`?this.videoViewModel?.addOverlayGraphics(t.toArray()):this.mode===`panoramic-video`?this._panoramicVideoViewer.addManyGraphics(t.toArray()):this.activeViewer?.addManyGraphics(t.toArray())}async overlayMapFeatures(e,n=!1){let{activeViewer:i,mode:o,layer:s,videoViewModel:c,_panoramicVideoViewer:l}=this,u=o===`video`,f=o===`panoramic-video`,p=this._getActiveFeatureForCurrentMode(),m=this._computeOverlayImageSize();if(!m||!p||o===`none`||!this.overlayGraphicsEnabled||!s)return;let{polygon:h}=U(p.attributes);try{let{imageGeometryField:t,oiObjectIdField:n}=gt(e,s.imageGeometryField,s.imageReferenceField);this.imageGeometryField=t.name,this.oiObjectIdField=n.name}catch(e){d.getLogger(this).warn(`oriented-imagery-viewer:overlay-map-features`,e)}let{features:g}=await e.queryFeatures({geometry:h,returnGeometry:!0,outFields:[`*`]}),_=await Promise.all(g.map(async r=>{let a=r.symbol?.clone()??e.renderer?.getSymbol(r)?.clone(),{attributes:s,geometry:h}=r,{imageGeometryField:g,oiObjectIdField:_}=this;if(g&&_&&Ct(e,g,_)&&`${s[_]}`==`${p.attributes.objectId}`)try{let r=f?l.horizonAngles:X(i?.media),d=_t(s,g,e,n,m,u?`default`:o,a,r);if(!u)return d;let p=d.geometry;if(!p)return null;let h=c?.imageGeometryToOverlayGeometry(p);return h?new t({attributes:s,layer:e,symbol:d.symbol,geometry:h,visible:d.visible}):null}catch(t){d.getLogger(this).warn(`oriented-imagery-viewer:overlay-map-features`,`couldn't create graphic from attributes, geometry will be used`,{error:t,feature:r,layer:e,imageGeometryField:this.imageGeometryField,imageReferenceField:this.oiObjectIdField})}if(!h)return null;let v={feature:p,imageSize:m,footprintExtent:this.footprintExtent},y=await this._geometryToOverlayImageGeometry(h,v.feature,v.imageSize);return y?new t({attributes:s,layer:e,symbol:a,geometry:y,visible:e.visible&&n}):null})),v=new a(_.filter(r));(o!==`video`&&o!==`panoramic-video`||this.overlayGraphicsEnabled)&&this.overlayGraphicsOnImage(`${e.id}`,v)}getDepthAt(e){let{activeViewer:t,currentBestFeature:n,mode:r,state:i,depthImage:a}=this,o=t?.imageSize;if(!o||!n||r===`none`||i.includes(`loading`))return d.getLogger(this).warnOnce(`oriented-imagery-viewer:get-depth-at`,`Load an image to use depth`),null;if(!a?.loaded)return d.getLogger(this).error(`oriented-imagery-viewer:get-depth-at`,`Depth image is not loaded`),this.emit(`depth-image-service:not-loaded`),null;let s=(Array.isArray(e)?e:[e]).map(e=>a.depthAt(e,{width:o[0],height:o[1]})??null);return Array.isArray(e)?s:s[0]}getActiveSectors(){return V.filter(e=>this._sectorData?.[e]?.length)}async getPixelLocationForFeature(e,t,n){return(await this._transformationService.pointToPixelForFeature([e],t,n))[0]}async getPixelLocationsForFeature(e,t,n){return await this._transformationService.pointToPixelForFeature(e,t,n)}async _getMapPointInViewSpatialReference(e,t){let n=await this.getMapPoint(e,t),r=this.view?.spatialReference;return await k(n,r,t)}async plotMapPoint(e){this.plotReferencePoint(e);let t=this._getActiveFeatureForCurrentMode();if(t)return this.transformAndPlotReferencePointOnImage({feature:t,selectedLocation:e,options:{signal:this._transformController?.signal}})}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),e!=null&&(this._referencePointOnGround=new t({geometry:new O({...e.toJSON()}),symbol:q}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit(`plot-ground-point`,{data:{point:this._referencePointOnGround?.geometry}}))}plotReferencePointOnImage(e){switch(this.mode){case`video`:this._plotReferencePointOnVideo(e);return;case`panoramic-video`:this._plotReferencePointOnPanoramicVideo(e);return;case`default`:this._plotReferencePointOnDefaultImage(e);return;case`panoramic`:this._plotReferencePointOnPanoramicImage(e);return}}removeAllOverlayMapFeatures(){let{mode:e}=this;this.overlayedMapFeatures.forEach(t=>{let n=t.toArray();switch(e){case`video`:this.videoViewModel?.removeOverlayGraphics(n);break;case`panoramic-video`:this._panoramicVideoViewer.removeManyGraphics(n);break;default:this.activeViewer?.removeManyGraphics(n)}}),this.overlayedMapFeatures.clear()}removeOverlayedGraphicsOnImage(e){let t=this.overlayedMapFeatures.get(e),{mode:n}=this;if(!t?.length)return;let r=t.toArray();switch(n){case`video`:this.videoViewModel?.removeOverlayGraphics(r);break;case`panoramic-video`:this._panoramicVideoViewer.removeManyGraphics(r);break;default:this.activeViewer?.removeManyGraphics(r)}this.overlayedMapFeatures.delete(e)}reset(){let{mode:e}=this;e==="default"||e===`panoramic`?this.resetImage():e===`video`?this.resetVideo():e===`panoramic-video`&&this.resetVideoPanoramic(),this.beforeLoad(!1)}resetImage(){switch(this.setMessage(`onLoadMessage`,`info`),this.mode){case`default`:this._imageViewer.clearImage(),this._imageViewer.clearGraphics();break;case`panoramic`:this._panoramicViewer.clearImage(),this._panoramicViewer.clearGraphics()}this._clickTask=h(this._clickTask)}resetVideo(){this.setMessage(`onLoadMessage`,`info`),this.videoViewModel?.resetVideoHandler(),this._overlays?.removeAll(),this.videoViewModel=null,this._videoFeatureCache.reset(),this._syncVideoFeatureCacheState(),this.currentBestFeature=null}resetVideoPanoramic(){this.setMessage(`onLoadMessage`,`info`),this._overlays?.removeAll(),this._panoramicVideoViewer.reset(),this.currentBestFeature=null}resetMeasurementData(){this.areaMeasurementResult=0,this.areaMeasurementAccuracy=0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.heightMeasurementResult=0,this.heightMeasurementAccuracy=0,this.heightGraphic=null,this.triangulatedDistanceMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaMeasurement=null,this.triangulatedMeasurementGraphic=null,this.updatingTriangularMeasurementState=!1,this.triangulatedAreaAccuracy=0,this._measurementService?.resetMeasurementVectors()}async saveDrawing(){let{dataCaptureLayer:e,sketchAdapter:t}=this;if(!e||t?.type!==`data-capture`)return;let{pendingGraphics:n,savedGraphics:r}=t,i=n.get(e.id),a=i?.toArray();if(!i||!a?.length)return;let{addFeatureResults:o}=await this.saveDataCaptureFeatures(a),s=o.reduce((t,{objectId:n,globalId:r,error:i},o)=>{let s=a[o],{attributes:c}=s;return i?t.error.push(s):(n&&(c[e.objectIdField]=n),r&&e.globalIdField&&(c[e.globalIdField]=r),t.success.push(s)),t},{success:[],error:[]});r.addMany(s.success),i.removeAll(),i.addMany(s.error)}async saveDataCaptureFeatures(e,t){let{activeViewer:n,currentBestFeature:i,dataCaptureLayer:a,mode:o}=this;if(!n?.imageSize||!i||o===`none`||o===`video`||o===`panoramic-video`)throw new s(`orientedimageryviewer:missing-input`,`Image size, current best feature and mode are required to save data capture features`);if(!a)throw new s(`orientedimageryviewer:missing-featurelayer`,`Data capture layer is not available`);let c=await Promise.all(e.map(async e=>{let n=e.clone(),{geometry:r}=n;if(!r)return;let i=r.type,o=a.hasZ,s=a.geometryType,c=i!==s,l=(c?await import(`./transformers.js`):null)?.default[s],u=c?l?.(r):r;if(u&&(n.geometry=await this._transformationService.imageGeometryToMapGeometry(u,t),n.geometry))return o||vt(n.geometry),n})),l=c.filter(r);return a.applyEdits({addFeatures:l}).then(e=>{let{addFeatureResults:t}=e,n=0,r=c.map(e=>{let r=t[n++];return e?r:{error:new s(`orientedimageryviewer:save-unsucccessful`,`Error in saving data capture features`),objectId:null,globalId:null}});return{...e,addFeatureResults:r}})}async searchBestImage(e,t){try{let n=await j(e,t);n&&await this.processFeatureResponse(n,e.point,t)}catch(e){_(e)||(this.setMessage(`imageLoadError`,`error`,e.message),d.getLogger(this).error(`error occurred while finding best image`,e))}}selectTriangularMeasurementFeature(e){this.currentBestFeatureMeasurementImage=this.features?.find(({attributes:t})=>t.objectId===Number(e))}setAdditionalCameraLocationsVisibility(e){this.additionalCameraLocations.forEach(t=>{t.visible=e})}setAdditionalCoverageVisibility(e){this.additionalFootprints.forEach(t=>{t.visible=e})}setCurrentCoverageVisibility(e){this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.visible=e),this.currentBestFeatureLocation&&(this.currentBestFeatureLocation.visible=e)}setMapImageConversionToolState(e){this.mapImageConversionToolState=e}setCurrentPanoramaView(e,t){this._panoramicViewer?.set({yaw:e,pitch:t})}async restorePendingPanoramicNavigationViewState(e){let t=this._pendingPanoramicNavigationViewState;this._pendingPanoramicNavigationViewState=null,this.mode===`panoramic`&&await this._restoreNavigationViewState(t,e)}async startDataCapture(e,t){let n=this.activeViewer?.imageRenderer,{oiObjectIdField:r,currentBestFeature:i}=this;if(!n||!i||!r)return;let{attributes:{objectId:o}}=i,s=this.overlayedMapFeatures.get(e.id)?.toArray()??[],c=[],l=[];for(let e of s)`${e.getAttribute(r)}`==`${o}`?c.push(e):l.push(e);this.overlayGraphicsOnImage(e.id,new a(l)),this.collectionId=e.id;let u=await this.loadSketch(t),d=await this.loadDataCaptureAdapter(t);v(t),u.addGraphics(c),d.savedGraphics.addMany(c);let f=n.ui.find(`zoom`);f.visible=!1,n.map.layers.add(this.sketchGraphicsLayer)}async stopDataCapture(e=!1){this.sketch?.cancel(),this.sketchGraphicsLayer?.removeAll(),this.sketchAdapter=m(this.sketchAdapter),this.sketch=m(this.sketch),this.collectionId=null;let{dataCaptureLayer:t}=this,n=this.activeViewer?.imageRenderer;if(!n||n.destroyed)return;n.map.layers.remove(this.sketchGraphicsLayer),e&&t&&await this.overlayMapFeatures(t,!0);let r=n.ui.find(`zoom`);r&&(r.visible=!0)}stopMeasurement(){this.draw?.reset(),this.sketch?.cancel()}async toggleAllOverlayMapFeatures(e){!e&&this.dataCaptureLayer&&(await this.stopDataCapture(!0),this.dataCaptureLayer=null),this.overlayedMapFeatures.forEach(t=>{this._toggleVisiblity(t,e)})}toggleOverlayMapFeatures(e,t,n){let r=this.overlayedMapFeatures.get(e);r&&n&&this._toggleVisiblity(r,t)}toggleSelection(e){let{sketch:t}=this;t&&(t.updateOnGraphicClick=e,t.cancel())}async transformAndPlotReferencePointOnImage(e){let{feature:t,selectedLocation:n,options:r}=e,i=!1,a=!1,o=this.mode===`video`?this.bestFeatureCurrentFootprint?.geometry:this.bestFeatureFootprint?.geometry;switch(o?.type){case`polygon`:{let e=n.spatialReference.equals(o.spatialReference)?n:await k(n,o.spatialReference);i=o.contains(e);break}case`mesh`:{let e=n.spatialReference.equals(o.spatialReference)?n:await k(n,o.spatialReference);a=o.extent.contains(e);break}}if(!i&&!a){this.clearReferencePointOnImage();return}let s=this.mode===`video`||this.mode===`panoramic-video`?await this.getPixelLocationForFeature(n,{feature:t,mode:this.mode,imageSize:R,footprintExtent:this.footprintExtent},r):await this._transformationService.pointToPixel(n,r);if(!s)this.clearReferencePointOnImage();else return v(r),this.plotReferencePointOnImage(s),{x:s.x,y:s.y}}async updateFeatureCache(e){await this._videoFeatureCache.updateIndex(e),this._syncVideoFeatureCacheState()}cacheHydratedVideoFeature(e){this._videoFeatureCache.cacheHydratedFeature(e),this._syncVideoFeatureCacheState()}getCachedVideoFeatureByOffset(e,t){return this._videoFeatureCache.getCachedFeatureByOffset(e,t)}async getVideoFeatureByOffset(e,t,n){let{layer:r}=this;if(!r)return null;let i=await this._videoFeatureCache.getFeatureByOffset({layer:r,layerFloorFilterClause:this.layerFloorFilterClause,layerTimeExtent:this.layerTimeExtent},e,t,n);return this._syncVideoFeatureCacheState(),i}_shouldUseVerticalFilter(){return!!(this.layer?.verticalSearchRange&&this.layer.hasZ&&this.verticalFilterEnabled)}_shouldUseFrustumSearch(){return!!(this.layer?.hasZ&&this.frustumSearchEnabled&&this.view?.type===`3d`)}_syncVideoFeatureCacheState(){this.featureCache=this._videoFeatureCache.featureCache,this.videoFeatureIndex=this._videoFeatureCache.videoFeatureIndex}_matchesSelectedPointFilter({skipFilter:e,selectedPoint:t,filterByFrustum:n,cameraHeading:r,attributes:i,polygon:a}){return e||!t||(n?r!==B&&he(i,t):ge(a,t))}_plotReferencePointOnVideo(e){this.state===`video-loaded`&&this.videoViewModel?.videoPaused&&(this.clearReferencePointOnImage(),this.videoViewModel.plotReferencePointOnVideo(e))}_plotReferencePointOnPanoramicVideo(e){let n=this._panoramicVideoViewer,{imageSize:r,media:i}=n.viewModel;if(!this.panoramicVideoLoaded||!this.panoramicVideoPaused||!r)return;this.clearReferencePointOnImage();let a=X(i),o=Z(e,`panoramic`,r,a);this._referencePointOnImage=new t({geometry:o,symbol:J.clone()}),n.addGraphic(this._referencePointOnImage,0)}_getActiveFeatureForCurrentMode(){switch(this.mode){case`video`:return this.videoViewModel?.closestFeature??this.currentBestFeature;case`panoramic-video`:return this._panoramicVideoViewer.viewModel.closestFeature??this.currentBestFeature;default:return this.currentBestFeature}}_plotReferencePointOnDefaultImage(e){let n=this._imageViewer,{imageSize:r}=n;if(this.state!==`image-loaded`||!r)return;this.clearReferencePointOnImage();let i=Z(e,`default`,r);this._referencePointOnImage=new t({geometry:i,symbol:q.clone()}),n.addGraphic(this._referencePointOnImage,0)}_plotReferencePointOnPanoramicImage(e){let n=this._panoramicViewer,{imageSize:r,media:i}=n;if(this.state!==`image-loaded`||!r)return;this.clearReferencePointOnImage();let a=X(i),o=Z(e,`panoramic`,r,a);this._referencePointOnImage=new t({geometry:o,symbol:J.clone()}),n.addGraphic(this._referencePointOnImage,0)}async _fetchFeatures(e,t){let{layer:n,layerFloorFilterClause:r,layerTimeExtent:i,view:a}=this;if(!a)return;if(!n){this.setMessage(`noLayerSelected`,`info`);return}e.x=le(e.x,e.spatialReference);let o=n.spatialReference.equals(e.spatialReference)?e:await k(e,n.spatialReference),s=o.spatialReference.isGeographic?ue(o):o,c=T(`1=1`,T(n.definitionExpression,r)),l=s.spatialReference.isGeographic?1:E(s.spatialReference),u={layerInstanceOrURL:n,point:s,queryParams:{where:c,maximumDistance:n.maximumDistance?n.maximumDistance/l:void 0,timeExtent:i}};return await this.searchBestImage(u,t)}async _fetchFeaturesWithController(e,t){try{await this._fetchFeatures(e,t)}catch(e){if(_(e))return;this.setMessage(`imageLoadError`,`error`),d.getLogger(this).error(`error occurred while fetching features`,e)}}_groupFeaturesBySectors(){let{_suitabilities:e,additionalFeatures:t,features:n,invalidCameraHeading:r}=this,i=n.at(0);if(!e||!t||!i||!n||r){this._sectorData=null;return}this._sectorData={};let o={};this._featureToSector=o;for(let e of V)this._sectorData[e]=new a;let s=e.map((e,t)=>({...e,featureIndex:t}));s.sort((e,t)=>e.trueSuitability-t.trueSuitability);let c=s.map(({distance:e})=>e),l=Math.max(...c);s.forEach(e=>{let{distance:t,angle:r,featureIndex:a}=e,s=t/l*H[2],c=et(t,l),u=tt(r);if(!this._sectorData)return;let d=H[3]+s*Math.sin(r*Math.PI/180),f=H[3]+s*Math.cos(r*Math.PI/180),p,m=n.at(a),h=m===i,{cameraPitch:g}=m.attributes,_=g<5;if(h&&_)p=-90;else{let e=d-H[3],t=f-H[3],n=t/Math.sqrt(e**2+t**2),r=Math.acos(n)*180/Math.PI;(e<0&&t<0||e<0&&t>0)&&(r*=-1),p=r}let v=c===``?u:`${c}_${u}`;h&&(p===this.bestFeatureAngle?this.previousFeatureAngle=p:this.bestFeatureAngle=p,this.navigatorCurrentBestFeature=_?null:{x:d,y:f,direction:u}),o[`${m.attributes.objectId}`]=v;let y=this._sectorData[v];y.add({angle:r,featureIndex:a,x:d,y:f,objectID:m.attributes.objectId,sector:v,featureIndexInSector:y.length})})}async _initializeLocationViewModel(e){if(!this._locationViewModel){let{default:t}=await import(`./components/ImageLocationViewModel.js`);v(e),this._locationViewModel=new t({oiViewModel:this,referenceTransformationService:this._referenceTransformationService})}}_initializeMeasurementService(){this._measurementService||=new pt({transformationService:this._transformationService,referenceTransformationService:this._referenceTransformationService})}_initializeVideo(){if(!this.currentBestFeature)return;let e=at(this.currentBestFeature.attributes.imagePath),t=at(this.videoElement?.video);if(e&&t===e&&this.videoViewModel)return;this.videoLayer&&=(this.videoMapView.map.layers.remove(this.videoLayer),this.videoLayer.destroy(),null),this.videoViewModel=m(this.videoViewModel),this.removeHandles(Y.videoPlayerHandles),this.videoElement=new Ee({video:e??this.currentBestFeature.attributes.imagePath,georeference:new we({extent:new ae(Fe)}),autoplay:!1}),this.videoElement.content?.loop&&(this.videoElement.content.loop=!1);let n=new de({source:this.videoElement,title:this.layer?.title,copyright:this.layer?.copyright});this.videoLayer=n,n&&this.videoMapView.map.layers.add(n),this.videoViewModel=new ut({oiViewModel:this})}async getMapPoint(e,t){let n=await this._transformationService.pixelToMapPoint(Array.isArray(e)?e:[e],t);return Array.isArray(e)?n:n[0]}async getMapPointForFeature(e,t,n){let r=await this._transformationService.pixelToMapPointForFeature(Array.isArray(e)?e:[e],t,n);return Array.isArray(e)?r:r[0]}async loadPanoramicMediaSource(e,t){let{lookAt:n,...r}=e,i=Xe(r);try{await i.load(t)}catch(e){if(_(e))return;if(e.name===`unsupported-format`){this.setMessage(`unsupportedPanoramicImageryError`,`error`,void 0,{datasetFormat:i?.extension??`UNKNOWN FORMAT`});return}}let a=this.triangularMeasurementActive?this._panoramicMeasurementViewer:this._panoramicViewer;await a.loadMedia(i,t),n&&a.set(n)}async loadMediaSource(e,t){let n=Ze(e);await this._setImageSource(this.triangularMeasurementActive?this.imageMeasurementViewer:this._imageViewer,n,t)}_clearFeatureGeometries(){this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll()}_checkFeatures(e){return e?.length?!0:(this.emit(`no-image-found`),this.setMessage(`noImageError`,`error`),this.videoElement?.content?.pause(),this.currentBestFeature=null,!1)}async _getElevationSampleFromGround(e,t,n){if(!e[0])return;let{unionExecuteMany:r}=await import(`../../geometry/operators/unionOperator.js`),i=r(e);if(this._updateFootprintWithFeatures(t,i),this.view?.type===`3d`)try{return await this.view.map.ground.createElevationSampler(this.footprintExtent,n)}catch(e){if(_(e))throw e;d.getLogger(this).error(e);return}}async processElevationSample(e,t,n){let{elevationSource:r}=t[0].attributes,i=await this._getElevationSampleFromGround(e,t,n);if(this.view?.type===`3d`||i)return i;if(r&&this.footprintExtent&&_e(r))return await ye({extent:this.footprintExtent,lod:r.lod,url:r.url,rasterFunction:r.rasterFunction})}_processSuitableFeatures(e,t){return fe({features:e,selectedPoint:t,camera:Qe(this.view)?this.view.camera:null,currentImage:this.currentBestFeature})}async _processHitTestResults(e,t,n){let{results:[r]}=t;if(r?.type!==`graphic`){this.beforeLoad(!1),this.emit(`no-image-found`),this.setMessage(`noImageError`,`error`);return}let i=r.graphic.getAttribute(e.objectIdField);return await this.showImageByObjectId(i,n)}async _queryAndLoadByObjectId(e,t,n,r,i){this.displayMessage=null;let{response:a}=await ft(e,t,n,r,i);if(v(i),!a?.features?.length)throw new dt(t);let{attributes:o}=a.features[0],s,c;if(s=i?.selectedPoint?M(i.selectedPoint):void 0,!s){if(o.orientedImageryType?.includes(`360`)){s=M(o.geometry);let{cameraHeading:e,farDistance:t,nearDistance:n}=o,r=[Math.sin(p(e)),Math.cos(p(e))],i=(t+n)/2;c=E(s.spatialReference),s.x+=i*r[0]/c,s.y+=i*r[1]/c,s.z=void 0}else{let e=await this.processFeatureElevation(a.features,o.geometry.clone(),i);v(i),await this._updateElevationOfSelectedPointAndLocations(a.features,o.geometry.clone(),e??void 0,i),v(i);let t=U(o).polygon,n=O.fromJSON(se(t));s=M(n),c=E(s.spatialReference)}}this.selectedPoint=s,c=E(s.spatialReference);let l={layerInstanceOrURL:e,point:s,queryParams:{where:T(T(`1=1`,T(e.definitionExpression,n)),`${e.objectIdField} <> ${t}`),maximumDistance:e.maximumDistance?e.maximumDistance/c:void 0,timeExtent:r}},u=await j(l,i);v(i);let{features:d}=u;return d.push(a.features[0]),await this.processFeatureResponse(u,s,{...i,loadBestImage:!1})}_reorderTriangularSketchLayer(){let e=this.imageMeasurementViewer.imageRenderer.map.layers?.length;this.sketchTriangularGraphicsLayer&&e&&this.imageMeasurementViewer.imageRenderer.map.layers.reorder(this.sketchTriangularGraphicsLayer,e-1)}async _setImageSource(e,t,n){e.media=t,await e.loadMedia(t,n)}async _restoreNavigationViewState(e,t){let n=e?.center?await this._transformationService.pointToPixel(e.center,t):null;if(v(t),this.mode===`panoramic`){let t=X(this._panoramicViewer.media);if(!t)return;bt({viewState:e,panoramicViewer:this._panoramicViewer,horizonAngles:t,imageCenter:n})}xt({viewState:e,imageViewer:this._imageViewer,imageCenter:n})}_toggleVisiblity(e,t){e.forEach(e=>{e.visible=t})}async _updateElevationOfSelectedPointAndLocations(e,t,n,r){let{cameraHeight:i}=e[0].attributes,a=e[0].attributes.location,o=await P(a.spatialReference,a.z,i,{elevationSample:n,elevationSource:this.view?.type===`3d`||n?void 0:e[0].attributes.elevationSource,extent:this.footprintExtent},r);v(r);let[s,...c]=await ve([t,...e.map(e=>e.attributes.geometry.clone())],o);v(r),t.elevation=s.z,e.forEach((e,t)=>{e.attributes.elevation=c[t].z;let n=this.pointSources.find(t=>t.imageID===e.attributes.objectId);n&&(n.z=e.attributes.location.z)})}_updateFeatures(e,t=!0){e.length?(this.features.removeAll(),this.features.addMany(e),this.navigationNodes.removeAll(),this.navigationNodes.addMany(e.map(e=>{let{geometry:t,attributes:n}=e,{isSpherical:r,cameraHeading:i,cameraPitch:a}=n;return new lt({geometry:t,attributes:n,currentHeading:r?0:i,currentPitch:r?0:a})})),e.length>1?this.additionalFeatures.addMany(e.slice(1)):this.additionalFeatures.removeAll(),t&&(this.currentBestFeature=e[0])):(this.currentBestFeature=null,this.additionalFeatures.removeAll())}_updateFootprintWithFeatures(e,t){let n=[];for(let{attributes:{location:r}}of e)t.contains(r)||n.push([r.x,r.y]);n.sort((e,t)=>+ce([e,t])),t.addRing(n),this.footprintExtent=ke(t.extent,2,2)}_scheduleVideoInteractionUpdate(){this.scheduledFrameId||=requestAnimationFrame(()=>{this.scheduledFrameId=null,this._updateInteraction()})}async _updatePointsAndPolygons(e){let{pointSources:n,currentBestFeature:r,currentCoverageVisible:i,isAdditionalPointSourcesVisible:a,mode:o,layer:s}=this;if(r&&(this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.destroy(),this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null),!this.invalidCameraHeading)){await this._adapter?.createFootprints(e),v(e);for(let o of n){let n=this.view&&!this.view.spatialReference?.equals(o.spatialReference)?await k(o.clone(),this.view?.spatialReference,e):o.clone();o.imageID===r.attributes.objectId?this.currentBestFeatureLocation=new t({attributes:{imageID:o.imageID},geometry:n,symbol:He,visible:i}):this.additionalCameraLocations.push(new t({attributes:{imageID:o.imageID},geometry:n,symbol:Ue,visible:a}))}(o===`video`||o===`panoramic-video`)&&(await this.initializeTransformationService(e),s&&!this.videoFeatureIndex.length&&await this.updateFeatureCache(s),this.cacheHydratedVideoFeature(r))}}_scheduleCurrentBestFeatureUpdate(e){h(this._navigationViewStateTask);let t=i(async t=>{await this._updateCurrentBestFeature(e,{signal:t})});this._navigationViewStateTask=t,t.promise.catch(e=>{if(!_(e))throw e}).finally(()=>{this._navigationViewStateTask===t&&(this._navigationViewStateTask=null)})}async _updateCurrentBestFeature(e,t){if(!e)return;if(await this._capturePendingNavigationViewState(t),v(t),this.currentBestFeature=this.features?.at(e.featureIndex),this.mode===`video`){this.currentBestFeature&&this.videoViewModel?.playVideoFromSelectedLocation(this.currentBestFeature);return}if(this.mode===`panoramic-video`){this.currentBestFeature&&this._panoramicVideoViewer.viewModel.playPanoramicVideoFromSelectedLocation(this.currentBestFeature);return}let n=this.currentBestFeature?.attributes.cameraPitch&&this.currentBestFeature?.attributes.cameraPitch<5,r;if(n)r=-90;else{let t=e.x-H[3],n=e.y-H[3],i=n/Math.sqrt(t**2+n**2),a=Math.acos(i)*180/Math.PI;(t<0&&n<0||t<0&&n>0)&&(a*=-1),r=a}r===this.bestFeatureAngle?this.previousFeatureAngle=r:this.bestFeatureAngle=r,this.navigatorCurrentBestFeature=n?null:{x:e.x,y:e.y,direction:e.sector.includes(`_`)?e.sector.split(`_`)[1]:e.sector},this.mode===`panoramic`&&(await x(()=>this.state===`image-loaded`,t),v(t),await this.restorePendingPanoramicNavigationViewState(t))}async _capturePendingNavigationViewState(e){this.mode==="default"?await this._capturePendingDefaultNavigationViewState(e):this.mode===`panoramic`&&await this._capturePendingPanoramicNavigationViewState(e)}async _capturePendingDefaultNavigationViewState(e){try{let{imageSize:t,imageRenderer:n}=this._imageViewer,r=n.center;if(this.state!==`image-loaded`||!t[0]||!t[1]||!r){this._pendingDefaultNavigationViewState=null;return}let i=yt(r,`default`,t),a=await this._getMapPointInViewSpatialReference(i,e);v(e),this._pendingDefaultNavigationViewState={center:a,scale:n.scale}}catch(e){this._handlePendingNavigationViewStateCaptureError(e)}}async _capturePendingPanoramicNavigationViewState(e){let t=X(this._panoramicViewer.media);if(t)try{let{fov:n,imageSize:r,pitch:i,yaw:a}=this._panoramicViewer;if(this.state!==`image-loaded`||!r||!n){this._pendingPanoramicNavigationViewState=null;return}let[o,s]=Se(a,i,t),c=Ce(o,s,r[0],r[1]),l=await this._getMapPointInViewSpatialReference(c,e);v(e),this._pendingPanoramicNavigationViewState={center:l,fov:n}}catch(e){this._handlePendingNavigationViewStateCaptureError(e)}}_handlePendingNavigationViewStateCaptureError(e){if(_(e))throw e;d.getLogger(this).warn(`oriented-imagery-viewer:failed-to-capture-navigation-view-state`,e)}_updateImageMeasurementBestFeature(e){e&&(this.currentBestFeatureMeasurementImage=this.features?.at(e.featureIndex))}clearGraphics(){this._cameraOverlayTask=h(this._cameraOverlayTask),this._imageViewer.clearGraphics(),this._panoramicViewer.clearGraphics(),this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearGraphics()}clearReferencePointOnImage(){this._referencePointOnImage&&=(this._imageViewer.removeGraphic(this._referencePointOnImage),this._panoramicViewer.removeGraphic(this._referencePointOnImage),this._panoramicVideoViewer.removeGraphic(this._referencePointOnImage),m(this._referencePointOnImage)),this.videoViewModel?.clearReferencePointOnVideo()}async initializeReferenceTransformationService(e){let{currentBestFeatureMeasurementImage:t,activeTriangulatedViewer:n,mode:r}=this;if(!t||!n||!n.imageSize||r!==`panoramic`&&r!=="default")return;let{imageSize:i}=n,{attributes:a,elevationSample:o}=t,{cameraHeight:s,elevationSource:c}=a,l=a.location;l.spatialReference.isGeographic&&(l=M(l));let u={...r==="default"?F(a,i[0],i[1]):G(a,i[0],i[1]),cameraLocation:l},d=await P(l.spatialReference,l.z??0,s,{elevationSample:o,elevationSource:this.view?.type===`3d`?void 0:c,extent:this.footprintExtent},e),f=(await import(`./services/TransformationService.js`)).default,p={imageToWorldProperties:u,updateElevationProps:d,mode:r,imageSize:i,depthImageService:this.depthImage};this._referenceTransformationService=new f(p),this._locationViewModel&&(this._locationViewModel.referenceTransformationService=this._referenceTransformationService),this._measurementService&&(this._measurementService.referenceTransformationService=this._referenceTransformationService)}async initializeTransformationService(e){let{currentBestFeature:t,activeViewer:n,mode:r}=this,i=r===`video`||r===`panoramic-video`?R:n?.imageSize;if(!t||!i||r===`none`)return;let{attributes:a,elevationSample:o}=t,{cameraHeight:s,elevationSource:c}=a,l=a.location;l.spatialReference.isGeographic&&(l=M(l));let u=r==="default"||r===`video`?`default`:`panoramic`,d={...u==="default"?F(a,i[0],i[1]):G(a,i[0],i[1]),cameraLocation:l},f=await P(l.spatialReference,l.z??0,s,{elevationSample:o,elevationSource:this.view?.type===`3d`?void 0:c,extent:this.footprintExtent},e),p=(await import(`./services/TransformationService.js`)).default,m={imageToWorldProperties:d,updateElevationProps:f,mode:u,imageSize:i,depthImageService:this.depthImage};this._transformationService=new p(m),this._measurementService&&(this._measurementService.transformationService=this._transformationService)}plotReferencePoint(e){`mapPoint`in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}clearSelectedPointOnViewer(){this._crossSymbol?this.mode===`video`?(this.videoViewModel?.clearSelectedPointOnVideo(),this._crossSymbol=null):(this._panoramicViewer.removeGraphic(this._crossSymbol),this._imageViewer.removeGraphic(this._crossSymbol),this.videoMapView.graphics.remove(this._crossSymbol),this._crossSymbol=m(this._crossSymbol)):this.videoViewModel?.clearSelectedPointOnVideo()}setMessage(e,t,n,r){this.displayMessage={key:e,type:t,data:n,map:r}}async transformAndPlotSelectedLocation(e){let{invalidCameraHeading:t,selectedPoint:n,activeViewer:r,videoElement:i}=this,a=this.mode===`video`?this.videoViewModel?.closestFeature??this.currentBestFeature:this.currentBestFeature;this.clearSelectedPointOnViewer();let o=this.mode===`video`?i?.loaded===!0&&this.videoViewModel?.videoPaused===!0:r?.state===`image-loaded`;if(!n||!a||!o||t||this.mode===`video`&&!await ot(n,this.bestFeatureCurrentFootprint?.geometry,e))return;let s;try{if(s=this.mode===`video`?await this.getPixelLocationForFeature(n,{feature:a,mode:this.mode,imageSize:R,footprintExtent:this.footprintExtent},e):await this._transformationService.pointToPixel(n,{signal:e?.signal}),this.mode===`video`&&!st(s))return;v(e),await this.plotSelectedPointOnImage(s,e)}catch(e){_(e)||d.getLogger(this).error(`failed to transform map point to pixel, cross symbol will not be plotted on image`,{error:e,selectedPoint:n,feature:a})}}updateCurrentCoveragePolygon(e){let{additionalFootprints:n,additionalCameraLocations:r,currentBestFeature:i,currentBestFeatureLocation:a,currentCoverageVisible:o,selectedPoint:s,view:c}=this;if(!i)return;let{attributes:{objectId:l}}=i;if(this._initialCurrentCoverageUpdate){if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),e&&!this.invalidCameraHeading&&(e.visible=o,this.bestFeatureCurrentFootprint=e),c){let e=[...n,...r,a].filter($e);s&&(this.bestFeatureCurrentFootprint&&e.splice(-2,0,this.bestFeatureCurrentFootprint),e.push(new t({geometry:s.clone(),symbol:K.clone(),attributes:{imageID:l}}))),this._overlays.graphics.addMany(e)}}else if(c){if(this.invalidCameraHeading){this._superimposeService.clear();return}this.bestFeatureCurrentFootprint&&=(this._overlays?.remove(this.bestFeatureCurrentFootprint),m(this.bestFeatureCurrentFootprint));let t=this.bestFeatureCurrentFootprint&&this._overlays?this._overlays.graphics.indexOf(this.bestFeatureCurrentFootprint):-1;e&&(this.bestFeatureCurrentFootprint=e,e.visible=this.currentCoverageVisible,this._overlays?.graphics.add(this.bestFeatureCurrentFootprint,t>=0?t:this._overlays.graphics.length-1))}}_updateSuperimposedImage(){if(!this._hasActiveSuperimposeCameraContext())return;let e=this.mode===`panoramic`?this._panoramicViewer:null,{currentBestFeature:t,defaultSuperimposeCameraLockEnabled:n,layer:r,mode:i,view:a,state:o,superimposeViewEnabled:s,superimposeViewSupported:c,activeViewer:l,depthImage:u}=this,d=this.coverageFrustums.find(({imageID:e})=>e===t?.attributes.objectId);this._superimposeService.update({activeImageSize:l?.imageSize||void 0,adapter:this._adapter,currentBestFeature:t,currentBestFeatureFrustum:d,defaultSuperimposeCameraLockEnabled:n,depthImageLoaded:u?.loaded??!1,layer:r,mode:i,panoramicCamera:e?.camera,state:o,superimposeViewEnabled:s&&c,view:a}),this.setMessage(`superimposeImageDescription`,`info`),this._superimposePreviousCurrentCoverageVisible??=this.currentCoverageVisible,this.currentCoverageVisible=!1}_getSuperimposeCameraWatchState(){let e=(this.view?.type===`3d`?this.view:null)?.camera;return[this.superimposeViewEnabled,this.superimposeViewSupported,this.mode,this.state,this.view?.type,this.view?.interacting,this.view?.navigating,e?.heading,e?.tilt,e?.fov,e?.position.x,e?.position.y,e?.position.z]}_handleSuperimposeCameraChange(){let e=this.view,t=e?.type===`3d`?e:null;this._hasActiveSuperimposeCameraContext()?this.mode===`panoramic`?this._schedulePanoramicSuperimposeUpdate():!t||t.interacting||t.navigating?this._abortSuperimposeSchedule():this._scheduleDefaultSuperimposeUpdate():this._abortSuperimposeSchedule()}_shouldDisableUnsupportedSuperimposeView(){return this.superimposeViewEnabled&&this.mode===`panoramic`&&!this.superimposeViewSupported}_hasActiveSuperimposeCameraContext(){return(this.mode==="default"||this.mode===`panoramic`)&&this.superimposeViewEnabled&&this.superimposeViewSupported&&this.state===`image-loaded`&&this.view?.type===`3d`&&!!this.view.camera}_abortSuperimposeSchedule(){this._superimposeScheduleController?.abort(),this._superimposeScheduleController=null,this._clearSuperimposeDebounceTimeout(),this._clearSuperimposeScheduledFrame()}_resetInactiveSuperimposeState(){let e=this._superimposePreviousCurrentCoverageVisible!=null;this._abortSuperimposeSchedule(),this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),this._superimposeService.clear(),this._restoreCurrentCoverageVisibilityAfterSuperimpose(),this._restoreDefaultMessageAfterSuperimpose(),e&&this._restoreViewerMediaAfterSuperimpose()}_restoreCurrentCoverageVisibilityAfterSuperimpose(){this._superimposePreviousCurrentCoverageVisible!=null&&(this.currentCoverageVisible=this._superimposePreviousCurrentCoverageVisible,this._superimposePreviousCurrentCoverageVisible=null)}_restoreViewerMediaAfterSuperimpose(){let{currentBestFeature:e,mode:t}=this;if(!e||t!=="default"&&t!==`panoramic`)return;this._restoreSuperimposeMediaTask?.abort();let n=i(async t=>{await this._loadCurrentFeatureMedia(e,{signal:t})});this._restoreSuperimposeMediaTask=n,n.promise.finally(()=>{this._restoreSuperimposeMediaTask===n&&(this._restoreSuperimposeMediaTask=null)})}_restoreDefaultMessageAfterSuperimpose(){this.displayMessage?.key===`superimposeImageDescription`&&(this.currentBestFeature&&(this.mode==="default"||this.mode===`panoramic`)?this.displayMessage=null:this.setMessage(`onLoadMessage`,`info`))}_clearSuperimposeDebounceTimeout(){this.superimposeDebounceTimeoutId!=null&&(clearTimeout(this.superimposeDebounceTimeoutId),this.superimposeDebounceTimeoutId=null)}_clearSuperimposeScheduledFrame(){this.superimposeScheduledFrameId!=null&&(cancelAnimationFrame(this.superimposeScheduledFrameId),this.superimposeScheduledFrameId=null)}_schedulePanoramicSuperimposeUpdate(){this._abortSuperimposeSchedule(),this.superimposeDebounceTimeoutId=window.setTimeout(()=>{this.superimposeDebounceTimeoutId=null,this._hasActiveSuperimposeCameraContext()&&this.mode===`panoramic`&&this._updateSuperimposedImage()},150)}_scheduleDefaultSuperimposeUpdate(){let e=this.view;if(!(e?.type===`3d`&&e)||this.superimposeScheduledFrameId)return;this._superimposeScheduleController?.abort();let t=new AbortController,{signal:n}=t,r=()=>{this._clearSuperimposeDebounceTimeout(),this._clearSuperimposeScheduledFrame(),this._superimposeScheduleController===t&&(this._superimposeScheduleController=null),n.removeEventListener(`abort`,r)};this._superimposeScheduleController=t,n.addEventListener(`abort`,r),this.superimposeScheduledFrameId=requestAnimationFrame(()=>{if(n.removeEventListener(`abort`,r),this.superimposeScheduledFrameId=null,this._superimposeScheduleController===t&&(this._superimposeScheduleController=null),n.aborted)return;let e=this.view,i=e?.type===`3d`?e:null;this._hasActiveSuperimposeCameraContext()&&i!=null&&!i.interacting&&!i.navigating&&this._updateSuperimposedImage()})}};e([D()],$.prototype,`activeLayer`,null),e([D({readOnly:!0})],$.prototype,`activeViewer`,null),e([D()],$.prototype,`activeTriangulatedViewer`,null),e([D()],$.prototype,`accuracyParametersMissing`,null),e([D()],$.prototype,`additionalFeatures`,void 0),e([D({type:a.ofType(t)})],$.prototype,`additionalCameraLocations`,void 0),e([D({type:a.ofType(t)})],$.prototype,`additionalFootprints`,void 0),e([D()],$.prototype,`areaMeasurementResult`,void 0),e([D()],$.prototype,`areaMeasurementAccuracy`,void 0),e([D()],$.prototype,`bestFeatureAngle`,void 0),e([D()],$.prototype,`bestFeatureCurrentFootprint`,void 0),e([D({type:t})],$.prototype,`bestFeatureFootprint`,void 0),e([D({type:Number})],$.prototype,`brightness`,null),e([D()],$.prototype,`cameraHeadingThreshold`,void 0),e([D()],$.prototype,`cameraPitchThreshold`,void 0),e([D()],$.prototype,`clickAction`,void 0),e([D()],$.prototype,`correctedLocationPointOnImage`,void 0),e([D()],$.prototype,`videoViewModel`,void 0),e([D()],$.prototype,`collectionId`,void 0),e([D({type:Number})],$.prototype,`contrast`,null),e([D()],$.prototype,`coverageFrustums`,void 0),e([D()],$.prototype,`coveragePolygons`,void 0),e([D()],$.prototype,`currentBestFeature`,void 0),e([D()],$.prototype,`currentBestFeatureMeasurementImage`,void 0),e([D()],$.prototype,`currentBestFeatureLocation`,void 0),e([D()],$.prototype,`currentCoverageVisible`,void 0),e([D()],$.prototype,`currentNode`,null),e([D()],$.prototype,`depthImage`,void 0),e([D()],$.prototype,`depthImageNotSupported`,null),e([D()],$.prototype,`featureCache`,void 0),e([D()],$.prototype,`videoFeatureIndex`,void 0),e([D()],$.prototype,`navigationNodes`,void 0),e([D({json:{write:!1}})],$.prototype,`determineWorkflowForFeature`,void 0),e([D({json:{write:!1}})],$.prototype,`determineWorkflowForTriangularMeasurement`,void 0),e([D()],$.prototype,`disabled`,void 0),e([D()],$.prototype,`displayMessage`,void 0),e([D()],$.prototype,`displayNewMeasurementButton`,void 0),e([D()],$.prototype,`distanceMeasurementResult`,void 0),e([D()],$.prototype,`distanceAccuracyArray`,void 0),e([D()],$.prototype,`dataCaptureLayer`,void 0),e([D({readOnly:!0})],$.prototype,`featureCount`,null),e([D()],$.prototype,`features`,void 0),e([D()],$.prototype,`groundCoordinates`,void 0),e([D()],$.prototype,`groundCoordinatesAccuracy`,void 0),e([D()],$.prototype,`groundCoordinatesAccuracyLoading`,void 0),e([D()],$.prototype,`hasPendingPanoramicNavigationViewState`,null),e([D()],$.prototype,`heightGraphic`,void 0),e([D()],$.prototype,`heightMeasurementResult`,void 0),e([D()],$.prototype,`heightMeasurementAccuracy`,void 0),e([D({readOnly:!0})],$.prototype,`imageGalleryEnabled`,null),e([D()],$.prototype,`imageGeometryField`,void 0),e([D({readOnly:!0})],$.prototype,`imageLoaded`,null),e([D()],$.prototype,`imageLocationToolState`,void 0),e([D()],$.prototype,`initialVideoMapViewExtent`,void 0),e([D({readOnly:!0})],$.prototype,`invalidCameraHeading`,null),e([D()],$.prototype,`imagePointsInView`,null),e([D()],$.prototype,`imageMeasurementViewer`,void 0),e([D()],$.prototype,`isAdditionalCoverageVisible`,void 0),e([D()],$.prototype,`isAdditionalPointSourcesVisible`,void 0),e([D()],$.prototype,`layer`,void 0),e([D()],$.prototype,`layerView`,null),e([D({readOnly:!0})],$.prototype,`layerFloorFilterClause`,null),e([D({readOnly:!0})],$.prototype,`layerTimeExtent`,null),e([D({type:Number})],$.prototype,`localPort`,void 0),e([D()],$.prototype,`locationPointOnImage`,void 0),e([D()],$.prototype,`mapImageConversionToolState`,void 0),e([D()],$.prototype,`measureType`,void 0),e([D()],$.prototype,`measurementGraphic`,void 0),e([D({readOnly:!0,value:`none`})],$.prototype,`mode`,null),e([D()],$.prototype,`navigationMode`,void 0),e([D()],$.prototype,`navigatorCurrentBestFeature`,void 0),e([D()],$.prototype,`oiObjectIdField`,void 0),e([D({type:a.ofType(t)})],$.prototype,`overlayedCameraLocations`,void 0),e([D()],$.prototype,`overlayedMapFeatures`,void 0),e([D()],$.prototype,`panoramicVideoLoaded`,null),e([D()],$.prototype,`panoramicVideoPaused`,null),e([D()],$.prototype,`pixelCoordinates`,void 0),e([D()],$.prototype,`preserveAngle`,void 0),e([D()],$.prototype,`pointSources`,void 0),e([D({readOnly:!0})],$.prototype,`popupEnabled`,null),e([D()],$.prototype,`preloadMedia`,void 0),e([D()],$.prototype,`preloadMediaSize`,void 0),e([D()],$.prototype,`previousFeatureAngle`,void 0),e([D()],$.prototype,`referencePoint`,null),e([D({readOnly:!0})],$.prototype,`sectorData`,null),e([D()],$.prototype,`selectedPoint`,void 0),e([D({type:Number})],$.prototype,`sharpness`,null),e([D()],$.prototype,`shouldShowSelectedImage`,void 0),e([D()],$.prototype,`superimposeViewEnabled`,void 0),e([D()],$.prototype,`defaultSuperimposeCameraLockEnabled`,void 0),e([D()],$.prototype,`superimposeViewSupported`,null),e([D()],$.prototype,`sketch`,void 0),e([D()],$.prototype,`sketchTriangular`,void 0),e([D()],$.prototype,`sketchTriangularGraphicsLayer`,void 0),e([D()],$.prototype,`draw`,void 0),e([D()],$.prototype,`drawAdapter`,void 0),e([D()],$.prototype,`polylineDrawAction`,void 0),e([D()],$.prototype,`scheduledFrameId`,void 0),e([D()],$.prototype,`superimposeScheduledFrameId`,void 0),e([D()],$.prototype,`superimposeDebounceTimeoutId`,void 0),e([D()],$.prototype,`sketchAdapter`,void 0),e([D({readOnly:!0})],$.prototype,`sketchGraphicsLayer`,null),e([D({readOnly:!0})],$.prototype,`state`,null),e([D({readOnly:!0})],$.prototype,`thumbnails`,null),e([D()],$.prototype,`videoExtentPoints`,null),e([D()],$.prototype,`triangularMeasurementActive`,void 0),e([D()],$.prototype,`triangulatedDistanceMeasurement`,void 0),e([D()],$.prototype,`triangulatedDistanceAccuracy`,void 0),e([D()],$.prototype,`triangulatedAreaMeasurement`,void 0),e([D()],$.prototype,`triangulatedAreaAccuracy`,void 0),e([D()],$.prototype,`triangulatedMeasurementGraphic`,void 0),e([D()],$.prototype,`triangulatedPoint`,void 0),e([D()],$.prototype,`triangulatedMeasurementAdapter`,void 0),e([D()],$.prototype,`updateFootprint`,void 0),e([D()],$.prototype,`updateVideoFootprint`,void 0),e([D()],$.prototype,`updateFootprintPanorama`,void 0),e([D()],$.prototype,`updatingTriangularMeasurementState`,void 0),e([D({value:null})],$.prototype,`view`,null),e([D()],$.prototype,`videoElement`,void 0),e([D()],$.prototype,`videoLayer`,void 0),e([D()],$.prototype,`videoMapView`,void 0),e([D()],$.prototype,`verticalFilterEnabled`,void 0),e([D()],$.prototype,`frustumSearchEnabled`,void 0),e([D()],$.prototype,`_adapter`,void 0),e([D()],$.prototype,`_defaultGraphicsLayer`,null),e([D()],$.prototype,`_highlightedFeatureHandle`,void 0),e([D()],$.prototype,`_imageViewer`,void 0),e([D()],$.prototype,`_initialCurrentCoverageUpdate`,void 0),e([D()],$.prototype,`_locationViewModel`,void 0),e([D()],$.prototype,`_measurementService`,void 0),e([D()],$.prototype,`_mediaPrefetcher`,void 0),e([D()],$.prototype,`_navigationManager`,void 0),e([D()],$.prototype,`_overlays`,void 0),e([D()],$.prototype,`_superimposePreviousCurrentCoverageVisible`,void 0),e([D()],$.prototype,`_superimposeService`,void 0),e([D({readOnly:!0})],$.prototype,`_overlaysView`,null),e([D()],$.prototype,`_panoramicVideoViewer`,void 0),e([D()],$.prototype,`_panoramicViewer`,void 0),e([D()],$.prototype,`_panoramicMeasurementViewer`,void 0),e([D()],$.prototype,`_referencePointOnGround`,void 0),e([D()],$.prototype,`_referencePointOnImage`,void 0),e([D()],$.prototype,`_referenceTransformationService`,void 0),e([D()],$.prototype,`_sectorData`,void 0),e([D()],$.prototype,`_transformationService`,void 0),e([D()],$.prototype,`_featureToSector`,void 0),e([D({readOnly:!0})],$.prototype,`_updatingHandles`,void 0),e([D()],$.prototype,`footprintExtent`,void 0),e([D()],$.prototype,`_featureChangedTask`,void 0),$=e([ne(`esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel`)],$);const Tt=$;export{Tt as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../../Graphic.js";import{isSome as t}from"../../../../core/arrayUtils.js";import{clamp as n}from"../../../../core/mathUtils.js";import{throwIfAborted as r,waitTick as i}from"../../../../core/promiseUtils.js";import a from"../../../../geometry/Mesh.js";import o from"../../../../geometry/Point.js";import{projectAsync as s}from"../../../../geometry/projectionUtils.js";import c from"../../../../geometry/support/MeshVertexAttributes.js";import{projectVertices as l,updateFrustum as u}from"../../../../layers/orientedImagery/core/coverageUtils.js";import d from"../../../../layers/orientedImagery/transformations/updateElevation.js";import{getPointerActions as f,eventMatchesMousePointerActions as p}from"../../../../views/input/handlers/support.js";import{fixedImageSize as m,invalidCameraHeading as h}from"../../constants.js";import{createFeatureCoverage as g}from"../../featureCoverage.js";import{activeFrustumSymbol as _,additionalFrustumSymbol as v}from"../../symbols.js";import{getDefaultSuperimposeFov as y,panoramicSuperimposeMaxFov as b,panoramicSuperimposeMinFov as x,panoramicSuperimposeZoomOutFactor as S,panoramicSuperimposeZoomInFactor as C,getViewCameraFieldOfView as w,panoramicSuperimposeMaxTilt as T,panoramicSuperimposeMinTilt as E,panoramicSuperimposeKeyboardAngleStep as D}from"../../support/superimposeUtils.js";class O{constructor(o){this.viewModel=o,this._defaultSuperimposeSecondaryDragAction=null,this._defaultSuperimposeNavigationHandles=[],this._panoramicSuperimposeAnchor=null,this._panoramicSuperimposeLastScreenPoint=null,this._panoramicSuperimposeNavigationHandles=[],this.createFootprints=async n=>{let{coverageFrustums:i,currentBestFeature:o,isAdditionalCoverageVisible:u,view:d}=this.viewModel,f=i.filter(t);for(let t of f){let i=t.clone();if(!d.spatialReference.equals(i.spatialReference)){let{components:e,spatialReference:t,origin:o,vertexAttributes:u,vertexSpace:f}=i;if(f.type===`local`){let e=await s(o,d.spatialReference,n);r(n),i.centerAt(e)}else{let o=u.position,s=Float64Array.from(await l([...o],t.clone(),d.spatialReference.clone(),n));r(n),i=new a({vertexAttributes:new c({position:s}),components:e,spatialReference:d.spatialReference.clone()})}}t.imageID===o.attributes.objectId?this.viewModel.bestFeatureFootprint=new e({attributes:{imageID:t.imageID},geometry:i,symbol:_.clone(),visible:!1}):this.viewModel.additionalFootprints.push(new e({attributes:{imageID:t.imageID},geometry:i,symbol:v.clone(),visible:u}))}},this.updateFootprint=async(n,i,a)=>{let{bestFeatureFootprint:o,currentBestFeature:c,activeViewer:l,footprintExtent:d,view:f,mode:p}=this.viewModel,h=p===`video`?m:l?.imageSize,g=i??c;if(!c||!o?.geometry||!h||!d||!g||!f?.spatialReference){this.viewModel.updateCurrentCoveragePolygon(null);return}let{attributes:{cameraHeight:v,location:y,cameraPitch:b,horizontalFieldOfView:x,verticalFieldOfView:S,cameraRoll:C}}=g,w=null;i&&(w=await this._computeFeatureFootprint(i,a));let T=g.attributes.location.toArray(),{vertexAttributes:{position:E},spatialReference:D}=(i&&w?w:o).geometry,O=await k(E,D,y.spatialReference),A=await this.viewModel.getMapPoint(n);r(a);let j=A.filter(t);if(!j.length)return;j[0].spatialReference.equals(y.spatialReference)||(j=await Promise.all(j.map(async e=>{let t=await s(e,y.spatialReference,a);return r(a),t})));let M=await u(n.map(({x:e,y:t})=>[e,t]),j.map(e=>e.toArray()),{cameraHeight:v,cameraLocation:T,cameraPitch:b,frustumVertices:O,horizontalFieldOfView:x,imageHeight:h[1],imageWidth:h[0],inSRS:{wkid:y.spatialReference.wkid},outSRS:{wkid:f.spatialReference.wkid},verticalFieldOfView:S,cameraRoll:C??0,options:a});this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:g.attributes.objectId},geometry:M,symbol:_.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updateVideoFootprint=async n=>{let{points:i,feature:a,scale:o,options:c}=n,{bestFeatureFootprint:l,currentBestFeature:d,activeViewer:f,footprintExtent:p,view:h,mode:g}=this.viewModel,v=g===`video`?m:f?.imageSize,y=a??d;if(!d||!l?.geometry||!v||!p||!y||!h?.spatialReference||g===`none`){this.viewModel.updateCurrentCoveragePolygon(null);return}let{attributes:{cameraHeight:b,location:x,cameraPitch:S,horizontalFieldOfView:C,verticalFieldOfView:w,cameraRoll:T}}=y,E=null;a&&(E=await this._computeFeatureFootprint(a,c));let D=y.attributes.location.toArray(),{vertexAttributes:{position:O},spatialReference:A}=(a&&E?E:l).geometry,M=await k(O,A,x.spatialReference),N={feature:y,mode:g,imageSize:v,footprintExtent:p},P=await this.viewModel.getMapPointForFeature(i,N,c);r(c);let F=P.filter(t);if(!F.length)return;F[0].spatialReference.equals(x.spatialReference)||(F=await Promise.all(F.map(async e=>{let t=await s(e,x.spatialReference,c);return r(c),t})));let I=await u(i.map(({x:e,y:t})=>[e,t]),F.map(e=>e.toArray()),{cameraHeight:b,cameraLocation:D,cameraPitch:S,frustumVertices:M,horizontalFieldOfView:C,imageHeight:v[1],imageWidth:v[0],inSRS:{wkid:x.spatialReference.wkid},outSRS:{wkid:h.spatialReference.wkid},verticalFieldOfView:w,cameraRoll:T??0,options:c});if(o&&I){let e=j(I);I.scale(o,{origin:e})}this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:y.attributes.objectId},geometry:I,symbol:_.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updateFootprintPanorama=async(t,n)=>{await i(n);let{horizontalFieldOfView:r,pitch:a,verticalFieldOfView:o,yaw:s,feature:c}=t,l=c?.clone()??this.viewModel.currentBestFeature?.clone();if(!l)return;let{attributes:u}=l;u.orientedImageryType=null,u.cameraHeading=s,u.cameraPitch=a,u.horizontalFieldOfView=r,u.verticalFieldOfView=o,u.cameraRoll=0;let{frustum:d}=g(u);!d||!this.viewModel.view?.spatialReference.equals(d.spatialReference)?this.viewModel.updateCurrentCoveragePolygon(null):this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:u.objectId},geometry:d.clone(),symbol:_.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updatePanoramicSuperimposeCamera=async(e,t)=>{let{camera:n,currentBestFeature:i}=e,{view:a}=this.viewModel;if(a?.type!==`3d`)return;let o=i.attributes.location,c=o.spatialReference.equals(a.spatialReference)?o:await s(o,a.spatialReference,t);if(r(t),!c)return;let l=n.clone();l.position=c.clone(),a.camera=l,this._enablePanoramicSuperimposeNavigation(c)},this.updateDefaultSuperimposeCamera=async(e,t)=>{let{currentBestFeature:i}=e,{view:a}=this.viewModel;if(a?.type!==`3d`)return;let{cameraHeading:o,cameraPitch:c,cameraRoll:l,horizontalFieldOfView:u,location:d,verticalFieldOfView:f}=i.attributes,p=d.spatialReference.equals(a.spatialReference)?d.clone():await s(d,a.spatialReference,t);if(r(t),!p)return;let m=y(a,u,f,l??0),g=a.camera.clone();g.position=p,g.fov=n(g.fov,x,b),o!=null&&o!==h&&(g.heading=o),c!=null&&(g.tilt=c),m!=null&&(g.fov=m),a.camera=g},this.enableDefaultSuperimposeNavigation=()=>{let{view:e}=this.viewModel;if(e?.type!==`3d`)return;let t=e.navigation.actionMap;this._defaultSuperimposeSecondaryDragAction??=t.dragSecondary,t.dragSecondary!==`none`&&(t.dragSecondary=`none`),this._defaultSuperimposeNavigationHandles.length||(this._defaultSuperimposeNavigationHandles=[e.on(`drag`,this._handleDefaultSuperimposeDrag)])},this.disableDefaultSuperimposeNavigation=()=>{let{view:e}=this.viewModel,t=this._defaultSuperimposeSecondaryDragAction;this._defaultSuperimposeNavigationHandles.forEach(e=>e.remove()),this._defaultSuperimposeNavigationHandles=[],e?.type!==`3d`||t==null||(e.navigation.actionMap.dragSecondary=t),this._defaultSuperimposeSecondaryDragAction=null},this.disablePanoramicSuperimposeNavigation=()=>{this._panoramicSuperimposeNavigationHandles.forEach(e=>e.remove()),this._panoramicSuperimposeNavigationHandles=[],this._panoramicSuperimposeAnchor=null,this._panoramicSuperimposeLastScreenPoint=null},this._handleDefaultSuperimposeDrag=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`)return;let n=f(`rotate`,t.navigation.actionMap);p(e,n)&&e.stopPropagation()},this._handlePanoramicSuperimposeDoubleClick=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;e.stopPropagation();let r=t.camera.clone(),i=e.native.ctrlKey?S:C;r.position=this._panoramicSuperimposeAnchor.clone(),r.fov=n(r.fov*i,x,b),t.camera=r},this._handlePanoramicSuperimposeDrag=e=>{let{view:t}=this.viewModel;if(t&&t.type===`3d`&&this._panoramicSuperimposeAnchor)switch(e.stopPropagation(),e.action){case`start`:this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};return;case`update`:{let r=this._panoramicSuperimposeLastScreenPoint;if(!r){this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};return}let i=r.x-e.x,a=e.y-r.y;this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};let o=t.camera.clone(),{horizontal:s,vertical:c}=w(t);o.position=this._panoramicSuperimposeAnchor.clone(),o.heading+=s*i/Math.max(t.width,1),o.tilt=n(o.tilt+c*a/Math.max(t.height,1),E,T),t.camera=o;return}case`end`:this._panoramicSuperimposeLastScreenPoint=null;return}},this._handlePanoramicSuperimposeKeyDown=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;let r=t.camera.clone(),i=!0;switch(r.position=this._panoramicSuperimposeAnchor.clone(),e.key){case`ArrowLeft`:r.heading-=D;break;case`ArrowRight`:r.heading+=D;break;case`ArrowUp`:r.tilt=n(r.tilt-D,E,T);break;case`ArrowDown`:r.tilt=n(r.tilt+D,E,T);break;default:i=!1}i&&(e.stopPropagation(),t.camera=r)},this._handlePanoramicSuperimposeWheel=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;e.stopPropagation();let r=t.camera.clone();r.position=this._panoramicSuperimposeAnchor.clone(),r.fov=n(r.fov*(e.deltaY>0?S:C),x,b),t.camera=r}}async _computeFeatureFootprint(e,t){let{currentBestFeature:n,view:i}=this.viewModel,a=n?.elevationSample;if(a?.extent&&!a.extent.contains(e.geometry)&&(a=await this.viewModel.processFeatureElevation([e],e.geometry.clone(),t)??a),a){let n=await d(e.geometry.clone(),{elevationSample:a},t);r(t),e.attributes.elevation=n.z}return A(e,i.spatialReference,t)}_enablePanoramicSuperimposeNavigation(e){let{view:t}=this.viewModel;t&&t.type===`3d`&&(this.disablePanoramicSuperimposeNavigation(),this._panoramicSuperimposeAnchor=e.clone(),this._panoramicSuperimposeNavigationHandles=[t.on(`drag`,this._handlePanoramicSuperimposeDrag),t.on(`mouse-wheel`,this._handlePanoramicSuperimposeWheel),t.on(`double-click`,this._handlePanoramicSuperimposeDoubleClick),t.on(`key-down`,this._handlePanoramicSuperimposeKeyDown)])}}async function k(e,t,n,r){return Float64Array.from((await Promise.all(e.reduce((e,t,n)=>{let r=Math.floor(n/3);return e[r]=e[r]??[],e[r].push(t),e},[]).map(async e=>(await s(new o(e,t),n,r)).toArray()))).flat())}const A=async(t,n,i)=>{let{frustum:o}=g(t.attributes),u=o.clone();if(!n.equals(u.spatialReference)){let{components:e,spatialReference:t,origin:o,vertexAttributes:d,vertexSpace:f}=u;if(f.type===`local`){let e=await s(o,n,i);r(i),u.centerAt(e)}else{let o=d.position,s=Float64Array.from(await l([...o],t.clone(),n.clone(),i));r(i),u=new a({vertexAttributes:new c({position:s}),components:e,spatialReference:n.clone()})}}return new e({attributes:{imageID:o.imageID},geometry:u,symbol:_.clone(),visible:!1})},j=e=>{let t=e.vertexAttributes.position,n=0,r=0,i=0,a=t.length/3;for(let e=0;e<t.length;e+=3)n+=t[e],r+=t[e+1],i+=t[e+2];return new o({x:n/a,y:r/a,z:i/a,spatialReference:e.spatialReference})};export{O as default};
|
|
2
|
+
import e from"../../../../Graphic.js";import{isSome as t}from"../../../../core/arrayUtils.js";import{clamp as n}from"../../../../core/mathUtils.js";import{throwIfAborted as r,waitTick as i}from"../../../../core/promiseUtils.js";import{subtract as a,length as o,normalize as s}from"../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import l from"../../../../geometry/Mesh.js";import u from"../../../../geometry/Point.js";import{projectAsync as d}from"../../../../geometry/projectionUtils.js";import{projectPointToVector as f}from"../../../../geometry/projection/projectPointToVector.js";import p from"../../../../geometry/support/MeshVertexAttributes.js";import{projectVertices as m,updateFrustum as h}from"../../../../layers/orientedImagery/core/coverageUtils.js";import g from"../../../../layers/orientedImagery/transformations/updateElevation.js";import{toRenderCamera as _}from"../../../../views/3d/webgl.js";import{directionToHeadingTilt as v}from"../../../../views/3d/support/viewingModeUtils.js";import{getPointerActions as y,eventMatchesMousePointerActions as b}from"../../../../views/input/handlers/support.js";import{fixedImageSize as x,invalidCameraHeading as S}from"../../constants.js";import{createFeatureCoverage as C}from"../../featureCoverage.js";import{activeFrustumSymbol as w,additionalFrustumSymbol as T}from"../../symbols.js";import{getDefaultSuperimposeFov as E,panoramicSuperimposeMaxFov as D,panoramicSuperimposeMinFov as O,panoramicSuperimposeZoomOutFactor as k,panoramicSuperimposeZoomInFactor as A,getViewCameraFieldOfView as j,panoramicSuperimposeMaxTilt as M,panoramicSuperimposeMinTilt as N,panoramicSuperimposeKeyboardAngleStep as P}from"../../support/superimposeUtils.js";class F{constructor(u){this.viewModel=u,this._defaultSuperimposeSecondaryDragAction=null,this._defaultSuperimposeNavigationHandles=[],this._panoramicSuperimposeAnchor=null,this._panoramicSuperimposeLastScreenPoint=null,this._panoramicSuperimposeNavigationHandles=[],this.createFootprints=async n=>{let{coverageFrustums:i,currentBestFeature:a,isAdditionalCoverageVisible:o,view:s}=this.viewModel,c=i.filter(t);for(let t of c){let i=t.clone();if(!s.spatialReference.equals(i.spatialReference)){let{components:e,spatialReference:t,origin:a,vertexAttributes:o,vertexSpace:c}=i;if(c.type===`local`){let e=await d(a,s.spatialReference,n);r(n),i.centerAt(e)}else{let a=o.position,c=Float64Array.from(await m([...a],t.clone(),s.spatialReference.clone(),n));r(n),i=new l({vertexAttributes:new p({position:c}),components:e,spatialReference:s.spatialReference.clone()})}}t.imageID===a.attributes.objectId?this.viewModel.bestFeatureFootprint=new e({attributes:{imageID:t.imageID},geometry:i,symbol:w.clone(),visible:!1}):this.viewModel.additionalFootprints.push(new e({attributes:{imageID:t.imageID},geometry:i,symbol:T.clone(),visible:o}))}},this.updateFootprint=async(n,i,a)=>{let{bestFeatureFootprint:o,currentBestFeature:s,activeViewer:c,footprintExtent:l,view:u,mode:f}=this.viewModel,p=f===`video`?x:c?.imageSize,m=i??s;if(!s||!o?.geometry||!p||!l||!m||!u?.spatialReference){this.viewModel.updateCurrentCoveragePolygon(null);return}let{attributes:{cameraHeight:g,location:_,cameraPitch:v,horizontalFieldOfView:y,verticalFieldOfView:b,cameraRoll:S}}=m,C=null;i&&(C=await this._computeFeatureFootprint(i,a));let T=m.attributes.location.toArray(),{vertexAttributes:{position:E},spatialReference:D}=(i&&C?C:o).geometry,O=await I(E,D,_.spatialReference),k=await this.viewModel.getMapPoint(n);r(a);let A=k.filter(t);if(!A.length)return;A[0].spatialReference.equals(_.spatialReference)||(A=await Promise.all(A.map(async e=>{let t=await d(e,_.spatialReference,a);return r(a),t})));let j=await h(n.map(({x:e,y:t})=>[e,t]),A.map(e=>e.toArray()),{cameraHeight:g,cameraLocation:T,cameraPitch:v,frustumVertices:O,horizontalFieldOfView:y,imageHeight:p[1],imageWidth:p[0],inSRS:{wkid:_.spatialReference.wkid},outSRS:{wkid:u.spatialReference.wkid},verticalFieldOfView:b,cameraRoll:S??0,options:a});this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:m.attributes.objectId},geometry:j,symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updateVideoFootprint=async n=>{let{points:i,feature:a,scale:o,options:s}=n,{bestFeatureFootprint:c,currentBestFeature:l,activeViewer:u,footprintExtent:f,view:p,mode:m}=this.viewModel,g=m===`video`?x:u?.imageSize,_=a??l;if(!l||!c?.geometry||!g||!f||!_||!p?.spatialReference||m===`none`){this.viewModel.updateCurrentCoveragePolygon(null);return}let{attributes:{cameraHeight:v,location:y,cameraPitch:b,horizontalFieldOfView:S,verticalFieldOfView:C,cameraRoll:T}}=_,E=null;a&&(E=await this._computeFeatureFootprint(a,s));let D=_.attributes.location.toArray(),{vertexAttributes:{position:O},spatialReference:k}=(a&&E?E:c).geometry,A=await I(O,k,y.spatialReference),j={feature:_,mode:m,imageSize:g,footprintExtent:f},M=await this.viewModel.getMapPointForFeature(i,j,s);r(s);let N=M.filter(t);if(!N.length)return;N[0].spatialReference.equals(y.spatialReference)||(N=await Promise.all(N.map(async e=>{let t=await d(e,y.spatialReference,s);return r(s),t})));let P=await h(i.map(({x:e,y:t})=>[e,t]),N.map(e=>e.toArray()),{cameraHeight:v,cameraLocation:D,cameraPitch:b,frustumVertices:A,horizontalFieldOfView:S,imageHeight:g[1],imageWidth:g[0],inSRS:{wkid:y.spatialReference.wkid},outSRS:{wkid:p.spatialReference.wkid},verticalFieldOfView:C,cameraRoll:T??0,options:s});if(o&&P){let e=R(P);P.scale(o,{origin:e})}this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:_.attributes.objectId},geometry:P,symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updateFootprintPanorama=async(t,n)=>{await i(n);let{horizontalFieldOfView:r,pitch:a,verticalFieldOfView:o,yaw:s,feature:c}=t,l=c?.clone()??this.viewModel.currentBestFeature?.clone();if(!l)return;let{attributes:u}=l;u.orientedImageryType=null,u.cameraHeading=s,u.cameraPitch=a,u.horizontalFieldOfView=r,u.verticalFieldOfView=o,u.cameraRoll=0;let{frustum:d}=C(u);!d||!this.viewModel.view?.spatialReference.equals(d.spatialReference)?this.viewModel.updateCurrentCoveragePolygon(null):this.viewModel.updateCurrentCoveragePolygon(new e({attributes:{imageID:u.objectId},geometry:d.clone(),symbol:w.clone(),visible:this.viewModel.currentCoverageVisible}))},this.updatePanoramicSuperimposeCamera=async(e,t)=>{let{camera:n,currentBestFeature:i}=e,{view:a}=this.viewModel;if(a?.type!==`3d`)return;let o=i.attributes.location,s=o.spatialReference.equals(a.spatialReference)?o:await d(o,a.spatialReference,t);if(r(t),!s)return;let c=n.clone();c.position=s.clone(),a.camera=c,this._enablePanoramicSuperimposeNavigation(s)},this.updateDefaultSuperimposeCamera=async(e,t)=>{let{currentBestFeature:i,target:l}=e,{view:u}=this.viewModel;if(u?.type!==`3d`)return;let{cameraHeading:p,cameraPitch:m,cameraRoll:h,horizontalFieldOfView:g,location:y,verticalFieldOfView:b}=i.attributes,x=y.spatialReference.equals(u.spatialReference)?y.clone():await d(y,u.spatialReference,t);if(r(t),!x)return;let C=E(u,g,b,h??0),w=u.camera.clone();if(w.position=x,w.fov=n(w.fov,O,D),p!=null&&p!==S&&(w.heading=p),m!=null&&(w.tilt=m),C!=null&&(w.fov=C),l){let e=_(u,w),t=c();if(e&&f(l,t,u.renderSpatialReference)&&(a(t,t,e.eye),o(t)>0)){s(t,t);let{heading:n,tilt:r}=v(u,e.eye,t,e.up);w.heading=n,w.tilt=r}}u.camera=w},this.enableDefaultSuperimposeNavigation=()=>{let{view:e}=this.viewModel;if(e?.type!==`3d`)return;let t=e.navigation.actionMap;this._defaultSuperimposeSecondaryDragAction??=t.dragSecondary,t.dragSecondary!==`none`&&(t.dragSecondary=`none`),this._defaultSuperimposeNavigationHandles.length||(this._defaultSuperimposeNavigationHandles=[e.on(`drag`,this._handleDefaultSuperimposeDrag)])},this.disableDefaultSuperimposeNavigation=()=>{let{view:e}=this.viewModel,t=this._defaultSuperimposeSecondaryDragAction;this._defaultSuperimposeNavigationHandles.forEach(e=>e.remove()),this._defaultSuperimposeNavigationHandles=[],e?.type!==`3d`||t==null||(e.navigation.actionMap.dragSecondary=t),this._defaultSuperimposeSecondaryDragAction=null},this.disablePanoramicSuperimposeNavigation=()=>{this._panoramicSuperimposeNavigationHandles.forEach(e=>e.remove()),this._panoramicSuperimposeNavigationHandles=[],this._panoramicSuperimposeAnchor=null,this._panoramicSuperimposeLastScreenPoint=null},this._handleDefaultSuperimposeDrag=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`)return;let n=y(`rotate`,t.navigation.actionMap);b(e,n)&&e.stopPropagation()},this._handlePanoramicSuperimposeDoubleClick=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;e.stopPropagation();let r=t.camera.clone(),i=e.native.ctrlKey?k:A;r.position=this._panoramicSuperimposeAnchor.clone(),r.fov=n(r.fov*i,O,D),t.camera=r},this._handlePanoramicSuperimposeDrag=e=>{let{view:t}=this.viewModel;if(t&&t.type===`3d`&&this._panoramicSuperimposeAnchor)switch(e.stopPropagation(),e.action){case`start`:this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};return;case`update`:{let r=this._panoramicSuperimposeLastScreenPoint;if(!r){this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};return}let i=r.x-e.x,a=e.y-r.y;this._panoramicSuperimposeLastScreenPoint={x:e.x,y:e.y};let o=t.camera.clone(),{horizontal:s,vertical:c}=j(t);o.position=this._panoramicSuperimposeAnchor.clone(),o.heading+=s*i/Math.max(t.width,1),o.tilt=n(o.tilt+c*a/Math.max(t.height,1),N,M),t.camera=o;return}case`end`:this._panoramicSuperimposeLastScreenPoint=null;return}},this._handlePanoramicSuperimposeKeyDown=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;let r=t.camera.clone(),i=!0;switch(r.position=this._panoramicSuperimposeAnchor.clone(),e.key){case`ArrowLeft`:r.heading-=P;break;case`ArrowRight`:r.heading+=P;break;case`ArrowUp`:r.tilt=n(r.tilt-P,N,M);break;case`ArrowDown`:r.tilt=n(r.tilt+P,N,M);break;default:i=!1}i&&(e.stopPropagation(),t.camera=r)},this._handlePanoramicSuperimposeWheel=e=>{let{view:t}=this.viewModel;if(!t||t.type!==`3d`||!this._panoramicSuperimposeAnchor)return;e.stopPropagation();let r=t.camera.clone();r.position=this._panoramicSuperimposeAnchor.clone(),r.fov=n(r.fov*(e.deltaY>0?k:A),O,D),t.camera=r}}async _computeFeatureFootprint(e,t){let{currentBestFeature:n,view:i}=this.viewModel,a=n?.elevationSample;if(a?.extent&&!a.extent.contains(e.geometry)&&(a=await this.viewModel.processFeatureElevation([e],e.geometry.clone(),t)??a),a){let n=await g(e.geometry.clone(),{elevationSample:a},t);r(t),e.attributes.elevation=n.z}return L(e,i.spatialReference,t)}_enablePanoramicSuperimposeNavigation(e){let{view:t}=this.viewModel;t&&t.type===`3d`&&(this.disablePanoramicSuperimposeNavigation(),this._panoramicSuperimposeAnchor=e.clone(),this._panoramicSuperimposeNavigationHandles=[t.on(`drag`,this._handlePanoramicSuperimposeDrag),t.on(`mouse-wheel`,this._handlePanoramicSuperimposeWheel),t.on(`double-click`,this._handlePanoramicSuperimposeDoubleClick),t.on(`key-down`,this._handlePanoramicSuperimposeKeyDown)])}}async function I(e,t,n,r){return Float64Array.from((await Promise.all(e.reduce((e,t,n)=>{let r=Math.floor(n/3);return e[r]=e[r]??[],e[r].push(t),e},[]).map(async e=>(await d(new u(e,t),n,r)).toArray()))).flat())}const L=async(t,n,i)=>{let{frustum:a}=C(t.attributes),o=a.clone();if(!n.equals(o.spatialReference)){let{components:e,spatialReference:t,origin:a,vertexAttributes:s,vertexSpace:c}=o;if(c.type===`local`){let e=await d(a,n,i);r(i),o.centerAt(e)}else{let a=s.position,c=Float64Array.from(await m([...a],t.clone(),n.clone(),i));r(i),o=new l({vertexAttributes:new p({position:c}),components:e,spatialReference:n.clone()})}}return new e({attributes:{imageID:a.imageID},geometry:o,symbol:w.clone(),visible:!1})},R=e=>{let t=e.vertexAttributes.position,n=0,r=0,i=0,a=t.length/3;for(let e=0;e<t.length;e+=3)n+=t[e],r+=t[e+1],i+=t[e+2];return new u({x:n/a,y:r/a,z:i/a,spatialReference:e.spatialReference})};export{F as default};
|