@arcgis/core 5.1.0-next.100 → 5.1.0-next.102

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 (158) hide show
  1. package/arcgisGlobal.d.ts +1449 -0
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/0d81409721d29d8bc276.js +1 -0
  4. package/assets/esri/core/workers/chunks/{9478a0478fb49a88685e.js → 119b84f5349f90d1dd28.js} +1 -1
  5. package/assets/esri/core/workers/chunks/15167eeb6d7dbe7e392d.js +1 -0
  6. package/assets/esri/core/workers/chunks/{6881ae969b48bd04f064.js → 1ba37706e5d5eaabcb8e.js} +1 -1
  7. package/assets/esri/core/workers/chunks/{889a0405e3cdfa59b8e7.js → 1faa8a42d5a437fc40a3.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{40137b23d8ad4af7ff9c.js → 3996149146dd1eca7cc5.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{38b1d2ffcc318ac0119d.js → 48fcc10768d93e95a04e.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{e7637d6a8ce0af46843c.js → 55ccb8ed7325efb62091.js} +2 -2
  11. package/assets/esri/core/workers/chunks/{2b2e5628d08d0e3108d2.js → 5663df3cd1dfd4b43c73.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{0253292939b981134663.js → 5bc299f7f89a07a6e6a6.js} +1 -1
  13. package/assets/esri/core/workers/chunks/5dafd35801dca4229aed.js +1 -0
  14. package/assets/esri/core/workers/chunks/{d345030a89914348d3c5.js → 6f96ce41c47cae82e687.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{b6b6f190687813267d77.js → 7db09c5bf024242becfa.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{df232b8aa77f7e3285e3.js → 86bff154d46f8a562887.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{07ddf1b1f7602063ceb0.js → 8f9117d589de7caaa02d.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{2ad7c221ad317706387a.js → 9e7c84a3a2abec4d49df.js} +2 -2
  19. package/assets/esri/core/workers/chunks/{490e4a648cb2ab3e7956.js → a318cf6bb900e0ee268c.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{3ba29e7cf9fba3aa5f41.js → b1b8a7c00ec4d998ab84.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{fff4b9e43464ebb3fb4e.js → bb5512ecb5300d45d46b.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{d8c4fb66c733ab2f66d3.js → bb81da98546c4d923e0d.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{765ee0f2bfcec6d5bcc6.js → bc6a809a965355eb425f.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{53ff47c06ccfc0be885c.js → d30790c69724258dab2b.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{7a20941913d0115cfe26.js → de25311b6d13bf1c6089.js} +2 -2
  26. package/assets/esri/core/workers/chunks/{9940b318f38ea9d7a533.js → e86c073f0b6d395c7a38.js} +1 -1
  27. package/assets/esri/core/workers/chunks/f5bd0a4f82df5e942b70.js +1 -0
  28. package/assets/esri/core/workers/chunks/{b8d10d8db44c7c6acebe.js → fa38dc5010f8630a80fe.js} +1 -1
  29. package/assets/esri/themes/base/widgets/_BatchAttributeForm.scss +125 -0
  30. package/assets/esri/themes/base/widgets/_Directions.scss +5 -1
  31. package/assets/esri/themes/dark/main.css +1 -1
  32. package/assets/esri/themes/light/main.css +1 -1
  33. package/assets/esri/themes/light/view.css +1 -1
  34. package/assets/esri/widgets/BatchAttributeForm/t9n/BatchAttributeForm.json +1 -1
  35. package/assets/esri/widgets/BatchAttributeForm/t9n/BatchAttributeForm_en.json +1 -1
  36. package/assets/esri/widgets/VideoPlayer/t9n/VideoPlayer.json +1 -1
  37. package/chunks/GaussianSplatShadow.glsl.js +39 -0
  38. package/chunks/GlobalIllumination.glsl.js +1 -1
  39. package/config.js +1 -1
  40. package/form/elements/inputs/MultipleChoiceInput.d.ts +5 -5
  41. package/form/elements/inputs/MultipleChoiceInput.js +1 -1
  42. package/interfaces.d.ts +17 -0
  43. package/kernel.js +1 -1
  44. package/layers/FeatureLayer.d.ts +29 -39
  45. package/layers/KnowledgeGraphLayer.d.ts +1 -1
  46. package/layers/KnowledgeGraphLayer.js +1 -1
  47. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  48. package/layers/OrientedImageryLayer.d.ts +233 -0
  49. package/layers/OrientedImageryLayer.js +1 -1
  50. package/layers/ParquetLayer.d.ts +73 -24
  51. package/layers/ParquetLayer.js +1 -1
  52. package/layers/SceneLayer.d.ts +2 -2
  53. package/layers/VideoLayer.d.ts +35 -9
  54. package/layers/VideoLayer.js +1 -1
  55. package/layers/catalog/CatalogFootprintLayer.d.ts +147 -0
  56. package/layers/graphics/sources/ParquetSource.js +1 -1
  57. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  58. package/layers/knowledgeGraph/KnowledgeGraphSublayer.d.ts +3 -1
  59. package/layers/support/FeatureReductionBinning.d.ts +87 -9
  60. package/layers/support/FeatureReductionCluster.d.ts +87 -9
  61. package/layers/support/FieldConfiguration.d.ts +1 -1
  62. package/layers/support/ParquetFilesData.d.ts +46 -0
  63. package/layers/support/ParquetFilesData.js +2 -0
  64. package/layers/support/ParquetPortalItemData.d.ts +25 -0
  65. package/layers/support/ParquetPortalItemData.js +2 -0
  66. package/layers/support/SubtypeSublayer.d.ts +147 -0
  67. package/layers/support/TelemetryData.d.ts +5 -0
  68. package/layers/support/TelemetryData.js +1 -1
  69. package/layers/support/TelemetryDisplay.d.ts +10 -2
  70. package/layers/support/TelemetryDisplay.js +1 -1
  71. package/layers/support/parquetUtils.js +1 -1
  72. package/layers/support/types.d.ts +9 -0
  73. package/layers/video/VideoController.js +1 -1
  74. package/layers/video/types.d.ts +8 -1
  75. package/layers/video/videoUtils.js +1 -1
  76. package/networks/UtilityNetworkTraceAnalysis.d.ts +1 -1
  77. package/networks/UtilityNetworkTraceAnalysis.js +1 -1
  78. package/package.json +3 -3
  79. package/portal/jsonTypes.d.ts +7 -0
  80. package/renderers/support/ClassBreakInfo.d.ts +3 -3
  81. package/renderers/support/ClassBreakInfo.js +1 -1
  82. package/renderers/support/UniqueValueInfo.d.ts +3 -3
  83. package/renderers/support/UniqueValueInfo.js +1 -1
  84. package/rest/print.js +1 -1
  85. package/rest/support/PrintParameters.d.ts +8 -1
  86. package/rest/support/PrintParameters.js +1 -1
  87. package/support/revision.js +1 -1
  88. package/third-party-notices.txt +4 -0
  89. package/views/2d/engine/webgl/shaderGraph/graph/GlslGraphWriter.js +1 -1
  90. package/views/2d/engine/webgl/shaderGraph/graph/ShaderGraphContext.js +1 -1
  91. package/views/2d/engine/webgl/shaderGraph/graph/ShaderGraphNode.js +1 -1
  92. package/views/2d/engine/webgl/shaderGraph/graph/glsl.js +1 -1
  93. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityPolygonShader.js +1 -1
  94. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterColorizerTechnique.js +1 -1
  95. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/BloomShader.js +1 -1
  96. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/AspectShader.js +1 -1
  97. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/CurvatureShader.js +1 -1
  98. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/MaskShader.js +1 -1
  99. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/RemapShader.js +1 -1
  100. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/SlopeShader.js +1 -1
  101. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/math.js +1 -1
  102. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/surface.js +1 -1
  103. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  104. package/views/2d/layers/VideoLayerView2D.js +1 -1
  105. package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
  106. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  107. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  108. package/views/3d/support/gaussianSplatting/GaussianSplatFadeHelper.js +1 -1
  109. package/views/3d/webgl/RenderNode.js +1 -1
  110. package/views/3d/webgl-engine/core/shaderLibrary/util/GaussianSplatUnpacking.glsl.js +5 -2
  111. package/views/3d/webgl-engine/effects/RenderNodes.js +1 -1
  112. package/views/3d/webgl-engine/lib/GaussianSplatRenderNode.js +1 -1
  113. package/views/3d/webgl-engine/lib/GaussianSplatShadowRenderNode.js +2 -0
  114. package/views/3d/webgl-engine/lib/RayIntersections.js +1 -1
  115. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  116. package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
  117. package/views/3d/webgl-engine/lib/TriangleIntersectionData.js +1 -1
  118. package/views/3d/webgl-engine/shaders/GaussianSplatShadow.glsl.js +2 -0
  119. package/views/3d/webgl-engine/shaders/GaussianSplatShadowTechnique.js +2 -0
  120. package/views/3d/webgl.js +1 -1
  121. package/views/Viewport2DBaseMixin.js +1 -1
  122. package/widgets/Attachments/support/attachmentUtils.js +1 -1
  123. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.d.ts +8 -1
  124. package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
  125. package/widgets/BatchAttributeForm/attachmentUtils.js +2 -0
  126. package/widgets/BatchAttributeForm/css.js +1 -1
  127. package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.js +1 -1
  128. package/widgets/BatchAttributeForm/templates/RelationshipElementTemplate.js +1 -1
  129. package/widgets/BatchAttributeForm/templates/support/createBatchFormTemplate.js +1 -1
  130. package/widgets/BatchAttributeForm/templates/support/hashElementTemplate.js +1 -1
  131. package/widgets/BatchAttributeForm/types.d.ts +7 -0
  132. package/widgets/BatchAttributeForm.js +1 -1
  133. package/widgets/FeatureForm/RelationshipInput.d.ts +1 -1
  134. package/widgets/FeatureTable.js +1 -1
  135. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  136. package/widgets/OrientedImageryViewer/OrientedImageryViewerVisibleElements.js +1 -1
  137. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  138. package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
  139. package/widgets/OrientedImageryViewer/constants.js +1 -1
  140. package/widgets/OrientedImageryViewer/services/SuperimposeService.js +1 -1
  141. package/widgets/OrientedImageryViewer/services/TransformationService.js +1 -1
  142. package/widgets/OrientedImageryViewer/support/dataCaptureUtils.js +1 -1
  143. package/widgets/OrientedImageryViewer/support/geometryUtils.js +1 -1
  144. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  145. package/widgets/OrientedImageryViewer/types.js +1 -1
  146. package/widgets/OrientedImageryViewer/videoViewerUtils.js +1 -1
  147. package/widgets/OrientedImageryViewer.js +1 -1
  148. package/widgets/PanoramicViewer/PanoramicVideoViewerViewModel.js +1 -1
  149. package/widgets/VideoPlayer/VideoPlayerViewModel.d.ts +9 -0
  150. package/widgets/VideoPlayer/VideoPlayerViewModel.js +1 -1
  151. package/widgets/VideoPlayer/components/PlayerControlsGroup.js +1 -1
  152. package/widgets/support/forms/formUtils.js +1 -1
  153. package/assets/esri/core/workers/chunks/26f28406056ddc0e159c.js +0 -1
  154. package/assets/esri/core/workers/chunks/43cc82373be791b7cb4c.js +0 -1
  155. package/assets/esri/core/workers/chunks/b06cc59068d32baaaa87.js +0 -1
  156. package/assets/esri/core/workers/chunks/c9461568e1002ebac534.js +0 -1
  157. /package/assets/esri/core/workers/chunks/{e7637d6a8ce0af46843c.js.LICENSE.txt → 55ccb8ed7325efb62091.js.LICENSE.txt} +0 -0
  158. /package/assets/esri/core/workers/chunks/{7a20941913d0115cfe26.js.LICENSE.txt → de25311b6d13bf1c6089.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import e from"../../../Graphic.js";import{createTask as t}from"../../../core/asyncUtils.js";import r from"../../../core/Collection.js";import{destroyMaybe as a}from"../../../core/maybe.js";import{throwIfAborted as s}from"../../../core/promiseUtils.js";import i from"../../../geometry/Mesh.js";import n from"../../../geometry/Multipoint.js";import{projectAsync as o}from"../../../geometry/projectionUtils.js";import l from"../../../geometry/support/MeshComponent.js";import u from"../../../geometry/support/MeshMaterial.js";import c from"../../../geometry/support/MeshTexture.js";import p from"../../../geometry/support/MeshVertexAttributes.js";import h from"../../../symbols/FillSymbol3DLayer.js";import f from"../../../symbols/MeshSymbol3D.js";import{validateTifOrMrfExtension as m}from"../utils.js";import d from"../support/resolveMediaProps.js";import{computeDefaultAreaOfInterest as y,getViewDependentRasterLevel as _,applyMeshOffsetInMeters as g,updateSuperimposeGraphicTexture as v,getRasterFetchParameters as w,createSuperimposeSamplePixels as x,createSuperimposeGridVertexAttributes as I}from"../support/superimposeUtils.js";const G=.02,D=0,b=[255,255,255,255];class R{constructor(e){this._properties=e,this._defaultCameraFeature=null,this._graphics=[],this._task=null,this._zOffsetInMeters=0}clear(){this._destroyGraphics(this._graphics,!0),this._defaultCameraFeature=null,this._graphics=[]}destroy(){this._task=this._task?.abort()??null,this.clear()}update(e){this._task?.abort(),"panoramic"!==e.mode?this._task=t(async t=>{if(!this._canUpdate(e))return void this._resetInactiveState(e.adapter);let r=!1,a=[],i=null;try{await this._updateDefaultCameraIfNeeded(e,t);const n=await this._resolveMedia(e,t);if(!n)return;if(({graphics:a,overlayGraphic:i}=await this._createGraphics(e,n,t)),!a.length)return;await this._updateNavigation(e,t),this._applyZOffset(a,this._zOffsetInMeters),s(t),this._replaceGraphics(a),r=!0,await this._progressivelyRefineDefaultOverlayIfPossible(e,n,i,t)}finally{r||this._destroyGraphics(a,!1)}}):this._resetInactiveState(e.adapter)}_canUpdate(e){return e.superimposeViewEnabled&&"image-loaded"===e.state&&"default"===e.mode&&"3d"===e.view?.type&&!!e.currentBestFeature&&!!e.layer}_resetInactiveState(e){e?.disableDefaultSuperimposeNavigation?.(),this.clear()}async _updateDefaultCameraIfNeeded(e,t){const{currentBestFeature:r,mode:a}=e;if(r&&"default"===a)return this._shouldUpdateDefaultCamera(a,r)?(await(e.adapter?.updateDefaultSuperimposeCamera?.({currentBestFeature:r},{signal:t})),s(t),void(this._defaultCameraFeature=r)):void 0}async _resolveMedia(e,t){const{currentBestFeature:r,layer:a,view:i}=e;if(!r||!a||!i)return null;const n=await d(r.attributes,a,{signal:t});if(s(t),!n?.mediaUrl)return null;if(!m(n.datasetFormat))return this._resolveNonRasterMedia(n);const o=await this._resolveRasterMedia(n,t);if(!o)return null;const l=await this._resolveDefaultAreaOfInterest(e,n,t);return this._resolveDefaultRasterMedia(o,l,i,t)}_resolveNonRasterMedia(e){return{areaOfInterest:null,textureUrl:this._resolveTextureUrl(e)}}async _resolveDefaultAreaOfInterest(e,t,r){const{activeImageSize:a,currentBestFeature:i,mode:n,view:o}=e;if(!("default"===n&&a&&i&&o&&m(t.datasetFormat)))return null;const l=await y(i,o,a,this._properties.pointToPixel,{signal:r});return s(r),l}async _resolveRasterMedia(e,t){const r=await this._loadRaster(e,{signal:t});if(s(t),!r)return null;const a=await this._createRasterTexture(r,null,void 0,{signal:t});return s(t),a?{baseTexture:a,raster:r}:null}async _resolveDefaultRasterMedia(e,t,r,a){const{baseTexture:i,raster:n}=e;if(!t)return{areaOfInterest:null,baseTexture:i,raster:n,texture:i};const o=Math.max(D,_(n,r,t)),l=await this._createRasterTexture(n,t,o,{signal:a});return s(a),{areaOfInterest:t,baseTexture:i,overlayLevel:o,overlayTexture:l,raster:n,texture:l??i}}async _createGraphics(e,t,r){return this._createDefaultGraphics(e,t,r)}async _createDefaultGraphics(e,t,r){if(!this._canCreateLayeredDefaultGraphics(e,t))return this._createSingleTextureGraphicResult(e,t,r);const a=await this._createAndDrapeDefaultGraphic(e,t.baseTexture,r);if(!a)return this._createBaseTextureGraphicResult(e,t.baseTexture,r);const s=await this._createDefaultOverlayGraphic(e,t,r);return s?{graphics:[a,s],overlayGraphic:s}:{graphics:[a],overlayGraphic:null}}_canCreateLayeredDefaultGraphics(e,t){return!!t.baseTexture&&!!e.activeImageSize}async _createDefaultOverlayGraphic(e,t,r){const{areaOfInterest:a,overlayTexture:s}=t;if(!a||!s)return null;const i=await this._createAndDrapeDefaultGraphic(e,s,r,a);return"mesh"===i?.geometry?.type&&g(i.geometry,{z:G}),i}async _createBaseTextureGraphicResult(e,t,r){const a=await this._createAndDrapeDefaultGraphic(e,t,r);return{graphics:a?[a]:[],overlayGraphic:null}}async _createAndDrapeDefaultGraphic(e,t,r,a){const{activeImageSize:i,depthImageLoaded:n,view:o}=e;if(!i||!o)return null;const l=await this._createGraphic({areaOfInterest:a,depthImageLoaded:n,imageSize:i,signal:r,texture:t,view:o});return l?(await this._drapeGraphicToGround(l,o,{signal:r}),s(r),l):null}async _createSingleTextureGraphicResult(e,t,r){const{activeImageSize:a,depthImageLoaded:s,view:i}=e;if(!i)return{graphics:[],overlayGraphic:null};const n=await this._createGraphic({areaOfInterest:t.areaOfInterest,depthImageLoaded:s,imageSize:a,signal:r,texture:t.texture,textureUrl:t.textureUrl,view:i});return{graphics:n?[n]:[],overlayGraphic:null}}async _updateNavigation(e,t){const{view:r}=e;r&&"3d"===r.type&&(this._updateDefaultSuperimposeNavigation(e.adapter,e.defaultSuperimposeCameraLockEnabled),s(t))}async _progressivelyRefineDefaultOverlayIfPossible(e,t,r,a){const{activeImageSize:s,currentBestFeature:i,depthImageLoaded:n,mode:o,view:l}=e,{areaOfInterest:u,overlayLevel:c,raster:p}=t;"default"===o&&p&&u&&null!=c&&s&&i&&l&&r&&await this._progressivelyRefineDefaultOverlay({areaOfInterest:u,currentBestFeature:i,depthImageLoaded:n,imageSize:s,level:c,overlayGraphic:r,raster:p,signal:a,view:l})}_replaceGraphics(e){if(this._updateGraphicsInPlace(e))return;const t=this._graphics;this._graphics=e,this._properties.overlays.addMany(e),this._destroyGraphics(t,!0)}_updateGraphicsInPlace(e){if(!this._graphics.length||this._graphics.length!==e.length)return!1;for(let t=0;t<e.length;t+=1){const r=this._graphics[t],s=e[t];if(!r||!s)return!1;r.geometry=s.geometry,r.symbol=s.symbol,r.visible=s.visible,s.geometry=null,s.symbol=null,a(s)}return!0}_destroyGraphics(e,t){e.length&&(t&&this._properties.overlays.removeMany(e),e.forEach(e=>a(e)))}_updateDefaultSuperimposeNavigation(e,t=!0){t?e?.enableDefaultSuperimposeNavigation?.():e?.disableDefaultSuperimposeNavigation?.()}_shouldUpdateDefaultCamera(e,t){return"default"===e&&t!==this._defaultCameraFeature}updateZOffset(e,t){0!==t&&(this._zOffsetInMeters+=t,this._applyZOffset(this._graphics,t))}_applyZOffset(e,t){0!==t&&e.forEach(e=>{const r=e.geometry;"mesh"===r?.type&&g(r,{z:t})})}async _progressivelyRefineDefaultOverlay(e){const{areaOfInterest:t,level:r,overlayGraphic:a,raster:i,signal:n}=e;for(let o=r-1;o>=D;o-=1){const e=await this._createRasterTexture(i,t,o,{signal:n});s(n),e&&v(a,e)}}_resolveTextureUrl(e){const t=new URL(e.mediaUrl);return Object.entries(e.searchParams).forEach(([e,r])=>{t.searchParams.has(e)||t.searchParams.set(e,r)}),t.toString()}async _drapeGraphicToGround(e,t,r){if("3d"!==t.type)return;const a=e.geometry;if("mesh"!==a?.type)return;const{position:i}=a.vertexAttributes,o=new Array;for(let s=0;s<i.length;s+=3)o.push([i[s],i[s+1],i[s+2]??0]);const l=await t.map.ground.queryElevation(new n({hasZ:!0,points:o,spatialReference:a.spatialReference}),r);s(r),l.geometry.points.forEach((e,t)=>{const r=e[2];"number"==typeof r&&(i[3*t+2]=r)})}_createImageDataFromPixelBlock(e){const t=new ImageData(e.width,e.height);return t.data.set(e.getAsRGBA()),t}async _fetchRasterTextureAtLevel(e,t,r,a){const{offset:i,size:n}=w(e,t,r),{pixelBlock:o}=await e.fetchRawPixels(t,i,n,a);return s(a),o?this._createImageDataFromPixelBlock(o):void 0}async _loadRaster(e,t){const{loadRaster:r}=await import("../../PanoramicViewer/utils.js"),a=await r(this._resolveTextureUrl(e),t);return s(t),a}async _createRasterTexture(e,t,r,a){const{maximumPyramidLevel:s}=e.rasterInfo.storageInfo,i=await this._fetchRasterTextureAtLevel(e,r??s,t,a);if(i)return new c({data:i})}async _createFootprintMesh(e,t,r,a,n){if("3d"!==t.type)return null;const u=x(e,r,a),c=await this._properties.getMapPoint(u,n);s(n);const h=await Promise.all(c.map(e=>e.spatialReference.equals(t.spatialReference)?e:o(e,t.spatialReference,n)));if(s(n),h.some(e=>!e))return null;const{faces:f,position:m,uv:d}=I(h,e,r,a);return new i({vertexAttributes:new p({position:m,uv:d}),components:[new l({faces:f})],spatialReference:t.spatialReference.clone()})}async _createGraphic(t){const{texture:a,textureUrl:s}=t;if(!a&&!s)throw new Error("Missing texture URL or texture data.");if(!t.imageSize)return null;const i=await this._createFootprintMesh(t.imageSize,t.view,t.depthImageLoaded,t.areaOfInterest,{signal:t.signal});if(!i)return null;const n=i.vertexAttributes.position,o=[];for(let e=0;e<n.length;e+=3)o.push(...b);i.vertexAttributes.color=new Uint8Array(o);const l=new u({colorTexture:a??new c({url:s})});return i.components?.forEach(e=>{e.shading="source",e.material=l}),new e({geometry:i,symbol:new f({symbolLayers:new r([new h({})])})})}}export{R as default};
2
+ import e from"../../../Graphic.js";import{createTask as t}from"../../../core/asyncUtils.js";import a from"../../../core/Collection.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import s from"../../../geometry/Mesh.js";import n from"../../../geometry/Multipoint.js";import{projectAsync as o}from"../../../geometry/projectionUtils.js";import c from"../../../geometry/support/MeshComponent.js";import l from"../../../geometry/support/MeshMaterial.js";import u from"../../../geometry/support/MeshTexture.js";import h from"../../../geometry/support/MeshVertexAttributes.js";import p from"../../../symbols/FillSymbol3DLayer.js";import m from"../../../symbols/MeshSymbol3D.js";import{calculateUpdatedWmsf as f}from"../imageMeasurementUtils.js";import{validateTifOrMrfExtension as d}from"../utils.js";import _ from"../support/resolveMediaProps.js";import{computeDefaultAreaOfInterest as g,getViewDependentRasterLevel as v,applyMeshOffsetInMeters as y,applySphereMeshOffsetInMeters as w,updateSuperimposeGraphicTexture as x,getRasterFetchParameters as b,computePanoramicAreasOfInterest as M,clampRasterLevelForTextureSize as P,getRasterLevelSize as D,createSuperimposeSamplePixels as I,createSuperimposeGridVertexAttributes as R}from"../support/superimposeUtils.js";const G=.02,T=2,F=2,S=2,O=2,U=1,L=0,N=[255,255,255,255];class A{constructor(e){this._properties=e,this._defaultCameraFeature=null,this._graphics=[],this._panoramicNavigationFeature=null,this._task=null,this._zOffsetInMeters=0}clear(){this._destroyGraphics(this._graphics,!0),this._defaultCameraFeature=null,this._graphics=[],this._panoramicNavigationFeature=null}destroy(){this._task=this._task?.abort()??null,this.clear()}update(e){this._task?.abort(),this._task=t(async t=>{if(!this._canUpdate(e))return void this._resetInactiveState(e.adapter);let a=!1,r=[],s=null;try{await this._updateDefaultCameraIfNeeded(e,t);const n=await this._resolveMedia(e,t);if(!n)return;if(({graphics:r,overlayGraphic:s}=await this._createGraphics(e,n,t)),!r.length)return;await this._updateNavigation(e,t),this._applyZOffset(r,e.mode,this._zOffsetInMeters),i(t),this._replaceGraphics(r,e.mode),a=!0,await this._progressivelyRefineDefaultOverlayIfPossible(e,n,s,t)}finally{a||this._destroyGraphics(r,!1)}})}_canUpdate(e){const t=["default","panoramic"];return e.superimposeViewEnabled&&"image-loaded"===e.state&&"3d"===e.view?.type&&!!e.currentBestFeature&&!!e.layer&&t.includes(e.mode)}_resetInactiveState(e){e?.disableDefaultSuperimposeNavigation?.(),e?.disablePanoramicSuperimposeNavigation?.(),this.clear()}async _updateDefaultCameraIfNeeded(e,t){const{currentBestFeature:a,mode:r}=e;if(a&&"default"===r)return this._shouldUpdateDefaultCamera(r,a)?(await(e.adapter?.updateDefaultSuperimposeCamera?.({currentBestFeature:a},{signal:t})),i(t),void(this._defaultCameraFeature=a)):void 0}async _resolveMedia(e,t){const{currentBestFeature:a,layer:r,mode:s,view:n}=e;if(!a||!r||!n||"default"!==s&&"panoramic"!==s)return null;const o=await _(a.attributes,r,{signal:t});if(i(t),!o?.mediaUrl)return null;if(!d(o.datasetFormat))return this._resolveNonRasterMedia(o);const c=await this._resolveRasterMedia(o,t);if(!c)return null;switch(s){case"default":{const a=await this._resolveDefaultAreaOfInterest(e,o,t);return this._resolveDefaultRasterMedia(c,a,n,t)}case"panoramic":return this._resolvePanoramicRasterMedia(c,e,t)}}_resolveNonRasterMedia(e){return{areaOfInterest:null,textureUrl:this._resolveTextureUrl(e)}}async _resolveDefaultAreaOfInterest(e,t,a){const{activeImageSize:r,currentBestFeature:s,mode:n,view:o}=e;if(!("default"===n&&r&&s&&o&&d(t.datasetFormat)))return null;const c=await g(s,o,r,this._properties.pointToPixel,{signal:a});return i(a),c}async _resolveRasterMedia(e,t){const a=await this._loadRaster(e,{signal:t});if(i(t),!a)return null;const r=await this._createRasterTexture(a,null,void 0,{signal:t});return i(t),r?{baseTexture:r,raster:a}:null}async _resolveDefaultRasterMedia(e,t,a,r){const{baseTexture:s,raster:n}=e;if(!t)return{areaOfInterest:null,baseTexture:s,raster:n,texture:s};const o=Math.max(L,v(n,a,t)),c=await this._createRasterTexture(n,t,o,{signal:r});return i(r),{areaOfInterest:t,baseTexture:s,overlayLevel:o,overlayTexture:c,raster:n,texture:c??s}}async _resolvePanoramicRasterMedia(e,t,a){const{activeImageSize:r,currentBestFeature:s,view:n}=t,{baseTexture:o,raster:c}=e;if(!r||!s||!n)return{areaOfInterest:null,baseTexture:o,raster:c,texture:o};const l=await this._createPanoramicRasterTexture(c,s,n,r,{signal:a})??o;return i(a),{areaOfInterest:null,baseTexture:o,raster:c,texture:l}}async _createGraphics(e,t,a){switch(e.mode){case"default":return this._createDefaultGraphics(e,t,a);case"panoramic":return this._createPanoramicGraphics(e,t,a)}return{graphics:[],overlayGraphic:null}}async _createDefaultGraphics(e,t,a){if(!this._canCreateLayeredDefaultGraphics(e,t))return this._createFallbackDefaultGraphics(e,t,a);const r=await this._createAndDrapeDefaultGraphic(e,a,{texture:t.baseTexture});if(!r)return this._createBaseTextureGraphicResult(e,t.baseTexture,a);const i=await this._createDefaultOverlayGraphic(e,t,a);return i?{graphics:[r,i],overlayGraphic:i}:{graphics:[r],overlayGraphic:null}}_canCreateLayeredDefaultGraphics(e,t){return!!t.baseTexture&&!!e.activeImageSize}async _createDefaultOverlayGraphic(e,t,a){const{areaOfInterest:r,overlayTexture:i}=t;if(!r||!i)return null;const s=await this._createAndDrapeDefaultGraphic(e,a,{areaOfInterest:r,texture:i});return"mesh"===s?.geometry?.type&&y(s.geometry,{z:G}),s}async _createBaseTextureGraphicResult(e,t,a){const r=await this._createAndDrapeDefaultGraphic(e,a,{texture:t});return{graphics:r?[r]:[],overlayGraphic:null}}async _createFallbackDefaultGraphics(e,t,a){const r=await this._createAndDrapeDefaultGraphic(e,a,{areaOfInterest:t.areaOfInterest,texture:t.texture,textureUrl:t.textureUrl});return{graphics:r?[r]:[],overlayGraphic:null}}async _createAndDrapeDefaultGraphic(e,t,a){const{activeImageSize:r,depthImageLoaded:s,view:n}=e,{areaOfInterest:o,texture:c,textureUrl:l}=a;if(!r||!n)return null;const u=await this._createDefaultGraphic({areaOfInterest:o,depthImageLoaded:s,imageSize:r,signal:t,texture:c,textureUrl:l,view:n});return u?(await this._drapeGraphicToGround(u,n,{signal:t}),i(t),u):null}async _createPanoramicGraphics(e,t,a){const r=await this._createPanoramicSuperimposeGraphic(e,t,a);return{graphics:r?[r]:[],overlayGraphic:null}}async _createPanoramicSuperimposeGraphic(e,t,a){const{activeImageSize:r,currentBestFeature:i,panoramicHorizonAngles:s,view:n}=e;return n?this._createPanoramicGraphic({currentBestFeature:i??void 0,horizonAngles:s,imageSize:r,signal:a,texture:t.texture,textureUrl:t.textureUrl,view:n}):null}async _updateNavigation(e,t){const{currentBestFeature:a,mode:r,view:i}=e;if(a&&i&&"3d"===i.type)switch(r){case"default":return void this._updateDefaultNavigation(e);case"panoramic":return void await this._updatePanoramicNavigation(e,a,i,t)}}_updateDefaultNavigation(e){this._updateDefaultSuperimposeNavigation(e.adapter,e.defaultSuperimposeCameraLockEnabled)}async _progressivelyRefineDefaultOverlayIfPossible(e,t,a,r){const{activeImageSize:i,currentBestFeature:s,depthImageLoaded:n,mode:o,view:c}=e,{areaOfInterest:l,overlayLevel:u,raster:h}=t;"default"===o&&h&&l&&null!=u&&i&&s&&c&&a&&await this._progressivelyRefineDefaultOverlay({areaOfInterest:l,currentBestFeature:s,depthImageLoaded:n,imageSize:i,level:u,overlayGraphic:a,raster:h,signal:r,view:c})}async _updatePanoramicNavigation(e,t,a,r){e.adapter?.disableDefaultSuperimposeNavigation?.();const s=t!==this._panoramicNavigationFeature?e.panoramicCamera??a.camera:a.camera;s&&this._shouldUpdatePanoramicCamera(e.mode,t)&&(e.adapter?.disablePanoramicSuperimposeNavigation?.(),await(e.adapter?.updatePanoramicSuperimposeCamera?.({camera:s,currentBestFeature:t},{signal:r})),i(r)),this._panoramicNavigationFeature=t}_replaceGraphics(e,t){if("panoramic"===t&&this._updatePanoramicGraphicInPlace(e))return;const a=this._graphics;this._graphics=e,this._properties.overlays.addMany(e),this._destroyGraphics(a,!0)}_updatePanoramicGraphicInPlace(e){if(1!==this._graphics.length||1!==e.length)return!1;const t=this._graphics[0],a=e[0];return!(!t||!a)&&(t.geometry=a.geometry,t.symbol=a.symbol,t.visible=a.visible,a.geometry=null,a.symbol=null,r(a),!0)}_destroyGraphics(e,t){e.length&&(t&&this._properties.overlays.removeMany(e),e.forEach(e=>r(e)))}_updateDefaultSuperimposeNavigation(e,t=!0){t?e?.enableDefaultSuperimposeNavigation?.():e?.disableDefaultSuperimposeNavigation?.(),this._panoramicNavigationFeature&&e?.disablePanoramicSuperimposeNavigation?.(),this._panoramicNavigationFeature=null}_shouldUpdateDefaultCamera(e,t){return"default"===e&&t!==this._defaultCameraFeature}_shouldUpdatePanoramicCamera(e,t){return"panoramic"===e&&t!==this._panoramicNavigationFeature}updateZOffset(e,t){0!==t&&(this._zOffsetInMeters+=t,this._applyZOffset(this._graphics,e,t))}_applyZOffset(e,t,a){0!==a&&e.forEach(e=>{const r=e.geometry;"mesh"===r?.type&&("panoramic"!==t?y(r,{z:a}):w(r,{radiusOffset:a}))})}async _progressivelyRefineDefaultOverlay(e){const{areaOfInterest:t,level:a,overlayGraphic:r,raster:s,signal:n}=e;for(let o=a-1;o>=L;o-=1){const e=await this._createRasterTexture(s,t,o,{signal:n});i(n),e&&x(r,e)}}_resolveTextureUrl(e){const t=new URL(e.mediaUrl);return Object.entries(e.searchParams).forEach(([e,a])=>{t.searchParams.has(e)||t.searchParams.set(e,a)}),t.toString()}async _drapeGraphicToGround(e,t,a){if("3d"!==t.type)return;const r=e.geometry;if("mesh"!==r?.type)return;const{position:s}=r.vertexAttributes,o=new Array;for(let i=0;i<s.length;i+=3)o.push([s[i],s[i+1],s[i+2]??0]);const c=await t.map.ground.queryElevation(new n({hasZ:!0,points:o,spatialReference:r.spatialReference}),a);i(a),c.geometry.points.forEach((e,t)=>{const a=e[2];"number"==typeof a&&(s[3*t+2]=a)})}_createImageDataFromPixelBlock(e){return new ImageData(e.getAsRGBA(),e.width,e.height)}_copyImageData(e,t,a,r,i=e.width,s=e.height){const n=e.data,o=t.data,c=e.width,l=e.height,u=t.width,h=t.height;for(let p=0;p<s;p+=1){const e=r+p;if(e<0||e>=h)continue;const t=Math.min(l-1,Math.floor(p*l/s));for(let r=0;r<i;r+=1){const s=a+r;if(s<0||s>=u)continue;const l=4*(t*c+Math.min(c-1,Math.floor(r*c/i))),h=4*(e*u+s);o[h]=n[l],o[h+1]=n[l+1],o[h+2]=n[l+2],o[h+3]=n[l+3]}}}async _fetchRasterTextureAtLevel(e,t,a,r){const{offset:s,size:n}=b(e,t,a),{pixelBlock:o}=await e.fetchRawPixels(t,s,n,r);return i(r),o?this._createImageDataFromPixelBlock(o):void 0}async _loadRaster(e,t){const{loadRaster:a}=await import("../../PanoramicViewer/utils.js"),r=await a(this._resolveTextureUrl(e),t);return i(t),r}async _createRasterTexture(e,t,a,r){const{maximumPyramidLevel:i}=e.rasterInfo.storageInfo,s=await this._fetchRasterTextureAtLevel(e,a??i,t,r);if(s)return new u({data:s})}async _createPanoramicRasterTexture(e,t,a,r,s){const n=await M(t,a,r,this._properties.pointToPixel,s);if(i(s),!n?.length)return this._createRasterTexture(e,null,void 0,s);const{baseLevel:o,level:c,scalingFactor:l}=this._resolvePanoramicRasterLevels(e,a,n);return o<=c?this._createRasterTexture(e,null,c,s):this._createCompositedPanoramicRasterTexture(e,n,{baseLevel:o,level:c,scalingFactor:l},s)}_resolvePanoramicRasterLevels(e,t,a){const{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,s=a.reduce((a,r)=>Math.min(a,v(e,t,r)),r),n=P(e,s),o=i??T;return{baseLevel:Math.min(r,n+F),level:n,scalingFactor:o}}async _createCompositedPanoramicRasterTexture(e,t,a,r){const{baseLevel:s,level:n,scalingFactor:o}=a,c=D(e.rasterInfo.width,e.rasterInfo.height,n,o),l=await this._fetchRasterTextureAtLevel(e,s,null,r);if(i(r),!l)return;const h=new ImageData(c.width,c.height);this._copyImageData(l,h,0,0,c.width,c.height);const p=o**n;for(const u of t){const t=await this._fetchRasterTextureAtLevel(e,n,u,r);if(i(r),!t)continue;const{x:a,y:s}=this._resolvePanoramicRasterDrawOrigin(u,p);this._copyImageData(t,h,a,s)}return new u({data:h})}_resolvePanoramicRasterDrawOrigin(e,t){return{x:Math.max(0,Math.floor(e.xmin/t)),y:Math.max(0,Math.floor(e.ymin/t))}}async _createFootprintMesh(e,t,a,r,n){if("3d"!==t.type)return null;const l=I(e,a,r),u=await this._properties.getMapPoint(l,n);i(n);const p=await Promise.all(u.map(e=>e.spatialReference.equals(t.spatialReference)?e:o(e,t.spatialReference,n)));if(i(n),p.some(e=>!e))return null;const{faces:m,position:f,uv:d}=R(p,e,a,r);return new s({vertexAttributes:new h({position:f,uv:d}),components:[new c({faces:m})],spatialReference:t.spatialReference.clone()})}async _createPanoramicGraphic(t){const{currentBestFeature:r,horizonAngles:s,signal:n,texture:o,textureUrl:c,view:l}=t;if(!t.imageSize||!r)return null;const u=this._createPanoramicMeshTexture(o,c),h=await this._resolvePanoramicMeshLocation(r,l,n);if(!h)return null;i(n);const{imageMesh:f,radiusOfSphericalMesh:d}=this._createPanoramicSphereMesh(r,h,u);return this._flipPanoramicMeshUv(f),this._rotatePanoramicMeshToHorizon(f,s),f.offset(0,0,-d),new e({geometry:f,symbol:new m({symbolLayers:new a([new p({})])})})}_createPanoramicMeshTexture(e,t){if(e)return e;if(!t)throw new Error("Missing texture URL or texture data.");return new u({url:t})}async _resolvePanoramicMeshLocation(e,t,a){const r=e.attributes.location,s=r.spatialReference.equals(t.spatialReference)?r.clone():await o(r,t.spatialReference,{signal:a});return i(a),s}_createPanoramicSphereMesh(e,t,a){const r=t.spatialReference.isWebMercator?f(t.y):1,i=e.attributes.farDistance*r,n=new l({colorTexture:a}),o=s.createSphere(t,{size:i*S,densificationFactor:O,vertexSpace:"georeferenced",material:n});return o.components?.forEach(e=>{e.material=n,e.trustSourceNormals=!0}),{imageMesh:o,radiusOfSphericalMesh:i}}_flipPanoramicMeshUv(e){const t=e.vertexAttributes,a=t.uv;if(!a)return;const r=a.length/2;for(let i=0;i<r;i++)a[2*i]=U-a[2*i];e.vertexAttributes=t}_rotatePanoramicMeshToHorizon(e,t){if(!t)return;const[a,r,i]=t;e.rotate(-a,-r,i,{origin:e.extent.center})}async _createDefaultGraphic(t){const{texture:r,textureUrl:i}=t;if(!r&&!i)throw new Error("Missing texture URL or texture data.");if(!t.imageSize)return null;const s=await this._createFootprintMesh(t.imageSize,t.view,t.depthImageLoaded,t.areaOfInterest,{signal:t.signal});if(!s)return null;const n=s.vertexAttributes.position,o=[];for(let e=0;e<n.length;e+=3)o.push(...N);s.vertexAttributes.color=new Uint8Array(o);const c=new l({colorTexture:r??new u({url:i})});return s.components?.forEach(e=>{e.shading="source",e.material=c}),new e({geometry:s,symbol:new m({symbolLayers:new a([new p({})])})})}}export{A as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{throwIfAborted as a}from"../../../core/promiseUtils.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import{subclass as i}from"../../../core/accessorSupport/decorators/subclass.js";import r from"../../../geometry/Multipoint.js";import s from"../../../geometry/Point.js";import n from"../../../geometry/Polygon.js";import m from"../../../geometry/Polyline.js";import{projectAsync as p}from"../../../geometry/projectionUtils.js";import l from"../../../geometry/SpatialReference.js";import{imageToWorld as c,imageToWorldPanoramic as y}from"../../../layers/orientedImagery/transformations/imageToWorld.js";import h from"../../../layers/orientedImagery/transformations/updateElevation.js";import{getUpdateElevationProps as g,getImageToWorldProperties as u,getImageToWorldPanoramicProperties as f,pointToArray as d}from"../../../layers/orientedImagery/transformations/utils.js";import{worldToImagePanoramic as w,worldToImage as T}from"../../../layers/orientedImagery/transformations/worldToImage.js";import{imageSpaceToPoint as P,pointToImageSpace as x}from"../support/geometryUtils.js";let z=class extends t{constructor(e){super(e),this.mode="default"}get horizonAngles(){if("panoramic"!==this.mode)return;const{horizonPitch:e,horizonRoll:t,horizonYaw:a}=this.imageToWorldProperties;return[e,t,a]}async pixelToMapPoint(e,t){const{imageToWorldProperties:o,updateElevationProps:i,mode:r}=this,s=Array.isArray(e)?e:[e];await(this.depthImageService?.load(t)),a(t);const n=await Promise.all(s.map(async e=>{e.depth=await(this.depthImageService?.depthAt(e,{width:this.imageSize?.[0]??0,height:this.imageSize?.[1]??0}))}));if(await Promise.all(n),a(t),"default"===r){const r=await c(s,o,i);return a(t),Array.isArray(e)?r:r[0]}const m=await y(s,o,i);return a(t),Array.isArray(e)?m:m[0]}async pixelToMapPointForFeature(e,t,o){const{feature:i,mode:r,imageSize:s,footprintExtent:n}=t,{elevationSample:m,attributes:h}=i,{elevationSource:d,location:w,cameraHeight:T}=h;let P=w.clone();P.spatialReference.isGeographic&&(P=await p(P,l.WebMercator));const x=await g(w.spatialReference,w.z??0,T,{elevationSample:m,elevationSource:d,extent:n});let z;"elevationSample"in x&&(i.elevationSample=x.elevationSample);const S=Array.isArray(e)?e:[e];await(this.depthImageService?.load(o)),a(o);const G=await Promise.all(S.map(async e=>{e.depth=this.depthImageService?.depthAt(e,{width:s?.[0]??0,height:s?.[1]??0})}));if(await Promise.all(G),a(o),"default"===r||"video"===r){const e=u(h,s[0],s[1]);z=await c(S,{...e,cameraLocation:P},x)}else{const e=f(h,s[0],s[1]);z=await y(S,{...e,cameraLocation:P},x)}return Array.isArray(e)?z:z[0]}async pointToPixel(e,t){const{imageToWorldProperties:o,updateElevationProps:i,mode:r}=this;if(!i||!o)throw new Error("updateElevationProps and imageToWorldProperties are required to perform pointToPixel operation.");const s=Array.isArray(e)?e:[e],{spatialReference:n}=o.cameraLocation,m=await Promise.all(s.map(async e=>{let o=e;return e.hasZ||(o=await h(e,i,t)),o.spatialReference.equals(n)||(o=await p(o,n,t)),a(t),o}));let l;return a(t),l="panoramic"===r?w(m,o):T(m,o),a(t),Array.isArray(e)?l:l[0]}async pointToImageGeometry(e,t){const o=await this.pointToPixel(e,t);return a(t),P(o,this.mode,this.imageSize,this.horizonAngles)}async polygonToImageGeometry(e,t){const o=await Promise.all(e.rings.map(async o=>{const i=o.map(t=>new s({x:t[0],y:t[1],z:t[2],spatialReference:e.spatialReference})),r=await this.pointToPixel(i,t);return a(t),r.map(e=>d(P(e,this.mode,this.imageSize,this.horizonAngles)))}));return a(t),n.fromJSON({rings:o,spatialReference:l.WebMercator})}async polylineToImageGeometry(e,t){const o=await Promise.all(e.paths.map(async o=>{const i=o.map(t=>new s({x:t[0],y:t[1],z:t[2],spatialReference:e.spatialReference})),r=await this.pointToPixel(i,t);return a(t),r.map(e=>d(P(e,this.mode,this.imageSize,this.horizonAngles)))}));return a(t),m.fromJSON({paths:o,spatialReference:l.WebMercator})}async multipointToImageGeometry(e,t){const o=e.points.map(t=>new s({x:t[0],y:t[1],z:t[2],spatialReference:e.spatialReference})),i=await this.pointToPixel(o,t);a(t);const n=i.map(e=>d(P(e,this.mode,this.imageSize,this.horizonAngles)));return a(t),r.fromJSON({points:n,spatialReference:l.WebMercator})}async extentToImageGeometry(e,t){const o=n.fromExtent(e),i=await this.polygonToImageGeometry(o,t);return a(t),i.extent}async geometryToImageGeometry(e,t){switch(e.type){case"point":return await this.pointToImageGeometry(e,t);case"polygon":return await this.polygonToImageGeometry(e,t);case"polyline":return await this.polylineToImageGeometry(e,t);case"multipoint":return await this.multipointToImageGeometry(e,t);case"extent":return await this.extentToImageGeometry(e,t);default:return null}}async imagePointToMapGeometry(e,t){const o=x(e,this.mode,this.imageSize,this.horizonAngles),i=await this.pixelToMapPoint(o,t);return a(t),i}async imagePolygonToMapGeometry(e,t){const o=await Promise.all(e.rings.map(async a=>{const o=a.map(t=>new s({x:t[0],y:t[1],z:t[2],spatialReference:e.spatialReference})).map(e=>x(e,this.mode,this.imageSize,this.horizonAngles));return await this.pixelToMapPoint(o,t)}));return a(t),new n({rings:o.map(e=>e.map(d)),spatialReference:o[0][0].spatialReference})}async imagePolylineToMapGeometry(e,t){const o=await Promise.all(e.paths.map(async a=>{const o=a.map(t=>new s({x:t[0],y:t[1],z:t[2],spatialReference:e.spatialReference})).map(e=>x(e,this.mode,this.imageSize,this.horizonAngles));return await this.pixelToMapPoint(o,t)}));return a(t),new m({paths:o.map(e=>e.map(d)),spatialReference:o[0][0].spatialReference})}async imageMultipointToMapGeometry(e,t){const o=e.points.map(t=>new s({x:t[0],y:t[1],z:t[2],spatialReference:e.spatialReference})).map(e=>x(e,this.mode,this.imageSize,this.horizonAngles)),i=await this.pixelToMapPoint(o,t);return a(t),new r({points:i.map(e=>d(e)),spatialReference:i[0].spatialReference})}async imageExtentToMapGeometry(e,t){const o=n.fromExtent(e),i=await this.imagePolygonToMapGeometry(o,t);a(t);const r=await this.imageGeometryToMapGeometry(i,t);return a(t),r.extent}async imageGeometryToMapGeometry(e,t){switch(e.type){case"point":return await this.imagePointToMapGeometry(e,t);case"polygon":return await this.imagePolygonToMapGeometry(e,t);case"polyline":return await this.imagePolylineToMapGeometry(e,t);case"multipoint":return await this.imageMultipointToMapGeometry(e,t);case"extent":return await this.imageExtentToMapGeometry(e,t);default:return null}}};e([o()],z.prototype,"mode",void 0),e([o()],z.prototype,"imageToWorldProperties",void 0),e([o()],z.prototype,"updateElevationProps",void 0),e([o()],z.prototype,"depthImageService",void 0),e([o()],z.prototype,"imageSize",void 0),e([o()],z.prototype,"horizonAngles",null),z=e([i("esri.widgets.OrientedImageryViewer.services.TransformationService")],z);const S=z;export{S as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import{throwIfAborted as a}from"../../../core/promiseUtils.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import{subclass as r}from"../../../core/accessorSupport/decorators/subclass.js";import i from"../../../geometry/Multipoint.js";import n from"../../../geometry/Polygon.js";import s from"../../../geometry/Polyline.js";import{projectAsync as m}from"../../../geometry/projectionUtils.js";import p from"../../../geometry/SpatialReference.js";import{imageToWorld as l,imageToWorldPanoramic as c}from"../../../layers/orientedImagery/transformations/imageToWorld.js";import y from"../../../layers/orientedImagery/transformations/updateElevation.js";import{getUpdateElevationProps as u,getImageToWorldProperties as g,getImageToWorldPanoramicProperties as h,pointToArray as f}from"../../../layers/orientedImagery/transformations/utils.js";import{worldToImagePanoramic as d,worldToImage as w}from"../../../layers/orientedImagery/transformations/worldToImage.js";import{imageSpaceToPoint as T,coordinateToPoints as P,pointToImageSpace as S}from"../support/geometryUtils.js";function G(e){switch(e){case"video":case"default":default:return"default";case"panoramic":return"panoramic";case"panoramic-video":return"panoramic-video"}}let x=class extends t{constructor(e){super(e),this.mode="default"}get horizonAngles(){if("panoramic"!==this.mode)return;const{horizonPitch:e,horizonRoll:t,horizonYaw:a}=this.imageToWorldProperties;return[e,t,a]}async pixelToMapPoint(e,t){const{imageToWorldProperties:o,updateElevationProps:r,mode:i}=this,n=Array.isArray(e)?e:[e];await(this.depthImageService?.load(t)),a(t);const s=await Promise.all(n.map(async e=>{e.depth=await(this.depthImageService?.depthAt(e,{width:this.imageSize?.[0]??0,height:this.imageSize?.[1]??0}))}));if(await Promise.all(s),a(t),"default"===i){const i=await l(n,o,r);return a(t),Array.isArray(e)?i:i[0]}const m=await c(n,o,r);return a(t),Array.isArray(e)?m:m[0]}async pixelToMapPointForFeature(e,t,o){const{feature:r,mode:i,imageSize:n,footprintExtent:s}=t,{elevationSample:y,attributes:f}=r,{elevationSource:d,location:w,cameraHeight:T}=f;let P=w.clone();P.spatialReference.isGeographic&&(P=await m(P,p.WebMercator));const S=await u(w.spatialReference,w.z??0,T,{elevationSample:y,elevationSource:d,extent:s});let G;"elevationSample"in S&&(r.elevationSample=S.elevationSample);const x=Array.isArray(e)?e:[e];await(this.depthImageService?.load(o)),a(o);const v=await Promise.all(x.map(async e=>{e.depth=this.depthImageService?.depthAt(e,{width:n?.[0]??0,height:n?.[1]??0})}));if(await Promise.all(v),a(o),"default"===i||"video"===i){const e=g(f,n[0],n[1]);G=await l(x,{...e,cameraLocation:P},S)}else{const e=h(f,n[0],n[1]);G=await c(x,{...e,cameraLocation:P},S)}return Array.isArray(e)?G:G[0]}async pointToPixel(e,t){const{imageToWorldProperties:o,updateElevationProps:r,mode:i}=this;if(!r||!o)throw new Error("updateElevationProps and imageToWorldProperties are required to perform pointToPixel operation.");const n=Array.isArray(e)?e:[e],{spatialReference:s}=o.cameraLocation,p=await Promise.all(n.map(async e=>{let o=e;return e.hasZ||(o=await y(e,r,t)),o.spatialReference.equals(s)||(o=await m(o,s,t)),a(t),o}));let l;return a(t),l="panoramic"===i?d(p,o):w(p,o),a(t),Array.isArray(e)?l:l[0]}async pointToPixelForFeature(e,t,o){const{feature:r,mode:i,imageSize:n,footprintExtent:s}=t,{elevationSample:l,attributes:c}=r,{elevationSource:f,location:T,cameraHeight:P}=c;let S=T.clone();S.spatialReference.isGeographic&&(S=await m(S,p.WebMercator));const G=await u(T.spatialReference,T.z??0,P,{elevationSample:l,elevationSource:f,extent:s});"elevationSample"in G&&(r.elevationSample=G.elevationSample);const x=Array.isArray(e)?e:[e],v=await Promise.all(x.map(async e=>{let t=e;return e.hasZ||(t=await y(e,G,o)),t.spatialReference.equals(S.spatialReference)||(t=await m(t,S.spatialReference,o)),a(o),t}));a(o);const F="panoramic"===i||"panoramic-video"===i?d(v,{...h(c,n[0],n[1]),cameraLocation:S}):w(v,{...g(c,n[0],n[1]),cameraLocation:S});return a(o),Array.isArray(e)?F:F[0]}async pointToImageGeometry(e,t){const o=await this.pointToPixel(e,t);return a(t),T(o,this.mode,this.imageSize,this.horizonAngles)}async pointToImageGeometryForFeature(e,t,o,r){const i=await this.pointToPixelForFeature(e,t,r);return a(r),T(i,G(t.mode),t.imageSize,o)}async polygonToImageGeometry(e,t){const o=await Promise.all(e.rings.map(async o=>{const r=o.map(t=>P(t,e.spatialReference)),i=await this.pointToPixel(r,t);return a(t),i.map(e=>f(T(e,this.mode,this.imageSize,this.horizonAngles)))}));return a(t),n.fromJSON({rings:o,spatialReference:p.WebMercator})}async polygonToImageGeometryForFeature(e,t,o,r){const i=await Promise.all(e.rings.map(async i=>{const n=i.map(t=>P(t,e.spatialReference)),s=await this.pointToPixelForFeature(n,t,r);return a(r),s.map(e=>f(T(e,G(t.mode),t.imageSize,o)))}));return a(r),n.fromJSON({rings:i,spatialReference:p.WebMercator,hasZ:!0})}async polylineToImageGeometry(e,t){const o=await Promise.all(e.paths.map(async o=>{const r=o.map(t=>P(t,e.spatialReference)),i=await this.pointToPixel(r,t);return a(t),i.map(e=>f(T(e,this.mode,this.imageSize,this.horizonAngles)))}));return a(t),s.fromJSON({paths:o,spatialReference:p.WebMercator})}async polylineToImageGeometryForFeature(e,t,o,r){const i=await Promise.all(e.paths.map(async i=>{const n=i.map(t=>P(t,e.spatialReference)),s=await this.pointToPixelForFeature(n,t,r);return a(r),s.map(e=>f(T(e,G(t.mode),t.imageSize,o)))}));return a(r),s.fromJSON({paths:i,spatialReference:p.WebMercator,hasZ:!0})}async multipointToImageGeometry(e,t){const o=e.points.map(t=>P(t,e.spatialReference)),r=await this.pointToPixel(o,t);a(t);const n=r.map(e=>f(T(e,this.mode,this.imageSize,this.horizonAngles)));return a(t),i.fromJSON({points:n,spatialReference:p.WebMercator})}async multipointToImageGeometryForFeature(e,t,o,r){const n=e.points.map(t=>P(t,e.spatialReference)),s=await this.pointToPixelForFeature(n,t,r);a(r);const m=s.map(e=>f(T(e,G(t.mode),t.imageSize,o)));return a(r),i.fromJSON({points:m,spatialReference:p.WebMercator,hasZ:!0})}async extentToImageGeometry(e,t){const o=n.fromExtent(e),r=await this.polygonToImageGeometry(o,t);return a(t),r.extent}async geometryToImageGeometry(e,t){switch(e.type){case"point":return await this.pointToImageGeometry(e,t);case"polygon":return await this.polygonToImageGeometry(e,t);case"polyline":return await this.polylineToImageGeometry(e,t);case"multipoint":return await this.multipointToImageGeometry(e,t);case"extent":return await this.extentToImageGeometry(e,t);default:return null}}async extentToImageGeometryForFeature(e,t,o,r){const i=n.fromExtent(e),s=await this.polygonToImageGeometryForFeature(i,t,o,r);return a(r),s.extent}async geometryToImageGeometryForFeature(e,t,a,o){switch(e.type){case"point":return await this.pointToImageGeometryForFeature(e,t,a,o);case"polygon":return await this.polygonToImageGeometryForFeature(e,t,a,o);case"polyline":return await this.polylineToImageGeometryForFeature(e,t,a,o);case"multipoint":return await this.multipointToImageGeometryForFeature(e,t,a,o);case"extent":return await this.extentToImageGeometryForFeature(e,t,a,o);default:return null}}async imagePointToMapGeometry(e,t){const o=S(e,this.mode,this.imageSize,this.horizonAngles),r=await this.pixelToMapPoint(o,t);return a(t),r}async imagePolygonToMapGeometry(e,t){const o=await Promise.all(e.rings.map(async a=>{const o=a.map(t=>P(t,e.spatialReference)).map(e=>S(e,this.mode,this.imageSize,this.horizonAngles));return await this.pixelToMapPoint(o,t)}));return a(t),new n({rings:o.map(e=>e.map(f)),spatialReference:o[0][0].spatialReference})}async imagePolylineToMapGeometry(e,t){const o=await Promise.all(e.paths.map(async a=>{const o=a.map(t=>P(t,e.spatialReference)).map(e=>S(e,this.mode,this.imageSize,this.horizonAngles));return await this.pixelToMapPoint(o,t)}));return a(t),new s({paths:o.map(e=>e.map(f)),spatialReference:o[0][0].spatialReference})}async imageMultipointToMapGeometry(e,t){const o=e.points.map(t=>P(t,e.spatialReference)).map(e=>S(e,this.mode,this.imageSize,this.horizonAngles)),r=await this.pixelToMapPoint(o,t);return a(t),new i({points:r.map(e=>f(e)),spatialReference:r[0].spatialReference})}async imageExtentToMapGeometry(e,t){const o=n.fromExtent(e),r=await this.imagePolygonToMapGeometry(o,t);a(t);const i=await this.imageGeometryToMapGeometry(r,t);return a(t),i.extent}async imageGeometryToMapGeometry(e,t){switch(e.type){case"point":return await this.imagePointToMapGeometry(e,t);case"polygon":return await this.imagePolygonToMapGeometry(e,t);case"polyline":return await this.imagePolylineToMapGeometry(e,t);case"multipoint":return await this.imageMultipointToMapGeometry(e,t);case"extent":return await this.imageExtentToMapGeometry(e,t);default:return null}}};e([o()],x.prototype,"mode",void 0),e([o()],x.prototype,"imageToWorldProperties",void 0),e([o()],x.prototype,"updateElevationProps",void 0),e([o()],x.prototype,"depthImageService",void 0),e([o()],x.prototype,"imageSize",void 0),e([o()],x.prototype,"horizonAngles",null),x=e([r("esri.widgets.OrientedImageryViewer.services.TransformationService")],x);const v=x;export{v as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import e from"../../../Graphic.js";import t from"../../../core/Error.js";import n from"../../../geometry/Polygon.js";import{fromJSON as r}from"../../../geometry/support/jsonUtils.js";import{convertPixelLocationToSphereVertex as a,convertSphereVertexToPixelLocation as i}from"../../../layers/orientedImagery/transformations/utils.js";import{defaultImageGeometryField as o,defaultOIObjectIDField as s}from"../constants.js";import{createGraphicSymbol as m,dataCaptureFeatureSymbol as p}from"../symbols.js";import{checkNameOrAlias as y}from"./typeUtils.js";function c(e,t,n){if(!e)return;const{renderer:r}=e,a=p(t),i=r?"symbol"in r?r.symbol:"defaultSymbol"in r?r.defaultSymbol:r.getSymbol():null,o=a(i?.color);n[`${t}Symbol`]=(t===e.geometryType?i:null)??o}function l(e,n,r){const a=e.fields.find(({name:e,alias:t,type:r})=>y(n?.length?n:o,e,t)&&"blob"===r),i=e.fields.find(({name:e,alias:t})=>y(r?.length?r:s,e,t));if(!a||!i)throw new t("orientedimageryviewer:invalid-data-capture-layer","Data capture layer is not configured correctly.",{layer:e,imageGeometryField:a,oiObjectIdField:i});return{imageGeometryField:a,oiObjectIdField:i}}function x(n,r,a,i,o,s,p,y){let c=u(n,r);if(!c)throw new t("orientedimageryviewer:invalid-geometry","InvalidGeometry");return c=d(c,s,o,y),new e({attributes:n,layer:a,symbol:m(c.type,a.geometryType,p),geometry:c,visible:a.visible&&i})}function u(e,t){const{geometry:n}=JSON.parse(atob(e[t]));return r(n)}function b(e,t,n,r){switch(t){case"default":return f(e);case"panoramic":return g(e,n,r)}}function f(e){switch(e.type){case"point":e.x+=.5,e.y=.5-e.y;break;case"polyline":e.paths=e.paths.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case"polygon":e.rings=e.rings.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case"multipoint":e.points=e.points.map(([e,t])=>[e+.5,.5-t]);break;case"extent":e.xmin+=.5,e.xmax+=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function g(e,t,r){switch(e.type){case"point":{const{x:n,y:a}=i(e,...t,r);e.x=n,e.y=a,delete e.z;break}case"polyline":e.paths=e.paths.map(e=>e.map(e=>{const{x:n,y:a}=i({x:e[0],y:e[1],z:e[2]},...t,r);return[n,a]}));break;case"polygon":e.rings=e.rings.map(e=>e.map(e=>{const{x:n,y:a}=i({x:e[0],y:e[1],z:e[2]},...t,r);return[n,a]}));break;case"multipoint":e.points=e.points.map(e=>{const{x:n,y:a}=i({x:e[0],y:e[1],z:e[2]},...t,r);return[n,a]});break;case"extent":{const{xmin:a,xmax:i,ymin:o,ymax:s}=g(n.fromExtent(e),t,r).extent;e.xmax=i,e.xmin=a,e.ymax=s,e.ymin=o;break}}return e}function d(e,t,n,r){switch(t){case"default":return h(e);case"panoramic":return k(e,n,r)}}function h(e){switch(e.type){case"point":e.x-=.5,e.y=.5-e.y;break;case"polyline":e.paths=e.paths.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case"polygon":e.rings=e.rings.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case"multipoint":e.points=e.points.map(([e,t])=>[e-.5,.5-t]);break;case"extent":e.xmin-=.5,e.xmax-=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function k(e,t,r){switch(e.type){case"point":{const[n,i,o]=a(e,...t,r);e.x=n,e.y=i,e.z=o;break}case"polyline":e.paths=e.paths.map(e=>e.map(e=>{const[n,i,o]=a({x:e[0],y:e[1]},...t,r);return[n,i,o]}));break;case"polygon":e.rings=e.rings.map(e=>e.map(e=>{const[n,i,o]=a({x:e[0],y:e[1]},...t,r);return[n,i,o]}));break;case"multipoint":e.points=e.points.map(e=>{const[n,i,o]=a({x:e[0],y:e[1]},...t,r);return[n,i,o]});break;case"extent":{const{xmin:a,xmax:i,ymin:o,ymax:s}=k(n.fromExtent(e),t,r).extent;e.xmax=i,e.xmin=a,e.ymax=s,e.ymin=o}}return e}export{c as configureSketchTool,x as constructGraphicFromImageGeometry,l as extractFieldsFromDataCaptureLayer,b as mapSpaceToImageSpace,f as mapSpaceToImageSpaceDefault,g as mapSpaceToImageSpacePanoramic,u as parseAndExtractField,d as pixelToMapSpace,h as pixelToMapSpaceDefault,k as pixelToMapSpacePanoramic};
2
+ import e from"../../../Graphic.js";import t from"../../../core/Error.js";import n from"../../../geometry/Polygon.js";import{fromJSON as a}from"../../../geometry/support/jsonUtils.js";import{convertPixelLocationToSphereVertex as r,convertSphereVertexToPixelLocation as i}from"../../../layers/orientedImagery/transformations/utils.js";import{defaultImageGeometryField as o,defaultOIObjectIDField as s}from"../constants.js";import{createGraphicSymbol as m,dataCaptureFeatureSymbol as p}from"../symbols.js";import{checkNameOrAlias as y}from"./typeUtils.js";function c(e,t,n){if(!e)return;const{renderer:a}=e,r=p(t),i=a?"symbol"in a?a.symbol:"defaultSymbol"in a?a.defaultSymbol:a.getSymbol():null,o=r(i?.color);n[`${t}Symbol`]=(t===e.geometryType?i:null)??o}function l(e,n,a){const r=e.fields.find(({name:e,alias:t,type:a})=>y(n?.length?n:o,e,t)&&"blob"===a),i=e.fields.find(({name:e,alias:t})=>y(a?.length?a:s,e,t));if(!r||!i)throw new t("orientedimageryviewer:invalid-data-capture-layer","Data capture layer is not configured correctly.",{layer:e,imageGeometryField:r,oiObjectIdField:i});return{imageGeometryField:r,oiObjectIdField:i}}function x(n,a,r,i,o,s,p,y){let c=u(n,a);if(!c)throw new t("orientedimageryviewer:invalid-geometry","InvalidGeometry");return c=d(c,s,o,y),new e({attributes:n,layer:r,symbol:m(c.type,r.geometryType,p),geometry:c,visible:r.visible&&i})}function u(e,t){const{geometry:n}=JSON.parse(atob(e[t]));return a(n)}function b(e,t,n,a){switch(t){case"default":return f(e);case"panoramic":case"panoramic-video":return g(e,n,a)}}function f(e){switch(e.type){case"point":e.x+=.5,e.y=.5-e.y;break;case"polyline":e.paths=e.paths.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case"polygon":e.rings=e.rings.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case"multipoint":e.points=e.points.map(([e,t])=>[e+.5,.5-t]);break;case"extent":e.xmin+=.5,e.xmax+=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function g(e,t,a){switch(e.type){case"point":{const{x:n,y:r}=i(e,...t,a);e.x=n,e.y=r,delete e.z;break}case"polyline":e.paths=e.paths.map(e=>e.map(e=>{const{x:n,y:r}=i({x:e[0],y:e[1],z:e[2]},...t,a);return[n,r]}));break;case"polygon":e.rings=e.rings.map(e=>e.map(e=>{const{x:n,y:r}=i({x:e[0],y:e[1],z:e[2]},...t,a);return[n,r]}));break;case"multipoint":e.points=e.points.map(e=>{const{x:n,y:r}=i({x:e[0],y:e[1],z:e[2]},...t,a);return[n,r]});break;case"extent":{const{xmin:r,xmax:i,ymin:o,ymax:s}=g(n.fromExtent(e),t,a).extent;e.xmax=i,e.xmin=r,e.ymax=s,e.ymin=o;break}}return e}function d(e,t,n,a){switch(t){case"default":return h(e);case"panoramic":case"panoramic-video":return k(e,n,a)}}function h(e){switch(e.type){case"point":e.x-=.5,e.y=.5-e.y;break;case"polyline":e.paths=e.paths.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case"polygon":e.rings=e.rings.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case"multipoint":e.points=e.points.map(([e,t])=>[e-.5,.5-t]);break;case"extent":e.xmin-=.5,e.xmax-=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function k(e,t,a){switch(e.type){case"point":{const[n,i,o]=r(e,...t,a);e.x=n,e.y=i,e.z=o;break}case"polyline":e.paths=e.paths.map(e=>e.map(e=>{const[n,i,o]=r({x:e[0],y:e[1]},...t,a);return[n,i,o]}));break;case"polygon":e.rings=e.rings.map(e=>e.map(e=>{const[n,i,o]=r({x:e[0],y:e[1]},...t,a);return[n,i,o]}));break;case"multipoint":e.points=e.points.map(e=>{const[n,i,o]=r({x:e[0],y:e[1]},...t,a);return[n,i,o]});break;case"extent":{const{xmin:r,xmax:i,ymin:o,ymax:s}=k(n.fromExtent(e),t,a).extent;e.xmax=i,e.xmin=r,e.ymax=s,e.ymin=o}}return e}export{c as configureSketchTool,x as constructGraphicFromImageGeometry,l as extractFieldsFromDataCaptureLayer,b as mapSpaceToImageSpace,f as mapSpaceToImageSpaceDefault,g as mapSpaceToImageSpacePanoramic,u as parseAndExtractField,d as pixelToMapSpace,h as pixelToMapSpaceDefault,k as pixelToMapSpacePanoramic};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import e from"../../../geometry/Point.js";import n from"../../../geometry/SpatialReference.js";import{convertPixelLocationToSphereVertex as t,convertSphereVertexToPixelLocation as r}from"../../../layers/orientedImagery/transformations/utils.js";function a(r,a,o){const[i,s]=a;return new e(t(r,i,s,o),n.WebMercator)}function o(e){return{x:e.x-.5,y:.5-e.y}}function i(t){return new e({...o(t),spatialReference:n.WebMercator})}function s(e,n,t,r){switch(n){case"default":return i(e);case"panoramic":return a(e,t,r);default:throw new Error(`Unsupported image mode: ${n}`)}}function c(e){return{x:e.x+.5,y:.5-e.y}}function p(e,n,t){const[a,o]=n;return r({x:e.x,y:e.y,z:e.z},a,o,t)}function m(e,n,t,r){return"panoramic"===n?p(e,t,r):c(e)}function u(e){if(e&&"hasZ"in e&&e.hasZ)switch(e.type){case"point":e.z=void 0,e.hasZ=!1;break;case"polyline":e.paths=e.paths.map(e=>e.map(e=>3===e.length?[e[0],e[1]]:e)),e.hasZ=!1;break;case"polygon":e.rings=e.rings.map(e=>e.map(e=>3===e.length?[e[0],e[1]]:e)),e.hasZ=!1;break;case"multipoint":e.points=e.points.map(e=>3===e.length?[e[0],e[1]]:e),e.hasZ=!1;break;case"extent":e.zmax=void 0,e.zmin=void 0}}export{i as imageSpaceTo2DPoint,a as imageSpaceTo3DPoint,s as imageSpaceToPoint,o as pixelTo2D,m as pointToImageSpace,u as removeZFromGeometry,c as toImageSpace,p as toImageSpace3D};
2
+ import e from"../../../geometry/Point.js";import n from"../../../geometry/SpatialReference.js";import{convertPixelLocationToSphereVertex as t,convertSphereVertexToPixelLocation as r}from"../../../layers/orientedImagery/transformations/utils.js";function a(n,t){return new e({x:n[0],y:n[1],z:n[2],spatialReference:t})}function o(r,a,o){const[i,s]=a;return new e(t(r,i,s,o),n.WebMercator)}function i(e){return{x:e.x-.5,y:.5-e.y}}function s(t){return new e({...i(t),spatialReference:n.WebMercator})}function c(e,n,t,r){switch(n){case"default":return s(e);case"panoramic":case"panoramic-video":return o(e,t,r);default:throw new Error(`Unsupported image mode: ${n}`)}}function p(e){return{x:e.x+.5,y:.5-e.y}}function m(e,n,t){const[a,o]=n;return r({x:e.x,y:e.y,z:e.z},a,o,t)}function u(e,n,t,r){return"panoramic"===n||"panoramic-video"===n?m(e,t,r):p(e)}function f(e){if(e&&"hasZ"in e&&e.hasZ)switch(e.type){case"point":e.z=void 0,e.hasZ=!1;break;case"polyline":e.paths=e.paths.map(e=>e.map(e=>3===e.length?[e[0],e[1]]:e)),e.hasZ=!1;break;case"polygon":e.rings=e.rings.map(e=>e.map(e=>3===e.length?[e[0],e[1]]:e)),e.hasZ=!1;break;case"multipoint":e.points=e.points.map(e=>3===e.length?[e[0],e[1]]:e),e.hasZ=!1;break;case"extent":e.zmax=void 0,e.zmin=void 0}}export{a as coordinateToPoints,s as imageSpaceTo2DPoint,o as imageSpaceTo3DPoint,c as imageSpaceToPoint,i as pixelTo2D,u as pointToImageSpace,f as removeZFromGeometry,p as toImageSpace,m as toImageSpace3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{throwIfAborted as t}from"../../../core/promiseUtils.js";import{getMetersPerUnitForSR as a}from"../../../core/units.js";import n from"../../../geometry/Point.js";import r from"../../../geometry/Polygon.js";import e from"../../../geometry/SpatialReference.js";import{e as i}from"../../../chunks/intersectionOperator.js";import o from"../../../geometry/support/MeshMaterial.js";import{computeFarplaneVertices as h,createRotationMatrixFromHPR as m}from"../../../layers/orientedImagery/transformations/utils.js";import{calculateUpdatedWmsf as s}from"../imageMeasurementUtils.js";const l=15,c=120,M=.9,f=1.1,u=1,x=179,y=3,p=2,g=1,d=150,w=16,I=32,v=8,b=.01,F=2,P=10,z=16,j=4096;function R(t,n){const{x:r=0,y:e=0,z:i=0}=n;if(0===r&&0===e&&0===i)return;const o=a(t.spatialReference),h=o?r/o:r,m=o?e/o:e,s=o?i/o:i,{position:l}=t.vertexAttributes,c=Math.floor(l.length/3);for(let a=0;a<c;a+=1)l[3*a]+=h,l[3*a+1]+=m,l[3*a+2]+=s;t.vertexAttributesChanged()}function A(t,a,n){const{columns:r,rows:e}=C(t,a,n),[i,o]=t,h=n?.xmin??0,m=n?.ymin??0,s=n?Math.max(1,n.xmax-n.xmin):i,l=n?Math.max(1,n.ymax-n.ymin):o,c=new Array;for(let M=0;M<=e;M+=1){const t=m+M/e*l;for(let a=0;a<=r;a+=1)c.push({x:h+a/r*s,y:t})}return c}function N(t,a,n,r){const{columns:e,rows:i}=C(a,n,r),o=e+1,h=new Float64Array(3*t.length),m=new Float32Array(2*t.length),s=new Array;t.forEach((t,a)=>{const n=3*a,r=2*a,s=a%o,l=Math.floor(a/o);h[n]=t.x,h[n+1]=t.y,h[n+2]=t.z??0,m[r]=s/e,m[r+1]=l/i});for(let l=0;l<i;l+=1)for(let t=0;t<e;t+=1){const a=l*o+t,n=a+1,r=a+o,e=r+1;s.push(a,n,e,a,e,r)}return{faces:s,position:h,uv:m}}function S(t,a,n,r=p){return{width:Math.ceil(t/r**n),height:Math.ceil(a/r**n)}}function L(t,a,n){const{width:r,height:e,storageInfo:i}=t.rasterInfo,{pyramidScalingFactor:o}=i,h=S(r,e,a,o??void 0);if(!n)return{offset:{x:0,y:0},size:h};const m=(o??p)**a,s={x:Math.max(0,Math.floor(n.xmin/m)),y:Math.max(0,Math.floor(n.ymin/m))},l=Math.min(h.width,Math.ceil(n.xmax/m)),c=Math.min(h.height,Math.ceil(n.ymax/m));return{offset:s,size:{width:Math.max(g,l-s.x),height:Math.max(g,c-s.y)}}}function O(t,a,n){const{maximumPyramidLevel:r,pyramidScalingFactor:e}=t.rasterInfo.storageInfo,i=e??p,o=Math.max(g,(n?.xmax??t.rasterInfo.width)-(n?.xmin??0)),h=Math.max(g,(n?.ymax??t.rasterInfo.height)-(n?.ymin??0)),m=Math.max(g,a.width),s=Math.max(g,a.height),l=Math.max(g,o/m,h/s),c=Math.ceil(Math.log(l)/Math.log(i));return Math.max(0,Math.min(r,Number.isFinite(c)?c:r))}function W(t,a,n=j){const{maximumPyramidLevel:r,pyramidScalingFactor:e}=t.rasterInfo.storageInfo,i=e??p;let o=Math.max(0,Math.min(r,a));for(;o<r;){const a=S(t.rasterInfo.width,t.rasterInfo.height,o,i);if(a.width<=n&&a.height<=n)break;o+=1}return o}function k(t,a){const n=t.geometry;if("mesh"!==n?.type)return;const r=new o({colorTexture:a});n.components?.forEach(t=>{t.shading="source",t.material=r})}function q(t){const{camera:a,width:n,height:r}=t;if(n<=0||r<=0)return{horizontal:a.fov,vertical:a.fov};const e=Math.sqrt(n*n+r*r);return{horizontal:2*Math.atan(Math.tan(a.fov*Math.PI/360)*n/e)*180/Math.PI,vertical:2*Math.atan(Math.tan(a.fov*Math.PI/360)*r/e)*180/Math.PI}}function D(t,a,n){if(null==t||null==a||!Number.isFinite(t)||!Number.isFinite(a))return{horizontal:t??null,vertical:a??null};const r=Math.sin(n*Math.PI/180),e=Math.cos(n*Math.PI/180),i=[[t,0],[t,a],[0,a]].map(([t,a])=>[e*t-r*a,r*t+e*a]),o=Math.min(0,...i.map(([t])=>t)),h=Math.max(0,...i.map(([t])=>t)),m=Math.min(0,...i.map(([,t])=>t)),s=Math.max(0,...i.map(([,t])=>t));return{horizontal:Math.min(Math.abs(h-o),d),vertical:Math.min(Math.abs(s-m),d)}}function E(t,a,n,r){const{width:e,height:i}=t,o=D(a,n,r),h=Math.sqrt(e*e+i*i);if(h<=0)return o.vertical??o.horizontal??null;if(e>=i){const t=o.vertical;return null==t||i<=0?null:2*Math.atan(Math.tan(t*Math.PI/360)*h/i)*180/Math.PI}const m=o.horizontal;return null==m||e<=0?null:2*Math.atan(Math.tan(m*Math.PI/360)*h/e)*180/Math.PI}function U(t,a,r=w,e=0){const i=t.camera.position,{horizontal:o,vertical:l}=q(t),c=i.spatialReference.isWebMercator?s(i.y):1,M=h({cameraLocation:i,farDistance:a,horizontalFieldOfView:o,rotationMatrix:m([t.camera.heading,t.camera.tilt,e]),scalingFactor:c,verticalFieldOfView:l}),f=[];for(let h=0;h<M.length;h+=1){const t=M[h],a=M[(h+1)%M.length];for(let e=0;e<r;e+=1){const o=e/r;f.push(new n({x:t[0]+(a[0]-t[0])*o,y:t[1]+(a[1]-t[1])*o,z:t[2]+(a[2]-t[2])*o,spatialReference:i.spatialReference}))}}return f}async function V(a,n,o,h,m){if("3d"!==n.type)return null;const{cameraRoll:s,farDistance:l}=a.attributes;if("number"!=typeof l||!Number.isFinite(l)||l<=0)return null;const c=U(n,l,I,s??0),M=await h(c,m);t(m);const f=M.filter(({x:t,y:a})=>Number.isFinite(t)&&Number.isFinite(a));if(f.length<4)return null;const[u,x]=o,y=new r({rings:[[[0,0],[u,0],[u,x],[0,x],[0,0]]],spatialReference:e.WebMercator}),p=new r({rings:[[...f.map(({x:t,y:a})=>[t,a]),[f[0].x,f[0].y]]],spatialReference:e.WebMercator}),g=i(p,y),d=g?g.rings.flatMap(t=>t.map(([t,a])=>({x:t,y:a}))):f;if(!d.length)return null;const w=d.map(({x:t})=>Math.max(0,Math.min(u,t))),F=d.map(({y:t})=>Math.max(0,Math.min(x,t))),P=Math.max(v,Math.round(u*b)),z=Math.max(v,Math.round(x*b)),j=Math.floor(Math.max(0,Math.min(...w)-P)),R=Math.ceil(Math.min(u,Math.max(...w)+P)),A=Math.floor(Math.max(0,Math.min(...F)-z)),N=Math.ceil(Math.min(x,Math.max(...F)+z));return R<=j||N<=A?null:{xmin:j,xmax:R,ymin:A,ymax:N}}function C(t,a,n){const[r,e]=t,i=n?Math.max(g,n.xmax-n.xmin):r,o=n?Math.max(g,n.ymax-n.ymin):e;if(i<=0||o<=0)return{columns:F,rows:F};const h=a?z:P,m=i/o;return m>=1?{columns:h,rows:Math.max(F,Math.round(h/m))}:{columns:Math.max(F,Math.round(h*m)),rows:h}}export{R as applyMeshOffsetInMeters,W as clampRasterLevelForTextureSize,V as computeDefaultAreaOfInterest,U as createFarplaneSamplePoints,N as createSuperimposeGridVertexAttributes,A as createSuperimposeSamplePixels,E as getDefaultSuperimposeFov,D as getEffectiveImageFieldOfView,L as getRasterFetchParameters,S as getRasterLevelSize,q as getViewCameraFieldOfView,O as getViewDependentRasterLevel,y as panoramicSuperimposeKeyboardAngleStep,c as panoramicSuperimposeMaxFov,x as panoramicSuperimposeMaxTilt,l as panoramicSuperimposeMinFov,u as panoramicSuperimposeMinTilt,M as panoramicSuperimposeZoomInFactor,f as panoramicSuperimposeZoomOutFactor,k as updateSuperimposeGraphicTexture};
2
+ import{throwIfAborted as t}from"../../../core/promiseUtils.js";import{getMetersPerUnitForSR as a}from"../../../core/units.js";import n from"../../../geometry/Point.js";import r from"../../../geometry/Polygon.js";import e from"../../../geometry/SpatialReference.js";import{e as i}from"../../../chunks/intersectionOperator.js";import o from"../../../geometry/support/MeshMaterial.js";import{computeFarplaneVertices as m,createRotationMatrixFromHPR as h}from"../../../layers/orientedImagery/transformations/utils.js";import{calculateUpdatedWmsf as s}from"../imageMeasurementUtils.js";const l=15,c=120,u=.9,f=1.1,M=1,x=179,y=3,p=2,g=1,d=150,w=16,b=32,I=8,v=.01,F=1,P=2,z=10,j=16,N=4096;function R(t,n){const{x:r=0,y:e=0,z:i=0}=n;if(0===r&&0===e&&0===i)return;const o=a(t.spatialReference),m=o?r/o:r,h=o?e/o:e,s=o?i/o:i,{position:l}=t.vertexAttributes,c=Math.floor(l.length/3);for(let a=0;a<c;a+=1)l[3*a]+=m,l[3*a+1]+=h,l[3*a+2]+=s;t.vertexAttributesChanged()}function A(t,n){const{radiusOffset:r=0}=n;if(0===r)return;const e=a(t.spatialReference),i=e?r/e:r,{position:o}=t.vertexAttributes,m=Math.floor(o.length/3);let h=0,s=0,l=0;for(let a=0;a<m;a++)h+=o[3*a],s+=o[3*a+1],l+=o[3*a+2];h/=m,s/=m,l/=m;let c=0;for(let a=0;a<m;a++){const t=o[3*a]-h,n=o[3*a+1]-s,r=o[3*a+2]-l;c+=Math.sqrt(t*t+n*n+r*r)}c/=m;const u=c>0?(c+i)/c:1;for(let a=0;a<m;a++){let t=o[3*a]-h,n=o[3*a+1]-s,r=o[3*a+2]-l;t*=u,n*=u,r*=u,o[3*a]=h+t,o[3*a+1]=s+n,o[3*a+2]=l+r}t.vertexAttributesChanged()}function O(t,a,n){const{columns:r,rows:e}=Q(t,a,n),[i,o]=t,m=n?.xmin??0,h=n?.ymin??0,s=n?Math.max(1,n.xmax-n.xmin):i,l=n?Math.max(1,n.ymax-n.ymin):o,c=new Array;for(let u=0;u<=e;u+=1){const t=h+u/e*l;for(let a=0;a<=r;a+=1)c.push({x:m+a/r*s,y:t})}return c}function S(t,a,n,r){const{columns:e,rows:i}=Q(a,n,r),o=e+1,m=new Float64Array(3*t.length),h=new Float32Array(2*t.length),s=new Array;t.forEach((t,a)=>{const n=3*a,r=2*a,s=a%o,l=Math.floor(a/o);m[n]=t.x,m[n+1]=t.y,m[n+2]=t.z??0,h[r]=s/e,h[r+1]=l/i});for(let l=0;l<i;l+=1)for(let t=0;t<e;t+=1){const a=l*o+t,n=a+1,r=a+o,e=r+1;s.push(a,n,e,a,e,r)}return{faces:s,position:m,uv:h}}function q(t,a,n,r=p){return{width:Math.ceil(t/r**n),height:Math.ceil(a/r**n)}}function D(t,a,n){const{width:r,height:e,storageInfo:i}=t.rasterInfo,{pyramidScalingFactor:o}=i,m=q(r,e,a,o??void 0);if(!n)return{offset:{x:0,y:0},size:m};const h=(o??p)**a,s={x:Math.max(0,Math.floor(n.xmin/h)),y:Math.max(0,Math.floor(n.ymin/h))},l=Math.min(m.width,Math.ceil(n.xmax/h)),c=Math.min(m.height,Math.ceil(n.ymax/h));return{offset:s,size:{width:Math.max(g,l-s.x),height:Math.max(g,c-s.y)}}}function L(t,a,n){const{maximumPyramidLevel:r,pyramidScalingFactor:e}=t.rasterInfo.storageInfo,i=e??p,o=Math.max(g,(n?.xmax??t.rasterInfo.width)-(n?.xmin??0)),m=Math.max(g,(n?.ymax??t.rasterInfo.height)-(n?.ymin??0)),h=Math.max(g,a.width),s=Math.max(g,a.height),l=Math.max(g,o/h,m/s),c=Math.ceil(Math.log(l)/Math.log(i));return Math.max(0,Math.min(r,Number.isFinite(c)?c:r))}function W(t,a,n=N){const{maximumPyramidLevel:r,pyramidScalingFactor:e}=t.rasterInfo.storageInfo,i=e??p;let o=Math.max(0,Math.min(r,a));for(;o<r;){const a=q(t.rasterInfo.width,t.rasterInfo.height,o,i);if(a.width<=n&&a.height<=n)break;o+=1}return o}function k(t,a){const n=t.geometry;if("mesh"!==n?.type)return;const r=new o({colorTexture:a});n.components?.forEach(t=>{t.shading="source",t.material=r})}function C(t){const{camera:a,width:n,height:r}=t;if(n<=0||r<=0)return{horizontal:a.fov,vertical:a.fov};const e=Math.sqrt(n*n+r*r);return{horizontal:2*Math.atan(Math.tan(a.fov*Math.PI/360)*n/e)*180/Math.PI,vertical:2*Math.atan(Math.tan(a.fov*Math.PI/360)*r/e)*180/Math.PI}}function E(t,a,n){if(null==t||null==a||!Number.isFinite(t)||!Number.isFinite(a))return{horizontal:t??null,vertical:a??null};const r=Math.sin(n*Math.PI/180),e=Math.cos(n*Math.PI/180),i=[[t,0],[t,a],[0,a]].map(([t,a])=>[e*t-r*a,r*t+e*a]),o=Math.min(0,...i.map(([t])=>t)),m=Math.max(0,...i.map(([t])=>t)),h=Math.min(0,...i.map(([,t])=>t)),s=Math.max(0,...i.map(([,t])=>t));return{horizontal:Math.min(Math.abs(m-o),d),vertical:Math.min(Math.abs(s-h),d)}}function U(t,a,n,r){const{width:e,height:i}=t,o=E(a,n,r),m=Math.sqrt(e*e+i*i);if(m<=0)return o.vertical??o.horizontal??null;if(e>=i){const t=o.vertical;return null==t||i<=0?null:2*Math.atan(Math.tan(t*Math.PI/360)*m/i)*180/Math.PI}const h=o.horizontal;return null==h||e<=0?null:2*Math.atan(Math.tan(h*Math.PI/360)*m/e)*180/Math.PI}function V(t,a,r=w,e=0){const i=t.camera.position,{horizontal:o,vertical:l}=C(t),c=i.spatialReference.isWebMercator?s(i.y):1,u=m({cameraLocation:i,farDistance:a,horizontalFieldOfView:o,rotationMatrix:h([t.camera.heading,t.camera.tilt,e]),scalingFactor:c,verticalFieldOfView:l}),f=[];for(let m=0;m<u.length;m+=1){const t=u[m],a=u[(m+1)%u.length];for(let e=0;e<r;e+=1){const o=e/r;f.push(new n({x:t[0]+(a[0]-t[0])*o,y:t[1]+(a[1]-t[1])*o,z:t[2]+(a[2]-t[2])*o,spatialReference:i.spatialReference}))}}return f}async function T(a,n,o,m,h){if("3d"!==n.type)return null;const{cameraRoll:s,farDistance:l}=a.attributes;if("number"!=typeof l||!Number.isFinite(l)||l<=0)return null;const c=V(n,l,b,s??0),u=await m(c,h);t(h);const f=u.filter(({x:t,y:a})=>Number.isFinite(t)&&Number.isFinite(a));if(f.length<4)return null;const[M,x]=o,y=new r({rings:[[[0,0],[M,0],[M,x],[0,x],[0,0]]],spatialReference:e.WebMercator}),p=new r({rings:[[...f.map(({x:t,y:a})=>[t,a]),[f[0].x,f[0].y]]],spatialReference:e.WebMercator}),g=i(p,y),d=g?g.rings.flatMap(t=>t.map(([t,a])=>({x:t,y:a}))):f;if(!d.length)return null;const w=d.map(({x:t})=>Math.max(0,Math.min(M,t))),F=d.map(({y:t})=>Math.max(0,Math.min(x,t))),P=Math.max(I,Math.round(M*v)),z=Math.max(I,Math.round(x*v)),j=Math.floor(Math.max(0,Math.min(...w)-P)),N=Math.ceil(Math.min(M,Math.max(...w)+P)),R=Math.floor(Math.max(0,Math.min(...F)-z)),A=Math.ceil(Math.min(x,Math.max(...F)+z));return N<=j||A<=R?null:{xmin:j,xmax:N,ymin:R,ymax:A}}async function B(a,n,r,e,i){if("3d"!==n.type)return null;const{farDistance:o}=a.attributes;if("number"!=typeof o||!Number.isFinite(o)||o<=0)return null;const m=o,[h,s]=r,l=V(n,m),c=await e(l,i);t(i);const u=c.filter(({x:t,y:a})=>Number.isFinite(t)&&Number.isFinite(a));if(u.length<4)return null;const f=G(u,s);if(!f)return null;const M=J(u.map(({x:t})=>H(t,h)),h),x=h-M.gap;return x<=0?null:x>=h-F?[{xmin:0,xmax:h,ymin:f.ymin,ymax:f.ymax}]:K(M,h,f)}function G(t,a){const n=t.map(({y:t})=>Math.max(0,Math.min(a,t))),r=Math.floor(Math.max(0,Math.min(...n))),e=Math.ceil(Math.min(a,Math.max(...n)));return e>r?{ymin:r,ymax:e}:null}function H(t,a){return(t%a+a)%a}function J(t,a){const n=t.slice().sort((t,a)=>t-a);let r=-1,e=0,i=0;for(let o=0;o<n.length;o+=1){const t=n[o],m=o===n.length-1?n[0]+a:n[o+1],h=m-t;h>r&&(r=h,e=t,i=m)}return{gap:r,start:e,end:i}}function K(t,a,n){const r=H(t.end,a),e=H(t.start,a);return r<=e?[{xmin:Math.floor(r),xmax:Math.ceil(e),...n}]:[{xmin:0,xmax:Math.ceil(e),...n},{xmin:Math.floor(r),xmax:a,...n}].filter(({xmin:t,xmax:a})=>a>t)}function Q(t,a,n){const[r,e]=t,i=n?Math.max(g,n.xmax-n.xmin):r,o=n?Math.max(g,n.ymax-n.ymin):e;if(i<=0||o<=0)return{columns:P,rows:P};const m=a?j:z,h=i/o;return h>=1?{columns:m,rows:Math.max(P,Math.round(m/h))}:{columns:Math.max(P,Math.round(m*h)),rows:m}}export{R as applyMeshOffsetInMeters,A as applySphereMeshOffsetInMeters,W as clampRasterLevelForTextureSize,T as computeDefaultAreaOfInterest,B as computePanoramicAreasOfInterest,V as createFarplaneSamplePoints,S as createSuperimposeGridVertexAttributes,O as createSuperimposeSamplePixels,U as getDefaultSuperimposeFov,E as getEffectiveImageFieldOfView,D as getRasterFetchParameters,q as getRasterLevelSize,C as getViewCameraFieldOfView,L as getViewDependentRasterLevel,y as panoramicSuperimposeKeyboardAngleStep,c as panoramicSuperimposeMaxFov,x as panoramicSuperimposeMaxTilt,l as panoramicSuperimposeMinFov,M as panoramicSuperimposeMinTilt,u as panoramicSuperimposeZoomInFactor,f as panoramicSuperimposeZoomOutFactor,k as updateSuperimposeGraphicTexture};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- const e={click:"view-click",imageClick:"image-click",triangularImageClick:"triangular-click",interactionHandles:"interaction-handles",footprintHandles:"footprint-handles",sketchHandles:"sketch-handles",hittestHandles:"hittest-handles",videoPlayerHandles:"video-handles",videoPanHandles:"video-pan-handles",activeViewerCursorHandles:"active-viewer-cursor-handles",imageViewerCursorHandles:"image-viewer-cursor-handles"};export{e as registryKeys};
2
+ const e={click:"view-click",imageClick:"image-click",videoImageClick:"video-image-click",triangularImageClick:"triangular-click",interactionHandles:"interaction-handles",footprintHandles:"footprint-handles",sketchHandles:"sketch-handles",hittestHandles:"hittest-handles",videoPlayerHandles:"video-handles",videoPanHandles:"video-pan-handles",activeViewerCursorHandles:"active-viewer-cursor-handles",imageViewerCursorHandles:"image-viewer-cursor-handles"};export{e as registryKeys};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{clamp as t}from"../../core/mathUtils.js";import n from"../../geometry/Extent.js";import r from"../../geometry/Polygon.js";import{e as o}from"../../chunks/intersectionOperator.js";import{sampleExtent as e}from"./constants.js";const m=1920,i=1080;function s(t){if(!t)throw new Error("Missing View");return[t.on("drag",t=>t.stopPropagation()),t.on("key-down",t=>{t.key.startsWith("Arrow")&&t.stopPropagation()})]}const a=(t,n)=>{const r=(t-e.xmin)/(e.xmax-e.xmin),o=(e.ymax-n)/(e.ymax-e.ymin);return{x:r*m,y:o*i}},x=s=>{const x=r.fromExtent(new n(e)),y=o(x,s);return y?y.rings[0].map(([n,r])=>{const{x:o,y:e}=a(n,r);return{x:t(o,0,m),y:t(e,0,i)}}):[]},y=t=>{const r=t.width/2,o=t.height/2,m=e.xmin+r,i=e.xmax-r,s=e.ymin+o,a=e.ymax-o;return m<i&&s<a?new n({xmin:m,ymin:s,xmax:i,ymax:a,spatialReference:e.spatialReference}):null};export{s as disableVideoZoomAndPan,a as geoToPixel,y as getUpdatedConstraints,x as getUpdatedExtentPoints,i as videoHeight,m as videoWidth};
2
+ import{clamp as t}from"../../core/mathUtils.js";import n from"../../geometry/Extent.js";import e from"../../geometry/Multipoint.js";import r from"../../geometry/Point.js";import o from"../../geometry/Polygon.js";import i from"../../geometry/Polyline.js";import{e as s}from"../../chunks/intersectionOperator.js";import{videoSpatialReference as m,sampleExtent as a}from"./constants.js";const x=1920,p=1080;function y(t){if(!t)throw new Error("Missing View");return[t.on("drag",t=>t.stopPropagation()),t.on("key-down",t=>{t.key.startsWith("Arrow")&&t.stopPropagation()})]}const c=(t,n)=>{const e=(t-a.xmin)/(a.xmax-a.xmin),r=(a.ymax-n)/(a.ymax-a.ymin);return{x:e*x,y:r*p}},u=n=>({x:t((n.x+.5)*x,0,x),y:t((.5-n.y)*p,0,p)}),l=t=>h(u(t));function f(t){switch(t.type){case"point":return l(t);case"polyline":return new i({paths:t.paths.map(t=>t.map(([t,n])=>{const e=l({x:t,y:n});return[e.x,e.y]})),spatialReference:m});case"polygon":return new o({rings:t.rings.map(t=>t.map(([t,n])=>{const e=l({x:t,y:n});return[e.x,e.y]})),spatialReference:m});case"multipoint":return new e({points:t.points.map(([t,n])=>{const e=l({x:t,y:n});return[e.x,e.y]}),spatialReference:m});case"extent":{const n=f(o.fromExtent(t));return n?.extent??null}default:return null}}const g=e=>{const r=o.fromExtent(new n(a)),i=s(r,e);return i?i.rings[0].map(([n,e])=>{const{x:r,y:o}=c(n,e);return{x:t(r,0,x),y:t(o,0,p)}}):[]},w=t=>{const e=t.width/2,r=t.height/2,o=a.xmin+e,i=a.xmax-e,s=a.ymin+r,m=a.ymax-r;return o<i&&s<m?new n({xmin:o,ymin:s,xmax:i,ymax:m,spatialReference:a.spatialReference}):null},h=n=>{const e=t(n.x,0,x),o=t(n.y,0,p);return new r({x:a.xmin+e/x*(a.xmax-a.xmin),y:a.ymax-o/p*(a.ymax-a.ymin),spatialReference:a.spatialReference})};export{y as disableVideoZoomAndPan,c as geoToPixel,w as getUpdatedConstraints,g as getUpdatedExtentPoints,f as imageGeometryToVideoMapGeometry,l as imageMapPointToVideoMapPoint,h as pixelToVideoMapPoint,p as videoHeight,x as videoWidth};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import{prefersRTL as t,substitute as i}from"../intl.js";import{prefersReducedMotion as a}from"../core/a11yUtils.js";import{createTask as s}from"../core/asyncUtils.js";import o from"../core/Collection.js";import{deprecateWidget as n,deprecatedProperty as r}from"../core/deprecate.js";import l from"../core/Logger.js";import{isAbortError as d}from"../core/promiseUtils.js";import{watch as c,initial as g,syncAndInitial as h,whenOnce as m,on as u,sync as p}from"../core/reactiveUtils.js";import{throttle as v}from"../core/throttle.js";import{property as y,subclass as w}from"../core/accessorSupport/decorators.js";import{or as _}from"../layers/orientedImagery/transformations/utils.js";import T from"./Expand.js";import M from"./PanoramicVideoViewer.js";import b from"./PanoramicViewer.js";import C from"./Widget.js";import{getAllArcPath as I}from"./OrientedImageryViewer/arcUtils.js";import{getDelegatedEvents as f,defaultImageGeometryField as S,defaultOIObjectIDField as A,segmentArcs as k,featureCircleRadius as L,navigationToolDimensionLength as V,sectorsRadii as O}from"./OrientedImageryViewer/constants.js";import{css as E,navigation as F,navigationToolRotationFrom as x,navigationToolRotationTo as P,root as G}from"./OrientedImageryViewer/css.js";import{isFeatureAttachment as N,loadImageForAttachment as D,getThumbnailPixelBlock as H,renderImageWithRotation as j}from"./OrientedImageryViewer/galleryUtils.js";import $ from"./OrientedImageryViewer/OrientedImageryViewerViewModel.js";import B from"./OrientedImageryViewer/OrientedImageryViewerVisibleElements.js";import{loadAlertComponents as q,Alert as W}from"./OrientedImageryViewer/components/Alert.js";import U from"./OrientedImageryViewer/components/ImageLocationWidget.js";import R from"./OrientedImageryViewer/components/ImageViewer.js";import Z from"./OrientedImageryViewer/components/NavigationUI.js";import z from"./OrientedImageryViewer/components/NavigationUI360.js";import{SequentialNavigationUI as J}from"./OrientedImageryViewer/components/SequentialNavigationUI.js";import{loadVideoEnhancementComponents as K,renderEnhancementSlider as Q,VideoEnhancementTools as X}from"./OrientedImageryViewer/components/VideoEnhancementTools.js";import{NoImageLoadedError as Y}from"./OrientedImageryViewer/navigation/errors.js";import{loadCalciteComponents as ee}from"./support/componentsUtils.js";import{globalCss as te}from"./support/globalCss.js";import{vmEvent as ie,messageBundle as ae,tsx as se}from"./support/widget.js";const oe={overlayed:"overlayed"};let ne=class extends C{constructor(e,t){super(e,t),this.dataCaptureEnabled=!1,this.galleryOpened=!1,this.imageEnhancementToolActive=!1,this.videoEnhancementToolActive=!1,this.imageOverlaysOpened=!1,this.navigationToolActive=!1,this.viewModel=new $,this.messagesCommon=null,this.messagesSketch=null,this.pixelMeasurementUnit="meters",this.pixelAreaMeasurementUnit="square-meters",this.selectedGroup=null,this.showCameraLocations=!1,this.showMapFeatures=!1,this.visibleElements=new B,this._superimposeZOffset=0,this._imageOverlaysLoaderTask=null,this._imageMeasurementToolsLoaderTask=null,this._navigationSettingsLoaderTask=null,this._navigationTask=null,this._clearMeasurements=()=>{this.viewModel.measureType=null,this.viewModel.triangularMeasurementActive=!1,this.viewModel.clearPreviousMeasurements()},this._clearImageLocation=()=>{this.imageLocationToolActive=!1,this.triangularMeasurementActive=!1},this._createNavigationTask=async e=>(this._navigationTask?.abort(),this._navigationTask=s(async t=>await this.navigate({...e,signal:t})),this._navigationTask.promise),this._navigateNext=async()=>await this._createNavigationTask({step:1}),this._navigatePrevious=async()=>await this._createNavigationTask({step:-1}),this._navigationToolExpanded=!1,this._navigationTool=null,this._galleryController=new AbortController,this._galleryObserver=new IntersectionObserver(this._lazyLoadImage.bind(this)),this._overlayedLayers=new o,this._previousAction=null,this._closeImageSequenceAlert=()=>{this._set("noImageInSequenceError",!1)},this._handleDataCaptureLayerChange=async e=>{if(this.dataCaptureLayer&&await this.stopDataCapture(!0),this.dataCaptureLayer=this.dataCaptureLayer===e?null:e,this.dataCaptureLayer)return this.startDataCapture(this.dataCaptureLayer)},this._handleNavigationSettingsInputChange=(e,t)=>{this.set(`${e}Threshold`,t)},this._handleNavigationSettingsToggle=e=>{this.viewModel.preserveAngle=e},this._handleOverlayLayerDeselect=e=>{const t=e.layer;t===this.dataCaptureLayer&&(this.stopDataCapture(),this.dataCaptureLayer=null),this.removeOverlayedGraphicsOnImage(`${t.id}`)},this._handleOverlayLayerSelect=e=>{const t=e.layer;this.viewModel.overlayMapFeatures(t,this.showMapFeatures),this.addHandles(c(()=>t.visible,()=>{this.viewModel.toggleOverlayMapFeatures(t.id,t.visible,this.showMapFeatures)}),`${oe.overlayed}-${t.id}`)},this._highlight=e=>{const t=e.target?.dataset.objectid;t&&this.viewModel.highlight(t)},this._onAction=e=>{const{target:t}=e,{dataset:{action:i}}=t,{_previousAction:a}=this,s=a?.dataset.action,o=s?.includes("draw")??!1,n="select-feature"===s,r=s!==i;switch(i){case"draw-point":case"draw-polygon":case"draw-polyline":{a&&_(n,o&&r)&&(a.active=!1),t.active=!t.active;const e=i.replace("draw-","");this.viewModel.digitizeCreate(e),this._previousAction=t.active?t:null;break}case"save":this.viewModel.saveDrawing();break;case"select-feature":o&&(this._previousAction.active=!1),t.active=!t.active,this.viewModel.toggleSelection(t.active),this._previousAction=t.active?t:null;break;case"delete-feature":this.viewModel.digitizeDelete()}},this._onImageOverlayClosed=e=>{e.stopPropagation(),this.imageOverlaysOpened=!1},this._onShowCameraLocationsChanged=e=>{this.showCameraLocations=e},this._onShowMapFeaturesChanged=e=>{this.showMapFeatures=e},this._removeHighlight=()=>this.viewModel.removeHighlight(),this._restoreOverlays=async()=>Promise.all(this._overlayedLayers.map(e=>this.viewModel.overlayMapFeatures(e,this.showMapFeatures))),this._scaleNavigationTool=()=>{this._navigationToolExpanded=!this._navigationToolExpanded},this._sketchLoaderTask=null,this._settingsToggle=null,this._toggleImageNavigation=async e=>{const t=this.navigationMode;this._closeAllImageTools(),this.navigationMode=t!==e?e:null;const{activeViewer:i}=this.viewModel;if(!i)return;const{mode:a,preserveAngle:s}=this.viewModel;if("default"===a)if("directional"===this.navigationMode){const e=await this._loadNavigationSettings(),t="heading"===s||"both"===s,i="pitch"===s||"both"===s,{messages:a,messagesCommon:o}=this,n=new e({cameraHeadingThreshold:this.cameraHeadingThreshold,cameraPitchThreshold:this.cameraPitchThreshold,uiStrings:{configureNavigation:a.configureNavigation,preserveHeading:a.preserveHeading,preserveHeadingDescription:a.preserveHeadingDescription,preservePitch:a.preservePitch,preservePitchDescription:a.preservePitchDescription,settings:o.settings,thresholdLabel:a.thresholdLabel},onInputChange:this._handleNavigationSettingsInputChange,onToggle:this._handleNavigationSettingsToggle,preserveHeading:t,preservePitch:i});this._settingsToggle=new T({content:n,expandIcon:"configure"}),this.viewModel.activeViewer?.ui.add(this._settingsToggle,{position:"top-left"})}else this._settingsToggle&&(this._settingsToggle.expanded=!1,this.viewModel.activeViewer?.ui.remove(this._settingsToggle))},this._toggleImageAttributes=v(this.viewModel.toggleImageAttributes.bind(this.viewModel)),this.navigate=async e=>{let t=null;try{const{currentNode:i}=this.viewModel;if(!i)throw new Y;t=await this.viewModel.navigate(i,e)}catch(i){d(i)||l.getLogger(this).error("Error occurred while navigating",i),["NoImageInSequenceError","NoSequenceFoundError"].includes(i.name)&&this._set("noImageInSequenceError",!0)}return t},this.reset=()=>{this._closeAllImageTools(),this.viewModel.reset()},this._loadImageFromGallery=this._loadImageFromGallery.bind(this),this._registerGalleryItem=this._registerGalleryItem.bind(this),this._unregisterGalleryItem=this._unregisterGalleryItem.bind(this),this.loadImageFromSource=this.loadImageFromSource.bind(this),this.updateSuitabilities=this.updateSuitabilities.bind(this),this._handleVideoBrightnessChange=this._handleVideoBrightnessChange.bind(this),this._handleVideoContrastChange=this._handleVideoContrastChange.bind(this),this._handleBrightnessChange=this._handleBrightnessChange.bind(this),this._handleContrastChange=this._handleContrastChange.bind(this),this._handleSharpnessChange=this._handleSharpnessChange.bind(this),this._handleSuperimposeZOffsetChange=this._handleSuperimposeZOffsetChange.bind(this),this._toggleSuperimposeCameraLock=this._toggleSuperimposeCameraLock.bind(this),this._resetSuperimposeOffset=this._resetSuperimposeOffset.bind(this),this._resetVideoTools=this._resetVideoTools.bind(this),this._toggleEnhancementToolState=this._toggleEnhancementToolState.bind(this),this.announceDeprecation=()=>{n(l.getLogger(this),"Oriented Imagery Viewer","arcgis-oriented-imagery-viewer",{version:"5.0"})}}initialize(){this.addHandles([c(()=>[this.viewModel?.bestFeatureAngle,this._navigationTool],([e,t])=>{t&&this._updateNavigationTool(t)},g),c(()=>this.currentCoverageVisible,e=>this._onCurrentCoverageVisibilityChange(e)),c(()=>this.isAdditionalCoverageVisible,e=>this._onAdditionalCoverageVisibilityChange(e)),c(()=>this.isAdditionalPointSourcesVisible,e=>this._onAdditionalCameraLocationsVisibility(e)),c(()=>this.superimposeViewEnabled,e=>{e?(this._closeAllImageTools(),this.selectedGroup=null,this.shouldShowSelectedImage=!1,this.verticalFilterEnabled=!1):this._resetSuperimposeOffset()}),c(()=>({features:this.currentBestFeature,showCameraLocations:this.showCameraLocations,state:this.viewModel.state}),({showCameraLocations:e,state:t})=>{"image-loaded"===t&&this.viewModel.overlayCameraLocations(e)},h),c(()=>({feature:this.currentBestFeature,showMapFeatures:this.showMapFeatures,state:this.viewModel.state}),async(e,t)=>{if(e.showMapFeatures!==t?.showMapFeatures&&await this.viewModel.toggleAllOverlayMapFeatures(e.showMapFeatures),null!=e.feature&&e.feature!==t?.feature){if(this.viewModel.removeAllOverlayMapFeatures(),await m(()=>"image-loaded"===this.viewModel.state),this.dataCaptureLayer&&this.stopDataCapture(),await this._restoreOverlays(),!this.dataCaptureLayer)return;await this.startDataCapture(this.dataCaptureLayer),this._previousAction?.active&&(this._previousAction.active=!1,this._previousAction=null)}},g),u(()=>this.viewModel,"popup-open",async e=>{await(this.view?.openPopup(e))},p),u(()=>this.viewModel,"popup-close",()=>{this.view?.closePopup()},p),this._toggleImageAttributes])}loadDependencies(){return Promise.all([K(),ee({"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group"),action:()=>import("@esri/calcite-components/dist/components/calcite-action"),block:()=>import("@esri/calcite-components/dist/components/calcite-block"),panel:()=>import("@esri/calcite-components/dist/components/calcite-panel"),shell:()=>import("@esri/calcite-components/dist/components/calcite-shell"),dialog:()=>import("@esri/calcite-components/dist/components/calcite-dialog"),slider:()=>import("@esri/calcite-components/dist/components/calcite-slider")}),q()])}destroy(){this._galleryController.abort(),this._galleryObserver.disconnect(),this.currentBestFeature=null}get accuracyParametersMissing(){return this.viewModel.accuracyParametersMissing}get activeLayer(){return r(l.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer}set activeLayer(e){r(l.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer=e}get activeVideoIcon(){const{videoElement:e,videoViewModel:t}=this.viewModel;return e?.loaded&&t?t.videoPaused?"play":"pause":"play"}get activeAudioIcon(){const{videoElement:e,videoViewModel:t}=this.viewModel;return e?.loaded&&t?.videoMuted?"sound-off":"sound"}get cameraHeadingThreshold(){return this.viewModel.cameraHeadingThreshold}set cameraHeadingThreshold(e){this.viewModel.cameraHeadingThreshold=e}get cameraPitchThreshold(){return this.viewModel.cameraPitchThreshold}set cameraPitchThreshold(e){this.viewModel.cameraPitchThreshold=e}get canNavigateSequentially(){return!!this.layer?.effectiveSequenceOrderField?.length}get currentBestFeature(){return this.viewModel.currentBestFeature}set currentBestFeature(e){this.viewModel.currentBestFeature=e}get currentCoverageVisible(){return this.viewModel.currentCoverageVisible}set currentCoverageVisible(e){this.viewModel.currentCoverageVisible=e}get dataCaptureLayer(){return this.viewModel.dataCaptureLayer}set dataCaptureLayer(e){this.viewModel.dataCaptureLayer=e}get depthImageNotSupported(){return this.viewModel.depthImageNotSupported}get disabled(){return this.viewModel.disabled}set disabled(e){this.viewModel.disabled=e}get displayMessage(){return this.viewModel.displayMessage}get enhancementToolActive(){return"video"===this.viewModel.mode?this.videoEnhancementToolActive:this.imageEnhancementToolActive}set enhancementToolActive(e){"video"===this.viewModel.mode?this.videoEnhancementToolActive=e:this.imageEnhancementToolActive=e}get features(){return this.viewModel.features}get imagePointsInView(){return this.viewModel.imagePointsInView}get icon(){return"oriented-imagery-widget"}set icon(e){this._overrideIfSome("icon",e)}get imageGalleryEnabled(){return this.viewModel.imageGalleryEnabled}get imageLocationToolActive(){return this.viewModel.imageLocationToolState}set imageLocationToolActive(e){this.viewModel.imageLocationToolState=e}get invalidCameraHeading(){return this.viewModel.invalidCameraHeading}get isAdditionalCoverageVisible(){return this.viewModel.isAdditionalCoverageVisible}set isAdditionalCoverageVisible(e){this.viewModel.isAdditionalCoverageVisible=e}get isAdditionalPointSourcesVisible(){return this.viewModel.isAdditionalPointSourcesVisible}set isAdditionalPointSourcesVisible(e){this.viewModel.isAdditionalPointSourcesVisible=e}get mapImageConversionToolState(){return this.viewModel.mapImageConversionToolState}set mapImageConversionToolState(e){this.viewModel.mapImageConversionToolState=e}get measureType(){return this.viewModel.measureType}set measureType(e){this.viewModel.measureType=e}get layer(){return this.viewModel.layer}set layer(e){this.viewModel.layer=e}get navigationMode(){return this.viewModel.navigationMode}set navigationMode(e){this.viewModel.navigationMode=e}get popupEnabled(){const{popupEnabled:e,state:t}=this.viewModel;return("image-loaded"===t||this.videoLoaded)&&e}get preloadMedia(){return this.viewModel.preloadMedia}set preloadMedia(e){this.viewModel.preloadMedia=e}get referencePoint(){return this.viewModel.referencePoint??null}get sketchViewModel(){return this.viewModel.sketch}get triangularMeasurementActive(){return this.viewModel.triangularMeasurementActive}set triangularMeasurementActive(e){this.viewModel.triangularMeasurementActive=e}get videoLoaded(){const{mode:e,videoElement:t,panoramicVideoLoaded:i}=this.viewModel;return("video"===e&&!0===t?.loaded||i)??!1}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}set determineWorkflowForFeature(e){this.viewModel.determineWorkflowForFeature=e}get determineWorkflowForFeature(){return this.viewModel.determineWorkflowForFeature}get shouldShowSelectedImage(){return this.viewModel.shouldShowSelectedImage}set shouldShowSelectedImage(e){this.viewModel.shouldShowSelectedImage=e}get superimposeViewEnabled(){return this.viewModel.superimposeViewEnabled}set superimposeViewEnabled(e){this.viewModel.superimposeViewEnabled=e}get defaultSuperimposeCameraLockEnabled(){return this.viewModel.defaultSuperimposeCameraLockEnabled}set defaultSuperimposeCameraLockEnabled(e){this.viewModel.defaultSuperimposeCameraLockEnabled=e}set updateFootprint(e){this.viewModel.updateFootprint=e}get updateFootprint(){return this.viewModel.updateFootprint}get verticalFilterEnabled(){return this.viewModel.verticalFilterEnabled}set verticalFilterEnabled(e){this.viewModel.verticalFilterEnabled=e}_renderActionBar(){const{selectedGroup:e,superimposeViewEnabled:i}=this;if(i)return se("calcite-action-bar",{expandDisabled:!0,layout:"horizontal",slot:"action-bar"},se("calcite-action-group",null,this._superimposeViewToggle()));const a=t();return se("calcite-action-bar",{expandDisabled:!0,layout:"horizontal",slot:"action-bar"},!e&&se("calcite-action-group",null,this._searchGroupToggle(),this._overlaysGroupToggle(),this._navigationGroupToggle(),this._measurementsGroupToggle(),this._utilitiesGroupToggle()),this._renderGroupBackAction(a),"overlays"===e&&se("calcite-action-group",null,this._currentFootprintToggle(),this._additionalFootprintToggle(),this._additionalPointSourcesToggle(),this._mapImageConversionToggle(),this._imageOverlaysToggle()),"navigation"===e&&se("calcite-action-group",null,this._directionToolsToggle(),this._navigationToolToggle(),this._imageGalleryToggle()),"measurements"===e&&se("calcite-action-group",null,this._measurementToolToggle()),"utilities"===e&&se("calcite-action-group",null,this._imageEnhancementsToggle(),this._videoEnhancementsToggle(),this._superimposeViewToggle(),this._openPopupAction()),"search"===e&&se("calcite-action-group",null,this._exploreImagesToggle(),this._exploreImages3DToggle(),this._showSelectedImageToggle()))}_renderGroupBackAction(e){return this.selectedGroup?se("calcite-action",{bind:this,icon:e?"arrow-right":"arrow-left",key:"back-arrow",onclick:()=>this._toggleGroupSelection(null),text:this.messages.previous,title:this.messages.previous}):null}get _activeMeasurementHeading(){const{measureType:e,messages:t,triangularMeasurementActive:i}=this,{groundArea:a,heightAboveGround:s,groundDistance:o,triangulatedAreaHeading:n,triangulatedDistanceHeading:r}=t;if(i)return"area"===e?n:r;switch(e){case"area":return a;case"height":return s;default:return o}}_additionalFootprintToggle(){const{isAdditionalCoverageVisible:e,invalidCameraHeading:t,visibleElements:{additionalFootprintToggle:i}}=this;return i?se("calcite-action",{active:e,bind:this,class:E.addCoverage,disabled:t,icon:"trapezoid-area",onclick:this._toggleAdditionalCoverage,text:this.messages.additionalFootprints,title:this.messages.additionalFootprints}):null}_additionalPointSourcesToggle(){const{isAdditionalPointSourcesVisible:e,invalidCameraHeading:t,visibleElements:{additionalCameraLocationsToggle:i}}=this;return i?se("calcite-action",{active:e,bind:this,class:E.addExpPoints,disabled:t,icon:"circle-area",onclick:this._toggleAdditionalCameraLocations,text:this.messages.additionalCameraLocations,title:this.messages.additionalCameraLocations}):null}get _measurementToggle(){const{viewModel:{state:e,measureType:t,currentBestFeatureMeasurementImage:i},triangularMeasurementActive:a,id:s}=this;if("image-loaded"!==e||!t||a&&!i)return;this._imageMeasurementToolsLoaderTask||this._loadImageMeasurementResources();const o=this._imageMeasurementToolsLoaderTask?.value;return o?se("calcite-dialog",{bind:this,dragEnabled:!0,escapeDisabled:!0,heading:this._activeMeasurementHeading,id:`${s}-${t}-measurement`,open:!0,placement:"bottom-start",resizable:!0,scale:"s",slot:"dialogs",width:"s",onCalciteDialogBeforeClose:this._clearMeasurements},se(o,{measurementType:t,measurementUnitMessages:this.measurementUnitMessages,messages:this.messages,oiViewModel:this.viewModel})):null}get _renderRoot(){const{viewModel:{state:e},triangularMeasurementActive:t}=this;return se("calcite-panel",{bind:this,class:t?E.viewerContainerMeasurement:E.viewerContainer,heading:this.visibleElements.header?this.messages.title:void 0,loading:e.includes("loading")&&!t},this.visibleElements.menu?this._renderActionBar():null,se("calcite-shell",null,se("calcite-panel",null,this._imageViewer,this._panoramicViewer,this._panoramicVideoViewer,this._videoViewer,this._messageBox,this.invalidCameraHeading?null:[this._imageGalleryPanel,this._renderNavigation,this._imageOverlaysPanel()],this._imageEnhancementTools,this._videoEnhancementTools,this._superimposeTools,this._renderSketch(),this._navigationUI),this._imageViewerTriangular,this._measurementToggle,this._locationToggle,this.invalidCameraHeading?this._renderWarning(this.messages.invalidCameraHeadingWarningTitle,this.messages.invalidCameraHeadingWarningDescription):null,this.depthImageNotSupported?this._renderWarning(this.messages.depthImageNotSupportedTitle,this.messages.depthImageNotSupportedDescription):null,this.noImageInSequenceError?this._renderWarning(this.messages.sequentialNavigationWarning,this.messages.sequentialNavigationWarning,this._closeImageSequenceAlert):null))}_currentFootprintToggle(){const{currentCoverageVisible:e,invalidCameraHeading:t}=this,{currentFootprintToggle:i}=this.visibleElements;return i?se("calcite-action",{active:e,bind:this,class:E.currentCoverage,disabled:t,icon:"trapezoid-area",onclick:this._toggleCurrentCoverage,text:this.messages.currentFootprint,title:this.messages.currentFootprint}):null}_exploreImagesToggle(){const{exploreImages:e}=this.messages;return this.visibleElements.exploreImages?se("calcite-action",{active:!this.disabled,bind:this,icon:"oriented-imagery-widget",onclick:this._toggleExploreImages,text:e,title:e}):null}get _imageEnhancementTools(){const{enhancementToolActive:e,viewModel:{brightness:t,contrast:i,sharpness:a,state:s}}=this;return e&&"image-loaded"===s?se("calcite-panel",{bind:this,class:E.imageEnhancementWrapper,closable:!0,closed:!e,heading:this.messages.imageEnhancement,key:this.messages.imageEnhancement,onCalcitePanelClose:this._toggleEnhancementToolState},se("div",{class:E.imageEnhancementTools},Q({title:this.messages.brightness,value:t,max:10,min:-10,ticks:5,handleChange:this._handleBrightnessChange}),Q({title:this.messages.contrast,value:i,max:10,min:-10,ticks:5,handleChange:this._handleContrastChange}),Q({title:this.messages.sharpness,value:a,max:1,min:0,ticks:.5,step:.1,handleChange:this._handleSharpnessChange})),se("calcite-action",{bind:this,icon:"reset",onclick:this._resetImageTools,slot:"header-actions-end",text:this.messagesCommon.reset,title:this.messagesCommon.reset})):null}get _videoEnhancementTools(){const{enhancementToolActive:e,viewModel:{videoViewModel:t,mode:i},messages:{videoEnhancement:a,brightness:s,contrast:o},messagesCommon:{reset:n}}=this;return e&&"video"===i&&t?se(X,{brightness:t.videoBrightness,constrast:t.videoContrast,handleBrightnessChange:this._handleVideoBrightnessChange,handleContrastChange:this._handleVideoContrastChange,resetTools:this._resetVideoTools,uiStrings:{videoEnhancement:a,brightness:s,contrast:o,reset:n},videoEnhancementToolActive:e,onClose:this._toggleEnhancementToolState}):null}get _superimposeTools(){const{superimposeViewEnabled:e,view:t,viewModel:{state:i,mode:a},messages:{superimposeSettings:s,sphereRadiusOffset:o,superimposeZOffset:n}}=this;return e&&"3d"===t?.type&&"image-loaded"===i?se("calcite-panel",{bind:this,class:this.classes(E.imageEnhancementWrapper,E.superimposeTools),heading:s,key:"superimpose-settings"},se("div",{class:E.imageEnhancementTools},Q({title:"panoramic"===a?o:n,value:this._superimposeZOffset,max:50,min:-50,ticks:10,step:.5,handleChange:this._handleSuperimposeZOffsetChange})),se("calcite-action",{bind:this,icon:"reset",onclick:this._resetSuperimposeOffset,slot:"header-actions-end",text:this.messagesCommon.reset,title:this.messagesCommon.reset})):null}_imageEnhancementsToggle(){const{state:e,mode:t}=this.viewModel,{enhancementTool:i}=this.visibleElements;return i&&"video"!==t?se("calcite-action",{active:this.enhancementToolActive,bind:this,disabled:"default"!==t||"image-loaded"!==e,icon:"sliders-horizontal",onclick:this._toggleEnhancementToolState,text:this.messages.imageEnhancement,title:this.messages.imageEnhancement}):null}_exploreImages3DToggle(){const{exploreImages3D:e}=this.messages,t="3d"!==this.view?.type||!this.layer?.verticalSearchRange;return this.visibleElements.exploreImages3D?se("calcite-action",{active:this.verticalFilterEnabled,bind:this,disabled:t,icon:"i3DSearch",onclick:this._toggleVerticalSearchFilter,text:e,title:e}):null}_showSelectedImageToggle(){const{displayImages:e}=this.messages,t=this.viewModel.mode.includes("video");return this.visibleElements.showSelectedImage?se("calcite-action",{active:this.shouldShowSelectedImage,bind:this,disabled:t,icon:"show-oriented-imagery",onclick:this._toggleShowSelectedImage,text:e,title:e}):null}_superimposeViewToggle(){const{superimposeImage:e}=this.messages,t=!this.superimposeViewEnabled&&("3d"!==this.view?.type||this.viewModel.mode.includes("video"));return se("calcite-action",{active:this.superimposeViewEnabled,bind:this,disabled:t,icon:"superimpose",onclick:this._toggleSuperimposeView,text:e,title:e})}_videoEnhancementsToggle(){const{mode:e}=this.viewModel,{videoEnhancement:t}=this.messages,{enhancementTool:i}=this.visibleElements;return i&&"video"===e?se("calcite-action",{active:this.enhancementToolActive,bind:this,disabled:"video"!==e,icon:"sliders-horizontal",onclick:this._toggleEnhancementToolState,text:t,title:t}):null}get _imageGalleryPanel(){const{container:e,galleryOpened:t,imageGalleryEnabled:i}=this;return i&&t&&e?this._imageGalleryContext:null}get _imageGalleryContext(){const{galleryOpened:e,invalidCameraHeading:t}=this;return se("calcite-panel",{bind:this,class:E.carousel,closable:!0,closed:!e,disabled:t,heading:this.messages.imageGallery,key:this.messages.imageGallery,onCalcitePanelClose:this._toggleImageGallery},se("div",{class:E.carouselContainer},this._renderThumbnails))}_imageGalleryToggle(){const{imageGalleryEnabled:e,invalidCameraHeading:t,visibleElements:{imageGallery:i}}=this;return i?se("calcite-action",{active:this.galleryOpened,bind:this,disabled:!e||t,icon:"images",onclick:this._toggleImageGallery,text:this.messages.imageGallery,title:this.messages.imageGallery}):null}get _imageOverlaysComponent(){const{_imageOverlayMessages:e,_imageOverlaysLoaderTask:t,_overlayedLayers:i,dataCaptureEnabled:a,dataCaptureLayer:o,imageOverlaysOpened:n,showCameraLocations:r,showMapFeatures:l,view:d,layer:c}=this;if(!c)return null;const g=c.imageGeometryField?.length?c.imageGeometryField:S,h=c.imageReferenceField?.length?c.imageReferenceField:A;t||(this._imageOverlaysLoaderTask=s(async()=>(await import("./OrientedImageryViewer/components/ImageOverlays.js")).default));const m=this._imageOverlaysLoaderTask?.value;return m?se(m,{closed:!n,dataCaptureEnabled:a,dataCaptureLayer:o,imageGeometryField:g,imageReferenceField:h,messages:e,overlayedLayers:i,showCameraLocations:r,showMapFeatures:l,view:d,onDataCaptureLayerChanged:this._handleDataCaptureLayerChange,onFilterCapturedFeatures:this.viewModel.filterCapturedFeatures,onImageOverlaysClosed:this._onImageOverlayClosed,onLayerDeselected:this._handleOverlayLayerDeselect,onLayerSelected:this._handleOverlayLayerSelect,onShowCameraLocationsChanged:this._onShowCameraLocationsChanged,onShowMapFeaturesChanged:this._onShowMapFeaturesChanged}):null}get _navigationUI(){const{navigationMode:e,viewModel:t}=this,{mode:i,state:a}=t;if(e&&("default"===i||"panoramic"===i)&&"image-loaded"===a)return"directional"===e?"default"===i?se(Z,{cameraHeadingThreshold:this.cameraHeadingThreshold,cameraPitchThreshold:this.cameraPitchThreshold,currentNode:this.viewModel.currentNode,navigate:this._createNavigationTask,nodes:this.viewModel.navigationNodes,preserveAngle:this.viewModel.preserveAngle}):se(z,{currentNode:this.viewModel.currentNode,navigate:this._createNavigationTask,nodes:this.viewModel.navigationNodes}):se(J,{layout:"horizontal",uiStrings:{end:this.messages.end,next:this.messages.next,previous:this.messages.previous,start:this.messages.start},onNext:this._navigateNext,onPrev:this._navigatePrevious})}get _imageOverlayMessages(){return{...this.messages,...this.messagesSketch}}get _imageSketchToolsMessages(){return{...this.messagesCommon,...this.messagesSketch}}_imageOverlaysPanel(){const{imageOverlaysOpened:e,viewModel:{state:t}}=this,i=this.classes({[E.imageOverlaysContainer]:!0,[te.hidden]:!e||"image-loaded"!==t});return se("div",{class:i,key:this.messages.imageOverlays},this._imageOverlaysComponent)}_imageOverlaysToggle(){const{viewModel:{state:e},imageOverlaysOpened:t,invalidCameraHeading:i,visibleElements:{imageOverlays:a}}=this;return a?se("calcite-action",{active:t,bind:this,disabled:"image-loaded"!==e||i,icon:"layers",onclick:this._toggleImageOverlays,text:this.messages.imageOverlays,title:this.messages.imageOverlays}):null}get _imageViewer(){const{displayMessage:e,loadImageViewer:t,mode:i,clickAction:a,state:s}=this.viewModel,o=null!=e||"default"!==i||s.includes("loading");return se(R,{afterCreate:t,clickAction:a,visible:!o})}get _imageViewerTriangular(){const{messages:e,triangularMeasurementActive:t}=this,{displayMessage:i,storeImageMeasurementViewer:a,storePanoramicMeasurementViewer:s,mode:o,state:n,clickAction:r}=this.viewModel,l=null!=i||"none"===o||"video"===o,d=this.classes({[E.viewer]:!l,[E.viewerHidden]:l});return t?se("calcite-panel",{class:E.viewerContainerMeasurement,heading:e.measurementViewerHeading,loading:n.includes("loading")},se("calcite-panel",{bind:this,class:d},"default"===o?se(R,{afterCreate:a,clickAction:r,uiStrings:e}):se(b,{afterCreate:s,clickAction:r,uiStrings:e}))):null}_utilitiesGroupToggle(){const{utilityTools:e}=this.messages;return this.visibleElements.utilityTools?se("calcite-action",{bind:this,icon:"tools",key:"utilities-group-toggle",onclick:()=>this._toggleGroupSelection("utilities"),text:e,title:e}):null}_searchGroupToggle(){const{searchTools:e}=this.messages;return this.visibleElements.searchTools?se("calcite-action",{bind:this,icon:"search",key:"search-group-toggle",onclick:()=>this._toggleGroupSelection("search"),text:e,title:e}):null}get _videoViewer(){const{mode:e,loadVideoViewer:t,videoViewModel:i}=this.viewModel,{control:a,reset:s}=this.messagesCommon,{mute:o,unmute:n}=this.messages,r="video"!==e,l=this.classes({[E.viewer]:!r,[E.viewerHidden]:r}),d="esri-image-viewer",c=`${d}__slider-container`;return se("calcite-panel",{bind:this,class:l},se("calcite-panel",{afterCreate:t,class:this.classes(te.widget,d)}),se("calcite-block",{class:c,expanded:!0},se("calcite-slider",{bind:this,labelHandles:!0,labelTicks:!0,max:i?.videoDuration,minLabel:"0",value:i?.currentTime??0,onCalciteSliderChange:this._handleVideoSeek})),se("calcite-action-bar",{expandDisabled:!0,layout:"horizontal"},se("calcite-action-group",null,se("calcite-action",{bind:this,icon:this.activeVideoIcon,onclick:()=>i?.playVideoHandler(),text:"Play",title:i?.videoPaused?a.play:a.pause})),se("calcite-action-group",null,se("calcite-action",{bind:this,icon:"refresh",onclick:()=>i?.rewindVideoHandler(),text:"Rewind",title:s})),se("calcite-action-group",null,se("calcite-action",{bind:this,icon:this.activeAudioIcon,onclick:()=>i?.toggleAudio(),text:"Audio",title:i?.videoMuted?o:n}))))}get _locationToggle(){const{viewModel:{state:e,groundCoordinates:t,groundCoordinatesAccuracy:i,triangulatedPoint:a},imageLocationToolActive:s,triangularMeasurementActive:o,messages:{groundLocation:n,triangulatedLocationHeading:r}}=this;if("image-loaded"!==e||!t||!s)return;let l=t;if(o){if(!a)return;l=a}return se("calcite-dialog",{bind:this,dragEnabled:!0,escapeDisabled:!0,heading:o?r:n,id:n,open:!0,placement:"bottom-start",resizable:!0,scale:"s",slot:"dialogs",width:"s",onCalciteDialogBeforeClose:this._clearImageLocation},se(U,{accuracy:i,groundCoordinates:l,messages:this.messages}))}_mapImageConversionToggle(){const{mapImageConversionToolState:e,viewModel:{state:t,disabled:i},invalidCameraHeading:a,visibleElements:{mapImageConversionTool:s}}=this;return s?se("calcite-action",{active:e,bind:this,disabled:"image-loaded"!==t||a||i,icon:"image-pin",onclick:this._toggleMapImageConversionToolState,text:this.messages.mapImageConversionTool,title:this.messages.mapImageConversionTool}):null}_measurementToolToggle(){const{measureType:e,viewModel:t,accuracyParametersMissing:i,messages:a,triangularMeasurementActive:s}=this,{state:o}=t,{groundDistance:n,groundArea:r,heightAboveGround:l,groundLocation:d,triangulatedDistanceHeading:c,triangulatedAreaHeading:g,triangulatedLocationHeading:h}=a,m="image-loaded"!==o||i;return se("calcite-action-group",{key:"measurement-tools",scale:"m"},se("calcite-action",{active:"distance"===e&&!s,bind:this,disabled:m,icon:"measure-line",key:"distance-measurement",onclick:e=>this._toggleMeasurementSketch(e,"distance"),text:n,title:n}),se("calcite-action",{active:"area"===e&&!s,bind:this,disabled:m,icon:"measure-area",key:"area-measurement",onclick:e=>this._toggleMeasurementSketch(e,"area"),text:r,title:r}),se("calcite-action",{active:"height"===e,bind:this,disabled:m,icon:"measure-building-height-top-base",key:"height-measurement",onclick:e=>this._toggleMeasurementSketch(e,"height"),text:l,title:l}),se("calcite-action",{active:!!this.imageLocationToolActive&&!s,bind:this,disabled:m,icon:"pin-tear",key:"surface-location",onclick:this._toggleLocationTool,text:d,title:d}),se("calcite-action",{active:!!s&&this.imageLocationToolActive,bind:this,disabled:m,icon:"dual-image-location",key:"triangular-location",onclick:this._toggleTriangularLocation,text:h,title:h}),se("calcite-action",{active:!!s&&"distance"===this.measureType,bind:this,disabled:m,icon:"dual-image-distance",key:"triangular-distance",onclick:this._toggleTriangularDistanceMeasurements,text:c,title:c}),se("calcite-action",{active:!!s&&"area"===this.measureType,bind:this,disabled:m,icon:"dual-image-area",key:"triangular-area",onclick:this._toggleTriangularAreaMeasurements,text:g,title:g}))}get _messageBox(){const{messages:e,viewModel:{displayMessage:t,mode:a}}=this;if(!t||"video"===a)return null;const{data:s,key:o,map:n}=t,r=`${n?i(e[o],n):e[o]}`;return se("span",{class:E.messageBox},s?`${r} ${s}`:r)}async _loadNavigationSettings(){return this._navigationSettingsLoaderTask||(this._navigationSettingsLoaderTask=s(async()=>(await import("./OrientedImageryViewer/components/NavigationSettings.js")).default)),await this._navigationSettingsLoaderTask.promise}_measurementsGroupToggle(){const{measurementTools:e}=this.messages,{state:t,accuracyParametersMissing:i}=this.viewModel,a="image-loaded"!==t||i;return this.visibleElements.measurementTools?se("calcite-action",{bind:this,disabled:a,icon:"measure-line",key:"measurements-group-toggle",onclick:()=>this._toggleGroupSelection("measurements"),text:e,title:e}):null}_navigationGroupToggle(){const{imageNavigation:e}=this.messages;return this.visibleElements.imageNavigationTools?se("calcite-action",{bind:this,icon:"absolute-direction",key:"navigation-group-toggle",onclick:()=>this._toggleGroupSelection("navigation"),text:e,title:e}):null}_navigationToolToggle(){const{state:e}=this.viewModel,{visibleElements:{navigationTool:t},videoLoaded:i}=this;return t?se("calcite-action",{active:this.navigationToolActive,bind:this,disabled:"image-loaded"!==e&&!i||this.invalidCameraHeading,icon:"explore",onclick:this._toggleNavigationTool,text:this.messages.navigationTool,title:this.messages.navigationTool}):null}_directionToolsToggle(){const{messages:e,viewModel:t,visibleElements:i}=this,{directionalNavigation:a,sequentialNavigation:s}=i,{state:o}=t,{directionalNavigation:n,directionalNavigationDescription:r,sequentialNavigation:l,sequentialNavigationDescription:d}=e;return se("calcite-action-group",{key:"navigation-tools",scale:"m"},a?se("calcite-action",{active:"directional"===this.navigationMode,bind:this,disabled:"image-loaded"!==o||this.invalidCameraHeading,icon:"directional-navigation",onclick:()=>{this._toggleImageNavigation("directional")},text:r,title:n}):null,s?se("calcite-action",{active:"sequential"===this.navigationMode,bind:this,disabled:"image-loaded"!==o||this.invalidCameraHeading||!this.canNavigateSequentially,icon:"sequential-navigation",onclick:()=>{this._toggleImageNavigation("sequential")},text:d,title:l}):null)}_overlaysGroupToggle(){const{overlays:e}=this.messages;return this.visibleElements.overlays?se("calcite-action",{bind:this,icon:"oriented-imagery-overlays",key:"overlays-group-toggle",onclick:()=>this._toggleGroupSelection("overlays"),text:e,title:e}):null}_openPopupAction(){const{showPopupsAction:e}=this.visibleElements;return e?se("calcite-action",{bind:this,disabled:!this.popupEnabled,icon:"popup",onclick:this._toggleImageAttributes,text:this.messages.showPopups,title:this.messages.showPopups}):null}get _panoramicVideoViewer(){const{displayMessage:e,loadPanoramicVideoViewer:t,mode:i,clickAction:a,state:s,currentBestFeature:o}=this.viewModel,n=o?.attributes.imagePath,r=null!=e||"panoramic-video"!==i||s.includes("loading")||!n;return se(M,{afterCreate:t,clickAction:a,oiViewModel:this.viewModel,videoSource:n,visible:!r})}get _panoramicViewer(){const{displayMessage:e,loadPanoramicViewer:t,mode:i,clickAction:a,state:s}=this.viewModel,o=null!=e||"panoramic"!==i||s.includes("loading");return se(b,{afterCreate:t,clickAction:a,visible:!o})}get noImageInSequenceError(){return this._get("noImageInSequenceError")??!1}_activateTriangulatedImageLocationTool(){this.navigationToolActive=!0,this.imageLocationToolActive=!0}_activateTriangulatedImageLocationWorkflow(e,t){this._closeAllImageTools(),this.imageLocationToolActive=!0,this.triangularMeasurementActive=!e,this.navigationToolActive=!!t||!t}_closeImageToolsAndToggleNavigation(e,t){this._closeAllImageTools(),this.triangularMeasurementActive=!e,this.navigationToolActive=!t}_resetMeasureTypeAndActivateImageLocationTool(){this.measureType=null,this.imageLocationToolActive=!0}_closeAllImageTools(){this.enhancementToolActive=!1,this.navigationToolActive=!1,this.imageOverlaysOpened=!1,this.galleryOpened=!1,this.measureType=null,this.imageLocationToolActive=!1,this.navigationMode=null,this.triangularMeasurementActive=!1,this._settingsToggle&&(this._settingsToggle.expanded=!1,this.viewModel.activeViewer?.ui.remove(this._settingsToggle))}_handleBrightnessChange(e){this.viewModel.brightness=e.currentTarget.value??0}_handleVideoBrightnessChange(e){this.viewModel.videoViewModel?.handleVideoBrightnessChange(e.target.value)}_handleContrastChange(e){this.viewModel.contrast=e.currentTarget.value??0}_handleVideoContrastChange(e){this.viewModel.videoViewModel?.handleVideoContrastChange(e.target.value)}_handleVideoSeek(e){const t=this.viewModel?.videoElement?.content;t&&(t.currentTime=e.target.value,t.play())}_handleSharpnessChange(e){this.viewModel.sharpness=e.currentTarget.value??0}_handleSuperimposeZOffsetChange(e){const t=e.currentTarget.value??0,i=t-this._superimposeZOffset;this._superimposeZOffset=t,this.viewModel.updateSuperimposeZOffset(i)}_lazyLoadImage(e,t){e.forEach(async e=>{if(e.isIntersecting){const a=e.target,s=a.getAttribute("data-src"),o=a.getAttribute("data-rotation"),n=a.getAttribute("data-objectid"),r=o?parseFloat(o)%360:0,{layer:c,_galleryController:{signal:g}}=this;if(!s||!n)return;let h;try{h=N(s)?await D(c,n,{signal:g}):await H(s,{signal:g})}catch(i){d(i)||l.getLogger("esri.widgets.OrientedImageryViewer").error("#lazyLoadImage()",i)}finally{t.unobserve(a)}if(!h)return;j(h,a,r)}})}_loadImageFromGallery(e){const{target:t}=e;if(!t)return;const i=t.getAttribute("data-objectid");i&&this.viewModel.currentBestFeature?.attributes.objectId!==Number(i)&&this.viewModel.selectBestFeature(i)}_loadImageMeasurementResources(){this._imageMeasurementToolsLoaderTask=s(async()=>{const{default:e}=await import("./OrientedImageryViewer/components/ImageMeasurementWidget.js");return e})}_loadSketchResources(){this._sketchLoaderTask=s(async()=>(await import("./OrientedImageryViewer/components/SketchTools.js")).default)}_onAdditionalCoverageVisibilityChange(e){this.viewModel.setAdditionalCoverageVisibility(e)}_onAdditionalCameraLocationsVisibility(e){this.viewModel.setAdditionalCameraLocationsVisibility(e)}_onCurrentCoverageVisibilityChange(e){this.viewModel.setCurrentCoverageVisibility(e)}_registerGalleryItem(e){this._galleryObserver.observe(e)}_renderWarning(e,t,i){const{viewModel:{state:a}}=this;return"image-loaded"===a?se(W,{icon:"exclamation-mark-triangle-f",kind:"warning",message:t,open:!0,title:e,tooltip:t,topLayerDisabled:this.topLayerDisabled,onClose:i}):null}get _renderNavigation(){const{viewModel:{sectorData:e,navigatorCurrentBestFeature:t,currentBestFeature:i,state:s}}=this;if(!this.container||!i)return null;let o,n,r,l,d;if(t){const{x:e,y:i,direction:a}=t,[s,c,g,h]=k[a];o=`M ${e} ${i} L ${s} ${c} A ${O[2]} ${O[2]} 0 0 1 ${g} ${h} Z`,n=e,l=i,r=k[a][4],d=k[a][5]}const c=e=>{const t=e.target.dataset?.sector;t&&this.viewModel.handleSectorClick(+t)},g=e=>{const t=e.target.dataset;if(!t)return;const{featureIndexInSector:i,sector:a}=t;i&&a&&this.viewModel.handleFeatureClick({sector:a,featureIndexInSector:+i})},h=e=>{e.removeEventListener("click",g)},m=i.attributes.objectId,u=e?.map(e=>e?.items).filter(Boolean).flatMap(e=>e?.map(({x:e,y:t,objectID:i,featureIndexInSector:a,sector:s})=>se("circle",{afterRemoved:h,class:this.classes(E.feature,{selected:m===i}),cx:e,cy:t,"data-feature-index-in-sector":a,"data-sector":s,key:`${E.feature}-${i}`,onclick:g,r:L}))),p=e=>{e.removeEventListener("click",c)},v=this.classes({[E.navigationWrapper]:!0,[E.navigationZoomed]:this._navigationToolExpanded});return this.navigationToolActive&&("image-loaded"===s||this.videoLoaded)?se("div",{bind:this,class:v,key:this.messages.navigationTool},se("svg",{afterCreate:e=>this._storeNavigationToolReference(e),class:a()?F:E.rotateWithAnimation,focusable:"false",height:V,role:"img",width:V,xmlns:"http://www.w3.org/2000/svg"},se("defs",null,se("linearGradient",{gradientUnits:"userSpaceOnUse",id:`${this.id}-coverage-fill`,x1:n,x2:r,y1:l,y2:d},se("stop",{class:E.navigationPathOffset0,offset:0}),se("stop",{class:E.navigationPathOffset1,offset:1}))),se("g",null,se("circle",{class:this.classes(E.sector,E.outerSector),cx:O[3],cy:O[3],onclick:this._scaleNavigationTool,r:O[3]}),se("circle",{class:E.sector,cx:O[3],cy:O[3],r:O[2]}),se("circle",{class:E.sector,cx:O[3],cy:O[3],r:O[1]}),se("circle",{class:E.sector,cx:O[3],cy:O[3],r:O[0]}),se("path",{class:E.pointer,d:"M 56.5 6.06217782649107 L 60 0 L 63.5 6.06217782649107 Z",key:`${E.pointer}-west`}),se("path",{class:this.classes(E.pointer,E.north),d:"M 113.93782217350893 56.5 L 120 60 L 113.93782217350893 63.5 Z",key:`${E.pointer}-north`}),se("path",{class:E.pointer,d:"M 56.5 113.93782217350893 L 60 120 L 63.5 113.93782217350893 Z",key:`${E.pointer}-east`}),se("path",{class:E.pointer,d:"M 6.06217782649107 56.5 L 0 60 L 6.06217782649107 63.5 Z",key:`${E.pointer}-south`}),se("path",{class:this.classes(E.sector,E.sectorSeparator),d:"M 23.937554159486076 23.937554159486076 L 96.06244584051393 96.06244584051393 M 23.937554159486076 96.06244584051393 L 96.06244584051393 23.937554159486076",key:E.sectorSeparator}),I([O[2],O[1],O[0]],O[3],O[3]).map((t,i)=>se("path",{afterRemoved:p,class:this.classes(E.sector,e?.[i]?.length?E.sectorEnabled:E.sectorDisabled),d:t,"data-sector":`${i}`,key:`${E.sector}-${i}`,onclick:c})),se("path",{class:this.classes(E.sector,E.sectorCross),d:"M 56.4 56.4 L 63.53 63.53 M 63.53 56.4 L 56.4 63.53",key:E.sectorCross}),u,i.attributes.cameraPitch>=5&&o?se("path",{class:E.selectedFeaturePath,d:o,fill:`url(#${this.id}-coverage-fill)`,key:E.selectedFeaturePath}):null))):null}_renderSketch(){const{dataCaptureLayer:e,imageOverlaysOpened:t}=this;if(!e||t)return null;if(this._sketchLoaderTask||this._loadSketchResources(),!this._sketchLoaderTask?.value)return null;const{geometryType:i}=e,a="point"===i?"pin":"polyline"===i?"line":"polygon",s=this._sketchLoaderTask.value;return se("div",{class:E.sketchTools},se(s,{icon:a,messages:this._imageSketchToolsMessages,type:i,onAction:this._onAction}))}get _renderThumbnails(){const{currentBestFeature:e,thumbnails:t}=this.viewModel;return e?se("div",{class:E.carouselContent},t?.items.map(({url:t,objectId:i,rotation:a},s)=>se("div",{class:`${E.carouselItemWrapper}${e.attributes.objectId===i?"--selected":""}`,key:`${E.carouselItemWrapper}-${s}`},se("canvas",{afterCreate:this._registerGalleryItem,afterRemoved:this._unregisterGalleryItem,alt:`thumbnail-${i}`,class:E.carouselItem,"data-objectid":`${i}`,"data-rotation":`${a}`,"data-src":t,onclick:this._loadImageFromGallery,onmouseenter:this._highlight,onmouseleave:this._removeHighlight})))):null}_resetImageTools(){this.viewModel.sharpness=this.viewModel.brightness=this.viewModel.contrast=0}_resetVideoTools(){this.viewModel.videoViewModel?.resetVideoEnhancementTools()}_storeNavigationToolReference(e){this._navigationTool=e}_toggleAdditionalCameraLocations(){this.isAdditionalPointSourcesVisible=!this.isAdditionalPointSourcesVisible}_toggleAdditionalCoverage(){this.isAdditionalCoverageVisible=!this.isAdditionalCoverageVisible}_toggleCurrentCoverage(){this.currentCoverageVisible=!this.currentCoverageVisible}_toggleShowSelectedImage(){this.shouldShowSelectedImage=!this.shouldShowSelectedImage,this._toggleDisabledViewer(this.shouldShowSelectedImage)}_resetSuperimposeOffset(){const e=-this._superimposeZOffset;this._superimposeZOffset=0,this.viewModel.updateSuperimposeZOffset(e)}_toggleSuperimposeCameraLock(){this.viewModel.updateDefaultSuperimposeCameraLock(!this.defaultSuperimposeCameraLockEnabled)}_toggleSuperimposeView(){this.superimposeViewEnabled=!this.superimposeViewEnabled}_toggleVerticalSearchFilter(){this.verticalFilterEnabled=!this.verticalFilterEnabled,this._toggleDisabledViewer(this.verticalFilterEnabled)}_toggleDisabledViewer(e){e&&(this.disabled=!1)}_toggleEnhancementToolState(e){e.stopPropagation();const t=this.enhancementToolActive;this._closeAllImageTools(),this.enhancementToolActive=!t}_toggleExploreImages(){this.disabled=!this.disabled,this.disabled&&(this.shouldShowSelectedImage=!1,this.verticalFilterEnabled=!1)}_toggleGroupSelection(e){this.selectedGroup=e}_toggleImageOverlays(e){e.stopPropagation();const t=this.imageOverlaysOpened;this._closeAllImageTools(),this.imageOverlaysOpened=!t}_toggleImageGallery(e){e.stopPropagation();const t=this.galleryOpened;this._closeAllImageTools(),this.galleryOpened=!!this.imageGalleryEnabled&&!t}_toggleLocationTool(e){const t=this.imageLocationToolActive,i=this.triangularMeasurementActive&&t;this._closeAllImageTools(),this.imageLocationToolActive=i||!t,e.stopPropagation()}_toggleMeasurementSketch(e,t){e.stopPropagation();const i=this.measureType,a=this.triangularMeasurementActive;this._closeAllImageTools(),this.measureType=i!==t||a?t:null,this.measureType===t&&(this.viewModel.displayNewMeasurementButton=!0)}_toggleNavigationTool(){const e=this.navigationToolActive;this._closeAllImageTools(),this.navigationToolActive=!e}_toggleMapImageConversionToolState(){this.mapImageConversionToolState=!this.mapImageConversionToolState}_toggleTriangularAreaMeasurements(){this._toggleTriangularMeasurements("area")}_toggleTriangularDistanceMeasurements(){this._toggleTriangularMeasurements("distance")}_toggleTriangularLocation(){const e=this.triangularMeasurementActive,t=this.navigationToolActive;e?null===this.measureType?this.imageLocationToolActive?this._closeImageToolsAndToggleNavigation(e,t):this._activateTriangulatedImageLocationTool():this._resetMeasureTypeAndActivateImageLocationTool():this._activateTriangulatedImageLocationWorkflow(e,t)}_toggleTriangularMeasurements(e){const t=this.triangularMeasurementActive,i=this.viewModel.measureType,a=this.navigationToolActive;t?e===i?(this._closeAllImageTools(),this.triangularMeasurementActive=!t,this.navigationToolActive=!a):(this.imageLocationToolActive=!1,this.measureType=e):(this._closeAllImageTools(),this.measureType=e,this.triangularMeasurementActive=!t,this.navigationToolActive=!!a||!a)}_unregisterGalleryItem(e){this._galleryObserver.unobserve(e)}_updateNavigationTool(e){const{previousFeatureAngle:t,bestFeatureAngle:i}=this.viewModel,a=(i-t+540)%360-180;e.style.setProperty(x,`${t}deg`),e.style.setProperty(P,`${t+a}deg`)}async loadBestImage(e,t){return this.viewModel.loadBestImage(e,t)}loadImageFromSource(e,t,i){return"default"===e?this.viewModel.loadMediaSource(t,i):this.viewModel.loadPanoramicMediaSource(t,i)}async overlayMapFeatures(e,t){return this.removeHandles(`${oe.overlayed}-${e.id}`),this.addHandles(c(()=>e.visible,()=>{this.viewModel.toggleOverlayMapFeatures(e.id,e.visible,this.showMapFeatures)}),`${oe.overlayed}-${e.id}`),this._overlayedLayers.add(e),this.viewModel.overlayMapFeatures(e,t&&this.showMapFeatures)}async plotMapPoint(e){return this.viewModel.plotMapPoint(e)}plotReferencePointOnGround(e){this.viewModel.plotReferencePointOnGround(e)}plotReferencePointOnImage(e){this.viewModel.plotReferencePointOnImage(e)}removeOverlayedGraphicsOnImage(e){this.removeHandles(`${oe.overlayed}-${e}`),this._overlayedLayers.remove(this._overlayedLayers.find(t=>t.id===e)),this.viewModel.removeOverlayedGraphicsOnImage(e)}resetImage(){this.viewModel.resetImage()}render(){return se("div",{class:this.classes(te.widget,G)},this._renderRoot)}async showImageByObjectId(e,t){return this.viewModel.showImageByObjectId(e,t)}async startDataCapture(e){return this.viewModel.startDataCapture(e)}async stopDataCapture(e){return this.viewModel.stopDataCapture(e)}updateSuitabilities(e){this.viewModel.updateSuitabilities(e)}};e([y({readOnly:!0})],ne.prototype,"accuracyParametersMissing",null),e([y()],ne.prototype,"activeLayer",null),e([y()],ne.prototype,"activeVideoIcon",null),e([y()],ne.prototype,"activeAudioIcon",null),e([y()],ne.prototype,"cameraHeadingThreshold",null),e([y()],ne.prototype,"cameraPitchThreshold",null),e([y()],ne.prototype,"canNavigateSequentially",null),e([y()],ne.prototype,"currentBestFeature",null),e([y()],ne.prototype,"currentCoverageVisible",null),e([y()],ne.prototype,"dataCaptureEnabled",void 0),e([y()],ne.prototype,"dataCaptureLayer",null),e([y()],ne.prototype,"depthImageNotSupported",null),e([y()],ne.prototype,"disabled",null),e([y()],ne.prototype,"enhancementToolActive",null),e([y()],ne.prototype,"features",null),e([y()],ne.prototype,"imagePointsInView",null),e([y()],ne.prototype,"galleryOpened",void 0),e([y()],ne.prototype,"icon",null),e([y()],ne.prototype,"imageEnhancementToolActive",void 0),e([y()],ne.prototype,"videoEnhancementToolActive",void 0),e([y({readOnly:!0})],ne.prototype,"imageGalleryEnabled",null),e([y()],ne.prototype,"imageLocationToolActive",null),e([y()],ne.prototype,"imageOverlaysOpened",void 0),e([y({readOnly:!0})],ne.prototype,"invalidCameraHeading",null),e([y()],ne.prototype,"isAdditionalCoverageVisible",null),e([y()],ne.prototype,"isAdditionalPointSourcesVisible",null),e([y()],ne.prototype,"mapImageConversionToolState",null),e([y()],ne.prototype,"measureType",null),e([y()],ne.prototype,"layer",null),e([y()],ne.prototype,"navigationToolActive",void 0),e([y()],ne.prototype,"navigationMode",null),e([ie(f()),y({type:$})],ne.prototype,"viewModel",void 0),e([y(),ae("esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer")],ne.prototype,"messages",void 0),e([y(),ae("esri/core/t9n/Units")],ne.prototype,"measurementUnitMessages",void 0),e([y(),ae("esri/t9n/common")],ne.prototype,"messagesCommon",void 0),e([y(),ae("esri/widgets/Sketch/t9n/Sketch")],ne.prototype,"messagesSketch",void 0),e([y()],ne.prototype,"pixelMeasurementUnit",void 0),e([y()],ne.prototype,"pixelAreaMeasurementUnit",void 0),e([y({readOnly:!0})],ne.prototype,"popupEnabled",null),e([y()],ne.prototype,"preloadMedia",null),e([y()],ne.prototype,"referencePoint",null),e([y()],ne.prototype,"selectedGroup",void 0),e([y()],ne.prototype,"showCameraLocations",void 0),e([y()],ne.prototype,"showMapFeatures",void 0),e([ie(["create","delete","redo","undo","update"]),y({readOnly:!0})],ne.prototype,"sketchViewModel",null),e([y()],ne.prototype,"triangularMeasurementActive",null),e([y()],ne.prototype,"videoLoaded",null),e([y()],ne.prototype,"view",null),e([y({type:B,nonNullable:!0})],ne.prototype,"visibleElements",void 0),e([y()],ne.prototype,"determineWorkflowForFeature",null),e([y()],ne.prototype,"shouldShowSelectedImage",null),e([y()],ne.prototype,"superimposeViewEnabled",null),e([y()],ne.prototype,"defaultSuperimposeCameraLockEnabled",null),e([y()],ne.prototype,"updateFootprint",null),e([y()],ne.prototype,"verticalFilterEnabled",null),e([y()],ne.prototype,"_superimposeZOffset",void 0),e([y()],ne.prototype,"_activeMeasurementHeading",null),e([y()],ne.prototype,"_imageOverlaysLoaderTask",void 0),e([y()],ne.prototype,"_imageMeasurementToolsLoaderTask",void 0),e([y()],ne.prototype,"_navigationSettingsLoaderTask",void 0),e([y()],ne.prototype,"_navigationTask",void 0),e([y()],ne.prototype,"_measurementToggle",null),e([y()],ne.prototype,"_renderRoot",null),e([y()],ne.prototype,"_imageEnhancementTools",null),e([y()],ne.prototype,"_videoEnhancementTools",null),e([y()],ne.prototype,"_superimposeTools",null),e([y()],ne.prototype,"_imageGalleryPanel",null),e([y()],ne.prototype,"_imageGalleryContext",null),e([y()],ne.prototype,"_imageOverlaysComponent",null),e([y()],ne.prototype,"_navigationUI",null),e([y()],ne.prototype,"_imageOverlayMessages",null),e([y()],ne.prototype,"_imageSketchToolsMessages",null),e([y()],ne.prototype,"_imageViewer",null),e([y()],ne.prototype,"_imageViewerTriangular",null),e([y()],ne.prototype,"_videoViewer",null),e([y()],ne.prototype,"_locationToggle",null),e([y()],ne.prototype,"_messageBox",null),e([y()],ne.prototype,"_navigationToolExpanded",void 0),e([y()],ne.prototype,"_navigationTool",void 0),e([y()],ne.prototype,"_panoramicVideoViewer",null),e([y()],ne.prototype,"_panoramicViewer",null),e([y({readOnly:!0})],ne.prototype,"noImageInSequenceError",null),e([y()],ne.prototype,"_renderNavigation",null),e([y()],ne.prototype,"_renderThumbnails",null),e([y()],ne.prototype,"_sketchLoaderTask",void 0),ne=e([w("esri.widgets.OrientedImageryViewer")],ne);const re=ne;export{re as default};
2
+ import{__decorate as e}from"tslib";import{prefersRTL as t,substitute as i}from"../intl.js";import{prefersReducedMotion as a}from"../core/a11yUtils.js";import{createTask as s}from"../core/asyncUtils.js";import o from"../core/Collection.js";import{deprecateWidget as n,deprecatedProperty as r}from"../core/deprecate.js";import l from"../core/Logger.js";import{isAbortError as d}from"../core/promiseUtils.js";import{watch as c,initial as g,syncAndInitial as h,on as m,sync as u}from"../core/reactiveUtils.js";import{throttle as p}from"../core/throttle.js";import{property as v,subclass as y}from"../core/accessorSupport/decorators.js";import{or as _}from"../layers/orientedImagery/transformations/utils.js";import w from"./Expand.js";import T from"./PanoramicVideoViewer.js";import b from"./PanoramicViewer.js";import M from"./Widget.js";import{getAllArcPath as C}from"./OrientedImageryViewer/arcUtils.js";import{getDelegatedEvents as I,defaultImageGeometryField as f,defaultOIObjectIDField as S,segmentArcs as A,featureCircleRadius as k,navigationToolDimensionLength as L,sectorsRadii as V}from"./OrientedImageryViewer/constants.js";import{css as E,navigation as O,navigationToolRotationFrom as F,navigationToolRotationTo as x,root as P}from"./OrientedImageryViewer/css.js";import{isFeatureAttachment as G,loadImageForAttachment as N,getThumbnailPixelBlock as D,renderImageWithRotation as H}from"./OrientedImageryViewer/galleryUtils.js";import j from"./OrientedImageryViewer/OrientedImageryViewerViewModel.js";import $ from"./OrientedImageryViewer/OrientedImageryViewerVisibleElements.js";import{loadAlertComponents as B,Alert as q}from"./OrientedImageryViewer/components/Alert.js";import W from"./OrientedImageryViewer/components/ImageLocationWidget.js";import U from"./OrientedImageryViewer/components/ImageViewer.js";import R from"./OrientedImageryViewer/components/NavigationUI.js";import Z from"./OrientedImageryViewer/components/NavigationUI360.js";import{SequentialNavigationUI as z}from"./OrientedImageryViewer/components/SequentialNavigationUI.js";import{loadVideoEnhancementComponents as J,renderEnhancementSlider as K,VideoEnhancementTools as Q}from"./OrientedImageryViewer/components/VideoEnhancementTools.js";import{NoImageLoadedError as X}from"./OrientedImageryViewer/navigation/errors.js";import{loadCalciteComponents as Y}from"./support/componentsUtils.js";import{globalCss as ee}from"./support/globalCss.js";import{vmEvent as te,messageBundle as ie,tsx as ae}from"./support/widget.js";const se={overlayed:"overlayed"};let oe=class extends M{constructor(e,t){super(e,t),this.dataCaptureEnabled=!1,this.galleryOpened=!1,this.imageEnhancementToolActive=!1,this.videoEnhancementToolActive=!1,this.imageOverlaysOpened=!1,this.navigationToolActive=!1,this.viewModel=new j,this.messagesCommon=null,this.messagesSketch=null,this.pixelMeasurementUnit="meters",this.pixelAreaMeasurementUnit="square-meters",this.selectedGroup=null,this.showCameraLocations=!1,this.showMapFeatures=!1,this.visibleElements=new $,this._superimposeZOffset=0,this._imageOverlaysLoaderTask=null,this._imageMeasurementToolsLoaderTask=null,this._navigationSettingsLoaderTask=null,this._navigationTask=null,this._clearMeasurements=()=>{this.viewModel.measureType=null,this.viewModel.triangularMeasurementActive=!1,this.viewModel.clearPreviousMeasurements()},this._clearImageLocation=()=>{this.imageLocationToolActive=!1,this.triangularMeasurementActive=!1},this._createNavigationTask=async e=>(this._navigationTask?.abort(),this._navigationTask=s(async t=>await this.navigate({...e,signal:t})),this._navigationTask.promise),this._navigateNext=async()=>await this._createNavigationTask({step:1}),this._navigatePrevious=async()=>await this._createNavigationTask({step:-1}),this._navigationToolExpanded=!1,this._navigationTool=null,this._galleryController=new AbortController,this._galleryObserver=new IntersectionObserver(this._lazyLoadImage.bind(this)),this._overlayedLayers=new o,this._previousAction=null,this._closeImageSequenceAlert=()=>{this._set("noImageInSequenceError",!1)},this._handleDataCaptureLayerChange=async e=>{if(this.dataCaptureLayer&&await this.stopDataCapture(!0),this.dataCaptureLayer=this.dataCaptureLayer===e?null:e,this.dataCaptureLayer)return this.startDataCapture(this.dataCaptureLayer)},this._handleNavigationSettingsInputChange=(e,t)=>{this.set(`${e}Threshold`,t)},this._handleNavigationSettingsToggle=e=>{this.viewModel.preserveAngle=e},this._handleOverlayLayerDeselect=e=>{const t=e.layer;t===this.dataCaptureLayer&&(this.stopDataCapture(),this.dataCaptureLayer=null),this.removeOverlayedGraphicsOnImage(`${t.id}`)},this._handleOverlayLayerSelect=e=>{const t=e.layer;this.viewModel.overlayMapFeatures(t,this.showMapFeatures),this.addHandles(c(()=>t.visible,()=>{this.viewModel.toggleOverlayMapFeatures(t.id,t.visible,this.showMapFeatures)}),`${se.overlayed}-${t.id}`)},this._highlight=e=>{const t=e.target?.dataset.objectid;t&&this.viewModel.highlight(t)},this._onAction=e=>{const{target:t}=e,{dataset:{action:i}}=t,{_previousAction:a}=this,s=a?.dataset.action,o=s?.includes("draw")??!1,n="select-feature"===s,r=s!==i;switch(i){case"draw-point":case"draw-polygon":case"draw-polyline":{a&&_(n,o&&r)&&(a.active=!1),t.active=!t.active;const e=i.replace("draw-","");this.viewModel.digitizeCreate(e),this._previousAction=t.active?t:null;break}case"save":this.viewModel.saveDrawing();break;case"select-feature":o&&(this._previousAction.active=!1),t.active=!t.active,this.viewModel.toggleSelection(t.active),this._previousAction=t.active?t:null;break;case"delete-feature":this.viewModel.digitizeDelete()}},this._onImageOverlayClosed=e=>{e.stopPropagation(),this.imageOverlaysOpened=!1},this._onShowCameraLocationsChanged=e=>{this.showCameraLocations=e},this._onShowMapFeaturesChanged=e=>{this.showMapFeatures=e},this._removeHighlight=()=>this.viewModel.removeHighlight(),this._restoreOverlays=async()=>Promise.all(this._overlayedLayers.map(e=>this.viewModel.overlayMapFeatures(e,this.showMapFeatures))),this._scaleNavigationTool=()=>{this._navigationToolExpanded=!this._navigationToolExpanded},this._sketchLoaderTask=null,this._settingsToggle=null,this._toggleImageNavigation=async e=>{const t=this.navigationMode;this._closeAllImageTools(),this.navigationMode=t!==e?e:null;const{activeViewer:i}=this.viewModel;if(!i)return;const{mode:a,preserveAngle:s}=this.viewModel;if("default"===a)if("directional"===this.navigationMode){const e=await this._loadNavigationSettings(),t="heading"===s||"both"===s,i="pitch"===s||"both"===s,{messages:a,messagesCommon:o}=this,n=new e({cameraHeadingThreshold:this.cameraHeadingThreshold,cameraPitchThreshold:this.cameraPitchThreshold,uiStrings:{configureNavigation:a.configureNavigation,preserveHeading:a.preserveHeading,preserveHeadingDescription:a.preserveHeadingDescription,preservePitch:a.preservePitch,preservePitchDescription:a.preservePitchDescription,settings:o.settings,thresholdLabel:a.thresholdLabel},onInputChange:this._handleNavigationSettingsInputChange,onToggle:this._handleNavigationSettingsToggle,preserveHeading:t,preservePitch:i});this._settingsToggle=new w({content:n,expandIcon:"configure"}),this.viewModel.activeViewer?.ui.add(this._settingsToggle,{position:"top-left"})}else this._settingsToggle&&(this._settingsToggle.expanded=!1,this.viewModel.activeViewer?.ui.remove(this._settingsToggle))},this._toggleImageAttributes=p(this.viewModel.toggleImageAttributes.bind(this.viewModel)),this.navigate=async e=>{let t=null;try{const{currentNode:i}=this.viewModel;if(!i)throw new X;t=await this.viewModel.navigate(i,e)}catch(i){d(i)||l.getLogger(this).error("Error occurred while navigating",i),["NoImageInSequenceError","NoSequenceFoundError"].includes(i.name)&&this._set("noImageInSequenceError",!0)}return t},this.reset=()=>{this._closeAllImageTools(),this.viewModel.reset()},this._loadImageFromGallery=this._loadImageFromGallery.bind(this),this._registerGalleryItem=this._registerGalleryItem.bind(this),this._unregisterGalleryItem=this._unregisterGalleryItem.bind(this),this.loadImageFromSource=this.loadImageFromSource.bind(this),this.updateSuitabilities=this.updateSuitabilities.bind(this),this._handleVideoBrightnessChange=this._handleVideoBrightnessChange.bind(this),this._handleVideoContrastChange=this._handleVideoContrastChange.bind(this),this._handleBrightnessChange=this._handleBrightnessChange.bind(this),this._handleContrastChange=this._handleContrastChange.bind(this),this._handleSharpnessChange=this._handleSharpnessChange.bind(this),this._handleSuperimposeZOffsetChange=this._handleSuperimposeZOffsetChange.bind(this),this._toggleSuperimposeCameraLock=this._toggleSuperimposeCameraLock.bind(this),this._resetSuperimposeOffset=this._resetSuperimposeOffset.bind(this),this._resetVideoTools=this._resetVideoTools.bind(this),this._toggleEnhancementToolState=this._toggleEnhancementToolState.bind(this),this.announceDeprecation=()=>{n(l.getLogger(this),"Oriented Imagery Viewer","arcgis-oriented-imagery-viewer",{version:"5.0"})}}initialize(){this.addHandles([c(()=>[this.viewModel?.bestFeatureAngle,this._navigationTool],([e,t])=>{t&&this._updateNavigationTool(t)},g),c(()=>this.currentCoverageVisible,e=>this._onCurrentCoverageVisibilityChange(e)),c(()=>this.isAdditionalCoverageVisible,e=>this._onAdditionalCoverageVisibilityChange(e)),c(()=>this.isAdditionalPointSourcesVisible,e=>this._onAdditionalCameraLocationsVisibility(e)),c(()=>this.superimposeViewEnabled,e=>{e?(this._closeAllImageTools(),this.selectedGroup=null,this.shouldShowSelectedImage=!1,this.verticalFilterEnabled=!1):this._resetSuperimposeOffset()}),c(()=>({features:this.currentBestFeature,overlaysEnabled:this._imageOverlaysEnabled,showCameraLocations:this.showCameraLocations}),({overlaysEnabled:e,showCameraLocations:t})=>{e&&this.viewModel.overlayCameraLocations(t)},h),c(()=>({feature:this.currentBestFeature,overlaysEnabled:this._imageOverlaysEnabled,showMapFeatures:this.showMapFeatures}),async(e,t)=>{e.showMapFeatures!==t?.showMapFeatures&&await this.viewModel.toggleAllOverlayMapFeatures(e.showMapFeatures);const i=e.feature&&e.feature!==t?.feature,a=e.overlaysEnabled&&!t?.overlaysEnabled;(i||a)&&(i&&this.viewModel.removeAllOverlayMapFeatures(),e.overlaysEnabled&&(this.dataCaptureLayer&&this.stopDataCapture(),await this._restoreOverlays(),this.dataCaptureLayer&&(await this.startDataCapture(this.dataCaptureLayer),this._previousAction?.active&&(this._previousAction.active=!1,this._previousAction=null))))},g),m(()=>this.viewModel,"popup-open",async e=>{await(this.view?.openPopup(e))},u),m(()=>this.viewModel,"popup-close",()=>{this.view?.closePopup()},u),this._toggleImageAttributes])}loadDependencies(){return Promise.all([J(),Y({"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group"),action:()=>import("@esri/calcite-components/dist/components/calcite-action"),block:()=>import("@esri/calcite-components/dist/components/calcite-block"),panel:()=>import("@esri/calcite-components/dist/components/calcite-panel"),shell:()=>import("@esri/calcite-components/dist/components/calcite-shell"),dialog:()=>import("@esri/calcite-components/dist/components/calcite-dialog"),slider:()=>import("@esri/calcite-components/dist/components/calcite-slider")}),B()])}destroy(){this._galleryController.abort(),this._galleryObserver.disconnect(),this.currentBestFeature=null}get accuracyParametersMissing(){return this.viewModel.accuracyParametersMissing}get activeLayer(){return r(l.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer}set activeLayer(e){r(l.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer=e}get activeVideoIcon(){const{videoElement:e,videoViewModel:t}=this.viewModel;return e?.loaded&&t?t.videoPaused?"play":"pause":"play"}get activeAudioIcon(){const{videoElement:e,videoViewModel:t}=this.viewModel;return e?.loaded&&t?.videoMuted?"sound-off":"sound"}get cameraHeadingThreshold(){return this.viewModel.cameraHeadingThreshold}set cameraHeadingThreshold(e){this.viewModel.cameraHeadingThreshold=e}get cameraPitchThreshold(){return this.viewModel.cameraPitchThreshold}set cameraPitchThreshold(e){this.viewModel.cameraPitchThreshold=e}get canNavigateSequentially(){return!!this.layer?.effectiveSequenceOrderField?.length}get currentBestFeature(){return this.viewModel.currentBestFeature}set currentBestFeature(e){this.viewModel.currentBestFeature=e}get currentCoverageVisible(){return this.viewModel.currentCoverageVisible}set currentCoverageVisible(e){this.viewModel.currentCoverageVisible=e}get dataCaptureLayer(){return this.viewModel.dataCaptureLayer}set dataCaptureLayer(e){this.viewModel.dataCaptureLayer=e}get depthImageNotSupported(){return this.viewModel.depthImageNotSupported}get disabled(){return this.viewModel.disabled}set disabled(e){this.viewModel.disabled=e}get displayMessage(){return this.viewModel.displayMessage}get enhancementToolActive(){return"video"===this.viewModel.mode?this.videoEnhancementToolActive:this.imageEnhancementToolActive}set enhancementToolActive(e){"video"===this.viewModel.mode?this.videoEnhancementToolActive=e:this.imageEnhancementToolActive=e}get features(){return this.viewModel.features}get imagePointsInView(){return this.viewModel.imagePointsInView}get icon(){return"oriented-imagery-widget"}set icon(e){this._overrideIfSome("icon",e)}get imageGalleryEnabled(){return this.viewModel.imageGalleryEnabled}get imageLocationToolActive(){return this.viewModel.imageLocationToolState}set imageLocationToolActive(e){this.viewModel.imageLocationToolState=e}get invalidCameraHeading(){return this.viewModel.invalidCameraHeading}get isAdditionalCoverageVisible(){return this.viewModel.isAdditionalCoverageVisible}set isAdditionalCoverageVisible(e){this.viewModel.isAdditionalCoverageVisible=e}get isAdditionalPointSourcesVisible(){return this.viewModel.isAdditionalPointSourcesVisible}set isAdditionalPointSourcesVisible(e){this.viewModel.isAdditionalPointSourcesVisible=e}get mapImageConversionToolState(){return this.viewModel.mapImageConversionToolState}set mapImageConversionToolState(e){this.viewModel.setMapImageConversionToolState(e)}get measureType(){return this.viewModel.measureType}set measureType(e){this.viewModel.measureType=e}get layer(){return this.viewModel.layer}set layer(e){this.viewModel.layer=e}get navigationMode(){return this.viewModel.navigationMode}set navigationMode(e){this.viewModel.navigationMode=e}get popupEnabled(){const{popupEnabled:e,state:t}=this.viewModel;return("image-loaded"===t||this.videoLoaded)&&e}get preloadMedia(){return this.viewModel.preloadMedia}set preloadMedia(e){this.viewModel.preloadMedia=e}get referencePoint(){return this.viewModel.referencePoint??null}get sketchViewModel(){return this.viewModel.sketch}get triangularMeasurementActive(){return this.viewModel.triangularMeasurementActive}set triangularMeasurementActive(e){this.viewModel.triangularMeasurementActive=e}get videoLoaded(){const{mode:e,videoElement:t,panoramicVideoLoaded:i}=this.viewModel;return("video"===e&&!0===t?.loaded||i)??!1}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}set determineWorkflowForFeature(e){this.viewModel.determineWorkflowForFeature=e}get determineWorkflowForFeature(){return this.viewModel.determineWorkflowForFeature}get shouldShowSelectedImage(){return this.viewModel.shouldShowSelectedImage}set shouldShowSelectedImage(e){this.viewModel.shouldShowSelectedImage=e}get superimposeViewEnabled(){return this.viewModel.superimposeViewEnabled}set superimposeViewEnabled(e){this.viewModel.superimposeViewEnabled=e}get defaultSuperimposeCameraLockEnabled(){return this.viewModel.defaultSuperimposeCameraLockEnabled}set defaultSuperimposeCameraLockEnabled(e){this.viewModel.defaultSuperimposeCameraLockEnabled=e}set updateFootprint(e){this.viewModel.updateFootprint=e}get updateFootprint(){return this.viewModel.updateFootprint}get verticalFilterEnabled(){return this.viewModel.verticalFilterEnabled}set verticalFilterEnabled(e){this.viewModel.verticalFilterEnabled=e}_renderActionBar(){const{selectedGroup:e,superimposeViewEnabled:i}=this;if(i)return ae("calcite-action-bar",{expandDisabled:!0,layout:"horizontal",slot:"action-bar"},ae("calcite-action-group",null,this._superimposeViewToggle()));const a=t();return ae("calcite-action-bar",{expandDisabled:!0,layout:"horizontal",slot:"action-bar"},!e&&ae("calcite-action-group",null,this._searchGroupToggle(),this._overlaysGroupToggle(),this._navigationGroupToggle(),this._measurementsGroupToggle(),this._utilitiesGroupToggle()),this._renderGroupBackAction(a),"overlays"===e&&ae("calcite-action-group",null,this._currentFootprintToggle(),this._additionalFootprintToggle(),this._additionalPointSourcesToggle(),this._mapImageConversionToggle(),this._imageOverlaysToggle()),"navigation"===e&&ae("calcite-action-group",null,this._directionToolsToggle(),this._navigationToolToggle(),this._imageGalleryToggle()),"measurements"===e&&ae("calcite-action-group",null,this._measurementToolToggle()),"utilities"===e&&ae("calcite-action-group",null,this._imageEnhancementsToggle(),this._videoEnhancementsToggle(),this._superimposeViewToggle(),this._openPopupAction()),"search"===e&&ae("calcite-action-group",null,this._exploreImagesToggle(),this._exploreImages3DToggle(),this._showSelectedImageToggle()))}_renderGroupBackAction(e){return this.selectedGroup?ae("calcite-action",{bind:this,icon:e?"arrow-right":"arrow-left",key:"back-arrow",onclick:()=>this._toggleGroupSelection(null),text:this.messages.previous,title:this.messages.previous}):null}get _activeMeasurementHeading(){const{measureType:e,messages:t,triangularMeasurementActive:i}=this,{groundArea:a,heightAboveGround:s,groundDistance:o,triangulatedAreaHeading:n,triangulatedDistanceHeading:r}=t;if(i)return"area"===e?n:r;switch(e){case"area":return a;case"height":return s;default:return o}}_additionalFootprintToggle(){const{isAdditionalCoverageVisible:e,invalidCameraHeading:t,visibleElements:{additionalFootprintToggle:i}}=this;return i?ae("calcite-action",{active:e,bind:this,class:E.addCoverage,disabled:t,icon:"trapezoid-area",onclick:this._toggleAdditionalCoverage,text:this.messages.additionalFootprints,title:this.messages.additionalFootprints}):null}_additionalPointSourcesToggle(){const{isAdditionalPointSourcesVisible:e,invalidCameraHeading:t,visibleElements:{additionalCameraLocationsToggle:i}}=this;return i?ae("calcite-action",{active:e,bind:this,class:E.addExpPoints,disabled:t,icon:"circle-area",onclick:this._toggleAdditionalCameraLocations,text:this.messages.additionalCameraLocations,title:this.messages.additionalCameraLocations}):null}get _measurementToggle(){const{viewModel:{state:e,measureType:t,currentBestFeatureMeasurementImage:i},triangularMeasurementActive:a,id:s}=this;if("image-loaded"!==e||!t||a&&!i)return;this._imageMeasurementToolsLoaderTask||this._loadImageMeasurementResources();const o=this._imageMeasurementToolsLoaderTask?.value;return o?ae("calcite-dialog",{bind:this,dragEnabled:!0,escapeDisabled:!0,heading:this._activeMeasurementHeading,id:`${s}-${t}-measurement`,open:!0,placement:"bottom-start",resizable:!0,scale:"s",slot:"dialogs",width:"s",onCalciteDialogBeforeClose:this._clearMeasurements},ae(o,{measurementType:t,measurementUnitMessages:this.measurementUnitMessages,messages:this.messages,oiViewModel:this.viewModel})):null}get _renderRoot(){const{viewModel:{state:e},triangularMeasurementActive:t}=this;return ae("calcite-panel",{bind:this,class:t?E.viewerContainerMeasurement:E.viewerContainer,heading:this.visibleElements.header?this.messages.title:void 0,loading:e.includes("loading")&&!t},this.visibleElements.menu?this._renderActionBar():null,ae("calcite-shell",null,ae("calcite-panel",null,this._imageViewer,this._panoramicViewer,this._panoramicVideoViewer,this._videoViewer,this._messageBox,this.invalidCameraHeading?null:[this._imageGalleryPanel,this._renderNavigation,this._imageOverlaysPanel()],this._imageEnhancementTools,this._videoEnhancementTools,this._superimposeTools,this._renderSketch(),this._navigationUI),this._imageViewerTriangular,this._measurementToggle,this._locationToggle,this.invalidCameraHeading?this._renderWarning(this.messages.invalidCameraHeadingWarningTitle,this.messages.invalidCameraHeadingWarningDescription):null,this.depthImageNotSupported?this._renderWarning(this.messages.depthImageNotSupportedTitle,this.messages.depthImageNotSupportedDescription):null,this.noImageInSequenceError?this._renderWarning(this.messages.sequentialNavigationWarning,this.messages.sequentialNavigationWarning,this._closeImageSequenceAlert):null))}_currentFootprintToggle(){const{currentCoverageVisible:e,invalidCameraHeading:t}=this,{currentFootprintToggle:i}=this.visibleElements;return i?ae("calcite-action",{active:e,bind:this,class:E.currentCoverage,disabled:t,icon:"trapezoid-area",onclick:this._toggleCurrentCoverage,text:this.messages.currentFootprint,title:this.messages.currentFootprint}):null}_exploreImagesToggle(){const{exploreImages:e}=this.messages;return this.visibleElements.exploreImages?ae("calcite-action",{active:!this.disabled,bind:this,icon:"oriented-imagery-widget",onclick:this._toggleExploreImages,text:e,title:e}):null}get _imageEnhancementTools(){const{enhancementToolActive:e,viewModel:{brightness:t,contrast:i,sharpness:a,state:s}}=this;return e&&"image-loaded"===s?ae("calcite-panel",{bind:this,class:E.imageEnhancementWrapper,closable:!0,closed:!e,heading:this.messages.imageEnhancement,key:this.messages.imageEnhancement,onCalcitePanelClose:this._toggleEnhancementToolState},ae("div",{class:E.imageEnhancementTools},K({title:this.messages.brightness,value:t,max:10,min:-10,ticks:5,handleChange:this._handleBrightnessChange}),K({title:this.messages.contrast,value:i,max:10,min:-10,ticks:5,handleChange:this._handleContrastChange}),K({title:this.messages.sharpness,value:a,max:1,min:0,ticks:.5,step:.1,handleChange:this._handleSharpnessChange})),ae("calcite-action",{bind:this,icon:"reset",onclick:this._resetImageTools,slot:"header-actions-end",text:this.messagesCommon.reset,title:this.messagesCommon.reset})):null}get _videoEnhancementTools(){const{enhancementToolActive:e,viewModel:{videoViewModel:t,mode:i},messages:{videoEnhancement:a,brightness:s,contrast:o},messagesCommon:{reset:n}}=this;return e&&"video"===i&&t?ae(Q,{brightness:t.videoBrightness,constrast:t.videoContrast,handleBrightnessChange:this._handleVideoBrightnessChange,handleContrastChange:this._handleVideoContrastChange,resetTools:this._resetVideoTools,uiStrings:{videoEnhancement:a,brightness:s,contrast:o,reset:n},videoEnhancementToolActive:e,onClose:this._toggleEnhancementToolState}):null}get _superimposeTools(){const{superimposeViewEnabled:e,view:t,viewModel:{state:i,mode:a},messages:{superimposeSettings:s,sphereRadiusOffset:o,superimposeZOffset:n}}=this;return e&&"3d"===t?.type&&"image-loaded"===i?ae("calcite-panel",{bind:this,class:this.classes(E.imageEnhancementWrapper,E.superimposeTools),heading:s,key:"superimpose-settings"},ae("div",{class:E.imageEnhancementTools},K({title:"panoramic"===a?o:n,value:this._superimposeZOffset,max:50,min:-50,ticks:10,step:.5,handleChange:this._handleSuperimposeZOffsetChange})),ae("calcite-action",{bind:this,icon:"reset",onclick:this._resetSuperimposeOffset,slot:"header-actions-end",text:this.messagesCommon.reset,title:this.messagesCommon.reset})):null}_imageEnhancementsToggle(){const{state:e,mode:t}=this.viewModel,{enhancementTool:i}=this.visibleElements;return i&&"video"!==t?ae("calcite-action",{active:this.enhancementToolActive,bind:this,disabled:"default"!==t||"image-loaded"!==e,icon:"sliders-horizontal",onclick:this._toggleEnhancementToolState,text:this.messages.imageEnhancement,title:this.messages.imageEnhancement}):null}_exploreImages3DToggle(){const{exploreImages3D:e}=this.messages,t="3d"!==this.view?.type||!this.layer?.verticalSearchRange;return this.visibleElements.exploreImages3D?ae("calcite-action",{active:this.verticalFilterEnabled,bind:this,disabled:t,icon:"i3DSearch",onclick:this._toggleVerticalSearchFilter,text:e,title:e}):null}_showSelectedImageToggle(){const{displayImages:e}=this.messages,t=this.viewModel.mode.includes("video");return this.visibleElements.showSelectedImage?ae("calcite-action",{active:this.shouldShowSelectedImage,bind:this,disabled:t,icon:"show-oriented-imagery",onclick:this._toggleShowSelectedImage,text:e,title:e}):null}_superimposeViewToggle(){const{superimposeImage:e}=this.messages,t=!this.superimposeViewEnabled&&("3d"!==this.view?.type||this.viewModel.mode.includes("video"));return this.visibleElements.superimpose?ae("calcite-action",{active:this.superimposeViewEnabled,bind:this,disabled:t,icon:"superimpose",onclick:this._toggleSuperimposeView,text:e,title:e}):null}_videoEnhancementsToggle(){const{mode:e}=this.viewModel,{videoEnhancement:t}=this.messages,{enhancementTool:i}=this.visibleElements;return i&&"video"===e?ae("calcite-action",{active:this.enhancementToolActive,bind:this,disabled:"video"!==e,icon:"sliders-horizontal",onclick:this._toggleEnhancementToolState,text:t,title:t}):null}get _imageGalleryPanel(){const{container:e,galleryOpened:t,imageGalleryEnabled:i}=this;return i&&t&&e?this._imageGalleryContext:null}get _imageGalleryContext(){const{galleryOpened:e,invalidCameraHeading:t}=this;return ae("calcite-panel",{bind:this,class:E.carousel,closable:!0,closed:!e,disabled:t,heading:this.messages.imageGallery,key:this.messages.imageGallery,onCalcitePanelClose:this._toggleImageGallery},ae("div",{class:E.carouselContainer},this._renderThumbnails))}_imageGalleryToggle(){const{imageGalleryEnabled:e,invalidCameraHeading:t,visibleElements:{imageGallery:i}}=this;return i?ae("calcite-action",{active:this.galleryOpened,bind:this,disabled:!e||t,icon:"images",onclick:this._toggleImageGallery,text:this.messages.imageGallery,title:this.messages.imageGallery}):null}get _imageOverlaysComponent(){const{_imageOverlayMessages:e,_imageOverlaysLoaderTask:t,_overlayedLayers:i,dataCaptureEnabled:a,dataCaptureLayer:o,imageOverlaysOpened:n,showCameraLocations:r,showMapFeatures:l,view:d,layer:c}=this;if(!c)return null;const g=c.imageGeometryField?.length?c.imageGeometryField:f,h=c.imageReferenceField?.length?c.imageReferenceField:S;t||(this._imageOverlaysLoaderTask=s(async()=>(await import("./OrientedImageryViewer/components/ImageOverlays.js")).default));const m=this._imageOverlaysLoaderTask?.value;return m?ae(m,{closed:!n,dataCaptureEnabled:a,dataCaptureLayer:o,imageGeometryField:g,imageReferenceField:h,messages:e,overlayedLayers:i,showCameraLocations:r,showMapFeatures:l,view:d,onDataCaptureLayerChanged:this._handleDataCaptureLayerChange,onFilterCapturedFeatures:this.viewModel.filterCapturedFeatures,onImageOverlaysClosed:this._onImageOverlayClosed,onLayerDeselected:this._handleOverlayLayerDeselect,onLayerSelected:this._handleOverlayLayerSelect,onShowCameraLocationsChanged:this._onShowCameraLocationsChanged,onShowMapFeaturesChanged:this._onShowMapFeaturesChanged}):null}get _navigationUI(){const{navigationMode:e,viewModel:t}=this,{mode:i,state:a}=t;if(e&&("default"===i||"panoramic"===i)&&"image-loaded"===a)return"directional"===e?"default"===i?ae(R,{cameraHeadingThreshold:this.cameraHeadingThreshold,cameraPitchThreshold:this.cameraPitchThreshold,currentNode:this.viewModel.currentNode,navigate:this._createNavigationTask,nodes:this.viewModel.navigationNodes,preserveAngle:this.viewModel.preserveAngle}):ae(Z,{currentNode:this.viewModel.currentNode,navigate:this._createNavigationTask,nodes:this.viewModel.navigationNodes}):ae(z,{layout:"horizontal",uiStrings:{end:this.messages.end,next:this.messages.next,previous:this.messages.previous,start:this.messages.start},onNext:this._navigateNext,onPrev:this._navigatePrevious})}get _imageOverlayMessages(){return{...this.messages,...this.messagesSketch}}get _imageSketchToolsMessages(){return{...this.messagesCommon,...this.messagesSketch}}_imageOverlaysPanel(){const{imageOverlaysOpened:e}=this,t=this.classes({[E.imageOverlaysContainer]:!0,[ee.hidden]:!e||!this._imageOverlaysEnabled});return ae("div",{class:t,key:this.messages.imageOverlays},this._imageOverlaysComponent)}_imageOverlaysToggle(){const{imageOverlaysOpened:e,invalidCameraHeading:t,visibleElements:{imageOverlays:i}}=this;return i?ae("calcite-action",{active:e,bind:this,disabled:!this._imageOverlaysEnabled||t,icon:"layers",onclick:this._toggleImageOverlays,text:this.messages.imageOverlays,title:this.messages.imageOverlays}):null}get _imageOverlaysEnabled(){return this.viewModel.overlayGraphicsEnabled}get _imageViewer(){const{displayMessage:e,loadImageViewer:t,mode:i,clickAction:a,state:s}=this.viewModel,o=null!=e||"default"!==i||s.includes("loading");return ae(U,{afterCreate:t,clickAction:a,visible:!o})}get _imageViewerTriangular(){const{messages:e,triangularMeasurementActive:t}=this,{displayMessage:i,storeImageMeasurementViewer:a,storePanoramicMeasurementViewer:s,mode:o,state:n,clickAction:r}=this.viewModel,l=null!=i||"none"===o||"video"===o,d=this.classes({[E.viewer]:!l,[E.viewerHidden]:l});return t?ae("calcite-panel",{class:E.viewerContainerMeasurement,heading:e.measurementViewerHeading,loading:n.includes("loading")},ae("calcite-panel",{bind:this,class:d},"default"===o?ae(U,{afterCreate:a,clickAction:r,uiStrings:e}):ae(b,{afterCreate:s,clickAction:r,uiStrings:e}))):null}_utilitiesGroupToggle(){const{utilityTools:e}=this.messages;return this.visibleElements.utilityTools?ae("calcite-action",{bind:this,icon:"tools",key:"utilities-group-toggle",onclick:()=>this._toggleGroupSelection("utilities"),text:e,title:e}):null}_searchGroupToggle(){const{searchTools:e}=this.messages;return this.visibleElements.searchTools?ae("calcite-action",{bind:this,icon:"search",key:"search-group-toggle",onclick:()=>this._toggleGroupSelection("search"),text:e,title:e}):null}get _videoViewer(){const{mode:e,loadVideoViewer:t,videoViewModel:i}=this.viewModel,{control:a,reset:s}=this.messagesCommon,{mute:o,unmute:n}=this.messages,r="video"!==e,l=this.classes({[E.viewer]:!r,[E.viewerHidden]:r}),d="esri-image-viewer",c=`${d}__slider-container`;return ae("calcite-panel",{bind:this,class:l},ae("calcite-panel",{afterCreate:t,class:this.classes(ee.widget,d)}),ae("calcite-block",{class:c,expanded:!0},ae("calcite-slider",{bind:this,labelHandles:!0,labelTicks:!0,max:i?.videoDuration,minLabel:"0",value:i?.currentTime??0,onCalciteSliderChange:this._handleVideoSeek})),ae("calcite-action-bar",{expandDisabled:!0,layout:"horizontal"},ae("calcite-action-group",null,ae("calcite-action",{bind:this,icon:this.activeVideoIcon,onclick:()=>i?.playVideoHandler(),text:"Play",title:i?.videoPaused?a.play:a.pause})),ae("calcite-action-group",null,ae("calcite-action",{bind:this,icon:"refresh",onclick:()=>i?.rewindVideoHandler(),text:"Rewind",title:s})),ae("calcite-action-group",null,ae("calcite-action",{bind:this,icon:this.activeAudioIcon,onclick:()=>i?.toggleAudio(),text:"Audio",title:i?.videoMuted?o:n}))))}get _locationToggle(){const{viewModel:{state:e,groundCoordinates:t,groundCoordinatesAccuracy:i,triangulatedPoint:a},imageLocationToolActive:s,triangularMeasurementActive:o,messages:{groundLocation:n,triangulatedLocationHeading:r}}=this;if("image-loaded"!==e||!t||!s)return;let l=t;if(o){if(!a)return;l=a}return ae("calcite-dialog",{bind:this,dragEnabled:!0,escapeDisabled:!0,heading:o?r:n,id:n,open:!0,placement:"bottom-start",resizable:!0,scale:"s",slot:"dialogs",width:"s",onCalciteDialogBeforeClose:this._clearImageLocation},ae(W,{accuracy:i,groundCoordinates:l,messages:this.messages}))}_mapImageConversionToggle(){const{mapImageConversionToolState:e,viewModel:{state:t,disabled:i},videoLoaded:a,invalidCameraHeading:s,visibleElements:{mapImageConversionTool:o}}=this,n=!("video"!==this.viewModel.mode||!a||!this.viewModel.videoViewModel?.videoPaused),r="panoramic-video"===this.viewModel.mode&&this.viewModel.panoramicVideoLoaded&&this.viewModel.panoramicVideoPaused;return o?ae("calcite-action",{active:e,bind:this,disabled:"image-loaded"!==t&&!n&&!r||s||i,icon:"image-pin",onclick:this._toggleMapImageConversionToolState,text:this.messages.mapImageConversionTool,title:this.messages.mapImageConversionTool}):null}_measurementToolToggle(){const{measureType:e,viewModel:t,accuracyParametersMissing:i,messages:a,triangularMeasurementActive:s}=this,{state:o}=t,{groundDistance:n,groundArea:r,heightAboveGround:l,groundLocation:d,triangulatedDistanceHeading:c,triangulatedAreaHeading:g,triangulatedLocationHeading:h}=a,m="image-loaded"!==o||i;return ae("calcite-action-group",{key:"measurement-tools",scale:"m"},ae("calcite-action",{active:"distance"===e&&!s,bind:this,disabled:m,icon:"measure-line",key:"distance-measurement",onclick:e=>this._toggleMeasurementSketch(e,"distance"),text:n,title:n}),ae("calcite-action",{active:"area"===e&&!s,bind:this,disabled:m,icon:"measure-area",key:"area-measurement",onclick:e=>this._toggleMeasurementSketch(e,"area"),text:r,title:r}),ae("calcite-action",{active:"height"===e,bind:this,disabled:m,icon:"measure-building-height-top-base",key:"height-measurement",onclick:e=>this._toggleMeasurementSketch(e,"height"),text:l,title:l}),ae("calcite-action",{active:!!this.imageLocationToolActive&&!s,bind:this,disabled:m,icon:"pin-tear",key:"surface-location",onclick:this._toggleLocationTool,text:d,title:d}),ae("calcite-action",{active:!!s&&this.imageLocationToolActive,bind:this,disabled:m,icon:"dual-image-location",key:"triangular-location",onclick:this._toggleTriangularLocation,text:h,title:h}),ae("calcite-action",{active:!!s&&"distance"===this.measureType,bind:this,disabled:m,icon:"dual-image-distance",key:"triangular-distance",onclick:this._toggleTriangularDistanceMeasurements,text:c,title:c}),ae("calcite-action",{active:!!s&&"area"===this.measureType,bind:this,disabled:m,icon:"dual-image-area",key:"triangular-area",onclick:this._toggleTriangularAreaMeasurements,text:g,title:g}))}get _messageBox(){const{messages:e,viewModel:{displayMessage:t,mode:a}}=this;if(!t||"video"===a)return null;const{data:s,key:o,map:n}=t,r=`${n?i(e[o],n):e[o]}`;return ae("span",{class:E.messageBox},s?`${r} ${s}`:r)}async _loadNavigationSettings(){return this._navigationSettingsLoaderTask||(this._navigationSettingsLoaderTask=s(async()=>(await import("./OrientedImageryViewer/components/NavigationSettings.js")).default)),await this._navigationSettingsLoaderTask.promise}_measurementsGroupToggle(){const{measurementTools:e}=this.messages,{state:t,accuracyParametersMissing:i}=this.viewModel,a="image-loaded"!==t||i;return this.visibleElements.measurementTools?ae("calcite-action",{bind:this,disabled:a,icon:"measure-line",key:"measurements-group-toggle",onclick:()=>this._toggleGroupSelection("measurements"),text:e,title:e}):null}_navigationGroupToggle(){const{imageNavigation:e}=this.messages;return this.visibleElements.imageNavigationTools?ae("calcite-action",{bind:this,icon:"absolute-direction",key:"navigation-group-toggle",onclick:()=>this._toggleGroupSelection("navigation"),text:e,title:e}):null}_navigationToolToggle(){const{state:e}=this.viewModel,{visibleElements:{navigationTool:t},videoLoaded:i}=this;return t?ae("calcite-action",{active:this.navigationToolActive,bind:this,disabled:"image-loaded"!==e&&!i||this.invalidCameraHeading,icon:"explore",onclick:this._toggleNavigationTool,text:this.messages.navigationTool,title:this.messages.navigationTool}):null}_directionToolsToggle(){const{messages:e,viewModel:t,visibleElements:i}=this,{directionalNavigation:a,sequentialNavigation:s}=i,{state:o}=t,{directionalNavigation:n,directionalNavigationDescription:r,sequentialNavigation:l,sequentialNavigationDescription:d}=e;return ae("calcite-action-group",{key:"navigation-tools",scale:"m"},a?ae("calcite-action",{active:"directional"===this.navigationMode,bind:this,disabled:"image-loaded"!==o||this.invalidCameraHeading,icon:"directional-navigation",onclick:()=>{this._toggleImageNavigation("directional")},text:r,title:n}):null,s?ae("calcite-action",{active:"sequential"===this.navigationMode,bind:this,disabled:"image-loaded"!==o||this.invalidCameraHeading||!this.canNavigateSequentially,icon:"sequential-navigation",onclick:()=>{this._toggleImageNavigation("sequential")},text:d,title:l}):null)}_overlaysGroupToggle(){const{overlays:e}=this.messages;return this.visibleElements.overlays?ae("calcite-action",{bind:this,icon:"oriented-imagery-overlays",key:"overlays-group-toggle",onclick:()=>this._toggleGroupSelection("overlays"),text:e,title:e}):null}_openPopupAction(){const{showPopupsAction:e}=this.visibleElements;return e?ae("calcite-action",{bind:this,disabled:!this.popupEnabled,icon:"popup",onclick:this._toggleImageAttributes,text:this.messages.showPopups,title:this.messages.showPopups}):null}get _panoramicVideoViewer(){const{displayMessage:e,loadPanoramicVideoViewer:t,mode:i,clickAction:a,state:s,currentBestFeature:o}=this.viewModel,n=o?.attributes.imagePath,r=null!=e||"panoramic-video"!==i||s.includes("loading")||!n;return ae(T,{afterCreate:t,clickAction:a,oiViewModel:this.viewModel,videoSource:n,visible:!r})}get _panoramicViewer(){const{displayMessage:e,loadPanoramicViewer:t,mode:i,clickAction:a,state:s}=this.viewModel,o=null!=e||"panoramic"!==i||s.includes("loading");return ae(b,{afterCreate:t,clickAction:a,visible:!o})}get noImageInSequenceError(){return this._get("noImageInSequenceError")??!1}_activateTriangulatedImageLocationTool(){this.navigationToolActive=!0,this.imageLocationToolActive=!0}_activateTriangulatedImageLocationWorkflow(e,t){this._closeAllImageTools(),this.imageLocationToolActive=!0,this.triangularMeasurementActive=!e,this.navigationToolActive=!!t||!t}_closeImageToolsAndToggleNavigation(e,t){this._closeAllImageTools(),this.triangularMeasurementActive=!e,this.navigationToolActive=!t}_resetMeasureTypeAndActivateImageLocationTool(){this.measureType=null,this.imageLocationToolActive=!0}_closeAllImageTools(){this.enhancementToolActive=!1,this.navigationToolActive=!1,this.imageOverlaysOpened=!1,this.galleryOpened=!1,this.measureType=null,this.imageLocationToolActive=!1,this.navigationMode=null,this.triangularMeasurementActive=!1,this._settingsToggle&&(this._settingsToggle.expanded=!1,this.viewModel.activeViewer?.ui.remove(this._settingsToggle))}_handleBrightnessChange(e){this.viewModel.brightness=e.currentTarget.value??0}_handleVideoBrightnessChange(e){this.viewModel.videoViewModel?.handleVideoBrightnessChange(e.target.value)}_handleContrastChange(e){this.viewModel.contrast=e.currentTarget.value??0}_handleVideoContrastChange(e){this.viewModel.videoViewModel?.handleVideoContrastChange(e.target.value)}_handleVideoSeek(e){const t=this.viewModel?.videoElement?.content;t&&(t.currentTime=e.target.value,t.play())}_handleSharpnessChange(e){this.viewModel.sharpness=e.currentTarget.value??0}_handleSuperimposeZOffsetChange(e){const t=e.currentTarget.value??0,i=t-this._superimposeZOffset;this._superimposeZOffset=t,this.viewModel.updateSuperimposeZOffset(i)}_lazyLoadImage(e,t){e.forEach(async e=>{if(e.isIntersecting){const a=e.target,s=a.getAttribute("data-src"),o=a.getAttribute("data-rotation"),n=a.getAttribute("data-objectid"),r=o?parseFloat(o)%360:0,{layer:c,_galleryController:{signal:g}}=this;if(!s||!n)return;let h;try{h=G(s)?await N(c,n,{signal:g}):await D(s,{signal:g})}catch(i){d(i)||l.getLogger("esri.widgets.OrientedImageryViewer").error("#lazyLoadImage()",i)}finally{t.unobserve(a)}if(!h)return;H(h,a,r)}})}_loadImageFromGallery(e){const{target:t}=e;if(!t)return;const i=t.getAttribute("data-objectid");i&&this.viewModel.currentBestFeature?.attributes.objectId!==Number(i)&&this.viewModel.selectBestFeature(i)}_loadImageMeasurementResources(){this._imageMeasurementToolsLoaderTask=s(async()=>{const{default:e}=await import("./OrientedImageryViewer/components/ImageMeasurementWidget.js");return e})}_loadSketchResources(){this._sketchLoaderTask=s(async()=>(await import("./OrientedImageryViewer/components/SketchTools.js")).default)}_onAdditionalCoverageVisibilityChange(e){this.viewModel.setAdditionalCoverageVisibility(e)}_onAdditionalCameraLocationsVisibility(e){this.viewModel.setAdditionalCameraLocationsVisibility(e)}_onCurrentCoverageVisibilityChange(e){this.viewModel.setCurrentCoverageVisibility(e)}_registerGalleryItem(e){this._galleryObserver.observe(e)}_renderWarning(e,t,i){const{viewModel:{state:a}}=this;return"image-loaded"===a?ae(q,{icon:"exclamation-mark-triangle-f",kind:"warning",message:t,open:!0,title:e,tooltip:t,topLayerDisabled:this.topLayerDisabled,onClose:i}):null}get _renderNavigation(){const{viewModel:{sectorData:e,navigatorCurrentBestFeature:t,currentBestFeature:i,state:s}}=this;if(!this.container||!i)return null;let o,n,r,l,d;if(t){const{x:e,y:i,direction:a}=t,[s,c,g,h]=A[a];o=`M ${e} ${i} L ${s} ${c} A ${V[2]} ${V[2]} 0 0 1 ${g} ${h} Z`,n=e,l=i,r=A[a][4],d=A[a][5]}const c=e=>{const t=e.target.dataset?.sector;t&&this.viewModel.handleSectorClick(+t)},g=e=>{const t=e.target.dataset;if(!t)return;const{featureIndexInSector:i,sector:a}=t;i&&a&&this.viewModel.handleFeatureClick({sector:a,featureIndexInSector:+i})},h=e=>{e.removeEventListener("click",g)},m=i.attributes.objectId,u=e?.map(e=>e?.items).filter(Boolean).flatMap(e=>e?.map(({x:e,y:t,objectID:i,featureIndexInSector:a,sector:s})=>ae("circle",{afterRemoved:h,class:this.classes(E.feature,{selected:m===i}),cx:e,cy:t,"data-feature-index-in-sector":a,"data-sector":s,key:`${E.feature}-${i}`,onclick:g,r:k}))),p=e=>{e.removeEventListener("click",c)},v=this.classes({[E.navigationWrapper]:!0,[E.navigationZoomed]:this._navigationToolExpanded});return this.navigationToolActive&&("image-loaded"===s||this.videoLoaded)?ae("div",{bind:this,class:v,key:this.messages.navigationTool},ae("svg",{afterCreate:e=>this._storeNavigationToolReference(e),class:a()?O:E.rotateWithAnimation,focusable:"false",height:L,role:"img",width:L,xmlns:"http://www.w3.org/2000/svg"},ae("defs",null,ae("linearGradient",{gradientUnits:"userSpaceOnUse",id:`${this.id}-coverage-fill`,x1:n,x2:r,y1:l,y2:d},ae("stop",{class:E.navigationPathOffset0,offset:0}),ae("stop",{class:E.navigationPathOffset1,offset:1}))),ae("g",null,ae("circle",{class:this.classes(E.sector,E.outerSector),cx:V[3],cy:V[3],onclick:this._scaleNavigationTool,r:V[3]}),ae("circle",{class:E.sector,cx:V[3],cy:V[3],r:V[2]}),ae("circle",{class:E.sector,cx:V[3],cy:V[3],r:V[1]}),ae("circle",{class:E.sector,cx:V[3],cy:V[3],r:V[0]}),ae("path",{class:E.pointer,d:"M 56.5 6.06217782649107 L 60 0 L 63.5 6.06217782649107 Z",key:`${E.pointer}-west`}),ae("path",{class:this.classes(E.pointer,E.north),d:"M 113.93782217350893 56.5 L 120 60 L 113.93782217350893 63.5 Z",key:`${E.pointer}-north`}),ae("path",{class:E.pointer,d:"M 56.5 113.93782217350893 L 60 120 L 63.5 113.93782217350893 Z",key:`${E.pointer}-east`}),ae("path",{class:E.pointer,d:"M 6.06217782649107 56.5 L 0 60 L 6.06217782649107 63.5 Z",key:`${E.pointer}-south`}),ae("path",{class:this.classes(E.sector,E.sectorSeparator),d:"M 23.937554159486076 23.937554159486076 L 96.06244584051393 96.06244584051393 M 23.937554159486076 96.06244584051393 L 96.06244584051393 23.937554159486076",key:E.sectorSeparator}),C([V[2],V[1],V[0]],V[3],V[3]).map((t,i)=>ae("path",{afterRemoved:p,class:this.classes(E.sector,e?.[i]?.length?E.sectorEnabled:E.sectorDisabled),d:t,"data-sector":`${i}`,key:`${E.sector}-${i}`,onclick:c})),ae("path",{class:this.classes(E.sector,E.sectorCross),d:"M 56.4 56.4 L 63.53 63.53 M 63.53 56.4 L 56.4 63.53",key:E.sectorCross}),u,i.attributes.cameraPitch>=5&&o?ae("path",{class:E.selectedFeaturePath,d:o,fill:`url(#${this.id}-coverage-fill)`,key:E.selectedFeaturePath}):null))):null}_renderSketch(){const{dataCaptureLayer:e,imageOverlaysOpened:t}=this;if(!e||t)return null;if(this._sketchLoaderTask||this._loadSketchResources(),!this._sketchLoaderTask?.value)return null;const{geometryType:i}=e,a="point"===i?"pin":"polyline"===i?"line":"polygon",s=this._sketchLoaderTask.value;return ae("div",{class:E.sketchTools},ae(s,{icon:a,messages:this._imageSketchToolsMessages,type:i,onAction:this._onAction}))}get _renderThumbnails(){const{currentBestFeature:e,thumbnails:t}=this.viewModel;return e?ae("div",{class:E.carouselContent},t?.items.map(({url:t,objectId:i,rotation:a},s)=>ae("div",{class:`${E.carouselItemWrapper}${e.attributes.objectId===i?"--selected":""}`,key:`${E.carouselItemWrapper}-${s}`},ae("canvas",{afterCreate:this._registerGalleryItem,afterRemoved:this._unregisterGalleryItem,alt:`thumbnail-${i}`,class:E.carouselItem,"data-objectid":`${i}`,"data-rotation":`${a}`,"data-src":t,onclick:this._loadImageFromGallery,onmouseenter:this._highlight,onmouseleave:this._removeHighlight})))):null}_resetImageTools(){this.viewModel.sharpness=this.viewModel.brightness=this.viewModel.contrast=0}_resetVideoTools(){this.viewModel.videoViewModel?.resetVideoEnhancementTools()}_storeNavigationToolReference(e){this._navigationTool=e}_toggleAdditionalCameraLocations(){this.isAdditionalPointSourcesVisible=!this.isAdditionalPointSourcesVisible}_toggleAdditionalCoverage(){this.isAdditionalCoverageVisible=!this.isAdditionalCoverageVisible}_toggleCurrentCoverage(){this.currentCoverageVisible=!this.currentCoverageVisible}_toggleShowSelectedImage(){this.shouldShowSelectedImage=!this.shouldShowSelectedImage,this._toggleDisabledViewer(this.shouldShowSelectedImage)}_resetSuperimposeOffset(){const e=-this._superimposeZOffset;this._superimposeZOffset=0,this.viewModel.updateSuperimposeZOffset(e)}_toggleSuperimposeCameraLock(){this.viewModel.updateDefaultSuperimposeCameraLock(!this.defaultSuperimposeCameraLockEnabled)}_toggleSuperimposeView(){this.superimposeViewEnabled=!this.superimposeViewEnabled}_toggleVerticalSearchFilter(){this.verticalFilterEnabled=!this.verticalFilterEnabled,this._toggleDisabledViewer(this.verticalFilterEnabled)}_toggleDisabledViewer(e){e&&(this.disabled=!1)}_toggleEnhancementToolState(e){e.stopPropagation();const t=this.enhancementToolActive;this._closeAllImageTools(),this.enhancementToolActive=!t}_toggleExploreImages(){this.disabled=!this.disabled,this.disabled&&(this.shouldShowSelectedImage=!1,this.verticalFilterEnabled=!1)}_toggleGroupSelection(e){this.selectedGroup=e}_toggleImageOverlays(e){e.stopPropagation();const t=this.imageOverlaysOpened;this._closeAllImageTools(),this.imageOverlaysOpened=!t}_toggleImageGallery(e){e.stopPropagation();const t=this.galleryOpened;this._closeAllImageTools(),this.galleryOpened=!!this.imageGalleryEnabled&&!t}_toggleLocationTool(e){const t=this.imageLocationToolActive,i=this.triangularMeasurementActive&&t;this._closeAllImageTools(),this.imageLocationToolActive=i||!t,e.stopPropagation()}_toggleMeasurementSketch(e,t){e.stopPropagation();const i=this.measureType,a=this.triangularMeasurementActive;this._closeAllImageTools(),this.measureType=i!==t||a?t:null,this.measureType===t&&(this.viewModel.displayNewMeasurementButton=!0)}_toggleNavigationTool(){const e=this.navigationToolActive;this._closeAllImageTools(),this.navigationToolActive=!e}_toggleMapImageConversionToolState(){this.mapImageConversionToolState=!this.mapImageConversionToolState}_toggleTriangularAreaMeasurements(){this._toggleTriangularMeasurements("area")}_toggleTriangularDistanceMeasurements(){this._toggleTriangularMeasurements("distance")}_toggleTriangularLocation(){const e=this.triangularMeasurementActive,t=this.navigationToolActive;e?null===this.measureType?this.imageLocationToolActive?this._closeImageToolsAndToggleNavigation(e,t):this._activateTriangulatedImageLocationTool():this._resetMeasureTypeAndActivateImageLocationTool():this._activateTriangulatedImageLocationWorkflow(e,t)}_toggleTriangularMeasurements(e){const t=this.triangularMeasurementActive,i=this.viewModel.measureType,a=this.navigationToolActive;t?e===i?(this._closeAllImageTools(),this.triangularMeasurementActive=!t,this.navigationToolActive=!a):(this.imageLocationToolActive=!1,this.measureType=e):(this._closeAllImageTools(),this.measureType=e,this.triangularMeasurementActive=!t,this.navigationToolActive=!!a||!a)}_unregisterGalleryItem(e){this._galleryObserver.unobserve(e)}_updateNavigationTool(e){const{previousFeatureAngle:t,bestFeatureAngle:i}=this.viewModel,a=(i-t+540)%360-180;e.style.setProperty(F,`${t}deg`),e.style.setProperty(x,`${t+a}deg`)}async loadBestImage(e,t){return this.viewModel.loadBestImage(e,t)}loadImageFromSource(e,t,i){return"default"===e?this.viewModel.loadMediaSource(t,i):this.viewModel.loadPanoramicMediaSource(t,i)}async overlayMapFeatures(e,t){return this.removeHandles(`${se.overlayed}-${e.id}`),this.addHandles(c(()=>e.visible,()=>{this.viewModel.toggleOverlayMapFeatures(e.id,e.visible,this.showMapFeatures)}),`${se.overlayed}-${e.id}`),this._overlayedLayers.add(e),this.viewModel.overlayMapFeatures(e,t&&this.showMapFeatures)}async plotMapPoint(e){return this.viewModel.plotMapPoint(e)}plotReferencePointOnGround(e){this.viewModel.plotReferencePointOnGround(e)}plotReferencePointOnImage(e){this.viewModel.plotReferencePointOnImage(e)}removeOverlayedGraphicsOnImage(e){this.removeHandles(`${se.overlayed}-${e}`),this._overlayedLayers.remove(this._overlayedLayers.find(t=>t.id===e)),this.viewModel.removeOverlayedGraphicsOnImage(e)}resetImage(){this.viewModel.resetImage()}render(){return ae("div",{class:this.classes(ee.widget,P)},this._renderRoot)}async showImageByObjectId(e,t){return this.viewModel.showImageByObjectId(e,t)}async startDataCapture(e){return this.viewModel.startDataCapture(e)}async stopDataCapture(e){return this.viewModel.stopDataCapture(e)}updateSuitabilities(e){this.viewModel.updateSuitabilities(e)}};e([v({readOnly:!0})],oe.prototype,"accuracyParametersMissing",null),e([v()],oe.prototype,"activeLayer",null),e([v()],oe.prototype,"activeVideoIcon",null),e([v()],oe.prototype,"activeAudioIcon",null),e([v()],oe.prototype,"cameraHeadingThreshold",null),e([v()],oe.prototype,"cameraPitchThreshold",null),e([v()],oe.prototype,"canNavigateSequentially",null),e([v()],oe.prototype,"currentBestFeature",null),e([v()],oe.prototype,"currentCoverageVisible",null),e([v()],oe.prototype,"dataCaptureEnabled",void 0),e([v()],oe.prototype,"dataCaptureLayer",null),e([v()],oe.prototype,"depthImageNotSupported",null),e([v()],oe.prototype,"disabled",null),e([v()],oe.prototype,"enhancementToolActive",null),e([v()],oe.prototype,"features",null),e([v()],oe.prototype,"imagePointsInView",null),e([v()],oe.prototype,"galleryOpened",void 0),e([v()],oe.prototype,"icon",null),e([v()],oe.prototype,"imageEnhancementToolActive",void 0),e([v()],oe.prototype,"videoEnhancementToolActive",void 0),e([v({readOnly:!0})],oe.prototype,"imageGalleryEnabled",null),e([v()],oe.prototype,"imageLocationToolActive",null),e([v()],oe.prototype,"imageOverlaysOpened",void 0),e([v({readOnly:!0})],oe.prototype,"invalidCameraHeading",null),e([v()],oe.prototype,"isAdditionalCoverageVisible",null),e([v()],oe.prototype,"isAdditionalPointSourcesVisible",null),e([v()],oe.prototype,"mapImageConversionToolState",null),e([v()],oe.prototype,"measureType",null),e([v()],oe.prototype,"layer",null),e([v()],oe.prototype,"navigationToolActive",void 0),e([v()],oe.prototype,"navigationMode",null),e([te(I()),v({type:j})],oe.prototype,"viewModel",void 0),e([v(),ie("esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer")],oe.prototype,"messages",void 0),e([v(),ie("esri/core/t9n/Units")],oe.prototype,"measurementUnitMessages",void 0),e([v(),ie("esri/t9n/common")],oe.prototype,"messagesCommon",void 0),e([v(),ie("esri/widgets/Sketch/t9n/Sketch")],oe.prototype,"messagesSketch",void 0),e([v()],oe.prototype,"pixelMeasurementUnit",void 0),e([v()],oe.prototype,"pixelAreaMeasurementUnit",void 0),e([v({readOnly:!0})],oe.prototype,"popupEnabled",null),e([v()],oe.prototype,"preloadMedia",null),e([v()],oe.prototype,"referencePoint",null),e([v()],oe.prototype,"selectedGroup",void 0),e([v()],oe.prototype,"showCameraLocations",void 0),e([v()],oe.prototype,"showMapFeatures",void 0),e([te(["create","delete","redo","undo","update"]),v({readOnly:!0})],oe.prototype,"sketchViewModel",null),e([v()],oe.prototype,"triangularMeasurementActive",null),e([v()],oe.prototype,"videoLoaded",null),e([v()],oe.prototype,"view",null),e([v({type:$,nonNullable:!0})],oe.prototype,"visibleElements",void 0),e([v()],oe.prototype,"determineWorkflowForFeature",null),e([v()],oe.prototype,"shouldShowSelectedImage",null),e([v()],oe.prototype,"superimposeViewEnabled",null),e([v()],oe.prototype,"defaultSuperimposeCameraLockEnabled",null),e([v()],oe.prototype,"updateFootprint",null),e([v()],oe.prototype,"verticalFilterEnabled",null),e([v()],oe.prototype,"_superimposeZOffset",void 0),e([v()],oe.prototype,"_activeMeasurementHeading",null),e([v()],oe.prototype,"_imageOverlaysLoaderTask",void 0),e([v()],oe.prototype,"_imageMeasurementToolsLoaderTask",void 0),e([v()],oe.prototype,"_navigationSettingsLoaderTask",void 0),e([v()],oe.prototype,"_navigationTask",void 0),e([v()],oe.prototype,"_measurementToggle",null),e([v()],oe.prototype,"_renderRoot",null),e([v()],oe.prototype,"_imageEnhancementTools",null),e([v()],oe.prototype,"_videoEnhancementTools",null),e([v()],oe.prototype,"_superimposeTools",null),e([v()],oe.prototype,"_imageGalleryPanel",null),e([v()],oe.prototype,"_imageGalleryContext",null),e([v()],oe.prototype,"_imageOverlaysComponent",null),e([v()],oe.prototype,"_navigationUI",null),e([v()],oe.prototype,"_imageOverlayMessages",null),e([v()],oe.prototype,"_imageSketchToolsMessages",null),e([v()],oe.prototype,"_imageOverlaysEnabled",null),e([v()],oe.prototype,"_imageViewer",null),e([v()],oe.prototype,"_imageViewerTriangular",null),e([v()],oe.prototype,"_videoViewer",null),e([v()],oe.prototype,"_locationToggle",null),e([v()],oe.prototype,"_messageBox",null),e([v()],oe.prototype,"_navigationToolExpanded",void 0),e([v()],oe.prototype,"_navigationTool",void 0),e([v()],oe.prototype,"_panoramicVideoViewer",null),e([v()],oe.prototype,"_panoramicViewer",null),e([v({readOnly:!0})],oe.prototype,"noImageInSequenceError",null),e([v()],oe.prototype,"_renderNavigation",null),e([v()],oe.prototype,"_renderThumbnails",null),e([v()],oe.prototype,"_sketchLoaderTask",void 0),oe=e([y("esri.widgets.OrientedImageryViewer")],oe);const ne=oe;export{ne as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../Camera.js";import i from"../../Ground.js";import o from"../../Map.js";import a from"../../core/Collection.js";import r from"../../core/Error.js";import{EventedAccessor as s}from"../../core/Evented.js";import{addEventListener as n}from"../../core/events.js";import{JSONMap as d}from"../../core/jsonMap.js";import h from"../../core/Logger.js";import{rad2deg as l,deg2rad as m}from"../../core/mathUtils.js";import{destroyMaybe as c}from"../../core/maybe.js";import{waitTick as p}from"../../core/promiseUtils.js";import{watch as u,syncAndInitial as g,when as v,whenOnce as _}from"../../core/reactiveUtils.js";import{property as y,subclass as f}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as w}from"../../core/support/UpdatingHandles.js";import V from"../../geometry/SpatialReference.js";import M from"../../layers/GraphicsLayer.js";import{convertSphereVertexToPixelLocation as H}from"../../layers/orientedImagery/transformations/utils.js";import R from"../../views/SceneView.js";import{fixedImageSize as z}from"../OrientedImageryViewer/constants.js";import{createPanoramicMedia as b,extractHorizonAnglesFromMedia as P,logAndThrow as F,getMissingPropertyErrorName as S,getMissingPropertyErrorMessage as C}from"../OrientedImageryViewer/utils.js";import{defaultImageSphereCenter as j,maxPanoramicViewerHFOV as O,minPanoramicViewerHFOV as x,humanBinocularHFOV as I}from"./constants.js";import k from"./PanoramicZoomConditions.js";import A from"./PanoramicZoomViewModel.js";import{findDiagonalFOV as L,meshToGraphic as G,createImageSphere as T}from"./utils.js";import{enumeration as D}from"../../core/accessorSupport/decorators/enumeration.js";const E={default:"default",navigation:"navigation",fovConstraint:"fov-constraint",clickAction:"image-click-action",videoHandles:"video-handles"};let W=class extends s{constructor(e){super(e),this._startPosition=null,this._targetPosition=null,this._graphics=new M({elevationInfo:{mode:"relative-to-ground"}}),this._imageGraphic=null,this._loadController=null,this._map=new o({ground:new i({opacity:0,navigationConstraint:null}),layers:new a([this._graphics])}),this._zoomViewModel=null,this.autoLoad=!1,this.clickAction="none",this.closestFeature=null,this.currentTime=0,this.imageSize=null,this.media=null,this.oiViewModel=null,this.videoSource=null,this.videoDuration=void 0,this.videoLoaded=!1,this.videoPaused=null,this.videoMuted=null,this.pitch=90,this.state="ready",this.updatingHandles=new w,this.video=null,this.yaw=0,this._addNavigationHandles=()=>{this.imageRenderer.basemapTerrain.suspended=!0,this.imageRenderer.constraints.tilt.max=180,this.removeHandles(E.navigation),this.addHandles([this.imageRenderer.on("mouse-wheel",this._handleWheel),this.imageRenderer.on("double-click",this._handleDoubleClick),this.imageRenderer.on("drag",this._handleDrag),this.imageRenderer.on("key-down",e=>{const t=["+","-","Shift","_","=","ArrowUp","ArrowDown","ArrowRight","ArrowLeft"],i=e.key;t.includes(i)&&e.stopPropagation()})],E.navigation)},this._addHFOVHandles=()=>{this.removeHandles(E.fovConstraint),this.addHandles(u(()=>[this.maxHFOV,this.minHFOV],()=>{this._zoomViewModel&&(this._zoomViewModel.panoramicZoomConditions=new k({view:this.imageRenderer,maxFOV:this.maxHFOV,minFOV:this.minHFOV}))},g),E.fovConstraint)},this._addZoomHandles=()=>{this._zoomViewModel=new A({view:this.imageRenderer,panoramicZoomConditions:new k({maxFOV:this.maxHFOV,minFOV:this.minHFOV})});const e=this.imageRenderer.ui.find("zoom");e&&(e.viewModel=this._zoomViewModel),this._addHFOVHandles()},this._cancelLoadWithController=()=>{this._loadController?.abort(),this._loadController=null},this._createMedia=(e,t)=>{this.media=b({type:"video",url:e,matrix:t.attributes.matrix,cameraHeading:t.attributes.cameraHeading})},this._handleDoubleClick=e=>{e.stopPropagation(),e.native.ctrlKey?this._zoomOut():this._zoomIn()},this._handleDrag=e=>{e.stopPropagation();const{action:t,x:i,y:o}=e;switch(t){case"start":this._startPosition=this._targetPosition={x:i,y:o};break;case"update":this._targetPosition={x:i,y:o},this._updateCameraHeadingAndTilt()}},this._handleImageClick=e=>{if("image-loaded"===this.state&&this.imageRenderer.ready)switch(this.clickAction){case"emit":e.stopPropagation(),this.emit("click",e);break;case"hittest":e.stopPropagation(),e.defer(async()=>{const t=await this.imageRenderer.hitTest(e.screenPoint,{include:this._graphics});t.results=t.results.filter(e=>"graphic"===e.type&&e.graphic!==this._imageGraphic),this.emit("hittest-response",t)});break;case"pixel-location":{if(e.stopPropagation(),!this.imageSize||!e.mapPoint)return void this.emit("pixel-location",null);const t=H(e.mapPoint,this.imageSize[0],this.imageSize[1]);this.emit("pixel-location",{...t,spatialReference:V.WebMercator});break}}},this._handleWheel=e=>{const t=e.deltaX??e.native.deltaX;e.stopPropagation(),t>0||e.deltaY>0?this._zoomOut():this._zoomIn()},this._loadWithController=()=>{this._cancelLoadWithController(),this._loadController=new AbortController,this.loadVideo(this._loadController)},this._updateMedia=(e,t,i)=>{i.url=e,i.matrix=t.attributes.matrix,i.cameraHeading=t.attributes.cameraHeading},this._zoomIn=()=>this._zoomViewModel?.zoomIn(),this._zoomOut=()=>this._zoomViewModel?.zoomOut(),this.addGraphic=(e,t)=>"image-loaded"===this.state&&!this._graphics.graphics.includes(e)&&(this._graphics.graphics.add(e,t),!0),this.addManyGraphics=e=>{if("image-loaded"!==this.state)return!1;const t=e.filter(e=>!this._graphics.graphics.includes(e));return this._graphics.graphics.addMany(t),!0},this.clearGraphics=()=>{this._graphics.graphics.removeAll()},this.clearImage=()=>{this.imageSize=null,this._removeImageSphere()},this.enableAudio=()=>{const{video:e}=this;e&&(e.muted=!1,this.videoMuted=!1)},this.removeGraphic=e=>!("image-loaded"!==this.state||!this._graphics.graphics.includes(e))&&(this._graphics.remove(e),!0),this.removeManyGraphics=e=>{if("image-loaded"!==this.state)return!1;const t=e.filter(e=>this._graphics.graphics.includes(e));return this._graphics.removeMany(t),!0},this.togglePanoramicAudio=()=>{if(this.video){const e=this.video.muted;this.video.muted=!e,this.videoMuted=!e}},this._imageRenderer=new R({map:this._map,viewingMode:"local",camera:{position:j},environment:{atmosphereEnabled:!1,starsEnabled:!1,lighting:{type:"virtual"}},popupEnabled:!1,spatialReference:V.WebMercator,attributionVisible:!1,ui:{components:["zoom"]}})}destroy(){this._imageRenderer.destroy()}initialize(){this.state="initialized",this.addHandles([u(()=>this.videoSource,()=>{this.videoSource&&this.autoLoad&&this._loadWithController()},g),u(()=>this.fov,()=>{this._reloadCamera()},g),u(()=>this.yaw,e=>{this.camera&&(this.camera.heading=e,this._reloadCamera())},g),u(()=>this.pitch,e=>{this.camera&&(this.camera.tilt=e,this._reloadCamera())},g),v(()=>this.imageRenderer.ready,()=>{this._addNavigationHandles(),this._addZoomHandles()},g),u(()=>this.clickAction,e=>{this.removeHandles(E.clickAction),"none"!==e&&this.addHandles(this.imageRenderer.on("click",this._handleImageClick))},g),u(()=>this.video,e=>{if(e instanceof HTMLVideoElement){this._startVideo();const t=async()=>{this.currentTime=Number(e.currentTime.toFixed(2)),e.currentTime&&await this._updateVidFootprint(e.currentTime)};this.removeHandles(E.videoHandles);const i=n(e,"timeupdate",t),o=n(e,"play",()=>this._updateVideoIcon(e.paused)),a=n(e,"pause",()=>this._pauseVideoHandler(e));this.addHandles([i,o,a],E.videoHandles)}},g),u(()=>[this.videoSource,this.oiViewModel?.currentBestFeature,this.closestFeature],()=>{if(!this.videoSource||!this.oiViewModel.currentBestFeature)return;const e=this.closestFeature??this.oiViewModel.currentBestFeature;this.media?this._updateMedia(this.videoSource,e,this.media):this._createMedia(this.videoSource,e)},g)],E.default)}get camera(){return this.imageRenderer.destroying||this.imageRenderer.destroyed?null:this.imageRenderer.camera}set camera(e){!e||this.imageRenderer.destroying||this.imageRenderer.destroyed||(this.imageRenderer.camera=e.clone())}get fov(){return this.camera?.fov}set fov(e){Number.isFinite(e)&&this._zoomViewModel?.zoomTo(e)}get horizonAngles(){return P(this.media)}get hfov(){if(!this.camera||!this.imageRenderer?.ready)return null;const{fov:e}=this.camera,{size:[t,i]}=this.imageRenderer,o=t/i,a=Math.atan(o);return 2*l(Math.atan(Math.tan(m(e/2))*Math.sin(a)))}get imageRenderer(){return this._imageRenderer}get maxHFOV(){const{size:[e,t]}=this.imageRenderer;return this.imageRenderer.ready?L(O,e/t):O}get minHFOV(){const{size:[e,t]}=this.imageRenderer;return this.imageRenderer.ready?L(x,e/t):x}get updating(){return this.updatingHandles.updating}get vfov(){if(!this.camera||!this.imageRenderer?.ready)return null;const{fov:e}=this.camera,{size:[t,i]}=this.imageRenderer,o=t/i,a=Math.atan(o);return 2*l(Math.atan(Math.tan(m(e/2))*Math.cos(a)))}async _loadVideoInternal(e,t){return this.state="image-loading",this.video=document.createElement("video"),this.video.src=e,this.video.addEventListener("loadedmetadata",()=>{this._setVideoDuration(),this.videoLoaded=!0}),this._updateImageSphere(this.video,t)}_pauseVideoHandler(e){this._updateVideoIcon(e.paused)}_setVideoDuration(){const{video:e}=this;e?.duration&&(this.videoDuration=e.duration)}_startVideo(){try{this.enableAudio();const e=this.oiViewModel.currentBestFeature;e&&this.playPanoramicVideoFromSelectedLocation(e)}catch(e){h.getLogger(this).error("oriented-imagery-viewer:video-load",e)}}_reloadCamera(){this.camera=this.camera?.clone()}_removeImageSphere(){this._imageGraphic&&(this._graphics.remove(this._imageGraphic),this._imageGraphic=c(this._imageGraphic)),this.state="ready",this.imageSize=null}_updateCameraHeadingAndTilt(){if(!this._startPosition||!this._targetPosition||!this.camera)return;const e=this.camera.heading+(this._startPosition.x-this._targetPosition.x)/this.imageRenderer.width*this.camera.fov;this.yaw=(e+360)%360;const t=this.camera.tilt-(this._startPosition.y-this._targetPosition.y)/this.imageRenderer.height*this.imageRenderer.camera.tilt;this.pitch=Math.min(179.5,Math.max(.5,t)),this._startPosition=this._targetPosition}async _updateImageSphere(e,t){await p(t);const[i,o,a]=this.horizonAngles??[0,0,0];return this._imageGraphic=G(T({data:e,horizonPitch:i,horizonRoll:o,horizonYaw:a})),this._graphics.add(this._imageGraphic),this.state="image-loaded",_(()=>this.imageRenderer.ready,t).then(()=>{const{size:[e,t]}=this.imageRenderer;this.fov=L(I,e/t)}),this.imageSize=z,this._imageGraphic.geometry}async _updateVidFootprint(e){const t=this.oiViewModel?.featureCache.find(t=>t.attributes.offsetFromStart===Math.floor(e)),{yaw:i,pitch:o,vfov:a,hfov:r}=this,s=!(t?.attributes.offsetFromStart&&a&&r&&i&&o),n=t?.attributes.objectId===this.closestFeature?.attributes.objectId;s||n||(this.closestFeature=t)}_updateVideoIcon(e){this.videoPaused=!!e}async loadVideo(e){return this._removeImageSphere(),this.videoSource?this._loadVideoInternal(this.videoSource,e):F(this.declaredClass,new r(S("panoramic-viewer"),C("PanoramicViewerViewModel","videoSource")))}playPanoramicVideoHandler(){const{video:e}=this;e&&(e.paused?e.play().catch(e=>{h.getLogger(this).error("error playing video",e)}):e.pause())}playPanoramicVideoFromSelectedLocation(e){const t=e.attributes.offsetFromStart;if(t){const e=this.video;e&&(e.currentTime=t,e.play().catch(e=>{h.getLogger(this).error("error playing video",e)}))}}rewindPanoramicVideoHandler(){const{video:e}=this;e&&(e.currentTime=0,e.play().catch(e=>{h.getLogger(this).error("error playing video",e)}))}};e([y()],W.prototype,"_graphics",void 0),e([y()],W.prototype,"_imageGraphic",void 0),e([y()],W.prototype,"_imageRenderer",void 0),e([y()],W.prototype,"_loadController",void 0),e([y()],W.prototype,"_map",void 0),e([y()],W.prototype,"_zoomViewModel",void 0),e([y({type:Boolean})],W.prototype,"autoLoad",void 0),e([y({type:t})],W.prototype,"camera",null),e([D(new d({emit:"emit",hittest:"hittest",none:"none","pixel-location":"pixel-location"}))],W.prototype,"clickAction",void 0),e([y()],W.prototype,"closestFeature",void 0),e([y()],W.prototype,"currentTime",void 0),e([y({type:Number})],W.prototype,"fov",null),e([y()],W.prototype,"horizonAngles",null),e([y({readOnly:!0})],W.prototype,"hfov",null),e([y({readOnly:!0})],W.prototype,"imageRenderer",null),e([y()],W.prototype,"imageSize",void 0),e([y()],W.prototype,"media",void 0),e([y()],W.prototype,"oiViewModel",void 0),e([y()],W.prototype,"videoSource",void 0),e([y()],W.prototype,"videoDuration",void 0),e([y()],W.prototype,"videoLoaded",void 0),e([y()],W.prototype,"videoPaused",void 0),e([y()],W.prototype,"videoMuted",void 0),e([y({readOnly:!0})],W.prototype,"maxHFOV",null),e([y({readOnly:!0})],W.prototype,"minHFOV",null),e([y({type:Number})],W.prototype,"pitch",void 0),e([y()],W.prototype,"state",void 0),e([y()],W.prototype,"updatingHandles",void 0),e([y()],W.prototype,"updating",null),e([y({readOnly:!0})],W.prototype,"vfov",null),e([y()],W.prototype,"video",void 0),e([y({type:Number})],W.prototype,"yaw",void 0),W=e([f("esri.widgets.PanoramicViewer.PanoramicVideoViewerViewModel")],W);const N=W;export{N as default};
2
+ import{__decorate as e}from"tslib";import t from"../../Camera.js";import i from"../../Ground.js";import o from"../../Map.js";import a from"../../core/Collection.js";import r from"../../core/Error.js";import{EventedAccessor as s}from"../../core/Evented.js";import{addEventListener as n}from"../../core/events.js";import{JSONMap as d}from"../../core/jsonMap.js";import h from"../../core/Logger.js";import{rad2deg as l,deg2rad as m}from"../../core/mathUtils.js";import{destroyMaybe as c}from"../../core/maybe.js";import{waitTick as p}from"../../core/promiseUtils.js";import{watch as u,syncAndInitial as g,when as v,whenOnce as y}from"../../core/reactiveUtils.js";import{property as _,subclass as f}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as w}from"../../core/support/UpdatingHandles.js";import V from"../../geometry/SpatialReference.js";import M from"../../layers/GraphicsLayer.js";import{convertSphereVertexToPixelLocation as H}from"../../layers/orientedImagery/transformations/utils.js";import R from"../../views/SceneView.js";import{fixedImageSize as z}from"../OrientedImageryViewer/constants.js";import{createPanoramicMedia as b,extractHorizonAnglesFromMedia as P,logAndThrow as F,getMissingPropertyErrorName as S,getMissingPropertyErrorMessage as C}from"../OrientedImageryViewer/utils.js";import{defaultImageSphereCenter as j,maxPanoramicViewerHFOV as O,minPanoramicViewerHFOV as x,humanBinocularHFOV as I}from"./constants.js";import A from"./PanoramicZoomConditions.js";import k from"./PanoramicZoomViewModel.js";import{findDiagonalFOV as G,meshToGraphic as L,createImageSphere as T}from"./utils.js";import{enumeration as D}from"../../core/accessorSupport/decorators/enumeration.js";const E={default:"default",navigation:"navigation",fovConstraint:"fov-constraint",clickAction:"image-click-action",videoHandles:"video-handles"};let W=class extends s{constructor(e){super(e),this._startPosition=null,this._targetPosition=null,this._graphics=new M({elevationInfo:{mode:"relative-to-ground"}}),this._imageGraphic=null,this._loadController=null,this._map=new o({ground:new i({opacity:0,navigationConstraint:null}),layers:new a([this._graphics])}),this._zoomViewModel=null,this.autoLoad=!1,this.clickAction="none",this.closestFeature=null,this.currentTime=0,this.imageSize=null,this.media=null,this.oiViewModel=null,this.videoSource=null,this.videoDuration=void 0,this.videoLoaded=!1,this.videoPaused=null,this.videoMuted=null,this.pitch=90,this.state="ready",this.updatingHandles=new w,this.video=null,this.yaw=0,this._addNavigationHandles=()=>{this.imageRenderer.basemapTerrain.suspended=!0,this.imageRenderer.constraints.tilt.max=180,this.removeHandles(E.navigation),this.addHandles([this.imageRenderer.on("mouse-wheel",this._handleWheel),this.imageRenderer.on("double-click",this._handleDoubleClick),this.imageRenderer.on("drag",this._handleDrag),this.imageRenderer.on("key-down",e=>{const t=["+","-","Shift","_","=","ArrowUp","ArrowDown","ArrowRight","ArrowLeft"],i=e.key;t.includes(i)&&e.stopPropagation()})],E.navigation)},this._addHFOVHandles=()=>{this.removeHandles(E.fovConstraint),this.addHandles(u(()=>[this.maxHFOV,this.minHFOV],()=>{this._zoomViewModel&&(this._zoomViewModel.panoramicZoomConditions=new A({view:this.imageRenderer,maxFOV:this.maxHFOV,minFOV:this.minHFOV}))},g),E.fovConstraint)},this._addZoomHandles=()=>{this._zoomViewModel=new k({view:this.imageRenderer,panoramicZoomConditions:new A({maxFOV:this.maxHFOV,minFOV:this.minHFOV})});const e=this.imageRenderer.ui.find("zoom");e&&(e.viewModel=this._zoomViewModel),this._addHFOVHandles()},this._cancelLoadWithController=()=>{this._loadController?.abort(),this._loadController=null},this._createMedia=(e,t)=>{this.media=b({type:"video",url:e,matrix:t.attributes.matrix,cameraHeading:t.attributes.cameraHeading})},this._handleDoubleClick=e=>{e.stopPropagation(),e.native.ctrlKey?this._zoomOut():this._zoomIn()},this._handleDrag=e=>{e.stopPropagation();const{action:t,x:i,y:o}=e;switch(t){case"start":this._startPosition=this._targetPosition={x:i,y:o};break;case"update":this._targetPosition={x:i,y:o},this._updateCameraHeadingAndTilt()}},this._handleImageClick=e=>{if("image-loaded"===this.state&&this.imageRenderer.ready)switch(this.clickAction){case"emit":e.stopPropagation(),this.emit("click",e);break;case"hittest":e.stopPropagation(),e.defer(async()=>{const t=await this.imageRenderer.hitTest(e.screenPoint,{include:this._graphics});t.results=t.results.filter(e=>"graphic"===e.type&&e.graphic!==this._imageGraphic),this.emit("hittest-response",t)});break;case"pixel-location":{if(e.stopPropagation(),!this.imageSize||!e.mapPoint)return void this.emit("pixel-location",null);const t=this.horizonAngles,i=H(e.mapPoint,this.imageSize[0],this.imageSize[1],t);this.emit("pixel-location",{...i,spatialReference:V.WebMercator});break}}},this._handleWheel=e=>{const t=e.deltaX??e.native.deltaX;e.stopPropagation(),t>0||e.deltaY>0?this._zoomOut():this._zoomIn()},this._loadWithController=()=>{this._cancelLoadWithController(),this._loadController=new AbortController,this.loadVideo(this._loadController)},this._updateMedia=(e,t,i)=>{i.url=e,i.matrix=t.attributes.matrix,i.cameraHeading=t.attributes.cameraHeading},this._zoomIn=()=>this._zoomViewModel?.zoomIn(),this._zoomOut=()=>this._zoomViewModel?.zoomOut(),this.addGraphic=(e,t)=>"image-loaded"===this.state&&!this._graphics.graphics.includes(e)&&(this._graphics.graphics.add(e,t),!0),this.addManyGraphics=e=>{if("image-loaded"!==this.state)return!1;const t=e.filter(e=>!this._graphics.graphics.includes(e));return this._graphics.graphics.addMany(t),!0},this.clearOverlayGraphics=()=>{const e=Array.from(this.oiViewModel.overlayedMapFeatures.values()).flatMap(e=>e.toArray()),t=[...this.oiViewModel.overlayedCameraLocations.toArray(),...e];t.length&&this.removeManyGraphics(t)},this.clearGraphics=()=>{this._graphics.graphics.removeAll()},this.clearImage=()=>{this.imageSize=null,this._removeImageSphere()},this.enableAudio=()=>{const{video:e}=this;e&&(e.muted=!1,this.videoMuted=!1)},this.removeGraphic=e=>!("image-loaded"!==this.state||!this._graphics.graphics.includes(e))&&(this._graphics.remove(e),!0),this.removeManyGraphics=e=>{if("image-loaded"!==this.state)return!1;const t=e.filter(e=>this._graphics.graphics.includes(e));return this._graphics.removeMany(t),!0},this.togglePanoramicAudio=()=>{if(this.video){const e=this.video.muted;this.video.muted=!e,this.videoMuted=!e}},this._imageRenderer=new R({map:this._map,viewingMode:"local",camera:{position:j},environment:{atmosphereEnabled:!1,starsEnabled:!1,lighting:{type:"virtual"}},popupEnabled:!1,spatialReference:V.WebMercator,attributionVisible:!1,ui:{components:["zoom"]}})}destroy(){this._imageRenderer.destroy()}initialize(){this.state="initialized",this.addHandles([u(()=>this.videoSource,()=>{this.videoSource&&this.autoLoad&&this._loadWithController()},g),u(()=>this.fov,()=>{this._reloadCamera()},g),u(()=>this.yaw,e=>{this.camera&&(this.camera.heading=e,this._reloadCamera())},g),u(()=>this.pitch,e=>{this.camera&&(this.camera.tilt=e,this._reloadCamera())},g),v(()=>this.imageRenderer.ready,()=>{this._addNavigationHandles(),this._addZoomHandles()},g),u(()=>this.clickAction,e=>{this.removeHandles(E.clickAction),"none"!==e&&this.addHandles(this.imageRenderer.on("click",this._handleImageClick))},g),u(()=>this.video,e=>{if(e instanceof HTMLVideoElement){this._startVideo();const t=async()=>{this.currentTime=Number(e.currentTime.toFixed(2)),e.currentTime&&await this._updateVidFootprint(e.currentTime)};this.removeHandles(E.videoHandles);const i=n(e,"timeupdate",t),o=n(e,"play",()=>this._updateVideoIcon(e.paused)),a=n(e,"pause",()=>this._pauseVideoHandler(e));this.addHandles([i,o,a],E.videoHandles)}},g),u(()=>[this.videoSource,this.oiViewModel?.currentBestFeature,this.closestFeature],()=>{if(!this.videoSource||!this.oiViewModel.currentBestFeature)return;const e=this.closestFeature??this.oiViewModel.currentBestFeature;this.media?this._updateMedia(this.videoSource,e,this.media):this._createMedia(this.videoSource,e)},g)],E.default)}get camera(){return this.imageRenderer.destroying||this.imageRenderer.destroyed?null:this.imageRenderer.camera}set camera(e){!e||this.imageRenderer.destroying||this.imageRenderer.destroyed||(this.imageRenderer.camera=e.clone())}get fov(){return this.camera?.fov}set fov(e){Number.isFinite(e)&&this._zoomViewModel?.zoomTo(e)}get horizonAngles(){return P(this.media)}get hfov(){if(!this.camera||!this.imageRenderer?.ready)return null;const{fov:e}=this.camera,{size:[t,i]}=this.imageRenderer,o=t/i,a=Math.atan(o);return 2*l(Math.atan(Math.tan(m(e/2))*Math.sin(a)))}get imageRenderer(){return this._imageRenderer}get maxHFOV(){const{size:[e,t]}=this.imageRenderer;return this.imageRenderer.ready?G(O,e/t):O}get minHFOV(){const{size:[e,t]}=this.imageRenderer;return this.imageRenderer.ready?G(x,e/t):x}get updating(){return this.updatingHandles.updating}get vfov(){if(!this.camera||!this.imageRenderer?.ready)return null;const{fov:e}=this.camera,{size:[t,i]}=this.imageRenderer,o=t/i,a=Math.atan(o);return 2*l(Math.atan(Math.tan(m(e/2))*Math.cos(a)))}async _loadVideoInternal(e,t){return this.state="image-loading",this.video=document.createElement("video"),this.video.src=e,this.video.addEventListener("loadedmetadata",()=>{this._setVideoDuration(),this.videoLoaded=!0}),this._updateImageSphere(this.video,t)}_pauseVideoHandler(e){this._updateVideoIcon(e.paused)}_setVideoDuration(){const{video:e}=this;e?.duration&&(this.videoDuration=e.duration)}_startVideo(){try{this.enableAudio();const e=this.oiViewModel.currentBestFeature;e&&this.playPanoramicVideoFromSelectedLocation(e)}catch(e){h.getLogger(this).error("oriented-imagery-viewer:video-load",e)}}_reloadCamera(){this.camera=this.camera?.clone()}_removeImageSphere(){this._imageGraphic&&(this._graphics.remove(this._imageGraphic),this._imageGraphic=c(this._imageGraphic)),this.state="ready",this.imageSize=null}_updateCameraHeadingAndTilt(){if(!this._startPosition||!this._targetPosition||!this.camera)return;const e=this.camera.heading+(this._startPosition.x-this._targetPosition.x)/this.imageRenderer.width*this.camera.fov;this.yaw=(e+360)%360;const t=this.camera.tilt-(this._startPosition.y-this._targetPosition.y)/this.imageRenderer.height*this.imageRenderer.camera.tilt;this.pitch=Math.min(179.5,Math.max(.5,t)),this._startPosition=this._targetPosition}async _updateImageSphere(e,t){await p(t);const[i,o,a]=this.horizonAngles??[0,0,0];return this._imageGraphic=L(T({data:e,horizonPitch:i,horizonRoll:o,horizonYaw:a})),this._graphics.add(this._imageGraphic),this.state="image-loaded",y(()=>this.imageRenderer.ready,t).then(()=>{const{size:[e,t]}=this.imageRenderer;this.fov=G(I,e/t)}),this.imageSize=z,this._imageGraphic.geometry}async _updateVidFootprint(e){const t=this.oiViewModel?.featureCache.find(t=>t.attributes.offsetFromStart===Math.floor(e)),{yaw:i,pitch:o,vfov:a,hfov:r}=this,s=!(t?.attributes.offsetFromStart&&a&&r&&i&&o),n=t?.attributes.objectId===this.closestFeature?.attributes.objectId;s||n||(this.closestFeature=t)}_updateVideoIcon(e){this.videoPaused=e,e||(this.clearOverlayGraphics(),this.oiViewModel.mapImageConversionToolState&&this.oiViewModel.setMapImageConversionToolState(!1))}async loadVideo(e){return this._removeImageSphere(),this.videoSource?this._loadVideoInternal(this.videoSource,e):F(this.declaredClass,new r(S("panoramic-viewer"),C("PanoramicViewerViewModel","videoSource")))}playPanoramicVideoHandler(){const{video:e}=this;e&&(e.paused?e.play().catch(e=>{h.getLogger(this).error("error playing video",e)}):e.pause())}playPanoramicVideoFromSelectedLocation(e){const t=e.attributes.offsetFromStart;if(t){const e=this.video;e&&(e.currentTime=t,e.play().catch(e=>{h.getLogger(this).error("error playing video",e)}))}}rewindPanoramicVideoHandler(){const{video:e}=this;e&&(e.currentTime=0,e.play().catch(e=>{h.getLogger(this).error("error playing video",e)}))}};e([_()],W.prototype,"_graphics",void 0),e([_()],W.prototype,"_imageGraphic",void 0),e([_()],W.prototype,"_imageRenderer",void 0),e([_()],W.prototype,"_loadController",void 0),e([_()],W.prototype,"_map",void 0),e([_()],W.prototype,"_zoomViewModel",void 0),e([_({type:Boolean})],W.prototype,"autoLoad",void 0),e([_({type:t})],W.prototype,"camera",null),e([D(new d({emit:"emit",hittest:"hittest",none:"none","pixel-location":"pixel-location"}))],W.prototype,"clickAction",void 0),e([_()],W.prototype,"closestFeature",void 0),e([_()],W.prototype,"currentTime",void 0),e([_({type:Number})],W.prototype,"fov",null),e([_()],W.prototype,"horizonAngles",null),e([_({readOnly:!0})],W.prototype,"hfov",null),e([_({readOnly:!0})],W.prototype,"imageRenderer",null),e([_()],W.prototype,"imageSize",void 0),e([_()],W.prototype,"media",void 0),e([_()],W.prototype,"oiViewModel",void 0),e([_()],W.prototype,"videoSource",void 0),e([_()],W.prototype,"videoDuration",void 0),e([_()],W.prototype,"videoLoaded",void 0),e([_()],W.prototype,"videoPaused",void 0),e([_()],W.prototype,"videoMuted",void 0),e([_({readOnly:!0})],W.prototype,"maxHFOV",null),e([_({readOnly:!0})],W.prototype,"minHFOV",null),e([_({type:Number})],W.prototype,"pitch",void 0),e([_()],W.prototype,"state",void 0),e([_()],W.prototype,"updatingHandles",void 0),e([_()],W.prototype,"updating",null),e([_({readOnly:!0})],W.prototype,"vfov",null),e([_()],W.prototype,"video",void 0),e([_({type:Number})],W.prototype,"yaw",void 0),W=e([f("esri.widgets.PanoramicViewer.PanoramicVideoViewerViewModel")],W);const N=W;export{N as default};