@arcgis/core 5.2.0-next.144 → 5.2.0-next.146

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.
Files changed (138) hide show
  1. package/analysis/AreaMeasurementAnalysis.d.ts +11 -1
  2. package/analysis/DirectLineMeasurementAnalysis.d.ts +11 -1
  3. package/analysis/DistanceMeasurementAnalysis.d.ts +8 -0
  4. package/arcade/featureSetUtils.js +1 -1
  5. package/arcgisGlobal.d.ts +5 -5
  6. package/assets/esri/core/workers/RemoteClient.js +1 -1
  7. package/assets/esri/core/workers/chunks/{1ede8666d804c553803e.js → 0b6941781e35ce0f7274.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{a0d459bdb91ee892d4b6.js → 116293b1ee788a89ce1e.js} +1 -1
  9. package/assets/esri/core/workers/chunks/18f20fd43ec9ce03cef1.js +1 -0
  10. package/assets/esri/core/workers/chunks/{8959a825f5e1ce6f38ac.js → 1c65ab9ed611c322ce27.js} +1 -1
  11. package/assets/esri/core/workers/chunks/257910cca66dc5df465e.js +1 -0
  12. package/assets/esri/core/workers/chunks/2e096537a3a5555a4a93.js +1 -0
  13. package/assets/esri/core/workers/chunks/{8ba32d3a0df4a206ef1c.js → 392bcef780df52fb4cca.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{d4926545193414cf2f16.js → 4ed8655770a3e018e366.js} +1 -1
  15. package/assets/esri/core/workers/chunks/505227797bcf2a1d908d.js +1 -0
  16. package/assets/esri/core/workers/chunks/532a1b6ff9a7c950e325.js +1 -0
  17. package/assets/esri/core/workers/chunks/56a24061589f4a968818.js +1 -0
  18. package/assets/esri/core/workers/chunks/{5b3cfe95314a75a735c1.js → 588e677f33df86a595bf.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{25e6013e2c095629b236.js → 58c252289411b0d86473.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{1c0975c2dd1d0e2710bb.js → 6883a5c6883eccaddf64.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{f74e32d2ffe81778826b.js → 6c1d5577a17a5c8ccf39.js} +1 -1
  22. package/assets/esri/core/workers/chunks/6c83398cf586ecea0eb1.js +1 -0
  23. package/assets/esri/core/workers/chunks/{e521bb9ee2030245c3ce.js → 6f358116f79021ff9687.js} +1 -1
  24. package/assets/esri/core/workers/chunks/76196c414e48834f7b92.js +1 -0
  25. package/assets/esri/core/workers/chunks/{cbe6c0f32608cb504695.js → 776ae25a34352d3468bc.js} +1 -1
  26. package/assets/esri/core/workers/chunks/77ebacfdf8e57f2e03f1.js +1118 -0
  27. package/assets/esri/core/workers/chunks/794e5a67a88cb10c1a19.js +1 -0
  28. package/assets/esri/core/workers/chunks/943a0f140813ee4ab04a.js +1 -0
  29. package/assets/esri/core/workers/chunks/{fccbb902fe08448f91de.js → 9c1e69ac82e2bf746191.js} +1 -1
  30. package/assets/esri/core/workers/chunks/aba42885c5d6b2b5fe7f.js +1 -0
  31. package/assets/esri/core/workers/chunks/b61008f28b788f759e2a.js +1 -0
  32. package/assets/esri/core/workers/chunks/{402a82c77420254831bc.js → b7d77dd2abb255fd2e5a.js} +1 -1
  33. package/assets/esri/core/workers/chunks/{8b54589f173259c1ba55.js → b8054adc45bca069b948.js} +1 -1
  34. package/assets/esri/core/workers/chunks/ba48045a81acc4cda927.js +1 -0
  35. package/assets/esri/core/workers/chunks/d21257d2e2a37266c0f7.js +1 -0
  36. package/assets/esri/core/workers/chunks/d4f038e04c42aed588c1.js +1 -0
  37. package/assets/esri/core/workers/chunks/d90a3bfd45b5ed4092e0.js +1 -0
  38. package/assets/esri/core/workers/chunks/{43fc42405167a5537039.js → f095cf98940e3f95d51e.js} +1 -1
  39. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +0 -2
  40. package/assets/esri/themes/dark/main.css +1 -1
  41. package/assets/esri/themes/light/main.css +1 -1
  42. package/assets/esri/themes/light/view.css +1 -1
  43. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.en.json +1 -1
  44. package/{basemaps/BasemapCollection.d.ts → basemapGallery/BasemapGalleryModel.d.ts} +8 -8
  45. package/{basemaps/BasemapCollection.js → basemapGallery/BasemapGalleryModel.js} +1 -1
  46. package/{basemaps → basemapGallery}/BasemapsSource.d.ts +1 -1
  47. package/{basemaps → basemapGallery}/BasemapsSource.js +1 -1
  48. package/{basemaps → basemapGallery}/LocalBasemapsSource.d.ts +2 -2
  49. package/{basemaps → basemapGallery}/LocalBasemapsSource.js +1 -1
  50. package/{basemaps → basemapGallery}/PortalBasemapsSource.d.ts +2 -2
  51. package/{basemaps → basemapGallery}/PortalBasemapsSource.js +1 -1
  52. package/{basemaps → basemapGallery}/support/BasemapItem.d.ts +2 -2
  53. package/{basemaps → basemapGallery}/support/BasemapItem.js +1 -1
  54. package/{basemaps → basemapGallery}/types.d.ts +2 -2
  55. package/chunks/GlobalIllumination.glsl.js +4 -2
  56. package/chunks/GlobalIlluminationBlur.glsl.js +3 -5
  57. package/chunks/GlobalIlluminationUpscale.glsl.js +1 -1
  58. package/config.js +1 -1
  59. package/core/colorUtils.js +1 -1
  60. package/form/elements/inputs/DynamicChoiceInput.d.ts +35 -5
  61. package/kernel.js +1 -1
  62. package/layers/ParquetLayer.d.ts +9 -8
  63. package/layers/ParquetLayer.js +1 -1
  64. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  65. package/layers/graphics/transferFeatures.js +1 -1
  66. package/layers/raster/datasets/TIFFRaster.js +1 -1
  67. package/layers/support/ParquetPortalItemData.d.ts +2 -0
  68. package/layers/support/ParquetPortalItemData.js +1 -1
  69. package/layers/support/PortalItemData.d.ts +21 -0
  70. package/layers/support/parquetUtils.d.ts +1 -1
  71. package/layers/support/types.d.ts +1 -1
  72. package/package.json +2 -2
  73. package/symbols/cim/cimAnalyzer.js +1 -1
  74. package/views/2d/analysis/AreaMeasurementAnalysisView2D.d.ts +4 -4
  75. package/views/2d/analysis/DistanceMeasurementAnalysisView2D.d.ts +4 -4
  76. package/views/2d/layers/features/sources/strategies/FeatureDrillDownTileLoadStrategy.js +1 -1
  77. package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
  78. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  79. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  80. package/views/3d/analysis/ViewshedAnalysisView3D.d.ts +3 -0
  81. package/views/3d/analysis/VolumeMeasurementAnalysisView3D.d.ts +2 -1
  82. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  83. package/views/3d/layers/support/FeatureMemory.js +1 -1
  84. package/views/3d/layers/support/FeatureTile.js +1 -1
  85. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  86. package/views/3d/layers/support/featureTileQuery3D.js +1 -1
  87. package/views/3d/support/PBFDecoder.js +1 -1
  88. package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadGlobalIllumination.glsl.js +16 -11
  89. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  90. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIlluminationColorQuantization.glsl.js +2 -2
  91. package/views/SceneView.d.ts +4 -10
  92. package/views/View.d.ts +4 -12
  93. package/views/interactive/options/SnappingOptions.d.ts +29 -12
  94. package/views/interactive/options/TooltipOptions.d.ts +9 -1
  95. package/views/interactive/options/ValueOptions.d.ts +9 -2
  96. package/views/interactive/options/ViewOptions.d.ts +82 -6
  97. package/views/interactive/support/Units.d.ts +1 -0
  98. package/widgets/BasemapGallery/BasemapGalleryViewModel.d.ts +2 -2
  99. package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
  100. package/widgets/BasemapGallery/support/BasemapGalleryItem.d.ts +3 -3
  101. package/widgets/BasemapGallery/support/LocalBasemapsSource.d.ts +2 -2
  102. package/widgets/BasemapGallery/support/PortalBasemapsSource.d.ts +2 -2
  103. package/widgets/BasemapGallery/types.d.ts +3 -3
  104. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  105. package/widgets/BatchAttributeForm/expressions/ExpressionsManager.js +1 -1
  106. package/widgets/BatchAttributeForm/expressions/expressionUtils.js +1 -1
  107. package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +6 -0
  108. package/widgets/BatchAttributeForm/inputs/FieldInput.js +1 -1
  109. package/widgets/BatchAttributeForm/inputs/support/DynamicChoiceController.js +1 -1
  110. package/widgets/BatchAttributeForm/inputs/support/createBatchFormInputs.js +1 -1
  111. package/widgets/BatchAttributeForm.js +1 -1
  112. package/widgets/Editor/EditorViewModel.d.ts +13 -8
  113. package/widgets/Editor.d.ts +9 -9
  114. package/widgets/FeatureForm.d.ts +2 -2
  115. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  116. package/widgets/Sketch/SketchViewModel.d.ts +13 -8
  117. package/widgets/Sketch.d.ts +9 -9
  118. package/assets/esri/core/workers/chunks/14a3808427deaaa85bf2.js +0 -1
  119. package/assets/esri/core/workers/chunks/1b551ef3d84d9c1e93f9.js +0 -1
  120. package/assets/esri/core/workers/chunks/260dcb79dfd0f981949f.js +0 -1
  121. package/assets/esri/core/workers/chunks/303676d1b10676c9cab4.js +0 -1
  122. package/assets/esri/core/workers/chunks/37a636f61cfe89c6bfd1.js +0 -1
  123. package/assets/esri/core/workers/chunks/4097edb2ad522dff50ce.js +0 -1
  124. package/assets/esri/core/workers/chunks/4a0216ee6382d9276f1c.js +0 -1
  125. package/assets/esri/core/workers/chunks/55766692b578e60dd70e.js +0 -1742
  126. package/assets/esri/core/workers/chunks/57970d43cdcc5cf57a30.js +0 -1
  127. package/assets/esri/core/workers/chunks/5fd099ca1024707387b2.js +0 -1
  128. package/assets/esri/core/workers/chunks/68e24fa3f564c2a5c9fd.js +0 -1
  129. package/assets/esri/core/workers/chunks/8e7a33cc1f83063043f2.js +0 -1
  130. package/assets/esri/core/workers/chunks/a23272a7a47a95f6ddea.js +0 -1
  131. package/assets/esri/core/workers/chunks/cbdebdfa5f2cded29d0d.js +0 -1
  132. package/assets/esri/core/workers/chunks/cfae60b9d2f2939e9c16.js +0 -1
  133. package/assets/esri/core/workers/chunks/d56780290e0218d3e9de.js +0 -1
  134. package/assets/esri/core/workers/chunks/de24fc414a3f243d675e.js +0 -1
  135. package/assets/esri/core/workers/chunks/e22d45aeef293a5ffb78.js +0 -1
  136. package/assets/esri/core/workers/chunks/ea746d9bbea170719a1c.js +0 -1
  137. package/assets/esri/core/workers/chunks/f0c0c02730fe0d948fc1.js +0 -1
  138. /package/{basemaps → basemapGallery}/support/basemapCompatibilityUtils.js +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/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 ee from"../../core/ReactiveMap.js";import{whenOnce as b,on as te,watch as x,syncAndInitial as S,initial as C,when as ne}from"../../core/reactiveUtils.js";import{sqlAnd as w}from"../../core/sql.js";import{getMetersPerUnitForSR as T}from"../../core/units.js";import{property as E,subclass as re}from"../../core/accessorSupport/decorators.js";import{isSerializable as ie}from"../../core/support/jsonUtils.js";import{UpdatingHandles as ae}from"../../core/support/UpdatingHandles.js";import oe from"../../geometry/Extent.js";import D from"../../geometry/Point.js";import{projectAsync as O}from"../../geometry/projectionUtils.js";import se from"../../geometry/SpatialReference.js";import{polygonCentroidPoint as ce}from"../../geometry/support/centroid.js";import{isClockwise as le}from"../../geometry/support/coordsUtils.js";import{normalizeMapX as k}from"../../geometry/support/normalizeUtils.js";import{geographicToWebMercator as A}from"../../geometry/support/webMercatorUtils.js";import j from"../../layers/GraphicsLayer.js";import ue from"../../layers/MediaLayer.js";import{searchImages as M}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as de}from"../../layers/orientedImagery/core/bestImageUtils.js";import{computePolygonForInspection as fe,resizePolygon as pe,checkIfFrustumContainsSelectedPoint as me,checkIfPolygonContainsSelectedPoint as he}from"../../layers/orientedImagery/core/coverageUtils.js";import{isElevationSource as ge}from"../../layers/orientedImagery/core/ElevationSourceDefinitions.js";import{convertGeographicToWebMercator as N}from"../../layers/orientedImagery/core/utils.js";import _e from"../../layers/orientedImagery/transformations/updateElevation.js";import{getElevationSampler as ve}from"../../layers/orientedImagery/transformations/updateElevationUtils.js";import{or as ye,getInitialAngle as P,convertPixelLocationToSphereVertex as be,getUpdateElevationProps as F,adjustHorizonAngles as xe,convertOrientationToPixelLocation as Se,getImageToWorldProperties as I}from"../../layers/orientedImagery/transformations/utils.js";import Ce from"../../layers/support/ExtentAndRotationGeoreference.js";import{getFloorFilterClause as we}from"../../layers/support/floorFilterUtils.js";import Te from"../../layers/support/VideoElement.js";import Ee from"../../views/MapView.js";import De from"../../views/draw/Draw.js";import{scale as Oe}from"../../views/draw/support/drawUtils.js";import{ViewEventPriorities as ke}from"../../views/input/InputManager.js";import Ae from"../PanoramicVideoViewer.js";import L from"../PanoramicViewer.js";import{defaultAngleThresholdInDegrees as R,videoMapViewConstraint as je,fixedImageSize as z,clockwiseDirections as Me,videoFitScaleTolerance as Ne,videoExtent as B,invalidCameraHeading as V,sectorsInOrder as H,sampleExtent as Pe,sectorsRadii as U}from"./constants.js";import{createFeatureCoverage as W}from"./featureCoverage.js";import{isFeatureAttachment as G}from"./galleryUtils.js";import{getPanoramicImageProperties as K}from"./panoramicImageProperties.js";import{crossSymbol as q,crossSymbol3D as Fe,measurementPolygonSymbol as Ie,polylineSymbolPanoramic as Le,measurementPolylineSymbol as Re,cameraOverlaySymbol3D as ze,cameraOverlaySymbol as Be,diamondSymbol as J,diamondSymbol3D as Ve,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=R,this.cameraPitchThreshold=R,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 ee,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 Ee({map:new Map,attributionVisible:!1,constraints:je}),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 j({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 Ae,this._panoramicViewer=new L,this._panoramicMeasurementViewer=new L,this._referencePointOnGround=null,this._referencePointOnImage=null,this._referenceTransformationService=null,this._sectorData=null,this._transformationService=null,this._featureToSector=null,this._updatingHandles=new ae,this._clickTask=null,this._crossSymbol=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}`),b(()=>{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`?z:e===`panoramic-video`?this._panoramicVideoViewer.imageSize:this.activeViewer?.imageSize},this._geometryToOverlayImageGeometry=async(e,t,n)=>{let{mode:r,videoViewModel:i,_panoramicVideoViewer:a}=this;if(r===`video`)return await i?.geometryToOverlayGeometry(e,t)??null;if(r===`panoramic-video`){let i={feature:t,mode:r,imageSize:n,footprintExtent:this.footprintExtent};return await this._transformationService.geometryToImageGeometryForFeature(e,i,a.horizonAngles)}return await this._transformationService.geometryToImageGeometry(e)},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,ke.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=te(()=>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&&!ye(!l,c.spatialReference.equals(l))&&(c=await O(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)=>{if(this.mode===`video`){await this._loadFlatVideo(e,t);return}if(this.mode===`panoramic-video`){await this._loadVideo(t);return}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 b(()=>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?A(c):new D(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 P(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 P(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 P(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*Me.length})}return this._mediaPrefetcher},this._loadViewAdapter=async e=>{let{view:t}=this;if(this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),!t){this._adapter=null;return}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=k(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-Ne,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`);return}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 D({...ie(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:q}),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=be(e,...n,i);this._crossSymbol=new t({geometry:new D(a,se.WebMercator),symbol:Fe}),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([x(()=>this.view,()=>this.load(),S),x(()=>this.view?.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},C),x(()=>this.view?.map?.allLayers?.length,e=>{e&&this.view?.map?.layers.reorder(this._overlays,e-1)},C),x(()=>[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()},S),x(()=>[this.triangularMeasurementActive,this.currentBestFeatureMeasurementImage],()=>{this._createTriangularImageClickHandle()},S),x(()=>[this.state,this.imageLocationToolState,this.view],()=>{this._initializeMeasurementService(),this._initializeLocationViewModel()},S),x(()=>this.measureType,()=>{this.clearPreviousMeasurements(),this._initializeMeasurementService()},S),x(()=>this.bestFeatureAngle,(e,t)=>{this.previousFeatureAngle=t??0},S),x(()=>[this.superimposeViewEnabled,this.defaultSuperimposeCameraLockEnabled,this.superimposeViewSupported,this.currentBestFeature,this.mode,this.state,this.view?.type],()=>{if(this._shouldDisableUnsupportedSuperimposeView()){this.superimposeViewEnabled=!1;return}if(!this._hasActiveSuperimposeCameraContext()){this._resetInactiveSuperimposeState();return}this._updateSuperimposedImage()},S),x(()=>this._getSuperimposeCameraWatchState(),()=>this._handleSuperimposeCameraChange(),S),x(()=>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}),x(()=>[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()})},S),x(()=>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()})},S),x(()=>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())}),x(()=>this.mode,e=>{switch(this.removeHandles(Y.interactionHandles),e){case`default`:this.addHandles(x(()=>{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})}))},{...S,equals:(e,t)=>n(e,t,u)}),Y.interactionHandles);break;case`video`:this.addHandles(x(()=>{let{footprintExtent:e,videoElement:t,bestFeatureFootprint:n}=this;if(e&&t?.loaded&&n)return{videoExtent:B,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)}))},{...S,equals:(e,t)=>n(e?.videoExtent,t?.videoExtent,u)&&e?.bestFeatureFootprint===t?.bestFeatureFootprint}),Y.interactionHandles);break;case`panoramic`:this.addHandles(x(()=>{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(x(()=>{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)}},S),x(()=>[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)},S),x(()=>this.activeViewer?.imageRenderer,()=>{this.sketch&&(this.sketch.view=this.activeViewer?.imageRenderer)}),x(()=>this.activeViewer,e=>{this.removeHandles(Y.hittestHandles),e&&this.addHandles(te(()=>e,`hittest-response`,this._handleImageHitTestResponse),Y.hittestHandles)}),x(()=>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)}))}),x(()=>[this.videoMapView.interacting,this.videoMapView.navigating,this.videoMapView.scale],()=>{this._scheduleVideoInteractionUpdate()},{initial:!0}),ne(()=>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._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._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(){return this.layer?.orientationAccuracy?.every(e=>e===0)??!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)||G(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===V}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?we(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?H.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)||G(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:B}set view(e){this._set(`view`,e)}get _defaultGraphicsLayer(){let e={blendMode:`source-atop`};switch(this.mode){case`panoramic`:return new j({...e,elevationInfo:{mode:`absolute-height`}});case`default`:return new j({...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}=W(n);l=u.clone(),n.isInspection&&(l=fe(n)),c&&(l=pe(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!==V&&(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?.[H[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=N(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{features:s,polygons:c}=o?this.filterByFootprints(r,t,{filterByFrustum:!0}):this.filterByFootprints(r,t,{skipFilter:n?.skipFilter});if(!this._checkFeatures(s))return;let l=await this.processElevationSample(c,s,n);v(n),await this._updateElevationOfSelectedPointAndLocations(s,t,l),v(n),s.forEach(({attributes:e})=>{if(e.cameraHeading!==V){let{polygon:t,frustum:n}=W(e);this.coveragePolygons.add(t),n&&this.coverageFrustums.add(n)}}),Je(s,l);let u=s;if(a&&t&&i!=null&&(u=Ye(s,t,i),!u.length)){this.setMessage(`noImageAtElevation`,`info`);return}let d=this._processSuitableFeatures(u,t);this.updateSuitabilities(d,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=Ie(o),this.sketch.polylineSymbol=a===`panoramic`?Le:Re(o,2.5))}async startHeightMeasurement(){this.displayNewMeasurementButton=!1,this.draw??=new De({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){let{activeViewer:n,overlayedCameraLocations:i,layer:a,mode:o,layerFloorFilterClause:s,layerTimeExtent:c,videoViewModel:l,_panoramicVideoViewer:u}=this,d=o===`video`,f=o===`panoramic-video`,p=this._getActiveFeatureForCurrentMode(),m=this._computeOverlayImageSize();if(!m||!p||!a||o===`none`||!this.overlayGraphicsEnabled)return;let{polygon:h}=W(p.attributes);if(d?l?.removeOverlayGraphics(i.toArray()):f?u.removeManyGraphics(i.toArray()):n?.removeManyGraphics(i.toArray()),i.removeAll(),e){let{features:e}=await a.queryFeatures({where:w(`${a.objectIdField} <> ${p.attributes.objectId}`,w(a.definitionExpression,s)),geometry:h,returnGeometry:!0,outFields:[a.objectIdField],timeExtent:c}),g=await Promise.all(e.map(async e=>{let{attributes:n,geometry:r}=e;if(r?.type!==`point`)return null;let i=await this._geometryToOverlayImageGeometry(r,p,m);if(!i)return null;let a=o===`panoramic`||o===`panoramic-video`?ze():Be();return new t({attributes:n,symbol:a,geometry:i})}));i.addMany(g.filter(r)),d?l?.addOverlayGraphics(i.toArray()):f?u.addManyGraphics(i.toArray()):n?.addManyGraphics(i.toArray())}}overlayGraphicsOnImage(e,t){if(this.removeOverlayedGraphicsOnImage(e),this.overlayedMapFeatures.set(e,t),this.mode===`video`){this.videoViewModel?.addOverlayGraphics(t.toArray());return}if(this.mode===`panoramic-video`){this._panoramicVideoViewer.addManyGraphics(t.toArray());return}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}=W(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 H.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 O(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 D({...e.toJSON()}),symbol:J}),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 M(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 O(n,o.spatialReference);i=o.contains(e);break}case`mesh`:{let e=n.spatialReference.equals(o.spatialReference)?n:await O(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:z,footprintExtent:this.footprintExtent},r):await this._transformationService.pointToPixel(n,r);if(!s){this.clearReferencePointOnImage();return}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!==V&&me(i,t):he(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:Ve.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:J.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:Ve.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=k(e.x,e.spatialReference);let o=n.spatialReference.equals(e.spatialReference)?e:await O(e,n.spatialReference),s=o.spatialReference.isGeographic?A(o):o,c=w(`1=1`,w(n.definitionExpression,r)),l=s.spatialReference.isGeographic?1:T(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 H)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*U[2],c=et(t,l),u=tt(r);if(!this._sectorData)return;let d=U[3]+s*Math.sin(r*Math.PI/180),f=U[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-U[3],t=f-U[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 Te({video:e??this.currentBestFeature.attributes.imagePath,georeference:new Ce({extent:new oe(Pe)}),autoplay:!1}),this.videoElement.content?.loop&&(this.videoElement.content.loop=!1);let n=new ue({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&&ge(r))return await ve({extent:this.footprintExtent,lod:r.lod,url:r.url,rasterFunction:r.rasterFunction})}_processSuitableFeatures(e,t){return de({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?N(i.selectedPoint):void 0,!s){if(o.orientedImageryType?.includes(`360`)){s=N(o.geometry);let{cameraHeading:e,farDistance:t,nearDistance:n}=o,r=[Math.sin(p(e)),Math.cos(p(e))],i=(t+n)/2;c=T(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=W(o).polygon,n=D.fromJSON(ce(t));s=N(n),c=T(s.spatialReference)}}this.selectedPoint=s,c=T(s.spatialReference);let l={layerInstanceOrURL:e,point:s,queryParams:{where:w(w(`1=1`,w(e.definitionExpression,n)),`${e.objectIdField} <> ${t}`),maximumDistance:e.maximumDistance?e.maximumDistance/c:void 0,timeExtent:r}},u=await M(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 F(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 _e([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){if(!e.length){this.currentBestFeature=null,this.additionalFeatures.removeAll();return}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])}_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)=>+le([e,t])),t.addRing(n),this.footprintExtent=Oe(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 O(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-U[3],n=e.y-U[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 b(()=>this.state===`image-loaded`,t),v(t),await this.restorePendingPanoramicNavigationViewState(t))}async _capturePendingNavigationViewState(e){if(this.mode==="default"){await this._capturePendingDefaultNavigationViewState(e);return}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]=xe(a,i,t),c=Se(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._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=N(l));let u={...r==="default"?I(a,i[0],i[1]):K(a,i[0],i[1]),cameraLocation:l},d=await F(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`?z: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=N(l));let u=r==="default"||r===`video`?`default`:`panoramic`,d={...u==="default"?I(a,i[0],i[1]):K(a,i[0],i[1]),cameraLocation:l},f=await F(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(){if(!this._crossSymbol){this.videoViewModel?.clearSelectedPointOnVideo();return}if(this.mode===`video`){this.videoViewModel?.clearSelectedPointOnVideo(),this._crossSymbol=null;return}this._panoramicViewer.removeGraphic(this._crossSymbol),this._imageViewer.removeGraphic(this._crossSymbol),this.videoMapView.graphics.remove(this._crossSymbol),this._crossSymbol=m(this._crossSymbol)}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:z,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:q.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;if(!this._hasActiveSuperimposeCameraContext()){this._abortSuperimposeSchedule();return}if(this.mode===`panoramic`){this._schedulePanoramicSuperimposeUpdate();return}if(!t||t.interacting||t.navigating){this._abortSuperimposeSchedule();return}this._scheduleDefaultSuperimposeUpdate()}_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([E()],$.prototype,`activeLayer`,null),e([E({readOnly:!0})],$.prototype,`activeViewer`,null),e([E()],$.prototype,`activeTriangulatedViewer`,null),e([E()],$.prototype,`accuracyParametersMissing`,null),e([E()],$.prototype,`additionalFeatures`,void 0),e([E({type:a.ofType(t)})],$.prototype,`additionalCameraLocations`,void 0),e([E({type:a.ofType(t)})],$.prototype,`additionalFootprints`,void 0),e([E()],$.prototype,`areaMeasurementResult`,void 0),e([E()],$.prototype,`areaMeasurementAccuracy`,void 0),e([E()],$.prototype,`bestFeatureAngle`,void 0),e([E()],$.prototype,`bestFeatureCurrentFootprint`,void 0),e([E({type:t})],$.prototype,`bestFeatureFootprint`,void 0),e([E({type:Number})],$.prototype,`brightness`,null),e([E()],$.prototype,`cameraHeadingThreshold`,void 0),e([E()],$.prototype,`cameraPitchThreshold`,void 0),e([E()],$.prototype,`clickAction`,void 0),e([E()],$.prototype,`correctedLocationPointOnImage`,void 0),e([E()],$.prototype,`videoViewModel`,void 0),e([E()],$.prototype,`collectionId`,void 0),e([E({type:Number})],$.prototype,`contrast`,null),e([E()],$.prototype,`coverageFrustums`,void 0),e([E()],$.prototype,`coveragePolygons`,void 0),e([E()],$.prototype,`currentBestFeature`,void 0),e([E()],$.prototype,`currentBestFeatureMeasurementImage`,void 0),e([E()],$.prototype,`currentBestFeatureLocation`,void 0),e([E()],$.prototype,`currentCoverageVisible`,void 0),e([E()],$.prototype,`currentNode`,null),e([E()],$.prototype,`depthImage`,void 0),e([E()],$.prototype,`depthImageNotSupported`,null),e([E()],$.prototype,`featureCache`,void 0),e([E()],$.prototype,`videoFeatureIndex`,void 0),e([E()],$.prototype,`navigationNodes`,void 0),e([E({json:{write:!1}})],$.prototype,`determineWorkflowForFeature`,void 0),e([E({json:{write:!1}})],$.prototype,`determineWorkflowForTriangularMeasurement`,void 0),e([E()],$.prototype,`disabled`,void 0),e([E()],$.prototype,`displayMessage`,void 0),e([E()],$.prototype,`displayNewMeasurementButton`,void 0),e([E()],$.prototype,`distanceMeasurementResult`,void 0),e([E()],$.prototype,`distanceAccuracyArray`,void 0),e([E()],$.prototype,`dataCaptureLayer`,void 0),e([E({readOnly:!0})],$.prototype,`featureCount`,null),e([E()],$.prototype,`features`,void 0),e([E()],$.prototype,`groundCoordinates`,void 0),e([E()],$.prototype,`groundCoordinatesAccuracy`,void 0),e([E()],$.prototype,`groundCoordinatesAccuracyLoading`,void 0),e([E()],$.prototype,`hasPendingPanoramicNavigationViewState`,null),e([E()],$.prototype,`heightGraphic`,void 0),e([E()],$.prototype,`heightMeasurementResult`,void 0),e([E()],$.prototype,`heightMeasurementAccuracy`,void 0),e([E({readOnly:!0})],$.prototype,`imageGalleryEnabled`,null),e([E()],$.prototype,`imageGeometryField`,void 0),e([E({readOnly:!0})],$.prototype,`imageLoaded`,null),e([E()],$.prototype,`imageLocationToolState`,void 0),e([E()],$.prototype,`initialVideoMapViewExtent`,void 0),e([E({readOnly:!0})],$.prototype,`invalidCameraHeading`,null),e([E()],$.prototype,`imagePointsInView`,null),e([E()],$.prototype,`imageMeasurementViewer`,void 0),e([E()],$.prototype,`isAdditionalCoverageVisible`,void 0),e([E()],$.prototype,`isAdditionalPointSourcesVisible`,void 0),e([E()],$.prototype,`layer`,void 0),e([E()],$.prototype,`layerView`,null),e([E({readOnly:!0})],$.prototype,`layerFloorFilterClause`,null),e([E({readOnly:!0})],$.prototype,`layerTimeExtent`,null),e([E({type:Number})],$.prototype,`localPort`,void 0),e([E()],$.prototype,`locationPointOnImage`,void 0),e([E()],$.prototype,`mapImageConversionToolState`,void 0),e([E()],$.prototype,`measureType`,void 0),e([E()],$.prototype,`measurementGraphic`,void 0),e([E({readOnly:!0,value:`none`})],$.prototype,`mode`,null),e([E()],$.prototype,`navigationMode`,void 0),e([E()],$.prototype,`navigatorCurrentBestFeature`,void 0),e([E()],$.prototype,`oiObjectIdField`,void 0),e([E({type:a.ofType(t)})],$.prototype,`overlayedCameraLocations`,void 0),e([E()],$.prototype,`overlayedMapFeatures`,void 0),e([E()],$.prototype,`panoramicVideoLoaded`,null),e([E()],$.prototype,`panoramicVideoPaused`,null),e([E()],$.prototype,`pixelCoordinates`,void 0),e([E()],$.prototype,`preserveAngle`,void 0),e([E()],$.prototype,`pointSources`,void 0),e([E({readOnly:!0})],$.prototype,`popupEnabled`,null),e([E()],$.prototype,`preloadMedia`,void 0),e([E()],$.prototype,`preloadMediaSize`,void 0),e([E()],$.prototype,`previousFeatureAngle`,void 0),e([E()],$.prototype,`referencePoint`,null),e([E({readOnly:!0})],$.prototype,`sectorData`,null),e([E()],$.prototype,`selectedPoint`,void 0),e([E({type:Number})],$.prototype,`sharpness`,null),e([E()],$.prototype,`shouldShowSelectedImage`,void 0),e([E()],$.prototype,`superimposeViewEnabled`,void 0),e([E()],$.prototype,`defaultSuperimposeCameraLockEnabled`,void 0),e([E()],$.prototype,`superimposeViewSupported`,null),e([E()],$.prototype,`sketch`,void 0),e([E()],$.prototype,`sketchTriangular`,void 0),e([E()],$.prototype,`sketchTriangularGraphicsLayer`,void 0),e([E()],$.prototype,`draw`,void 0),e([E()],$.prototype,`drawAdapter`,void 0),e([E()],$.prototype,`polylineDrawAction`,void 0),e([E()],$.prototype,`scheduledFrameId`,void 0),e([E()],$.prototype,`superimposeScheduledFrameId`,void 0),e([E()],$.prototype,`superimposeDebounceTimeoutId`,void 0),e([E()],$.prototype,`sketchAdapter`,void 0),e([E({readOnly:!0})],$.prototype,`sketchGraphicsLayer`,null),e([E({readOnly:!0})],$.prototype,`state`,null),e([E({readOnly:!0})],$.prototype,`thumbnails`,null),e([E()],$.prototype,`videoExtentPoints`,null),e([E()],$.prototype,`triangularMeasurementActive`,void 0),e([E()],$.prototype,`triangulatedDistanceMeasurement`,void 0),e([E()],$.prototype,`triangulatedDistanceAccuracy`,void 0),e([E()],$.prototype,`triangulatedAreaMeasurement`,void 0),e([E()],$.prototype,`triangulatedAreaAccuracy`,void 0),e([E()],$.prototype,`triangulatedMeasurementGraphic`,void 0),e([E()],$.prototype,`triangulatedPoint`,void 0),e([E()],$.prototype,`triangulatedMeasurementAdapter`,void 0),e([E()],$.prototype,`updateFootprint`,void 0),e([E()],$.prototype,`updateVideoFootprint`,void 0),e([E()],$.prototype,`updateFootprintPanorama`,void 0),e([E()],$.prototype,`updatingTriangularMeasurementState`,void 0),e([E({value:null})],$.prototype,`view`,null),e([E()],$.prototype,`videoElement`,void 0),e([E()],$.prototype,`videoLayer`,void 0),e([E()],$.prototype,`videoMapView`,void 0),e([E()],$.prototype,`verticalFilterEnabled`,void 0),e([E()],$.prototype,`frustumSearchEnabled`,void 0),e([E()],$.prototype,`_adapter`,void 0),e([E()],$.prototype,`_defaultGraphicsLayer`,null),e([E()],$.prototype,`_highlightedFeatureHandle`,void 0),e([E()],$.prototype,`_imageViewer`,void 0),e([E()],$.prototype,`_initialCurrentCoverageUpdate`,void 0),e([E()],$.prototype,`_locationViewModel`,void 0),e([E()],$.prototype,`_measurementService`,void 0),e([E()],$.prototype,`_mediaPrefetcher`,void 0),e([E()],$.prototype,`_navigationManager`,void 0),e([E()],$.prototype,`_overlays`,void 0),e([E()],$.prototype,`_superimposePreviousCurrentCoverageVisible`,void 0),e([E()],$.prototype,`_superimposeService`,void 0),e([E({readOnly:!0})],$.prototype,`_overlaysView`,null),e([E()],$.prototype,`_panoramicVideoViewer`,void 0),e([E()],$.prototype,`_panoramicViewer`,void 0),e([E()],$.prototype,`_panoramicMeasurementViewer`,void 0),e([E()],$.prototype,`_referencePointOnGround`,void 0),e([E()],$.prototype,`_referencePointOnImage`,void 0),e([E()],$.prototype,`_referenceTransformationService`,void 0),e([E()],$.prototype,`_sectorData`,void 0),e([E()],$.prototype,`_transformationService`,void 0),e([E()],$.prototype,`_featureToSector`,void 0),e([E({readOnly:!0})],$.prototype,`_updatingHandles`,void 0),e([E()],$.prototype,`footprintExtent`,void 0),e([E()],$.prototype,`_featureChangedTask`,void 0),$=e([re(`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 ee from"../../core/ReactiveMap.js";import{whenOnce as b,on as x,watch as S,syncAndInitial as C,initial as te,when as ne}from"../../core/reactiveUtils.js";import{sqlAnd as w}from"../../core/sql.js";import{getMetersPerUnitForSR as T}from"../../core/units.js";import{property as E,subclass as re}from"../../core/accessorSupport/decorators.js";import{isSerializable as ie}from"../../core/support/jsonUtils.js";import{UpdatingHandles as ae}from"../../core/support/UpdatingHandles.js";import oe from"../../geometry/Extent.js";import D from"../../geometry/Point.js";import{projectAsync as O}from"../../geometry/projectionUtils.js";import se from"../../geometry/SpatialReference.js";import{polygonCentroidPoint as ce}from"../../geometry/support/centroid.js";import{isClockwise as le}from"../../geometry/support/coordsUtils.js";import{normalizeMapX as ue}from"../../geometry/support/normalizeUtils.js";import{geographicToWebMercator as de}from"../../geometry/support/webMercatorUtils.js";import k from"../../layers/GraphicsLayer.js";import fe from"../../layers/MediaLayer.js";import{searchImages as A}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as pe}from"../../layers/orientedImagery/core/bestImageUtils.js";import{computePolygonForInspection as me,resizePolygon as he,checkIfFrustumContainsSelectedPoint as ge,checkIfPolygonContainsSelectedPoint as _e}from"../../layers/orientedImagery/core/coverageUtils.js";import{isElevationSource as ve}from"../../layers/orientedImagery/core/ElevationSourceDefinitions.js";import{convertGeographicToWebMercator as j}from"../../layers/orientedImagery/core/utils.js";import ye from"../../layers/orientedImagery/transformations/updateElevation.js";import{getElevationSampler as be}from"../../layers/orientedImagery/transformations/updateElevationUtils.js";import{or as xe,getInitialAngle as M,convertPixelLocationToSphereVertex as Se,getUpdateElevationProps as N,adjustHorizonAngles as Ce,convertOrientationToPixelLocation as we,getImageToWorldProperties as P}from"../../layers/orientedImagery/transformations/utils.js";import Te from"../../layers/support/ExtentAndRotationGeoreference.js";import{getFloorFilterClause as Ee}from"../../layers/support/floorFilterUtils.js";import De from"../../layers/support/VideoElement.js";import Oe from"../../views/MapView.js";import ke from"../../views/draw/Draw.js";import{scale as Ae}from"../../views/draw/support/drawUtils.js";import{ViewEventPriorities as je}from"../../views/input/InputManager.js";import Me from"../PanoramicVideoViewer.js";import F from"../PanoramicViewer.js";import{defaultAngleThresholdInDegrees as I,videoMapViewConstraint as Ne,fixedImageSize as L,clockwiseDirections as Pe,videoFitScaleTolerance as Fe,videoExtent as Ie,invalidCameraHeading as R,sectorsInOrder as z,sampleExtent as Le,sectorsRadii as B}from"./constants.js";import{createFeatureCoverage as V}from"./featureCoverage.js";import{isFeatureAttachment as H}from"./galleryUtils.js";import{getPanoramicImageProperties as U}from"./panoramicImageProperties.js";import{crossSymbol as W,crossSymbol3D as Re,measurementPolygonSymbol as ze,polylineSymbolPanoramic as Be,measurementPolylineSymbol as Ve,cameraOverlaySymbol3D as He,cameraOverlaySymbol as Ue,diamondSymbol as G,diamondSymbol3D as K,activeSourcePointSymbol as We,sourcePointSymbol as Ge}from"./symbols.js";import{registryKeys as q}from"./types.js";import{isNoAttachmentError as Ke,extractHorizonAnglesFromMedia as J,isDepthImage as qe,isTifOrMrf as Y,filterOILLayerView as Je,assignElevationSampleToFeatures as Ye,filterByZ as Xe,createPanoramicMedia as Ze,createNonPanoramicMedia as Qe,isSceneView as $e,isGraphic as et,calculateSegment as tt,calculateDirection as nt}from"./utils.js";import{disableVideoZoomAndPan as rt,getUpdatedConstraints as it,getUpdatedExtentPoints as at,normalizeVideoSource as X,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=I,this.cameraPitchThreshold=I,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 ee,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 Oe({map:new Map,attributionVisible:!1,constraints:Ne}),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 k({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 Me,this._panoramicViewer=new F,this._panoramicMeasurementViewer=new F,this._referencePointOnGround=null,this._referencePointOnImage=null,this._referenceTransformationService=null,this._sectorData=null,this._transformationService=null,this._featureToSector=null,this._updatingHandles=new ae,this._clickTask=null,this._crossSymbol=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}`),b(()=>{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`?L:e===`panoramic-video`?this._panoramicVideoViewer.imageSize:this.activeViewer?.imageSize},this._geometryToOverlayImageGeometry=async(e,t,n)=>{let{mode:r,videoViewModel:i,_panoramicVideoViewer:a}=this;if(r===`video`)return await i?.geometryToOverlayGeometry(e,t)??null;if(r===`panoramic-video`){let i={feature:t,mode:r,imageSize:n,footprintExtent:this.footprintExtent};return await this._transformationService.geometryToImageGeometryForFeature(e,i,a.horizonAngles)}return await this._transformationService.geometryToImageGeometry(e)},this._createViewClickHandle=()=>{if(this.removeHandles(q.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,je.DEFAULT),q.click)},this._createImageClickHandle=()=>{this.removeHandles(q.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=x(()=>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&&!xe(!l,c.spatialReference.equals(l))&&(c=await O(c,l,{signal:r})),v(r),this.plotReferencePointOnGround(c)})});this.addHandles([m,f],q.imageClick)},this._createTriangularImageClickHandle=()=>{this.removeHandles(q.triangularImageClick),this.triangularMeasurementActive&&this.mode!==`none`&&this.currentBestFeature&&this.currentBestFeatureMeasurementImage&&this.activeTriangulatedViewer&&this.addHandles(this.activeTriangulatedViewer.imageRenderer.on(`double-click`,this._measurementImageClickHandler),q.triangularImageClick)},this._enablePan=()=>{this.removeHandles(q.videoPanHandles)},this._disablePan=()=>{this.removeHandles(q.videoPanHandles),this.addHandles(rt(this.videoMapView),q.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)=>{if(this.mode===`video`){await this._loadFlatVideo(e,t);return}if(this.mode===`panoramic-video`){await this._loadVideo(t);return}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 b(()=>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?de(c):new D(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 M(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(Ke(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 M(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 M(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*Pe.length})}return this._mediaPrefetcher},this._loadViewAdapter=async e=>{let{view:t}=this;if(this._adapter?.disableDefaultSuperimposeNavigation?.(),this._adapter?.disablePanoramicSuperimposeNavigation?.(),!t){this._adapter=null;return}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=ue(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-Fe,r=it(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`);return}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 D({...ie(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:W}),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=J(r),a=Se(e,...n,i);this._crossSymbol=new t({geometry:new D(a,se.WebMercator),symbol:Re}),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([S(()=>this.view,()=>this.load(),C),S(()=>this.view?.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},te),S(()=>this.view?.map?.allLayers?.length,e=>{e&&this.view?.map?.layers.reorder(this._overlays,e-1)},te),S(()=>[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()},C),S(()=>[this.triangularMeasurementActive,this.currentBestFeatureMeasurementImage],()=>{this._createTriangularImageClickHandle()},C),S(()=>[this.state,this.imageLocationToolState,this.view],()=>{this._initializeMeasurementService(),this._initializeLocationViewModel()},C),S(()=>this.measureType,()=>{this.clearPreviousMeasurements(),this._initializeMeasurementService()},C),S(()=>this.bestFeatureAngle,(e,t)=>{this.previousFeatureAngle=t??0},C),S(()=>[this.superimposeViewEnabled,this.defaultSuperimposeCameraLockEnabled,this.superimposeViewSupported,this.currentBestFeature,this.mode,this.state,this.view?.type],()=>{if(this._shouldDisableUnsupportedSuperimposeView()){this.superimposeViewEnabled=!1;return}if(!this._hasActiveSuperimposeCameraContext()){this._resetInactiveSuperimposeState();return}this._updateSuperimposedImage()},C),S(()=>this._getSuperimposeCameraWatchState(),()=>this._handleSuperimposeCameraChange(),C),S(()=>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}),S(()=>[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()})},C),S(()=>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()})},C),S(()=>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())}),S(()=>this.mode,e=>{switch(this.removeHandles(q.interactionHandles),e){case`default`:this.addHandles(S(()=>{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})}))},{...C,equals:(e,t)=>n(e,t,u)}),q.interactionHandles);break;case`video`:this.addHandles(S(()=>{let{footprintExtent:e,videoElement:t,bestFeatureFootprint:n}=this;if(e&&t?.loaded&&n)return{videoExtent:Ie,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)}))},{...C,equals:(e,t)=>n(e?.videoExtent,t?.videoExtent,u)&&e?.bestFeatureFootprint===t?.bestFeatureFootprint}),q.interactionHandles);break;case`panoramic`:this.addHandles(S(()=>{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)}),q.interactionHandles);break;case`panoramic-video`:this.addHandles(S(()=>{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)}),q.interactionHandles)}},C),S(()=>[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)},C),S(()=>this.activeViewer?.imageRenderer,()=>{this.sketch&&(this.sketch.view=this.activeViewer?.imageRenderer)}),S(()=>this.activeViewer,e=>{this.removeHandles(q.hittestHandles),e&&this.addHandles(x(()=>e,`hittest-response`,this._handleImageHitTestResponse),q.hittestHandles)}),S(()=>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)}))}),S(()=>[this.videoMapView.interacting,this.videoMapView.navigating,this.videoMapView.scale],()=>{this._scheduleVideoInteractionUpdate()},{initial:!0}),ne(()=>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._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._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(){return this.layer?.orientationAccuracy?.every(e=>e===0)??!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!qe(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 Y(t)||H(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===R}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(Je(e))}get layerFloorFilterClause(){let{layerView:e}=this;return e?Ee(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?z.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 Y(i)||H(i)?{url:i,objectId:t,rotation:(n??0)+(r??0)}:null}).filter(r)):null}get videoExtentPoints(){let e=at(this.videoMapView.extent);return e.length?e:Ie}set view(e){this._set(`view`,e)}get _defaultGraphicsLayer(){let e={blendMode:`source-atop`};switch(this.mode){case`panoramic`:return new k({...e,elevationInfo:{mode:`absolute-height`}});case`default`:return new k({...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}=V(n);l=u.clone(),n.isInspection&&(l=me(n)),c&&(l=he(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!==R&&(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?.[z[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=j(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 O(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!==R){let{polygon:t,frustum:n}=V(e);this.coveragePolygons.add(t),n&&this.coverageFrustums.add(n)}}),Ye(c,u);let d=c;if(a&&t&&i!=null&&(d=Xe(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=ze(o),this.sketch.polylineSymbol=a===`panoramic`?Be:Ve(o,2.5))}async startHeightMeasurement(){this.displayNewMeasurementButton=!1,this.draw??=new ke({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){let{activeViewer:n,overlayedCameraLocations:i,layer:a,mode:o,layerFloorFilterClause:s,layerTimeExtent:c,videoViewModel:l,_panoramicVideoViewer:u}=this,d=o===`video`,f=o===`panoramic-video`,p=this._getActiveFeatureForCurrentMode(),m=this._computeOverlayImageSize();if(!m||!p||!a||o===`none`||!this.overlayGraphicsEnabled)return;let{polygon:h}=V(p.attributes);if(d?l?.removeOverlayGraphics(i.toArray()):f?u.removeManyGraphics(i.toArray()):n?.removeManyGraphics(i.toArray()),i.removeAll(),e){let{features:e}=await a.queryFeatures({where:w(`${a.objectIdField} <> ${p.attributes.objectId}`,w(a.definitionExpression,s)),geometry:h,returnGeometry:!0,outFields:[a.objectIdField],timeExtent:c}),g=await Promise.all(e.map(async e=>{let{attributes:n,geometry:r}=e;if(r?.type!==`point`)return null;let i=await this._geometryToOverlayImageGeometry(r,p,m);if(!i)return null;let a=o===`panoramic`||o===`panoramic-video`?He():Ue();return new t({attributes:n,symbol:a,geometry:i})}));i.addMany(g.filter(r)),d?l?.addOverlayGraphics(i.toArray()):f?u.addManyGraphics(i.toArray()):n?.addManyGraphics(i.toArray())}}overlayGraphicsOnImage(e,t){if(this.removeOverlayedGraphicsOnImage(e),this.overlayedMapFeatures.set(e,t),this.mode===`video`){this.videoViewModel?.addOverlayGraphics(t.toArray());return}if(this.mode===`panoramic-video`){this._panoramicVideoViewer.addManyGraphics(t.toArray());return}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}=V(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:J(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 z.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 O(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 D({...e.toJSON()}),symbol:G}),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 A(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 O(n,o.spatialReference);i=o.contains(e);break}case`mesh`:{let e=n.spatialReference.equals(o.spatialReference)?n:await O(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:L,footprintExtent:this.footprintExtent},r):await this._transformationService.pointToPixel(n,r);if(!s){this.clearReferencePointOnImage();return}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!==R&&ge(i,t):_e(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=J(i),o=Z(e,`panoramic`,r,a);this._referencePointOnImage=new t({geometry:o,symbol:K.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:G.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=J(i),o=Z(e,`panoramic`,r,a);this._referencePointOnImage=new t({geometry:o,symbol:K.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=ue(e.x,e.spatialReference);let o=n.spatialReference.equals(e.spatialReference)?e:await O(e,n.spatialReference),s=o.spatialReference.isGeographic?de(o):o,c=w(`1=1`,w(n.definitionExpression,r)),l=s.spatialReference.isGeographic?1:T(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 z)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*B[2],c=tt(t,l),u=nt(r);if(!this._sectorData)return;let d=B[3]+s*Math.sin(r*Math.PI/180),f=B[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-B[3],t=f-B[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=X(this.currentBestFeature.attributes.imagePath),t=X(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(q.videoPlayerHandles),this.videoElement=new De({video:e??this.currentBestFeature.attributes.imagePath,georeference:new Te({extent:new oe(Le)}),autoplay:!1}),this.videoElement.content?.loop&&(this.videoElement.content.loop=!1);let n=new fe({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=Ze(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=Qe(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&&ve(r))return await be({extent:this.footprintExtent,lod:r.lod,url:r.url,rasterFunction:r.rasterFunction})}_processSuitableFeatures(e,t){return pe({features:e,selectedPoint:t,camera:$e(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?j(i.selectedPoint):void 0,!s){if(o.orientedImageryType?.includes(`360`)){s=j(o.geometry);let{cameraHeading:e,farDistance:t,nearDistance:n}=o,r=[Math.sin(p(e)),Math.cos(p(e))],i=(t+n)/2;c=T(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=V(o).polygon,n=D.fromJSON(ce(t));s=j(n),c=T(s.spatialReference)}}this.selectedPoint=s,c=T(s.spatialReference);let l={layerInstanceOrURL:e,point:s,queryParams:{where:w(w(`1=1`,w(e.definitionExpression,n)),`${e.objectIdField} <> ${t}`),maximumDistance:e.maximumDistance?e.maximumDistance/c:void 0,timeExtent:r}},u=await A(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=J(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 N(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 ye([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){if(!e.length){this.currentBestFeature=null,this.additionalFeatures.removeAll();return}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])}_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)=>+le([e,t])),t.addRing(n),this.footprintExtent=Ae(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 O(o.clone(),this.view?.spatialReference,e):o.clone();o.imageID===r.attributes.objectId?this.currentBestFeatureLocation=new t({attributes:{imageID:o.imageID},geometry:n,symbol:We,visible:i}):this.additionalCameraLocations.push(new t({attributes:{imageID:o.imageID},geometry:n,symbol:Ge,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-B[3],n=e.y-B[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 b(()=>this.state===`image-loaded`,t),v(t),await this.restorePendingPanoramicNavigationViewState(t))}async _capturePendingNavigationViewState(e){if(this.mode==="default"){await this._capturePendingDefaultNavigationViewState(e);return}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=J(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]=Ce(a,i,t),c=we(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._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=j(l));let u={...r==="default"?P(a,i[0],i[1]):U(a,i[0],i[1]),cameraLocation:l},d=await N(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`?L: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=j(l));let u=r==="default"||r===`video`?`default`:`panoramic`,d={...u==="default"?P(a,i[0],i[1]):U(a,i[0],i[1]),cameraLocation:l},f=await N(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(){if(!this._crossSymbol){this.videoViewModel?.clearSelectedPointOnVideo();return}if(this.mode===`video`){this.videoViewModel?.clearSelectedPointOnVideo(),this._crossSymbol=null;return}this._panoramicViewer.removeGraphic(this._crossSymbol),this._imageViewer.removeGraphic(this._crossSymbol),this.videoMapView.graphics.remove(this._crossSymbol),this._crossSymbol=m(this._crossSymbol)}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:L,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(et);s&&(this.bestFeatureCurrentFootprint&&e.splice(-2,0,this.bestFeatureCurrentFootprint),e.push(new t({geometry:s.clone(),symbol:W.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;if(!this._hasActiveSuperimposeCameraContext()){this._abortSuperimposeSchedule();return}if(this.mode===`panoramic`){this._schedulePanoramicSuperimposeUpdate();return}if(!t||t.interacting||t.navigating){this._abortSuperimposeSchedule();return}this._scheduleDefaultSuperimposeUpdate()}_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([E()],$.prototype,`activeLayer`,null),e([E({readOnly:!0})],$.prototype,`activeViewer`,null),e([E()],$.prototype,`activeTriangulatedViewer`,null),e([E()],$.prototype,`accuracyParametersMissing`,null),e([E()],$.prototype,`additionalFeatures`,void 0),e([E({type:a.ofType(t)})],$.prototype,`additionalCameraLocations`,void 0),e([E({type:a.ofType(t)})],$.prototype,`additionalFootprints`,void 0),e([E()],$.prototype,`areaMeasurementResult`,void 0),e([E()],$.prototype,`areaMeasurementAccuracy`,void 0),e([E()],$.prototype,`bestFeatureAngle`,void 0),e([E()],$.prototype,`bestFeatureCurrentFootprint`,void 0),e([E({type:t})],$.prototype,`bestFeatureFootprint`,void 0),e([E({type:Number})],$.prototype,`brightness`,null),e([E()],$.prototype,`cameraHeadingThreshold`,void 0),e([E()],$.prototype,`cameraPitchThreshold`,void 0),e([E()],$.prototype,`clickAction`,void 0),e([E()],$.prototype,`correctedLocationPointOnImage`,void 0),e([E()],$.prototype,`videoViewModel`,void 0),e([E()],$.prototype,`collectionId`,void 0),e([E({type:Number})],$.prototype,`contrast`,null),e([E()],$.prototype,`coverageFrustums`,void 0),e([E()],$.prototype,`coveragePolygons`,void 0),e([E()],$.prototype,`currentBestFeature`,void 0),e([E()],$.prototype,`currentBestFeatureMeasurementImage`,void 0),e([E()],$.prototype,`currentBestFeatureLocation`,void 0),e([E()],$.prototype,`currentCoverageVisible`,void 0),e([E()],$.prototype,`currentNode`,null),e([E()],$.prototype,`depthImage`,void 0),e([E()],$.prototype,`depthImageNotSupported`,null),e([E()],$.prototype,`featureCache`,void 0),e([E()],$.prototype,`videoFeatureIndex`,void 0),e([E()],$.prototype,`navigationNodes`,void 0),e([E({json:{write:!1}})],$.prototype,`determineWorkflowForFeature`,void 0),e([E({json:{write:!1}})],$.prototype,`determineWorkflowForTriangularMeasurement`,void 0),e([E()],$.prototype,`disabled`,void 0),e([E()],$.prototype,`displayMessage`,void 0),e([E()],$.prototype,`displayNewMeasurementButton`,void 0),e([E()],$.prototype,`distanceMeasurementResult`,void 0),e([E()],$.prototype,`distanceAccuracyArray`,void 0),e([E()],$.prototype,`dataCaptureLayer`,void 0),e([E({readOnly:!0})],$.prototype,`featureCount`,null),e([E()],$.prototype,`features`,void 0),e([E()],$.prototype,`groundCoordinates`,void 0),e([E()],$.prototype,`groundCoordinatesAccuracy`,void 0),e([E()],$.prototype,`groundCoordinatesAccuracyLoading`,void 0),e([E()],$.prototype,`hasPendingPanoramicNavigationViewState`,null),e([E()],$.prototype,`heightGraphic`,void 0),e([E()],$.prototype,`heightMeasurementResult`,void 0),e([E()],$.prototype,`heightMeasurementAccuracy`,void 0),e([E({readOnly:!0})],$.prototype,`imageGalleryEnabled`,null),e([E()],$.prototype,`imageGeometryField`,void 0),e([E({readOnly:!0})],$.prototype,`imageLoaded`,null),e([E()],$.prototype,`imageLocationToolState`,void 0),e([E()],$.prototype,`initialVideoMapViewExtent`,void 0),e([E({readOnly:!0})],$.prototype,`invalidCameraHeading`,null),e([E()],$.prototype,`imagePointsInView`,null),e([E()],$.prototype,`imageMeasurementViewer`,void 0),e([E()],$.prototype,`isAdditionalCoverageVisible`,void 0),e([E()],$.prototype,`isAdditionalPointSourcesVisible`,void 0),e([E()],$.prototype,`layer`,void 0),e([E()],$.prototype,`layerView`,null),e([E({readOnly:!0})],$.prototype,`layerFloorFilterClause`,null),e([E({readOnly:!0})],$.prototype,`layerTimeExtent`,null),e([E({type:Number})],$.prototype,`localPort`,void 0),e([E()],$.prototype,`locationPointOnImage`,void 0),e([E()],$.prototype,`mapImageConversionToolState`,void 0),e([E()],$.prototype,`measureType`,void 0),e([E()],$.prototype,`measurementGraphic`,void 0),e([E({readOnly:!0,value:`none`})],$.prototype,`mode`,null),e([E()],$.prototype,`navigationMode`,void 0),e([E()],$.prototype,`navigatorCurrentBestFeature`,void 0),e([E()],$.prototype,`oiObjectIdField`,void 0),e([E({type:a.ofType(t)})],$.prototype,`overlayedCameraLocations`,void 0),e([E()],$.prototype,`overlayedMapFeatures`,void 0),e([E()],$.prototype,`panoramicVideoLoaded`,null),e([E()],$.prototype,`panoramicVideoPaused`,null),e([E()],$.prototype,`pixelCoordinates`,void 0),e([E()],$.prototype,`preserveAngle`,void 0),e([E()],$.prototype,`pointSources`,void 0),e([E({readOnly:!0})],$.prototype,`popupEnabled`,null),e([E()],$.prototype,`preloadMedia`,void 0),e([E()],$.prototype,`preloadMediaSize`,void 0),e([E()],$.prototype,`previousFeatureAngle`,void 0),e([E()],$.prototype,`referencePoint`,null),e([E({readOnly:!0})],$.prototype,`sectorData`,null),e([E()],$.prototype,`selectedPoint`,void 0),e([E({type:Number})],$.prototype,`sharpness`,null),e([E()],$.prototype,`shouldShowSelectedImage`,void 0),e([E()],$.prototype,`superimposeViewEnabled`,void 0),e([E()],$.prototype,`defaultSuperimposeCameraLockEnabled`,void 0),e([E()],$.prototype,`superimposeViewSupported`,null),e([E()],$.prototype,`sketch`,void 0),e([E()],$.prototype,`sketchTriangular`,void 0),e([E()],$.prototype,`sketchTriangularGraphicsLayer`,void 0),e([E()],$.prototype,`draw`,void 0),e([E()],$.prototype,`drawAdapter`,void 0),e([E()],$.prototype,`polylineDrawAction`,void 0),e([E()],$.prototype,`scheduledFrameId`,void 0),e([E()],$.prototype,`superimposeScheduledFrameId`,void 0),e([E()],$.prototype,`superimposeDebounceTimeoutId`,void 0),e([E()],$.prototype,`sketchAdapter`,void 0),e([E({readOnly:!0})],$.prototype,`sketchGraphicsLayer`,null),e([E({readOnly:!0})],$.prototype,`state`,null),e([E({readOnly:!0})],$.prototype,`thumbnails`,null),e([E()],$.prototype,`videoExtentPoints`,null),e([E()],$.prototype,`triangularMeasurementActive`,void 0),e([E()],$.prototype,`triangulatedDistanceMeasurement`,void 0),e([E()],$.prototype,`triangulatedDistanceAccuracy`,void 0),e([E()],$.prototype,`triangulatedAreaMeasurement`,void 0),e([E()],$.prototype,`triangulatedAreaAccuracy`,void 0),e([E()],$.prototype,`triangulatedMeasurementGraphic`,void 0),e([E()],$.prototype,`triangulatedPoint`,void 0),e([E()],$.prototype,`triangulatedMeasurementAdapter`,void 0),e([E()],$.prototype,`updateFootprint`,void 0),e([E()],$.prototype,`updateVideoFootprint`,void 0),e([E()],$.prototype,`updateFootprintPanorama`,void 0),e([E()],$.prototype,`updatingTriangularMeasurementState`,void 0),e([E({value:null})],$.prototype,`view`,null),e([E()],$.prototype,`videoElement`,void 0),e([E()],$.prototype,`videoLayer`,void 0),e([E()],$.prototype,`videoMapView`,void 0),e([E()],$.prototype,`verticalFilterEnabled`,void 0),e([E()],$.prototype,`frustumSearchEnabled`,void 0),e([E()],$.prototype,`_adapter`,void 0),e([E()],$.prototype,`_defaultGraphicsLayer`,null),e([E()],$.prototype,`_highlightedFeatureHandle`,void 0),e([E()],$.prototype,`_imageViewer`,void 0),e([E()],$.prototype,`_initialCurrentCoverageUpdate`,void 0),e([E()],$.prototype,`_locationViewModel`,void 0),e([E()],$.prototype,`_measurementService`,void 0),e([E()],$.prototype,`_mediaPrefetcher`,void 0),e([E()],$.prototype,`_navigationManager`,void 0),e([E()],$.prototype,`_overlays`,void 0),e([E()],$.prototype,`_superimposePreviousCurrentCoverageVisible`,void 0),e([E()],$.prototype,`_superimposeService`,void 0),e([E({readOnly:!0})],$.prototype,`_overlaysView`,null),e([E()],$.prototype,`_panoramicVideoViewer`,void 0),e([E()],$.prototype,`_panoramicViewer`,void 0),e([E()],$.prototype,`_panoramicMeasurementViewer`,void 0),e([E()],$.prototype,`_referencePointOnGround`,void 0),e([E()],$.prototype,`_referencePointOnImage`,void 0),e([E()],$.prototype,`_referenceTransformationService`,void 0),e([E()],$.prototype,`_sectorData`,void 0),e([E()],$.prototype,`_transformationService`,void 0),e([E()],$.prototype,`_featureToSector`,void 0),e([E({readOnly:!0})],$.prototype,`_updatingHandles`,void 0),e([E()],$.prototype,`footprintExtent`,void 0),e([E()],$.prototype,`_featureChangedTask`,void 0),$=e([re(`esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel`)],$);const Tt=$;export{Tt as default};
@@ -163,12 +163,14 @@ export interface SketchViewModelProperties extends Partial<Pick<SketchViewModel,
163
163
  textSymbol?: TextSymbolProperties & { type: "text"; };
164
164
  /**
165
165
  * Options to configure the tooltip shown next to the cursor when creating or updating graphics.
166
+ * See [useViewOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#useViewOptions) for when these options are used instead of options on the view.
166
167
  *
167
168
  * @since 4.24
168
169
  */
169
170
  tooltipOptions?: SketchTooltipOptionsProperties;
170
171
  /**
171
172
  * Options to configure how values are displayed and input when creating or updating graphics.
173
+ * See [useViewOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#useViewOptions) for unit inheritance and override behavior.
172
174
  *
173
175
  * @since 4.29
174
176
  */
@@ -822,6 +824,7 @@ export default class SketchViewModel extends EventedAccessor {
822
824
  set textSymbol(value: TextSymbolProperties & { type: "text"; });
823
825
  /**
824
826
  * Options to configure the tooltip shown next to the cursor when creating or updating graphics.
827
+ * See [useViewOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#useViewOptions) for when these options are used instead of options on the view.
825
828
  *
826
829
  * @since 4.24
827
830
  */
@@ -873,17 +876,18 @@ export default class SketchViewModel extends EventedAccessor {
873
876
  */
874
877
  accessor useLegacyCreateTools: boolean;
875
878
  /**
876
- * Indicates whether to use the snapping, tooltip, display-unit, and input-unit options configured through
879
+ * Indicates whether to use snapping, tooltips, display units, and input units from
877
880
  * [ViewOptions](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/).
878
881
  *
879
- * When `true`, snapping and tooltip options are inherited from the view. Options specified through
880
- * [snappingOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#snappingOptions) and [tooltipOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#tooltipOptions)
881
- * are preserved but ignored. When `false`, those options are used instead.
882
+ * When this property is `true`:
882
883
  *
883
- * Explicit units specified through [valueOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#valueOptions) override the units
884
- * inherited from the view for the corresponding measurement type, such as length or area, without changing
885
- * the units configured in the view. Setting an explicit unit to `null` or `undefined` restores inheritance for
886
- * that measurement type.
884
+ * - Snapping and tooltip options are inherited from the view. The view model's
885
+ * [snappingOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#snappingOptions) and [tooltipOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#tooltipOptions) are preserved but ignored.
886
+ * - Units set through [valueOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#valueOptions) override the corresponding units on the view,
887
+ * such as length or area, without changing the view's options. Setting a unit to `null` or `undefined` restores
888
+ * inheritance for that measurement type.
889
+ *
890
+ * When `false`, the view model uses its own snapping, tooltip, and unit options instead.
887
891
  *
888
892
  * Label [options](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#labelOptions) and
889
893
  * [direction mode](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ValueOptions/#directionMode) are not inherited from the view.
@@ -905,6 +909,7 @@ export default class SketchViewModel extends EventedAccessor {
905
909
  accessor useViewOptions: boolean;
906
910
  /**
907
911
  * Options to configure how values are displayed and input when creating or updating graphics.
912
+ * See [useViewOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/SketchViewModel/#useViewOptions) for unit inheritance and override behavior.
908
913
  *
909
914
  * @since 4.29
910
915
  */
@@ -669,19 +669,19 @@ export default class Sketch extends Widget<SketchProperties> {
669
669
  */
670
670
  accessor useLegacyCreateTools: boolean;
671
671
  /**
672
- * Indicates whether to use the snapping, tooltip, display-unit, and input-unit options configured through
672
+ * Indicates whether to use snapping, tooltips, display units, and input units from
673
673
  * [ViewOptions](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/).
674
674
  *
675
- * When `true`, snapping and tooltip options are inherited from the view. Options specified through
676
- * [snappingOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#snappingOptions) and [tooltipOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#tooltipOptions) are preserved but ignored.
677
- * When `false`, those options are used instead.
675
+ * When this property is `true`:
678
676
  *
679
- * While this property is `true`, snapping controls and the tooltip toggle are hidden from the settings menu
680
- * because these options are inherited from the view.
677
+ * - Snapping and tooltip options are inherited from the view. The widget's
678
+ * [snappingOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#snappingOptions) and [tooltipOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#tooltipOptions) are preserved but ignored.
679
+ * - Snapping controls and the tooltip toggle are hidden from the widget's Settings menu.
680
+ * - Units set through [valueOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#valueOptions) override the corresponding units on the view,
681
+ * such as length or area, without changing the view's options. Setting a unit to `null` or `undefined` restores
682
+ * inheritance for that measurement type.
681
683
  *
682
- * Explicit units specified through [valueOptions](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#valueOptions) override the units inherited from the
683
- * view for the corresponding measurement type, such as length or area, without changing the units configured
684
- * in the view. Setting an explicit unit to `null` or `undefined` restores inheritance for that measurement type.
684
+ * When `false`, the widget uses its own snapping, tooltip, and unit options instead.
685
685
  *
686
686
  * Label [options](https://developers.arcgis.com/javascript/latest/references/core/widgets/Sketch/#labelOptions) and
687
687
  * [direction mode](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ValueOptions/#directionMode) are not inherited from the view.