@arcgis/core 4.28.0-next.20230719 → 4.28.0-next.20230721

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 (334) hide show
  1. package/Color.js +1 -1
  2. package/analysis/AreaMeasurementAnalysis.js +1 -1
  3. package/arcade/arcadeCompiler.js +1 -1
  4. package/arcade/featureSetUtils.js +1 -1
  5. package/arcade/featureset/actions/Top.js +1 -1
  6. package/arcade/featureset/sources/FeatureLayerDynamic.js +1 -1
  7. package/arcade/featureset/support/FeatureSet.js +1 -1
  8. package/arcade/featureset/support/FeatureSetIterator.js +1 -1
  9. package/arcade/functions/convertdirection.js +1 -1
  10. package/arcade/functions/featuresetbase.js +1 -1
  11. package/arcade/functions/geomasync.js +1 -1
  12. package/arcade/functions/geomsync.js +1 -1
  13. package/arcade/lib/comment-handler.js +1 -1
  14. package/arcade/lib/parser.js +1 -1
  15. package/arcade/lib/scanner.js +1 -1
  16. package/assets/esri/core/workers/RemoteClient.js +1 -1
  17. package/assets/esri/core/workers/chunks/{75c28da8d0b02d612d69.js → 040b3fc9c9c0736dd893.js} +1 -1
  18. package/assets/esri/core/workers/chunks/0652f6a8d5221e978033.js +1 -0
  19. package/assets/esri/core/workers/chunks/{e579ca7d4c1387e17305.js → 092fda62b6f62c2e4869.js} +2 -2
  20. package/assets/esri/core/workers/chunks/{57e0ad037188bd2997e7.js → 0af18a96cbd4e2d35436.js} +1 -1
  21. package/assets/esri/core/workers/chunks/0b5eeec0f66c87a46a0c.js +1 -0
  22. package/assets/esri/core/workers/chunks/{68e568b67b6fb34393db.js → 0cad2b991d0d0fd07846.js} +1 -1
  23. package/assets/esri/core/workers/chunks/0dccbc6c2559fdc0c2ad.js +1 -0
  24. package/assets/esri/core/workers/chunks/256a82f6f6e1405fbcc6.js +1 -0
  25. package/assets/esri/core/workers/chunks/{bb9213899049e1db90da.js → 2c57c9bd71637c5bed8a.js} +1 -1
  26. package/assets/esri/core/workers/chunks/2cdbabcbfe32286ec78d.js +1 -0
  27. package/assets/esri/core/workers/chunks/{2b1c83453a862e01954b.js → 2d9d80b2d0042a9c09fb.js} +1 -1
  28. package/assets/esri/core/workers/chunks/2f9aec2238ff6cb99e09.js +1 -0
  29. package/assets/esri/core/workers/chunks/{55705b1bbac91d7db0e7.js → 32d940b2c891bf6ff9a2.js} +1 -1
  30. package/assets/esri/core/workers/chunks/3a0349c79551a03c2d8e.js +1 -0
  31. package/assets/esri/core/workers/chunks/{7dbd3e6406fb3e3a1a8f.js → 3cf748c025f3936c1cb2.js} +1 -1
  32. package/assets/esri/core/workers/chunks/4481d1103363434f16da.js +1 -0
  33. package/assets/esri/core/workers/chunks/58e11ca7c6e27e0ece7e.js +1 -0
  34. package/assets/esri/core/workers/chunks/5ae325e6a795c72eac6c.js +1 -0
  35. package/assets/esri/core/workers/chunks/5e4dde2886a1027b4b96.js +1 -0
  36. package/assets/esri/core/workers/chunks/{357e0381b6d767585576.js → 675e16d99758e67e5f51.js} +1 -1
  37. package/assets/esri/core/workers/chunks/726bb661b9e6998572e7.js +1 -0
  38. package/assets/esri/core/workers/chunks/730eb7e5f617fdab4f10.js +1 -0
  39. package/assets/esri/core/workers/chunks/{5a2e6bed9431cf4f42b1.js → 740dc67038f554431f1b.js} +1 -1
  40. package/assets/esri/core/workers/chunks/7cab61c9e09580520990.js +1 -0
  41. package/assets/esri/core/workers/chunks/{09178454bda15bb7929a.js → 7fbdfd1527582c52f9b6.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{26546aa98a338051df66.js → 807742f38885fa90b4fe.js} +1 -1
  43. package/assets/esri/core/workers/chunks/82dfbc175b52c7a10475.js +1 -0
  44. package/assets/esri/core/workers/chunks/870a05451e074b58f19a.js +1 -0
  45. package/assets/esri/core/workers/chunks/88038ad401e5ec02f4d3.js +1 -0
  46. package/assets/esri/core/workers/chunks/88d63d1e56732d148f67.js +1 -0
  47. package/assets/esri/core/workers/chunks/8b72cd9340e8a44358ac.js +1 -0
  48. package/assets/esri/core/workers/chunks/8c5a8c1dfb086069bb06.js +1 -0
  49. package/assets/esri/core/workers/chunks/99a5a434e0bad48c7a5c.js +1 -0
  50. package/assets/esri/core/workers/chunks/9a5916c66dad91d01d5b.js +1 -0
  51. package/assets/esri/core/workers/chunks/9c133fd8c1fbd0295b86.js +1 -0
  52. package/assets/esri/core/workers/chunks/9cddb504079d396779ea.js +1 -0
  53. package/assets/esri/core/workers/chunks/a3a1d4f32e518e97d071.js +1 -0
  54. package/assets/esri/core/workers/chunks/{9548aa449fe3a300c015.js → a4fa40dc77e116c954ac.js} +1 -1
  55. package/assets/esri/core/workers/chunks/a54ec9929a7db879d5db.js +1 -0
  56. package/assets/esri/core/workers/chunks/afc5b84693757fda2bc8.js +1 -0
  57. package/assets/esri/core/workers/chunks/{591b5c277cfd3a4101a4.js → b08f2a4aa94087c6c367.js} +1 -1
  58. package/assets/esri/core/workers/chunks/c0e12f6a7bb2360e4c21.js +1 -0
  59. package/assets/esri/core/workers/chunks/c8e656cd470a17f538e9.js +1 -0
  60. package/assets/esri/core/workers/chunks/d0e203405f95e14b1399.js +1 -0
  61. package/assets/esri/core/workers/chunks/d61506497275bafba384.js +1 -0
  62. package/assets/esri/core/workers/chunks/{ec72f492f24e67e008ae.js → d8e58dc14d3495f0830c.js} +1 -1
  63. package/assets/esri/core/workers/chunks/db9a303ee0468d018def.js +1 -0
  64. package/assets/esri/core/workers/chunks/ddc393a012588f799f42.js +1 -0
  65. package/assets/esri/core/workers/chunks/de3baa85b1639c25458d.js +1 -0
  66. package/assets/esri/core/workers/chunks/e66cea26064ba8353af0.js +1 -0
  67. package/assets/esri/core/workers/chunks/ea478f2f4a19463e13fd.js +1 -0
  68. package/assets/esri/core/workers/chunks/eba197e45507f56f3ed0.js +1 -0
  69. package/assets/esri/core/workers/chunks/ebd006fcd568a7731115.js +1 -0
  70. package/assets/esri/core/workers/chunks/ef9a9a7d66d818720e20.js +1 -0
  71. package/assets/esri/core/workers/chunks/f3b458f55236566c940b.js +1 -0
  72. package/assets/esri/core/workers/chunks/fd0a91b9e0216cc269c3.js +1 -0
  73. package/assets/esri/core/workers/chunks/{a4fe220a912b1f428e49.js → fdd6403a8390d629392b.js} +1 -1
  74. package/assets/esri/themes/base/widgets/_Directions.scss +13 -7
  75. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +108 -4
  76. package/assets/esri/themes/dark/main.css +1 -1
  77. package/assets/esri/themes/light/main.css +1 -1
  78. package/assets/esri/themes/light/view.css +1 -1
  79. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer.json +1 -1
  80. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_en.json +1 -1
  81. package/chunks/ComponentShader.glsl.js +1 -1
  82. package/chunks/LineSeries.js +1 -1
  83. package/chunks/Theme.js +1 -1
  84. package/chunks/array.js +1 -1
  85. package/chunks/chartUtilsAm5.js +1 -1
  86. package/core/Collection.js +1 -1
  87. package/core/accessorSupport/decorators/subclass.js +1 -1
  88. package/core/accessorSupport/ensureType.js +1 -1
  89. package/core/accessorSupport/get.js +1 -1
  90. package/core/accessorSupport/tracking.js +1 -1
  91. package/core/accessorSupport/utils.js +1 -1
  92. package/core/libs/rbush/PooledRBush.js +1 -1
  93. package/core/urlUtils.js +1 -1
  94. package/geometry/GeometryCursor.js +1 -1
  95. package/geometry/support/TileClipper.js +1 -1
  96. package/geometry/support/geodesicUtils.js +1 -1
  97. package/interfaces.d.ts +9 -3
  98. package/layers/BuildingSceneLayer.js +1 -1
  99. package/layers/IntegratedMeshLayer.js +1 -1
  100. package/layers/LinkChartLayer.js +1 -1
  101. package/layers/PointCloudLayer.js +1 -1
  102. package/layers/SceneLayer.js +1 -1
  103. package/layers/VectorTileLayer.js +1 -1
  104. package/layers/VoxelLayer.js +1 -1
  105. package/layers/VoxelWasmPerSceneView.js +1 -1
  106. package/layers/WCSLayer.js +1 -1
  107. package/layers/effects/EffectView.js +1 -1
  108. package/layers/graphics/sources/geojson/geojson.js +1 -1
  109. package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
  110. package/layers/mixins/ArcGISCachedService.js +1 -1
  111. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  112. package/layers/orientedImagery/core/bestImageUtils.js +1 -1
  113. package/layers/orientedImagery/queries.js +1 -1
  114. package/layers/save/featureLayerUtils.js +1 -1
  115. package/layers/support/ElevationQuery.js +1 -1
  116. package/layers/support/MultidimensionalSubset.js +1 -1
  117. package/layers/support/Sublayer.js +1 -1
  118. package/layers/support/TileInfo.js +1 -1
  119. package/layers/support/TileInfoTilemapCache.js +1 -1
  120. package/layers/support/TilemapCache.js +1 -1
  121. package/layers/support/rasterDatasets/multidimensionalUtils.js +1 -1
  122. package/layers/support/rasterDatasets/pamParser.js +1 -1
  123. package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
  124. package/layers/support/rasterFormats/Raw.js +1 -1
  125. package/layers/support/rasterFormats/TiffDecoder.js +1 -1
  126. package/layers/support/rasterFunctions/ExtractBandFunction.js +1 -1
  127. package/layers/support/rasterFunctions/colormaps.js +1 -1
  128. package/layers/support/rasterFunctions/pixelUtils.js +1 -1
  129. package/layers/support/rasterFunctions/rasterProjectionHelper.js +1 -1
  130. package/layers/video/VideoController.js +1 -1
  131. package/layers/voxel/VoxelDimension.js +1 -1
  132. package/layers/voxel/VoxelTransferFunctionStyle.js +1 -1
  133. package/layers/voxel/VoxelVolume.js +1 -1
  134. package/package.json +1 -1
  135. package/renderers/support/RasterSymbolizer.js +1 -1
  136. package/renderers/support/colorRampUtils.js +1 -1
  137. package/renderers/visualVariables/support/visualVariableUtils.js +1 -1
  138. package/rest/query/operations/pbfDehydratedFeatureSet.js +1 -1
  139. package/rest/query/operations/pbfJSONFeatureSet.js +1 -1
  140. package/rest/support/generateRendererUtils.js +1 -1
  141. package/smartMapping/raster/renderers/classBreaks.js +1 -1
  142. package/smartMapping/renderers/color.js +1 -1
  143. package/smartMapping/renderers/support/utils.js +1 -1
  144. package/smartMapping/renderers/type.js +1 -1
  145. package/smartMapping/renderers/univariateColorSize.js +1 -1
  146. package/smartMapping/support/adapters/support/utils.js +1 -1
  147. package/statistics/utils.js +1 -1
  148. package/support/elevationInfoUtils.js +1 -1
  149. package/support/revision.js +1 -1
  150. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  151. package/symbols/cim/GeometryWalker.js +1 -1
  152. package/symbols/cim/cimAnalyzer.js +1 -1
  153. package/symbols/cim/effects/EffectArrow.js +1 -1
  154. package/symbols/cim/effects/EffectControlMeasureLine.js +1 -1
  155. package/symbols/support/symbolUtils.js +1 -1
  156. package/views/2d/constraints/ZoomConstraint.js +1 -1
  157. package/views/2d/engine/flow/dataUtils.js +1 -1
  158. package/views/2d/engine/flow/utils.js +1 -1
  159. package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
  160. package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
  161. package/views/2d/engine/vectorTiles/expression/expression.js +1 -1
  162. package/views/2d/engine/vectorTiles/style/VectorTileSource.js +1 -1
  163. package/views/2d/engine/vectorTiles/tileInfoUtils.js +1 -1
  164. package/views/2d/engine/webgl/TurboLine.js +1 -1
  165. package/views/2d/engine/webgl/mesh/MeshData.js +1 -1
  166. package/views/2d/engine/webgl/mesh/templates/shapingUtils.js +1 -1
  167. package/views/2d/interactive/editingTools/ControlPointsTransformTool.js +1 -1
  168. package/views/2d/interactive/editingTools/draw/DrawGraphicTool2D.js +1 -1
  169. package/views/2d/layers/BaseLayerView2D.js +1 -1
  170. package/views/2d/layers/BaseLayerViewGL2D.js +1 -1
  171. package/views/2d/layers/BitmapTileLayerView2D.js +1 -1
  172. package/views/2d/layers/MediaLayerView2D.js +1 -1
  173. package/views/2d/layers/TileLayerView2D.js +1 -1
  174. package/views/2d/layers/VectorTileLayerView2D.js +1 -1
  175. package/views/2d/layers/WMTSLayerView2D.js +1 -1
  176. package/views/2d/layers/features/support/rendererUtils.js +1 -1
  177. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  178. package/views/2d/layers/support/vectorTileDebugUtils.js +5 -0
  179. package/views/2d/tiling/TileInfoView.js +1 -1
  180. package/views/2d/tiling/TileInfoViewPOT.js +1 -1
  181. package/views/2d/tiling/TileQueue.js +1 -1
  182. package/views/2d/tiling.js +1 -1
  183. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  184. package/views/3d/environment/ChapmanAtmosphere.js +1 -1
  185. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  186. package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
  187. package/views/3d/interactive/editingTools/moveGraphic/GraphicMoveTool.js +1 -1
  188. package/views/3d/interactive/visualElements/LaserlineVisualElement.js +1 -1
  189. package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
  190. package/views/3d/layers/TiledLayerView3D.js +1 -1
  191. package/views/3d/layers/VectorTileLayerView3D.js +1 -1
  192. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  193. package/views/3d/layers/graphics/Labeler.js +1 -1
  194. package/views/3d/layers/i3s/PointRenderer.js +1 -1
  195. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  196. package/views/3d/layers/support/featureReference.js +1 -1
  197. package/views/3d/support/LaserLineRenderer.js +1 -1
  198. package/views/3d/terrain/Overlay.js +1 -1
  199. package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
  200. package/views/3d/terrain/OverlayManager.js +1 -1
  201. package/views/3d/terrain/OverlayRenderTarget.js +1 -1
  202. package/views/3d/terrain/OverlayRenderer.js +1 -1
  203. package/views/3d/terrain/TerrainRenderer.js +1 -1
  204. package/views/3d/terrain/TerrainSurface.js +1 -1
  205. package/views/3d/terrain/TileCompositor.js +1 -1
  206. package/views/3d/terrain/TileRenderer.js +1 -1
  207. package/views/3d/terrain/TilingScheme.js +1 -1
  208. package/views/3d/webgl-engine/collections/Component/ComponentData.js +1 -1
  209. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  210. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js +1 -1
  211. package/views/3d/webgl-engine/core/shaderModules/interfaces.js +1 -1
  212. package/views/3d/webgl-engine/effects/RenderPlugin.js +5 -0
  213. package/views/3d/webgl-engine/effects/RenderPluginManager.js +5 -0
  214. package/views/3d/webgl-engine/effects/ScreenSpaceGeometry.js +5 -0
  215. package/views/3d/webgl-engine/effects/SmaaRenderPass.js +5 -0
  216. package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
  217. package/views/3d/webgl-engine/lib/GLMaterials.js +1 -1
  218. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  219. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  220. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  221. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  222. package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
  223. package/views/3d/webgl-engine/lib/SSAOHelper.js +1 -1
  224. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  225. package/views/3d/webgl-engine/lib/WebGLLayer.js +1 -1
  226. package/views/3d/webgl-engine/lib/lodRendering/LodComponentData.js +1 -1
  227. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  228. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  229. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  230. package/views/3d/webgl-engine/parts/requireUtils.js +1 -1
  231. package/views/3d/webgl-engine/statistics/RendererPerformanceInfo.js +1 -1
  232. package/views/LayerViewManager.js +1 -1
  233. package/views/MapView.js +1 -1
  234. package/views/SceneView.js +1 -1
  235. package/views/animation/pointToPoint/Path.js +1 -1
  236. package/views/draw/DrawOperation.js +1 -1
  237. package/views/draw/support/Reshape.js +1 -1
  238. package/views/draw/support/createUtils.js +1 -1
  239. package/views/interactive/SegmentLabels.js +1 -1
  240. package/views/interactive/editGeometry/EditGeometry.js +1 -1
  241. package/views/interactive/editGeometry/EditGeometryOperations.js +1 -1
  242. package/views/interactive/editGeometry/operations/UndoGroup.js +1 -1
  243. package/views/layers/GroupLayerView.js +1 -1
  244. package/views/layers/ImageryTileLayerView.js +1 -1
  245. package/views/webgl/ProgramCache.js +1 -1
  246. package/webscene/spec-certification/api.js +1 -1
  247. package/webscene/spec-certification/spec.js +1 -1
  248. package/webscene/spec-certification/utils.js +1 -1
  249. package/widgets/BuildingExplorer/BuildingNumericFilterViewModel.js +1 -1
  250. package/widgets/BuildingExplorer/BuildingPhase.js +1 -1
  251. package/widgets/BuildingExplorer/support/validation.js +1 -1
  252. package/widgets/Directions/support/resources.js +1 -1
  253. package/widgets/Directions.js +1 -1
  254. package/widgets/Editor/EditorViewModel.js +1 -1
  255. package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
  256. package/widgets/Editor/Workflow.js +1 -1
  257. package/widgets/Editor.js +1 -1
  258. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  259. package/widgets/FeatureForm/FieldInput.js +1 -1
  260. package/widgets/FeatureForm/FormExpressionsManager.js +1 -1
  261. package/widgets/FeatureForm.js +1 -1
  262. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
  263. package/widgets/FeatureTemplates.js +1 -1
  264. package/widgets/Features.js +1 -1
  265. package/widgets/Histogram/HistogramViewModel.js +1 -1
  266. package/widgets/HistogramRangeSlider/HistogramRangeSliderViewModel.js +1 -1
  267. package/widgets/Legend/styles/Card.js +1 -1
  268. package/widgets/Legend/styles/support/univariateUtils.js +1 -1
  269. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  270. package/widgets/Legend/support/colorRampUtils.js +1 -1
  271. package/widgets/Legend/support/sizeRampUtils.js +1 -1
  272. package/widgets/Legend/support/utils.js +1 -1
  273. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  274. package/widgets/OrientedImageryViewer/arcUtils.js +5 -0
  275. package/widgets/OrientedImageryViewer/constants.js +5 -0
  276. package/widgets/OrientedImageryViewer/utils.js +5 -0
  277. package/widgets/OrientedImageryViewer.js +1 -1
  278. package/widgets/Popup/PopupViewModel.js +1 -1
  279. package/widgets/Popup.js +1 -1
  280. package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.js +1 -1
  281. package/widgets/ScaleRangeSlider/ScaleRanges.js +1 -1
  282. package/widgets/ValuePicker/ValuePickerSlider.js +1 -1
  283. package/widgets/smartMapping/ClassedSizeSlider.js +1 -1
  284. package/widgets/smartMapping/ColorSizeSlider.js +1 -1
  285. package/widgets/smartMapping/HeatmapSlider/HeatmapSliderViewModel.js +1 -1
  286. package/widgets/smartMapping/SizeSlider.js +1 -1
  287. package/widgets/smartMapping/SmartMappingPrimaryHandleSliderViewModel.js +1 -1
  288. package/widgets/smartMapping/SmartMappingSliderViewModel.js +1 -1
  289. package/widgets/support/ColorPicker.js +1 -1
  290. package/assets/esri/core/workers/chunks/07bb40162d97d098bc19.js +0 -1
  291. package/assets/esri/core/workers/chunks/0a18317566c1fcb68422.js +0 -1
  292. package/assets/esri/core/workers/chunks/0de65e03db8c611af9fb.js +0 -1
  293. package/assets/esri/core/workers/chunks/1a60d23a92bcf91dbb22.js +0 -1
  294. package/assets/esri/core/workers/chunks/205a0b34b698d5329854.js +0 -1
  295. package/assets/esri/core/workers/chunks/2158a6ec165503ec4711.js +0 -1
  296. package/assets/esri/core/workers/chunks/25211d5904ee9d5f4a9d.js +0 -1
  297. package/assets/esri/core/workers/chunks/26b12d1ea713c1e07701.js +0 -1
  298. package/assets/esri/core/workers/chunks/2bfa7ee324c32a56b0d3.js +0 -1
  299. package/assets/esri/core/workers/chunks/370a992bd308bd806f48.js +0 -1
  300. package/assets/esri/core/workers/chunks/3892650ecc61322f6f7f.js +0 -1
  301. package/assets/esri/core/workers/chunks/38d168e9a29c40de179d.js +0 -1
  302. package/assets/esri/core/workers/chunks/4bf1c6c7e0a3051dc797.js +0 -1
  303. package/assets/esri/core/workers/chunks/524156c3f5383c2dd0e3.js +0 -1
  304. package/assets/esri/core/workers/chunks/59666ecb7c2c1f5a13b2.js +0 -1
  305. package/assets/esri/core/workers/chunks/5ae98195bdfd7dc0c44e.js +0 -1
  306. package/assets/esri/core/workers/chunks/5c005c9514354c77ec27.js +0 -1
  307. package/assets/esri/core/workers/chunks/5d46fd68878c973bcfab.js +0 -1
  308. package/assets/esri/core/workers/chunks/5dd23092c8a8a5ccd5d0.js +0 -1
  309. package/assets/esri/core/workers/chunks/620ec5c75561183d3d73.js +0 -1
  310. package/assets/esri/core/workers/chunks/68512670816f59c0e6a5.js +0 -1
  311. package/assets/esri/core/workers/chunks/6c7374ebc18b46b3480a.js +0 -1
  312. package/assets/esri/core/workers/chunks/75ba2af92da232067adb.js +0 -1
  313. package/assets/esri/core/workers/chunks/7c1f0598a016516dcec3.js +0 -1
  314. package/assets/esri/core/workers/chunks/8dcec8d1b670d2b7ea2b.js +0 -1
  315. package/assets/esri/core/workers/chunks/8e07dfb6fc2673b640cb.js +0 -1
  316. package/assets/esri/core/workers/chunks/9008dde941cb3973de20.js +0 -1
  317. package/assets/esri/core/workers/chunks/9050b167355588b7003d.js +0 -1
  318. package/assets/esri/core/workers/chunks/9230d68799f0b0b9ef36.js +0 -1
  319. package/assets/esri/core/workers/chunks/94d124453e90a5ab1706.js +0 -1
  320. package/assets/esri/core/workers/chunks/9ca312af9c056b1efe40.js +0 -1
  321. package/assets/esri/core/workers/chunks/b0a57718a0765d1c8df0.js +0 -1
  322. package/assets/esri/core/workers/chunks/b431b81a7bf45dd527da.js +0 -1
  323. package/assets/esri/core/workers/chunks/bda311ad48efdb265939.js +0 -1
  324. package/assets/esri/core/workers/chunks/da547c3cabe4a89c3ce6.js +0 -1
  325. package/assets/esri/core/workers/chunks/dd295fa57b45b7ec4ec5.js +0 -1
  326. package/assets/esri/core/workers/chunks/eb92aa372e706ce5a5eb.js +0 -1
  327. package/assets/esri/core/workers/chunks/f553b464e969d45bf451.js +0 -1
  328. package/assets/esri/core/workers/chunks/f5865294983eb160de8c.js +0 -1
  329. package/assets/esri/core/workers/chunks/fdb7b1fbdb6fe091ad83.js +0 -1
  330. package/assets/esri/core/workers/chunks/fe8544bf3bbbacd74b8b.js +0 -1
  331. package/views/2d/tiling/PagedTileQueue.js +0 -5
  332. package/views/3d/webgl-engine/lib/RenderPluginManager.js +0 -5
  333. package/views/3d/webgl-engine/lib/SmaaRenderPass.js +0 -5
  334. /package/views/3d/webgl-engine/{lib → effects}/SmaaRenderPassData.js +0 -0
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import"../../../intl.js";import{addTokenParameter as l}from"../../../kernel.js";import s from"../../../request.js";import"../../../symbols.js";import r from"../../../core/Accessor.js";import{isSome as i}from"../../../core/arrayUtils.js";import n from"../../../core/Collection.js";import{JSONMap as a}from"../../../core/jsonMap.js";import o from"../../../core/Logger.js";import{debounce as u}from"../../../core/promiseUtils.js";import{on as c,watch as d,whenOnce as y,initial as h}from"../../../core/reactiveUtils.js";import{px2pt as m}from"../../../core/screenUtils.js";import{addQueryParameters as p}from"../../../core/urlUtils.js";import{property as f}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/has.js";import{subclass as g}from"../../../core/accessorSupport/decorators/subclass.js";import{OriginId as b}from"../../../core/accessorSupport/PropertyOrigin.js";import{EffectView as S}from"../../../layers/effects/EffectView.js";import{effectFunctionsFromJSON as _}from"../../../layers/effects/jsonUtils.js";import{ExportImageParameters as L}from"../../../layers/support/ExportImageParameters.js";import{isDateField as w}from"../../../layers/support/fieldUtils.js";import{isFeatureLayer as v}from"../../../layers/support/layerUtils.js";import{getPixelValueRange as E}from"../../../layers/support/rasterFormats/pixelRangeUtils.js";import{fromJSON as C}from"../../../renderers/support/jsonUtils.js";import{isSupportedRenderer3D as I}from"../../../renderers/support/rendererConversion.js";import R from"../../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{applyCIMSymbolColor as F}from"../../../symbols/support/cimSymbolUtils.js";import{SymbolSizeDefaults as V}from"../../../symbols/support/previewUtils.js";import{renderSymbol as T}from"../../../symbols/support/renderUtils.js";import{renderColorRampPreviewHTML as z,renderDotDensityPreviewHTML as x,renderPieChartPreviewHTML as j,renderPreviewHTML as D}from"../../../symbols/support/symbolUtils.js";import{isVolumetricSymbol as P}from"../../../symbols/support/utils.js";import{getClusterSizeVariable as O}from"./clusterUtils.js";import{getColorFromPointCloudStops as A,getRampStopsForPointCloud as M,getStrectchRampStops as B,getRampStops as U}from"./colorRampUtils.js";import{getHeatmapRampStops as k}from"./heatmapRampUtils.js";import{getRotationAngleForFocus as N,getRelationshipRampElement as q}from"./relationshipRampUtils.js";import{getRampStops as H,REAL_WORLD_MAX_SIZE as $,REAL_WORLD_MIN_SIZE as W}from"./sizeRampUtils.js";import{SPECIAL_CHARS_LESS_THAN as G,SPECIAL_CHARS_GREATER_THAN as J,getSymbolForFlowRenderer as Q,isRasterBandStatistics as K,getMedianColor as X,RGB_IMG_SOURCE as Y}from"./utils.js";import{formatNumberLabel as Z}from"../../smartMapping/support/utils.js";import ee from"../../../symbols/SimpleMarkerSymbol.js";import te from"../../../symbols/SimpleFillSymbol.js";import{fetchMessageBundle as le}from"../../../intl/messages.js";import{substitute as se}from"../../../intl/substitute.js";const re="https://utility.arcgis.com/sharing/tools/legend",ie="esri.layers.ImageryLayer",ne="esri.layers.ImageryTileLayer",ae="esri.layers.WCSLayer",oe=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i,ue=new a({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryMultiPatch:"multipatch"}),ce=new ee({size:6,outline:{color:[128,128,128,.5],width:.5}}),de=new te({style:"solid"});function ye(e){return"flow"===e.type}function he(e){return"vector-field"===e.type}function me(e){return"raster-colormap"===e.type}function pe(e){return"raster-stretch"===e.type}function fe(e){return"raster-shaded-relief"===e.type}function ge(e){return"esri.renderers.SimpleRenderer"===e.declaredClass}function be(e){return"esri.renderers.ClassBreaksRenderer"===e.declaredClass}function Se(e){return"esri.renderers.UniqueValueRenderer"===e.declaredClass}function _e(e){return"esri.renderers.HeatmapRenderer"===e.declaredClass}function Le(e){return ve(e)||Ee(e)||Ce(e)||we(e)}function we(e){return"esri.renderers.PointCloudRGBRenderer"===e.declaredClass}function ve(e){return"esri.renderers.PointCloudClassBreaksRenderer"===e.declaredClass}function Ee(e){return"esri.renderers.PointCloudStretchRenderer"===e.declaredClass}function Ce(e){return"esri.renderers.PointCloudUniqueValueRenderer"===e.declaredClass}function Ie(e){return"esri.renderers.DotDensityRenderer"===e.declaredClass}function Re(e){return"esri.renderers.PieChartRenderer"===e.declaredClass}function Fe(e,t){return ge(e)||be(e)||Se(e)||_e(e)||Ie(e)||Re(e)?"2d"===t.type||I(e):pe(e)||me(e)||fe(e)||ve(e)||Ee(e)||Ce(e)||he(e)||ye(e)}function Ve(e){return"esri.layers.BuildingSceneLayer"===e.declaredClass}function Te(e){return"esri.layers.SubtypeGroupLayer"===e.declaredClass}function ze(e){return"esri.layers.VoxelLayer"===e.declaredClass}function xe(e){return"esri.layers.WMSLayer"===e.declaredClass}function je(e){return"esri.layers.WMTSLayer"===e.declaredClass}function De(e){return"esri.layers.MapImageLayer"===e.declaredClass}function Pe(e){return"esri.layers.TileLayer"===e.declaredClass}function Oe(e){return e.declaredClass===ie}function Ae(e){return e.declaredClass===ne}function Me(e){return e.declaredClass===ae}function Be(e){return"stretch-ramp"===e.type}function Ue(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type}function ke(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type&&"above-and-below"===t?.univariateTheme}function Ne(e){return"sublayers"in e}async function qe(e,t){const l=await le("esri/widgets/Legend/t9n/Legend");return"previewTemplateAriaLabel"!==e||t||(e="previewAriaLabel"),se(l[e],{label:t})}const He=new ee({style:"path",path:"M10,5 L5,0 0,5 M5,0 L5,15",size:15,outline:{width:1,color:[85,85,85,1]}});let $e={},We=class extends r{constructor(e){super(e),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._webStyleSymbolCache=new Map,this._dotDensityUrlCache=new Map,this._scaleDrivenSizeVariable=null,this._hasClusterSizeVariable=!1,this.children=new n,this.layerView=null,this.layer=null,this.legendElements=[],this.parent=null,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.respectLayerVisibility=!0,this.sublayerIds=[],this.title=null,this.view=null}initialize(){const e=()=>this.notifyChange("ready");this.addHandles([c((()=>this.children),"change",(t=>{const{added:l,removed:s}=t;l.forEach((t=>{const l=`activeLayerInfo-ready-watcher-${t.layer.uid}`;this.addHandles(d((()=>t.ready),e,h),l)})),s.forEach((e=>this.removeHandles(e.layer.uid))),e()}))]),this.keepCacheOnDestroy||($e={})}destroy(){this._webStyleSymbolCache=null,this._dotDensityUrlCache=null,this._scaleDrivenSizeVariable=null,this.keepCacheOnDestroy||($e=null)}get effectList(){const e=this.layer;let t=null;return"effect"in e&&e.effect&&(t=new S,t.effect=e.effect,t.endTransitions(),t.scale=this.scale),t}get opacity(){const e=this.layer.opacity,t=this.parent?.opacity,l=this.layer.parent,s=l&&"uid"in l?this._getParentLayerOpacity(l):null;return null!=t?t*e:null!=s?s*e:e}get ready(){return null===this.layer||(this.children.length>0?this._isGroupActive():this.legendElements.length>0)}get scale(){return this.view?.scale??0}get isScaleDriven(){const e=this.layer;if(null===e)return!1;if("effect"in e&&e.effect&&Array.isArray(e.effect))return!0;if("featureReduction"in e&&e.featureReduction){if("cluster"===e.featureReduction.type)return!0;if("binning"===e.featureReduction.type&&"renderer"in e.featureReduction&&e.featureReduction.renderer)return this._isRendererScaleDriven(e.featureReduction.renderer)}return"renderer"in e&&e.renderer?this._isRendererScaleDriven(e.renderer):this._isLayerScaleDriven(this.layer)}get version(){return this._get("version")+1}async buildLegendElementsForFeatureCollections(e){if(!(!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView()))return this.legendElements=[],void this.notifyChange("ready");const t=Array.from(e,(e=>{if(v(e))return this._getRendererLegendElements(e.renderer,{title:e.title});if(e.featureSet&&e.featureSet.features.length){const t=e.layerDefinition,l=t&&t.drawingInfo,s=l&&C(l.renderer),r=ue.read(t.geometryType);return s?this._getRendererLegendElements(s,{title:e.name,geometryType:r}):(o.getLogger(this).warn("drawingInfo not available!"),null)}return null}));try{const e=[],l=await Promise.allSettled(t);for(const t of l)if("fulfilled"===t.status)for(const l of t.value??[])e.push(l);this.legendElements=e,this.notifyChange("ready")}catch(l){o.getLogger(this).warn("error while building legend for layer!",l)}}async buildLegendElementsForRenderer(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getRendererLegendElements(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForFeatureReduction(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getLegendElementsForFeatureReduction(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForTools(){const e=this.layer;if(ze(e))this._constructLegendElementsForVoxellayer();else if(je(e))this._constructLegendElementsForWMTSlayer();else if(xe(e))await this._constructLegendElementsForWMSSublayers();else if(Ve(e))await this._constructLegendElementsForBuildingSceneLayer();else if(De(e)||Pe(e)||Te(e))await this._constructLegendElementsForSublayers();else{this.removeHandles("imageryLayers-watcher");let t="default";if(Oe(e)){const l=e;t=(l?.rasterFunction?.functionName||"default")+"_"+(e.bandIds?.length?e.bandIds.join(""):"###")}await this._getLegendLayers(`${e.uid}-${t}`).then((async t=>{this.legendElements=[],this.notifyChange("ready");const l=t.map((async t=>{if(Oe(e)||Ae(e)){const t=d((()=>["renderingRule"in e&&e.rasterFunction,e.bandIds]),(()=>u((async()=>{$e.default=null,e.renderer?await this.buildLegendElementsForRenderer(e.renderer):await this.buildLegendElementsForTools()}))()));this.addHandles(t,"imageryLayers-watcher")}const l=this._generateSymbolTableElementForLegendLayer(t);l&&l.infos.length&&(Oe(e)&&(l.title=e.title),this.legendElements.push(l)),this.notifyChange("ready")}));await Promise.allSettled(l)})).catch((e=>{o.getLogger(this).warn("Request to server for legend has failed!",e)}))}}async _isLayerInCurrentView(){const e=this.layer,t=this.layerView,l=t&&"createQuery"in t&&"queryFeatureCount"in t;if(!l&&!(t&&"createQuery"in e&&"queryFeatureCount"in e))return!0;await y((()=>!t.updating));const s=l?"createQuery"in t&&t.createQuery():"createQuery"in e&&e.createQuery();if(!s)return!0;s.geometry=this.view.extent;return 0!==(l?"queryFeatureCount"in t&&await t.queryFeatureCount(s):"queryFeatureCount"in e&&await e.queryFeatureCount(s))}_getParentLayerOpacity(e){let t=1;const l=e.parent;return l&&"uid"in l&&(t=this._getParentLayerOpacity(l)),e.opacity*t}_isGroupActive(){const e=this.children;return!!e.length&&e.some((e=>e.ready))}_isRendererScaleDriven(e){if("dot-density"===e.type)return!0;const t="valueExpression"in e?e.valueExpression:null;if(oe.test(t))return!0;const l="visualVariables"in e?e.visualVariables:null;return!!l&&l.some((e=>this._isScaleDrivenSizeVariable(e)))}_isScaleDrivenSizeVariable(e){if(e&&"size"!==e.type)return!1;const t=e,l=t.minSize,s=t.maxSize;return"object"==typeof l&&l?this._isScaleDrivenSizeVariable(l):"object"==typeof s&&s?this._isScaleDrivenSizeVariable(s):!!t.expression||oe.test(t.valueExpression)}_isLayerScaleDriven(e){if("minScale"in e&&e.minScale>0||"maxScale"in e&&e.maxScale>0)return!0;if("sublayers"in e&&e.sublayers)return e.sublayers.some((e=>this._isLayerScaleDriven(e)));const t=e.parent;if(!1===e.loaded&&t&&De(t)&&"source"in e&&e.source&&"map-layer"===e.source.type)for(const l of t.sourceJSON.layers??[])if(l.id===e.source.mapLayerId&&(l.minScale>0||l.maxScale>0))return!0;return!1}async _constructLegendElementsForVoxellayer(){this.legendElements=[],this.removeHandles("voxel-style-watcher"),this.removeHandles("voxel-current-variable");const e=this.layer;this.addHandles(d((()=>e.currentVariableId),(()=>this._constructLegendElementsForVoxellayer())),"voxel-current-variable"),this.addHandles(d((()=>e.getVariableStyles()),(()=>this._constructLegendElementsForVoxellayer())),"voxel-style-watcher");const t=e.getVariableStyle(null),l=[];if(t)if(t.uniqueValues?.length){const e=[];t.uniqueValues.forEach((t=>{t.enabled&&e.push({label:t.label||`${t.value}`,value:t.value,symbol:new te({color:t.color,outline:null})})})),e.length&&l.push({type:"symbol-table",title:t.label,infos:e})}else if(t.transferFunction){const{colorStops:e,stretchRange:s}=t.transferFunction,r=e.toArray().reverse(),i=s.map(((e,t)=>`${0===t?G:J} ${Z(e)}`)).reverse(),n=r.map((e=>({color:e.color,value:null,label:null})));n[0].label=i[0],n.at(-1).label=i[1],l.push({type:"color-ramp",title:t.label,infos:n,preview:z(r.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})})}const s=e.opacity,r=l.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).map((e=>this._getSymbolPreview(e,s)));await Promise.allSettled(r),this.legendElements=l,this.notifyChange("ready")}_constructLegendElementsForWMTSlayer(){this.legendElements=[],this.removeHandles("wmts-activeLayer-watcher");const e=this.layer.activeLayer;if(this.addHandles(d((()=>{const{layer:e}=this;return e&&"activeLayer"in e&&e.activeLayer}),(()=>this._constructLegendElementsForWMTSlayer())),"wmts-activeLayer-watcher"),e.styleId&&e.styles){let t=null;e.styles.some((l=>e.styleId===l.id&&(t=l.legendUrl,!0))),t&&(this.legendElements=[{type:"symbol-table",title:e.title,infos:[{src:t,opacity:this.opacity}]}])}this.notifyChange("ready")}async _constructLegendElementsForWMSSublayers(){this.legendElements=[],this.removeHandles("wms-sublayers-watcher");const e=this.layer;let t=null;(e.customParameters||e.customLayerParameters)&&(t={...e.customParameters,...e.customLayerParameters}),this.addHandles(d((()=>{const{layer:e}=this;return e&&"sublayers"in e&&e.sublayers}),(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher"),this.legendElements=await this._generateLegendElementsForWMSSublayers(e.sublayers,t),this.notifyChange("ready")}async _generateLegendElementsForWMSSublayers(e,t){const l=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher");const s=e.toArray();for(const r of s){const e=d((()=>[r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForWMSSublayers()));if(this.addHandles(e,"wms-sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled){const e=await this._generateSymbolTableElementForWMSSublayer(r,t);e&&e.infos.length&&l.unshift(e)}}return l}async _generateSymbolTableElementForWMSSublayer(e,t){if(!e.legendUrl&&e.sublayers){const l=(await this._generateLegendElementsForWMSSublayers(e.sublayers,t)).filter((e=>e));return{type:"symbol-table",title:e.title,infos:l}}return this._generateSymbolTableElementForLegendUrl(e,t)}async _generateSymbolTableElementForLegendUrl(e,t){let l=e.legendUrl;if(!l)return;const r={type:"symbol-table",title:e.title||e.name||String(e.id??""),infos:[]};t&&(l=p(l,t));let i=null;const n=e.layer?.opacity;try{i=(await s(l,{responseType:"image"})).data,i&&(i.style.opacity=n)}catch{}return r.infos.push({src:l,preview:i,opacity:n}),r}_getLegendLayers(e,t){const l=$e&&$e[e];return l?Promise.resolve(l):this._legendRequest(t).then((t=>{const l=t.layers;return $e[e]=l,l}))}_legendRequest(e){const t=this.layer;let l={f:"json",dynamicLayers:e};if(Oe(t)){const e=t.exportImageServiceParameters.rasterFunction;if(e&&(l.renderingRule=JSON.stringify(e.functionDefinition?.toJSON()||e.toJSON())),t.bandIds&&(l.bandIds=t.bandIds.join()),t.raster||t.viewId||t.customParameters){const{raster:e,viewId:s,customParameters:r}=t;l={raster:e,viewId:s,...l,...r}}}let r=t.url.replace(/(\/)+$/,"");if("version"in t&&+t.version>=10.01){const e=r.indexOf("?");e>-1?r=r.substring(0,e)+"/legend"+r.substring(e):r+="/legend"}else{const e=r.toLowerCase().indexOf("/rest/"),t=r.substring(0,e)+r.substring(e+5,r.length);r=re+"?soapUrl="+encodeURI(t)+"&returnbytes=true"}return s(r,{query:l}).then((e=>e.data))}async _constructLegendElementsForBuildingSceneLayer(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForBuildingSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}async _generateLegendElementsForBuildingSublayers(e,t){let l=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");const s=e.toArray();for(const r of s){const e=d((()=>["renderer"in r&&r.renderer,r.opacity,r.title,r.visible]),(()=>this._constructLegendElementsForBuildingSceneLayer()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||r.visible){const e=r&&null!=r.opacity?r.opacity:null,s=null!=e?e*t:t;if("building-group"===r.type){const e={type:"symbol-table",title:r.title,infos:[]},t=await this._generateLegendElementsForBuildingSublayers(r.sublayers,s);e.infos.push(...t),l=[e,...l]}else if(r.renderer){l=[...await this._getRendererLegendElements(r.renderer,{title:r.title,opacity:s,sublayer:r}),...l]}}}return l.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _constructLegendElementsForSublayers(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;if(De(e)||Pe(e)||Te(e)){this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForSublayers)),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}}async _generateLegendElementsForSublayers(e,t,l){const s=this.layer;let r=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForSublayers())),"sublayers-watcher");let n=e.toArray();!l&&this.sublayerIds&&this.sublayerIds.length&&(n=Te(s)?this.sublayerIds.map((e=>s.findSublayerForSubtypeCode(e))).filter(i):this.sublayerIds.map((e=>s.findSublayerById(e))).filter(i));for(const i of n){const e=d((()=>[i.renderer,i.opacity,i.title,i.visible,i.legendEnabled]),(()=>this._constructLegendElementsForSublayers()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||i.visible&&i.legendEnabled&&this._isSublayerInScale(i)){const e=i&&null!=i.opacity?i.opacity:null,s=null!=e?e*t:t,n=!Ne(i)||i.originIdOf("renderer")>b.SERVICE&&!i.sublayers;if(i.renderer&&n){await i.load();r=[...await this._getRendererLegendElements(i.renderer,{title:i.title,opacity:s,sublayer:i}),...r]}else if(Ne(i)){const e=await this._generateSymbolTableElementForSublayer(i,s,l);e&&r.unshift(e)}}}return r.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _generateSymbolTableElementForSublayer(e,t,l){if(!l){l=new Map;const t=this.layer,s=e.source;let r=null;if(!(!s||"map-layer"===s.type&&s.mapLayerId===e.id&&(!s.gdbVersion||s.gdbVersion===("gdbVersion"in t&&t.gdbVersion)))||e.originIdOf("renderer")>b.SERVICE||e.originIdOf("labelingInfo")>b.SERVICE||e.originIdOf("labelsVisible")>b.SERVICE){const e=new L({layer:this.layer});r=e.hasDynamicLayers?e.dynamicLayers:null,e.destroy()}const i=r||`${t.uid}-default`;(await this._getLegendLayers(i,r)).forEach((e=>l.set(e.layerId,e)))}const s=l.get(e.id);if((!s||s?.subLayerIds&&s.defaultVisibility)&&e.sublayers){const s=await this._generateLegendElementsForSublayers(e.sublayers,t,l);return{type:"symbol-table",title:e.title,infos:s}}return this._generateSymbolTableElementForLegendLayer(s,e,t)}_generateSymbolTableElementForLegendLayer(e,t,l){if(!e||!e.legend||this.respectLayerVisibility&&!this._isLegendLayerInScale(e,t))return null;const s=t?.renderer;let r=t?.title||e.layerName;if(s&&(!t||t?.originIdOf("renderer")>b.SERVICE)){const e=t?.title||this._getRendererTitle(s,t);e&&(r&&"string"!=typeof e&&"title"in e&&(e.title=r),r=e)}const i={type:"symbol-table",title:r,legendType:e.legendType||null,infos:[]},n=t?this._sanitizeLegendForSublayer(e.legend.slice(),t):e.legend;return e.legendGroups&&e.legendGroups.length>0?e.legendGroups.forEach((t=>{const s={type:"symbol-table",title:t.heading,legendType:e.legendType||null,infos:this._generateSymbolTableElementInfosForLegendLayer(n.filter((e=>e.groupId===t.id)),e.layerId,l)};s.infos?.length>0&&i.infos.push(s)})):i.infos=this._generateSymbolTableElementInfosForLegendLayer(n,e.layerId,l),i.infos.length>0?i:null}_generateSymbolTableElementInfosForLegendLayer(e,t,s){return e.map((e=>{let r=e.url;if(e.imageData&&e.imageData.length>0)r=`data:image/png;base64,${e.imageData}`;else{if(0===r.indexOf("http"))return null;r=l(`${this.layer.url}/${t}/images/${r}`)}return{label:e.label,src:r,opacity:s??this.opacity,width:e.width,height:e.height}})).filter(i)}_isSublayerInScale(e){const t=e.minScale||0,l=e.maxScale||0;return!(t>0&&t<this.scale||l>this.scale)}_isLegendLayerInScale(e,t){const l=t||this.layer;let s=null,r=null,i=!0;return!l.minScale&&0!==l.minScale||!l.maxScale&&0!==l.maxScale?(0===e.minScale&&l.tileInfo&&(s=l.tileInfo.lods[0].scale),0===e.maxScale&&l.tileInfo&&(r=l.tileInfo.lods.at(-1).scale)):(s=Math.min(l.minScale,e.minScale)||l.minScale||e.minScale,r=Math.max(l.maxScale,e.maxScale)),(s>0&&s<this.scale||r>this.scale)&&(i=!1),i}_sanitizeLegendForSublayer(e,t){if("version"in this.layer&&+this.layer.version<10.1||0===e.length)return e;const l=t.renderer,s=e.some((e=>e.values));let r=0,i=null;return s&&e.some(((e,t)=>(e.values||(r=t,i=e,i.label||(i.label="others")),null!=i))),l?"unique-value"===l.type?i&&(e.splice(r,1),e.push(i)):"class-breaks"===l.type&&(i&&e.splice(r,1),e.reverse(),i&&e.push(i)):i&&(e.splice(r,1),e.push(i)),e}async _getRendererLegendElements(e,t={}){if(!Fe(e,this.view))return o.getLogger(this).warn(`Renderer of type '${e.type}' not supported!`),[];if(Le(e))return this._constructPointCloudRendererLegendElements(e,t);if(Ie(e))return this._constructDotDensityRendererLegendElements(e);const l=await this._loadRenderer(e);return Re(l)?this._constructPieChartRendererLegendElements(l):this._constructRendererLegendElements(l,t)}async _getLegendElementsForFeatureReduction(e){let t=null;return"binning"===e.type?t=e.renderer:"cluster"===e.type&&(t=this._getClusterRenderer(e)),t?this._getRendererLegendElements(t):[]}_getPointCloudRendererTitle(e){return(e.legendOptions?.title||e.field)??""}async _constructPointCloudRendererLegendElements(e,t={}){const l=t.title,s=[];let r=null,i=null;if(ve(e))r={type:"symbol-table",title:l||this._getPointCloudRendererTitle(e),infos:[]},e.colorClassBreakInfos.forEach((e=>{r.infos.unshift({label:e.label||e.minValue+" - "+e.maxValue,value:[e.minValue,e.maxValue],symbol:this._getAppliedCloneSymbol(ce,e.color)})}));else if(Ee(e)){const t=e.stops;let s=null;if(t?.length&&(1===t.length&&(s=t[0].color),!s)){const e=t[0].value,l=t.at(-1).value;if(null!=e&&null!=l){s=A(e+(l-e)/2,t)}}r={type:"symbol-table",title:null,infos:[{label:null,value:null,symbol:this._getAppliedCloneSymbol(ce,s||ce.color)}]};const n=M(e.stops??[])??[];i={type:"color-ramp",title:l||this._getPointCloudRendererTitle(e),infos:n,preview:z(n.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})}}else Ce(e)&&(r={type:"symbol-table",title:l||this._getPointCloudRendererTitle(e),infos:[]},e.colorUniqueValueInfos?.forEach((e=>{r.infos.push({label:e.label||e.values.join(", "),value:e.values.join(", "),symbol:this._getAppliedCloneSymbol(ce,e.color)})})));r&&r.infos.length&&s.push(r),i&&i.infos.length&&s.push(i);const n=s.reduce(((e,t)=>[...e,...t.infos??[]]),[]).filter((e=>!!e.symbol)).map((t=>this._getSymbolPreview(t,this.opacity,{symbolConfig:{applyColorModulation:!!e.colorModulation}})));return await Promise.allSettled(n),s}async _getElementInfoForDotDensity(e,t){const{color:l,label:s,valueExpressionTitle:r}=t,{backgroundColor:i,outline:n,dotSize:a}=e,o=this.effectList,u=o?.effects.map((e=>e.toJSON())),c=_(u),d=await qe("previewTemplateAriaLabel",s||r),y=a+"-"+l+"-"+i+"-"+(n&&JSON.stringify(n.toJSON()))+"-"+c,h=this._dotDensityUrlCache,m=h.has(y)?h.get(y):x(e,l,{ariaLabel:d});h.set(y,m);const p={shape:{type:"image",x:0,y:0,width:m.width,height:m.height,src:m.src},fill:null,stroke:null,offset:[0,0]},f=T([[p]],[m.width,m.height],{effectView:this.effectList,ariaLabel:d});return{opacity:1,src:m.src,preview:f,width:m.width,height:m.height}}async _constructDotDensityRendererLegendElements(e){const t=e.calculateDotValue(this.view.scale),l=e.legendOptions&&e.legendOptions.unit,s={type:"symbol-table",title:{value:t&&Math.round(t),unit:l||""},infos:[]};for(const r of e.attributes){const t=await this._getElementInfoForDotDensity(e,r);t.label=r.label||r.valueExpressionTitle||r.field,s.infos.push(t)}return[s]}async _constructPieChartRendererLegendElements(e){const t=this.layer.opacity,l=[];let s=null;const r=e.outline;e.attributes.forEach((e=>{const t=new ee({color:e.color,outline:r}),s=e.label||e.valueExpressionTitle||e.field;l.push({label:s,symbol:t})}));const i=l.length?[...l]:[];if(e.othersCategory?.color&&0!==e.othersCategory?.threshold){const t=new ee({color:e.othersCategory.color,outline:r});s=e.othersCategory.label||"Other",l.push({label:s,symbol:t})}if(e.defaultColor?.a){const t=new ee({color:e.defaultColor,outline:r});l.push({label:e.defaultLabel,symbol:t})}const n=await this._getVisualVariableLegendElements(e,this.layer)||[];if(l.length){n.unshift({type:"symbol-table",title:null,infos:l});const t=i.filter((e=>e.label!==s)).map((e=>e.symbol.color)).filter(Boolean),a=j(t,{holePercentage:e.holePercentage,backgroundColor:e.backgroundFillSymbol?.color,effectList:this.effectList,outline:r,ariaLabel:await qe("previewPieChartAriaLabel")});n.unshift({type:"pie-chart-ramp",title:this._getRendererTitle(e,this.layer),infos:l,preview:a})}const a=n.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol&&!e?.preview)).map((e=>this._getSymbolPreview(e,t,{effectList:this.effectList})));return await Promise.allSettled(a),n}async _constructRendererLegendElements(e,t={}){const{title:l,sublayer:s}=t,r=s||this.layer;this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._scaleDrivenSizeVariable=null;const i=await this._getVisualVariableLegendElements(e,r)||[],n={type:"symbol-table",title:l||this._getRendererTitle(e,r),infos:[]};let a=null,o=!1;const u=new Set;if(ye(e)&&!this._hasSizeRamp){const t=await Q(e);n.infos.push({label:null,symbol:t})}else if(Ue(e)){let t=l;const s=ke(e)?"univariate-above-and-below-ramp":"univariate-color-size-ramp",r=i.findIndex((e=>"color-ramp"===e.type)),n=-1!==r?i.splice(r,1)[0]:null,a=i.findIndex((e=>"size-ramp"===e.type)),o=-1!==a?i.splice(a,1)[0]:null,u=[];n&&(t=n.title,u.push(n)),o&&(t=o.title,u.push(o)),u.length>0&&i.push({type:s,title:t,infos:u})}else if(_e(e)){const t=k(e);i.push({type:"heatmap-ramp",title:l||this._getRendererTitle(e,r),infos:t,preview:z(t.map((e=>e.color)),{effectList:this.effectList,ariaLabel:await qe("previewColorRampAriaLabel")})})}else if(Se(e)){const t=e&&e.authoringInfo;if(t&&"relationship"===t.type){const{numClasses:l,field1:s,field2:a}=t,o=t.focus;if(l&&s&&a){const t=[s,a];let c=N(o)||0;for(const e of t){const{field:t,normalizationField:l,label:s}=e,i=s||{field:this._getFieldAlias(t,r),normField:l&&this._getFieldAlias(l,r)},a=He.clone();a.angle=c,n.infos.push({label:i,symbol:a}),u.add(a),c+=90}const d=q({focus:o,numClasses:l,infos:e.uniqueValueInfos??[]});i.unshift(d)}}else if(Oe(this.layer)||Ae(this.layer))e.uniqueValueInfos?.forEach((e=>{e.symbol&&n.infos.push({label:e.label||e.value,value:e.value,symbol:e.symbol})}));else{const{field:t,field2:s,field3:i,fieldDelimiter:a,valueExpression:u,defaultSymbol:c}=e,d=!(!t&&!u||!s&&!i),y=[];if(e.uniqueValueGroups?.forEach((e=>{const l={type:"symbol-table",title:e.heading,infos:[]};e.classes?.forEach((e=>{const{symbol:n,values:o}=e;if(n){const c=[],y=[];for(const e of o??[]){const{value:l,value2:n,value3:o}=e,h=[],m=[];(t||u)&&(h.push(l),m.push(this._getDomainName(t,l,r))),s&&(h.push(n),m.push(this._getDomainName(s,n,r))),i&&(h.push(o),m.push(this._getDomainName(i,o,r))),c.push(d?h.join(a||""):h[0]),y.push(m.join(" - "))}const h=c.join(", ");let m=e.label;if(!m){const e=y.filter(Boolean);m=e.length?e.join(", "):h}l.infos.push({label:m,value:h,symbol:n})}})),l.infos.length&&y.push(l)})),y.length){const t=y[0];1===y.length&&"title"in t&&!t.title?n.infos.push(...t.infos??[]):(c&&(y.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:c}]}),o=!0),n.infos.push(...y)),l||e.legendOptions&&e.legendOptions.title||e.valueExpressionTitle||(n.title=null)}}e.defaultSymbol&&!o&&(n.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),o=!0)}else if(be(e)){a=this._isUnclassedRenderer(e);(!a||!this._hasSizeRamp)&&(e.classBreakInfos.forEach((e=>{e.symbol&&n.infos.unshift({label:e.label||(a?null:e.minValue+" - "+e.maxValue),value:[e.minValue,e.maxValue],symbol:e.symbol})})),a&&(n.title=null),this._updateInfosforClassedSizeRenderer(e,n.infos)),e.defaultSymbol&&!a&&(n.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),o=!0)}else if(pe(e))if(Ae(this.layer)||Me(this.layer)){const t=await this._constructTileImageryStretchRendererElements(e);Be(t)?i.push(t):n.infos=t}else{const t=this.layer;let l,s;if(e.statistics?.length){const t=e.statistics[0];K(t)?(l=t.min,s=t.max):[l,s]=t}let r=[],a=t.serviceRasterInfo;if(t.rasterFunction)try{a=await t.generateRasterInfo(t.rasterFunction)}catch{}const o=a.keyProperties.BandProperties,u=E(a.pixelType);if(1===a.bandCount){const r=t.bandIds?.[0]||0;l=null!=l?l:a.statistics?a.statistics[r].min:u[0],s=null!=s?s:a.statistics?a.statistics[r].max:u[1],l||s?i.push(await this._getStretchLegendElements(e,{min:l,max:s})):this._getServerSideLegend()}else t.bandIds&&1===t.bandIds.length?(l=null!=l?l:a.statistics?a.statistics[t.bandIds[0]].min:u[0],s=null!=s?s:a.statistics?a.statistics[t.bandIds[0]].max:u[1],l||s?i.push(await this._getStretchLegendElements(e,{min:l,max:s})):this._getServerSideLegend()):a.bandCount>=3?o&&o.length>=a.bandCount?t.bandIds&&3===t.bandIds.length?(r=t.bandIds.map((e=>o[e].BandName)),n.infos=this._createSymbolTableElementMultiBand(r)):"lerc"===t.format?(r=[0,1,2].map((e=>o[e].BandName)),n.infos=this._createSymbolTableElementMultiBand(r)):this._getServerSideLegend():"lerc"===t.format?(r=["band1","band2","band3"],n.infos=this._createSymbolTableElementMultiBand(r)):this._getServerSideLegend():this._getServerSideLegend()}else if(me(e))e.colormapInfos.forEach((e=>{n.infos.push({label:e.label,value:e.value,symbol:this._getAppliedCloneSymbol(de,e.color)})}));else if(ge(e)){let l=e.symbol;switch(t.geometryType){case"point":l="pointSymbol"in r?r.pointSymbol:null;break;case"polyline":l="lineSymbol"in r?r.lineSymbol:null;break;case"polygon":l="polygonSymbol"in r?r.polygonSymbol:null}const s=this._hasClusterSizeVariable&&this._getClusterSymbol()||!this._hasSizeRamp;e.symbol&&s&&n.infos.push({label:e.label,symbol:l})}else if(he(e)){e.outputUnit&&(this.title="("+e.toJSON().outputUnit+")"),n.title=e.attributeField;const t=e.getClassBreakInfos();t?.length?t.forEach((e=>{n.infos.push({label:e.minValue+" - "+e.maxValue,symbol:e.symbol})})):n.infos.push({label:e.attributeField,symbol:e.getDefaultSymbol()})}else fe(e)&&i.push(await this._getStretchLegendElements(e,{min:0,max:255}));const c=e.defaultSymbol;!c||o||ge(e)||a&&!this._hasColorRamp&&!this._hasSizeRamp&&!this._hasOpacityRamp||i.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:c}]}),n.infos.length&&i.unshift(n);const d=null==t.opacity?this.opacity:t.opacity,y=this._isTallSymbol("visualVariables"in e?e.visualVariables:null),h=Oe(this.layer)||Ae(this.layer),m=i.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).map((e=>this._getSymbolPreview(e,d,{isDefault:e.symbol===c,applyScaleDrivenSize:!u.has(e.symbol),symbolConfig:{isTall:y,isSquareFill:h},effectList:u.has(e.symbol)?null:this.effectList})));return e=null,await Promise.allSettled(m),i}_getServerSideLegend(){setTimeout((()=>this.buildLegendElementsForTools()),0)}_getAllInfos(e){const t=e?.infos;return t?t.reduce(((e,t)=>e.concat(this._getAllInfos(t))),[]):[e]}async _constructTileImageryStretchRendererElements(e){const t=this.layer,{rasterInfo:l}=t.raster,s=l.bandCount||e.statistics.length;let r,i,n=[];const a=l.keyProperties&&l.keyProperties.BandProperties,o=e?.statistics?.length?e.statistics:l?.statistics;if(o){const e=o[0];K(e)?(r=e.min,i=e.max):[r,i]=e}else{const e=E(l.pixelType);r=e[0],i=e[1]}if(t.hasStandardTime()&&(r=t.getStandardTimeValue(r),i=t.getStandardTimeValue(i)),1===l.bandCount||1===t.bandIds?.length)return this._getStretchLegendElements(e,{min:r,max:i});function u(e){const s=(t?.bandIds?.length?t.bandIds:Array.from(Array(Math.min(l.bandCount,3)).keys())).map((t=>e&&e[t]&&e[t].BandName||"band"+(t+1)));return s.length<3?s.push(s[1]):s.length>3&&s.splice(3),s}return n=a&&a.length>=s?u(a):u(),this._createSymbolTableElementMultiBand(n)}async _getStretchLegendElements(e,t){const l=e.colorRamp,s=B(l,t);return{type:"stretch-ramp",title:"",infos:s,preview:z(s.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})}}_getClusterSymbol(){const e=this.layer,t="featureReduction"in e&&e.featureReduction,l=t&&"symbol"in t&&t.renderer;return l&&!0!==l?.authoringInfo?.isAutoGenerated?null:t&&"symbol"in t?t.symbol:null}async _getSizeLegendElement(e,t,l,s){return{type:"size-ramp",title:this._hasClusterSizeVariable?this._getClusterTitle(t):e,infos:await H(l,t,await X(l),this.scale,this.view.type,!!s,this._hasClusterSizeVariable?this._getClusterSymbol():null)}}_createSymbolTableElementMultiBand(e){const t=[],l=["red","green","blue"];return e.forEach(((e,s)=>{t.push({label:{colorName:l[s],bandName:e},src:Y[s],opacity:this.opacity??1})})),t}_updateInfosforClassedSizeRenderer(e,t){const l=e.authoringInfo&&"class-breaks-size"===e.authoringInfo.type,s=e.classBreakInfos.some((e=>P(e.symbol)));if(l&&s){const l=$,s=W,r=e.classBreakInfos.length,i=(l-s)/(r>1?r-1:r);t.forEach(((e,t)=>{e.size=l-i*t}))}}_isTallSymbol(e){let t=!1,l=!1;if(e)for(let s=0;s<e.length&&(!t||!l);s++){const r=e[s];"size"===r.type&&("height"===r.axis&&(t=!0),"width-and-depth"===r.axis&&(l=!0))}return t&&l}async _getSymbolPreview(e,t,l){let s=!l?.isDefault&&null==e.size&&this._hasSizeRamp?m(V.size):e.size;if(this._scaleDrivenSizeVariable&&l?.applyScaleDrivenSize){const{getSize:t}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");s=t(this._scaleDrivenSizeVariable,null,{view:this.view.type,scale:this.scale,shape:"simple-marker"===e.symbol.type?e.symbol.style:null})}return D(e.symbol,{size:s,opacity:t,scale:!1,symbolConfig:l?.symbolConfig,effectView:l?.effectList,ariaLabel:e.label&&"string"!=typeof e.label?null:await qe("previewTemplateAriaLabel",e.label)}).then((t=>(e.preview=t,e))).catch((()=>(e.preview=null,e)))}_getClusterRenderer(e){this._hasClusterSizeVariable=!1;const t="renderer"in this.layer?this.layer.renderer:null,l=e.renderer?.clone()||t?.clone(),s=O(this.layerView._effectiveRenderer,this.view);if(s&&null!=l&&"visualVariables"in l){const t=l.visualVariables?.some((e=>"size"===e.type&&"outline"!==e.target&&!oe.test(e.valueExpression)));if(!t){if("clusterMinSize"in e&&"clusterMaxSize"in e){const{clusterMinSize:t,clusterMaxSize:l}=e;s.legendOptions=new R({showLegend:t!==l})}const t=l.visualVariables||[];l.visualVariables=t.concat([s]),this._hasClusterSizeVariable=!0}}return l}async _loadRenderer(e){const t=[],l=e.clone(),s=await X(l);if(be(l)||Se(l)){const e=(l.classBreakInfos||l.uniqueValueInfos).map((e=>this._fetchSymbol(e.symbol,s).then((t=>{e.symbol=t})).catch((()=>{e.symbol=null}))));Array.prototype.push.apply(t,e)}return t.push(this._fetchSymbol(l.symbol||l.defaultSymbol,l.defaultSymbol?null:s).then((e=>{this._applySymbolToRenderer(l,e,ge(l))})).catch((()=>{this._applySymbolToRenderer(l,null,ge(l))}))),await Promise.allSettled(t),l}_applySymbolToRenderer(e,t,l){l?e.symbol=t:e.defaultSymbol=t}async _fetchSymbol(e,t){if(!e)throw new Error;if("web-style"===e.type){const l=this._webStyleSymbolCache;try{const s=await("2d"===this.view.type?e.fetchCIMSymbol({cache:l}):e.fetchSymbol({cache:l}));return this._getAppliedCloneSymbol(s,t)}catch{throw o.getLogger(this).warn("Fetching web-style failed!"),new Error}}return this._getAppliedCloneSymbol(e,t)}_getAppliedCloneSymbol(e,l){if(!e||!l)return e;const s=e.clone(),r=l&&l.toRgba();return s.type.includes("3d")?this._applyColorTo3dSymbol(s,r):"cim"===s.type?F(s,l):s.color&&(s.color=new t(r||s.color)),s}_applyColorTo3dSymbol(e,l){l&&e.symbolLayers.forEach((e=>{e&&(e.material||(e.material={}),e.material.color=new t(l))}))}async _getVisualVariableLegendElements(e,t){if(!("visualVariables"in e)||!e.visualVariables||"vector-field"===e.type)return null;const l=e.visualVariables,s=[],r=[],n=[];for(const i of l)"color"===i.type?s.push(i):"size"===i.type?r.push(i):"opacity"===i.type&&n.push(i);const a=[...s,...r,...n];let o,u;if(0===s.length&&be(e)&&e.classBreakInfos&&1===e.classBreakInfos.length){const t=e.classBreakInfos[0];o=t&&t.symbol}if(0===s.length&&ge(e)&&(o=e.symbol),o)if(o.type.includes("3d")){const e=o.symbolLayers.at(0);"water"===e.type?null!=e.color&&(u=e.color):null!=e.material&&null!=e.material.color&&(u=e.material.color)}else o.url||(u=o.color);const c=this.effectList;return(await Promise.all(a.map((async l=>{if(!l.legendOptions||!1!==l.legendOptions.showLegend){const s=ye(e)?l.field:this._getRampTitle(l,t);let r=null;const i="getField"in t?t.getField?.(l.field):null,n=i&&w(i);if("color"===l.type){const e=await U(l,null,n)??[];r={type:"color-ramp",title:s,infos:e,preview:z(e.map((e=>e.color)),{effectList:c,ariaLabel:await qe("previewColorRampAriaLabel")})},this._hasColorRamp||(this._hasColorRamp=e.length>0)}else if("size"===l.type&&"outline"!==l.target)oe.test(l.valueExpression)?this._hasClusterSizeVariable||(this._scaleDrivenSizeVariable=l):(r=await this._getSizeLegendElement(s,l,e,n),this._hasSizeRamp||(this._hasSizeRamp=!(null==r.infos||!r.infos.length)));else if("opacity"===l.type){const e=await U(l,u,n)??[];r={type:"opacity-ramp",title:s,infos:e,preview:z(e.map((e=>e.color)),{effectList:c,ariaLabel:await qe("previewColorRampAriaLabel")})},this._hasOpacityRamp||(this._hasOpacityRamp=e.length>0)}return r&&r.infos?r:null}})))).filter(i)}_getDomainName(e,t,l){if(e&&"function"!=typeof e){const s="getField"in l&&l.getField&&l.getField(e),r=s&&"getFieldDomain"in l&&l.getFieldDomain?l.getFieldDomain(s.name):null;return"coded-value"===r?.type?r.getName(t):null}return null}_getClusterTitle(e){const t=this.layer,l=e.field;if("featureReduction"in t&&t.featureReduction&&"cluster"===t.featureReduction.type){const e=t.featureReduction,s="popupTemplate"in e&&e.popupTemplate,r=s&&s.fieldInfos;if(r)for(const t of r)if(t.fieldName===l)return"cluster_count"===l?t.label||{showCount:!0}:t.label}return{showCount:!0}}_getRampTitle(e,t){let l=e.field,s=e.normalizationField,r=!1,i=!1,n=!1,a=null;l="function"==typeof l?null:l,s="function"==typeof s?null:s;const o=e.legendOptions&&e.legendOptions.title;if(null!=o)a=o;else if(e.valueExpressionTitle)a=e.valueExpressionTitle;else{if("renderer"in t&&t.renderer&&"authoringInfo"in t.renderer&&t.renderer.authoringInfo&&t.renderer.authoringInfo.visualVariables){const e=t.renderer.authoringInfo.visualVariables;for(let t=0;t<e.length;t++){const l=e[t];if("color"===l.type){if("ratio"===l.style){r=!0;break}if("percent"===l.style){i=!0;break}if("percent-of-total"===l.style){n=!0;break}}}}a={field:l&&this._getFieldAlias(l,t),normField:s&&this._getFieldAlias(s,t),ratio:r,ratioPercent:i,ratioPercentTotal:n}}return a}_getRendererTitle(e,t){const l=e;if(l.legendOptions&&l.legendOptions.title)return l.legendOptions.title;if(l.valueExpressionTitle)return l.valueExpressionTitle;let s=l.field,r=null,i=null;if(be(l)&&(r=l.normalizationField,i="percent-of-total"===l.normalizationType),s="function"==typeof s?null:s,r="function"==typeof r?null:r,Se(l)){const{field2:e,field3:r,fieldDelimiter:i}=l;let n=s&&this._getFieldAlias(s,t);return e&&(n=`<${n}>${i}<${this._getFieldAlias(e,t)}>`,r&&(n=`${n}${i}<${this._getFieldAlias(r,t)}>`)),n}let n=null;return(s||r)&&(n={field:s&&this._getFieldAlias(s,t),normField:r&&this._getFieldAlias(r,t),normByPct:i}),n}_getFieldAlias(e,t){const l="popupTemplate"in t?t.popupTemplate:null,s=l?.fieldInfos;let r;s&&s.some((t=>e===t.fieldName&&(r=t,!0)));let i=null;"getField"in t&&t.getField?i=t.getField(e):"fieldsIndex"in t&&t.fieldsIndex&&(i=t.fieldsIndex.get(e));let n=null;const a="featureReduction"in t&&t.featureReduction;a&&(!r&&"popupTemplate"in a&&a.popupTemplate&&a.popupTemplate.fieldInfos&&a.popupTemplate.fieldInfos.some((t=>e?.toLowerCase()===t.fieldName?.toLowerCase()&&(r=t,!0))),"fields"in a&&a.fields&&(n=a.fields.find((t=>t.name?.toLowerCase()===e?.toLowerCase()))));const o=r||i||n;let u=null;return o&&(u=r?.label||i?.alias||n?.alias||"name"in o&&o.name||"fieldName"in o&&o.fieldName||null),u}_isUnclassedRenderer(e){const t=e.visualVariables;let l=!1;return be(e)&&e.classBreakInfos&&1===e.classBreakInfos.length&&t&&(l=e.field?t.some((t=>!(!t||e.field!==t.field||(e.normalizationField||t.normalizationField)&&e.normalizationField!==t.normalizationField))):!!t.length),l}};e([f()],We.prototype,"children",void 0),e([f({readOnly:!0})],We.prototype,"effectList",null),e([f()],We.prototype,"layerView",void 0),e([f()],We.prototype,"layer",void 0),e([f()],We.prototype,"legendElements",void 0),e([f({readOnly:!0})],We.prototype,"opacity",null),e([f()],We.prototype,"parent",void 0),e([f({readOnly:!0,dependsOn:[]})],We.prototype,"ready",null),e([f()],We.prototype,"hideLayersNotInCurrentView",void 0),e([f()],We.prototype,"keepCacheOnDestroy",void 0),e([f()],We.prototype,"respectLayerVisibility",void 0),e([f({readOnly:!0})],We.prototype,"scale",null),e([f()],We.prototype,"sublayerIds",void 0),e([f({readOnly:!0})],We.prototype,"isScaleDriven",null),e([f()],We.prototype,"title",void 0),e([f({readOnly:!0,dependsOn:["ready"],value:0})],We.prototype,"version",null),e([f()],We.prototype,"view",void 0),We=e([g("esri.widgets.Legend.support.ActiveLayerInfo")],We);const Ge=We;export{Ge as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import"../../../intl.js";import{addTokenParameter as l}from"../../../kernel.js";import s from"../../../request.js";import"../../../symbols.js";import r from"../../../core/Accessor.js";import{isSome as i}from"../../../core/arrayUtils.js";import n from"../../../core/Collection.js";import{JSONMap as a}from"../../../core/jsonMap.js";import o from"../../../core/Logger.js";import{debounce as u}from"../../../core/promiseUtils.js";import{on as c,watch as d,whenOnce as y,initial as h}from"../../../core/reactiveUtils.js";import{px2pt as m}from"../../../core/screenUtils.js";import{addQueryParameters as p}from"../../../core/urlUtils.js";import{property as f}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/has.js";import{subclass as g}from"../../../core/accessorSupport/decorators/subclass.js";import{OriginId as b}from"../../../core/accessorSupport/PropertyOrigin.js";import{EffectView as S}from"../../../layers/effects/EffectView.js";import{effectFunctionsFromJSON as _}from"../../../layers/effects/jsonUtils.js";import{ExportImageParameters as L}from"../../../layers/support/ExportImageParameters.js";import{isDateField as w}from"../../../layers/support/fieldUtils.js";import{isFeatureLayer as v}from"../../../layers/support/layerUtils.js";import{getPixelValueRange as E}from"../../../layers/support/rasterFormats/pixelRangeUtils.js";import{fromJSON as C}from"../../../renderers/support/jsonUtils.js";import{isSupportedRenderer3D as I}from"../../../renderers/support/rendererConversion.js";import R from"../../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{applyCIMSymbolColor as F}from"../../../symbols/support/cimSymbolUtils.js";import{SymbolSizeDefaults as V}from"../../../symbols/support/previewUtils.js";import{renderSymbol as T}from"../../../symbols/support/renderUtils.js";import{renderColorRampPreviewHTML as z,renderDotDensityPreviewHTML as x,renderPieChartPreviewHTML as j,renderPreviewHTML as D}from"../../../symbols/support/symbolUtils.js";import{isVolumetricSymbol as P}from"../../../symbols/support/utils.js";import{getClusterSizeVariable as O}from"./clusterUtils.js";import{getColorFromPointCloudStops as A,getRampStopsForPointCloud as M,getStrectchRampStops as B,getRampStops as U}from"./colorRampUtils.js";import{getHeatmapRampStops as k}from"./heatmapRampUtils.js";import{getRotationAngleForFocus as N,getRelationshipRampElement as q}from"./relationshipRampUtils.js";import{getRampStops as H,REAL_WORLD_MAX_SIZE as $,REAL_WORLD_MIN_SIZE as W}from"./sizeRampUtils.js";import{SPECIAL_CHARS_LESS_THAN as G,SPECIAL_CHARS_GREATER_THAN as J,getSymbolForFlowRenderer as Q,isRasterBandStatistics as K,getMedianColor as X,RGB_IMG_SOURCE as Y}from"./utils.js";import{formatNumberLabel as Z}from"../../smartMapping/support/utils.js";import ee from"../../../symbols/SimpleMarkerSymbol.js";import te from"../../../symbols/SimpleFillSymbol.js";import{fetchMessageBundle as le}from"../../../intl/messages.js";import{substitute as se}from"../../../intl/substitute.js";const re="https://utility.arcgis.com/sharing/tools/legend",ie="esri.layers.ImageryLayer",ne="esri.layers.ImageryTileLayer",ae="esri.layers.WCSLayer",oe=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i,ue=new a({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryMultiPatch:"multipatch"}),ce=new ee({size:6,outline:{color:[128,128,128,.5],width:.5}}),de=new te({style:"solid"});function ye(e){return"flow"===e.type}function he(e){return"vector-field"===e.type}function me(e){return"raster-colormap"===e.type}function pe(e){return"raster-stretch"===e.type}function fe(e){return"raster-shaded-relief"===e.type}function ge(e){return"esri.renderers.SimpleRenderer"===e.declaredClass}function be(e){return"esri.renderers.ClassBreaksRenderer"===e.declaredClass}function Se(e){return"esri.renderers.UniqueValueRenderer"===e.declaredClass}function _e(e){return"esri.renderers.HeatmapRenderer"===e.declaredClass}function Le(e){return ve(e)||Ee(e)||Ce(e)||we(e)}function we(e){return"esri.renderers.PointCloudRGBRenderer"===e.declaredClass}function ve(e){return"esri.renderers.PointCloudClassBreaksRenderer"===e.declaredClass}function Ee(e){return"esri.renderers.PointCloudStretchRenderer"===e.declaredClass}function Ce(e){return"esri.renderers.PointCloudUniqueValueRenderer"===e.declaredClass}function Ie(e){return"esri.renderers.DotDensityRenderer"===e.declaredClass}function Re(e){return"esri.renderers.PieChartRenderer"===e.declaredClass}function Fe(e,t){return ge(e)||be(e)||Se(e)||_e(e)||Ie(e)||Re(e)?"2d"===t.type||I(e):pe(e)||me(e)||fe(e)||ve(e)||Ee(e)||Ce(e)||he(e)||ye(e)}function Ve(e){return"esri.layers.BuildingSceneLayer"===e.declaredClass}function Te(e){return"esri.layers.SubtypeGroupLayer"===e.declaredClass}function ze(e){return"esri.layers.VoxelLayer"===e.declaredClass}function xe(e){return"esri.layers.WMSLayer"===e.declaredClass}function je(e){return"esri.layers.WMTSLayer"===e.declaredClass}function De(e){return"esri.layers.MapImageLayer"===e.declaredClass}function Pe(e){return"esri.layers.TileLayer"===e.declaredClass}function Oe(e){return e.declaredClass===ie}function Ae(e){return e.declaredClass===ne}function Me(e){return e.declaredClass===ae}function Be(e){return"stretch-ramp"===e.type}function Ue(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type}function ke(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type&&"above-and-below"===t?.univariateTheme}function Ne(e){return"sublayers"in e}async function qe(e,t){const l=await le("esri/widgets/Legend/t9n/Legend");return"previewTemplateAriaLabel"!==e||t||(e="previewAriaLabel"),se(l[e],{label:t})}const He=new ee({style:"path",path:"M10,5 L5,0 0,5 M5,0 L5,15",size:15,outline:{width:1,color:[85,85,85,1]}});let $e={},We=class extends r{constructor(e){super(e),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._webStyleSymbolCache=new Map,this._dotDensityUrlCache=new Map,this._scaleDrivenSizeVariable=null,this._hasClusterSizeVariable=!1,this.children=new n,this.layerView=null,this.layer=null,this.legendElements=[],this.parent=null,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.respectLayerVisibility=!0,this.sublayerIds=[],this.title=null,this.view=null}initialize(){const e=()=>this.notifyChange("ready");this.addHandles([c((()=>this.children),"change",(t=>{const{added:l,removed:s}=t;l.forEach((t=>{const l=`activeLayerInfo-ready-watcher-${t.layer.uid}`;this.addHandles(d((()=>t.ready),e,h),l)})),s.forEach((e=>this.removeHandles(e.layer.uid))),e()}))]),this.keepCacheOnDestroy||($e={})}destroy(){this._webStyleSymbolCache=null,this._dotDensityUrlCache=null,this._scaleDrivenSizeVariable=null,this.keepCacheOnDestroy||($e=null)}get effectList(){const e=this.layer;let t=null;return"effect"in e&&e.effect&&(t=new S,t.effect=e.effect,t.endTransitions(),t.scale=this.scale),t}get opacity(){const e=this.layer.opacity,t=this.parent?.opacity,l=this.layer.parent,s=l&&"uid"in l?this._getParentLayerOpacity(l):null;return null!=t?t*e:null!=s?s*e:e}get ready(){return null===this.layer||(this.children.length>0?this._isGroupActive():this.legendElements.length>0)}get scale(){return this.view?.scale??0}get isScaleDriven(){const e=this.layer;if(null===e)return!1;if("effect"in e&&e.effect&&Array.isArray(e.effect))return!0;if("featureReduction"in e&&e.featureReduction){if("cluster"===e.featureReduction.type)return!0;if("binning"===e.featureReduction.type&&"renderer"in e.featureReduction&&e.featureReduction.renderer)return this._isRendererScaleDriven(e.featureReduction.renderer)}return"renderer"in e&&e.renderer?this._isRendererScaleDriven(e.renderer):this._isLayerScaleDriven(this.layer)}get version(){return this._get("version")+1}async buildLegendElementsForFeatureCollections(e){if(!(!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView()))return this.legendElements=[],void this.notifyChange("ready");const t=Array.from(e,(e=>{if(v(e))return this._getRendererLegendElements(e.renderer,{title:e.title});if(e.featureSet&&e.featureSet.features.length){const t=e.layerDefinition,l=t&&t.drawingInfo,s=l&&C(l.renderer),r=ue.read(t.geometryType);return s?this._getRendererLegendElements(s,{title:e.name,geometryType:r}):(o.getLogger(this).warn("drawingInfo not available!"),null)}return null}));try{const e=[],l=await Promise.allSettled(t);for(const t of l)if("fulfilled"===t.status)for(const l of t.value??[])e.push(l);this.legendElements=e,this.notifyChange("ready")}catch(l){o.getLogger(this).warn("error while building legend for layer!",l)}}async buildLegendElementsForRenderer(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getRendererLegendElements(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForFeatureReduction(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getLegendElementsForFeatureReduction(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForTools(){const e=this.layer;if(ze(e))this._constructLegendElementsForVoxellayer();else if(je(e))this._constructLegendElementsForWMTSlayer();else if(xe(e))await this._constructLegendElementsForWMSSublayers();else if(Ve(e))await this._constructLegendElementsForBuildingSceneLayer();else if(De(e)||Pe(e)||Te(e))await this._constructLegendElementsForSublayers();else{this.removeHandles("imageryLayers-watcher");let t="default";if(Oe(e)){const l=e;t=(l?.rasterFunction?.functionName||"default")+"_"+(e.bandIds?.length?e.bandIds.join(""):"###")}await this._getLegendLayers(`${e.uid}-${t}`).then((async t=>{this.legendElements=[],this.notifyChange("ready");const l=t.map((async t=>{if(Oe(e)||Ae(e)){const t=d((()=>["renderingRule"in e&&e.rasterFunction,e.bandIds]),(()=>u((async()=>{$e.default=null,e.renderer?await this.buildLegendElementsForRenderer(e.renderer):await this.buildLegendElementsForTools()}))()));this.addHandles(t,"imageryLayers-watcher")}const l=this._generateSymbolTableElementForLegendLayer(t);l&&l.infos.length&&(Oe(e)&&(l.title=e.title),this.legendElements.push(l)),this.notifyChange("ready")}));await Promise.allSettled(l)})).catch((e=>{o.getLogger(this).warn("Request to server for legend has failed!",e)}))}}async _isLayerInCurrentView(){const e=this.layer,t=this.layerView,l=t&&"createQuery"in t&&"queryFeatureCount"in t;if(!l&&!(t&&"createQuery"in e&&"queryFeatureCount"in e))return!0;await y((()=>!t.updating));const s=l?"createQuery"in t&&t.createQuery():"createQuery"in e&&e.createQuery();if(!s)return!0;s.geometry=this.view.extent;return 0!==(l?"queryFeatureCount"in t&&await t.queryFeatureCount(s):"queryFeatureCount"in e&&await e.queryFeatureCount(s))}_getParentLayerOpacity(e){let t=1;const l=e.parent;return l&&"uid"in l&&(t=this._getParentLayerOpacity(l)),e.opacity*t}_isGroupActive(){const e=this.children;return!!e.length&&e.some((e=>e.ready))}_isRendererScaleDriven(e){if("dot-density"===e.type)return!0;const t="valueExpression"in e?e.valueExpression:null;if(oe.test(t))return!0;const l="visualVariables"in e?e.visualVariables:null;return!!l&&l.some((e=>this._isScaleDrivenSizeVariable(e)))}_isScaleDrivenSizeVariable(e){if(e&&"size"!==e.type)return!1;const t=e,l=t.minSize,s=t.maxSize;return"object"==typeof l&&l?this._isScaleDrivenSizeVariable(l):"object"==typeof s&&s?this._isScaleDrivenSizeVariable(s):!!t.expression||oe.test(t.valueExpression)}_isLayerScaleDriven(e){if("minScale"in e&&e.minScale>0||"maxScale"in e&&e.maxScale>0)return!0;if("sublayers"in e&&e.sublayers)return e.sublayers.some((e=>this._isLayerScaleDriven(e)));const t=e.parent;if(!1===e.loaded&&t&&De(t)&&"source"in e&&e.source&&"map-layer"===e.source.type)for(const l of t.sourceJSON.layers??[])if(l.id===e.source.mapLayerId&&(l.minScale>0||l.maxScale>0))return!0;return!1}async _constructLegendElementsForVoxellayer(){this.legendElements=[],this.removeHandles("voxel-style-watcher"),this.removeHandles("voxel-current-variable");const e=this.layer;this.addHandles(d((()=>e.currentVariableId),(()=>this._constructLegendElementsForVoxellayer())),"voxel-current-variable"),this.addHandles(d((()=>e.getVariableStyles()),(()=>this._constructLegendElementsForVoxellayer())),"voxel-style-watcher");const t=e.getVariableStyle(null),l=[];if(t)if(t.uniqueValues?.length){const e=[];t.uniqueValues.forEach((t=>{t.enabled&&e.push({label:t.label||`${t.value}`,value:t.value,symbol:new te({color:t.color,outline:null})})})),e.length&&l.push({type:"symbol-table",title:t.label,infos:e})}else if(t.transferFunction){const{colorStops:e,stretchRange:s}=t.transferFunction,r=e.toArray().reverse(),i=s.map(((e,t)=>`${0===t?G:J} ${Z(e)}`)).reverse(),n=r.map((e=>({color:e.color,value:null,label:null})));n[0].label=i[0],n[n.length-1].label=i[1],l.push({type:"color-ramp",title:t.label,infos:n,preview:z(r.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})})}const s=e.opacity,r=l.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).map((e=>this._getSymbolPreview(e,s)));await Promise.allSettled(r),this.legendElements=l,this.notifyChange("ready")}_constructLegendElementsForWMTSlayer(){this.legendElements=[],this.removeHandles("wmts-activeLayer-watcher");const e=this.layer.activeLayer;if(this.addHandles(d((()=>{const{layer:e}=this;return e&&"activeLayer"in e&&e.activeLayer}),(()=>this._constructLegendElementsForWMTSlayer())),"wmts-activeLayer-watcher"),e.styleId&&e.styles){let t=null;e.styles.some((l=>e.styleId===l.id&&(t=l.legendUrl,!0))),t&&(this.legendElements=[{type:"symbol-table",title:e.title,infos:[{src:t,opacity:this.opacity}]}])}this.notifyChange("ready")}async _constructLegendElementsForWMSSublayers(){this.legendElements=[],this.removeHandles("wms-sublayers-watcher");const e=this.layer;let t=null;(e.customParameters||e.customLayerParameters)&&(t={...e.customParameters,...e.customLayerParameters}),this.addHandles(d((()=>{const{layer:e}=this;return e&&"sublayers"in e&&e.sublayers}),(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher"),this.legendElements=await this._generateLegendElementsForWMSSublayers(e.sublayers,t),this.notifyChange("ready")}async _generateLegendElementsForWMSSublayers(e,t){const l=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher");const s=e.toArray();for(const r of s){const e=d((()=>[r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForWMSSublayers()));if(this.addHandles(e,"wms-sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled){const e=await this._generateSymbolTableElementForWMSSublayer(r,t);e&&e.infos.length&&l.unshift(e)}}return l}async _generateSymbolTableElementForWMSSublayer(e,t){if(!e.legendUrl&&e.sublayers){const l=(await this._generateLegendElementsForWMSSublayers(e.sublayers,t)).filter((e=>e));return{type:"symbol-table",title:e.title,infos:l}}return this._generateSymbolTableElementForLegendUrl(e,t)}async _generateSymbolTableElementForLegendUrl(e,t){let l=e.legendUrl;if(!l)return;const r={type:"symbol-table",title:e.title||e.name||String(e.id??""),infos:[]};t&&(l=p(l,t));let i=null;const n=e.layer?.opacity;try{i=(await s(l,{responseType:"image"})).data,i&&(i.style.opacity=n)}catch{}return r.infos.push({src:l,preview:i,opacity:n}),r}_getLegendLayers(e,t){const l=$e&&$e[e];return l?Promise.resolve(l):this._legendRequest(t).then((t=>{const l=t.layers;return $e[e]=l,l}))}_legendRequest(e){const t=this.layer;let l={f:"json",dynamicLayers:e};if(Oe(t)){const e=t.exportImageServiceParameters.rasterFunction;if(e&&(l.renderingRule=JSON.stringify(e.functionDefinition?.toJSON()||e.toJSON())),t.bandIds&&(l.bandIds=t.bandIds.join()),t.raster||t.viewId||t.customParameters){const{raster:e,viewId:s,customParameters:r}=t;l={raster:e,viewId:s,...l,...r}}}let r=t.url.replace(/(\/)+$/,"");if("version"in t&&+t.version>=10.01){const e=r.indexOf("?");e>-1?r=r.substring(0,e)+"/legend"+r.substring(e):r+="/legend"}else{const e=r.toLowerCase().indexOf("/rest/"),t=r.substring(0,e)+r.substring(e+5,r.length);r=re+"?soapUrl="+encodeURI(t)+"&returnbytes=true"}return s(r,{query:l}).then((e=>e.data))}async _constructLegendElementsForBuildingSceneLayer(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForBuildingSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}async _generateLegendElementsForBuildingSublayers(e,t){let l=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");const s=e.toArray();for(const r of s){const e=d((()=>["renderer"in r&&r.renderer,r.opacity,r.title,r.visible]),(()=>this._constructLegendElementsForBuildingSceneLayer()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||r.visible){const e=r&&null!=r.opacity?r.opacity:null,s=null!=e?e*t:t;if("building-group"===r.type){const e={type:"symbol-table",title:r.title,infos:[]},t=await this._generateLegendElementsForBuildingSublayers(r.sublayers,s);e.infos.push(...t),l=[e,...l]}else if(r.renderer){l=[...await this._getRendererLegendElements(r.renderer,{title:r.title,opacity:s,sublayer:r}),...l]}}}return l.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _constructLegendElementsForSublayers(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;if(De(e)||Pe(e)||Te(e)){this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForSublayers)),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}}async _generateLegendElementsForSublayers(e,t,l){const s=this.layer;let r=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForSublayers())),"sublayers-watcher");let n=e.toArray();!l&&this.sublayerIds&&this.sublayerIds.length&&(n=Te(s)?this.sublayerIds.map((e=>s.findSublayerForSubtypeCode(e))).filter(i):this.sublayerIds.map((e=>s.findSublayerById(e))).filter(i));for(const i of n){const e=d((()=>[i.renderer,i.opacity,i.title,i.visible,i.legendEnabled]),(()=>this._constructLegendElementsForSublayers()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||i.visible&&i.legendEnabled&&this._isSublayerInScale(i)){const e=i&&null!=i.opacity?i.opacity:null,s=null!=e?e*t:t,n=!Ne(i)||i.originIdOf("renderer")>b.SERVICE&&!i.sublayers;if(i.renderer&&n){await i.load();r=[...await this._getRendererLegendElements(i.renderer,{title:i.title,opacity:s,sublayer:i}),...r]}else if(Ne(i)){const e=await this._generateSymbolTableElementForSublayer(i,s,l);e&&r.unshift(e)}}}return r.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _generateSymbolTableElementForSublayer(e,t,l){if(!l){l=new Map;const t=this.layer,s=e.source;let r=null;if(!(!s||"map-layer"===s.type&&s.mapLayerId===e.id&&(!s.gdbVersion||s.gdbVersion===("gdbVersion"in t&&t.gdbVersion)))||e.originIdOf("renderer")>b.SERVICE||e.originIdOf("labelingInfo")>b.SERVICE||e.originIdOf("labelsVisible")>b.SERVICE){const e=new L({layer:this.layer});r=e.hasDynamicLayers?e.dynamicLayers:null,e.destroy()}const i=r||`${t.uid}-default`;(await this._getLegendLayers(i,r)).forEach((e=>l.set(e.layerId,e)))}const s=l.get(e.id);if((!s||s?.subLayerIds&&s.defaultVisibility)&&e.sublayers){const s=await this._generateLegendElementsForSublayers(e.sublayers,t,l);return{type:"symbol-table",title:e.title,infos:s}}return this._generateSymbolTableElementForLegendLayer(s,e,t)}_generateSymbolTableElementForLegendLayer(e,t,l){if(!e||!e.legend||this.respectLayerVisibility&&!this._isLegendLayerInScale(e,t))return null;const s=t?.renderer;let r=t?.title||e.layerName;if(s&&(!t||t?.originIdOf("renderer")>b.SERVICE)){const e=t?.title||this._getRendererTitle(s,t);e&&(r&&"string"!=typeof e&&"title"in e&&(e.title=r),r=e)}const i={type:"symbol-table",title:r,legendType:e.legendType||null,infos:[]},n=t?this._sanitizeLegendForSublayer(e.legend.slice(),t):e.legend;return e.legendGroups&&e.legendGroups.length>0?e.legendGroups.forEach((t=>{const s={type:"symbol-table",title:t.heading,legendType:e.legendType||null,infos:this._generateSymbolTableElementInfosForLegendLayer(n.filter((e=>e.groupId===t.id)),e.layerId,l)};s.infos?.length>0&&i.infos.push(s)})):i.infos=this._generateSymbolTableElementInfosForLegendLayer(n,e.layerId,l),i.infos.length>0?i:null}_generateSymbolTableElementInfosForLegendLayer(e,t,s){return e.map((e=>{let r=e.url;if(e.imageData&&e.imageData.length>0)r=`data:image/png;base64,${e.imageData}`;else{if(0===r.indexOf("http"))return null;r=l(`${this.layer.url}/${t}/images/${r}`)}return{label:e.label,src:r,opacity:s??this.opacity,width:e.width,height:e.height}})).filter(i)}_isSublayerInScale(e){const t=e.minScale||0,l=e.maxScale||0;return!(t>0&&t<this.scale||l>this.scale)}_isLegendLayerInScale(e,t){const l=t||this.layer;let s=null,r=null,i=!0;return!l.minScale&&0!==l.minScale||!l.maxScale&&0!==l.maxScale?(0===e.minScale&&l.tileInfo&&(s=l.tileInfo.lods[0].scale),0===e.maxScale&&l.tileInfo&&(r=l.tileInfo.lods[l.tileInfo.lods.length-1].scale)):(s=Math.min(l.minScale,e.minScale)||l.minScale||e.minScale,r=Math.max(l.maxScale,e.maxScale)),(s>0&&s<this.scale||r>this.scale)&&(i=!1),i}_sanitizeLegendForSublayer(e,t){if("version"in this.layer&&+this.layer.version<10.1||0===e.length)return e;const l=t.renderer,s=e.some((e=>e.values));let r=0,i=null;return s&&e.some(((e,t)=>(e.values||(r=t,i=e,i.label||(i.label="others")),null!=i))),l?"unique-value"===l.type?i&&(e.splice(r,1),e.push(i)):"class-breaks"===l.type&&(i&&e.splice(r,1),e.reverse(),i&&e.push(i)):i&&(e.splice(r,1),e.push(i)),e}async _getRendererLegendElements(e,t={}){if(!Fe(e,this.view))return o.getLogger(this).warn(`Renderer of type '${e.type}' not supported!`),[];if(Le(e))return this._constructPointCloudRendererLegendElements(e,t);if(Ie(e))return this._constructDotDensityRendererLegendElements(e);const l=await this._loadRenderer(e);return Re(l)?this._constructPieChartRendererLegendElements(l):this._constructRendererLegendElements(l,t)}async _getLegendElementsForFeatureReduction(e){let t=null;return"binning"===e.type?t=e.renderer:"cluster"===e.type&&(t=this._getClusterRenderer(e)),t?this._getRendererLegendElements(t):[]}_getPointCloudRendererTitle(e){return(e.legendOptions?.title||e.field)??""}async _constructPointCloudRendererLegendElements(e,t={}){const l=t.title,s=[];let r=null,i=null;if(ve(e))r={type:"symbol-table",title:l||this._getPointCloudRendererTitle(e),infos:[]},e.colorClassBreakInfos.forEach((e=>{r.infos.unshift({label:e.label||e.minValue+" - "+e.maxValue,value:[e.minValue,e.maxValue],symbol:this._getAppliedCloneSymbol(ce,e.color)})}));else if(Ee(e)){const t=e.stops;let s=null;if(t?.length&&(1===t.length&&(s=t[0].color),!s)){const e=t[0].value,l=t[t.length-1].value;if(null!=e&&null!=l){s=A(e+(l-e)/2,t)}}r={type:"symbol-table",title:null,infos:[{label:null,value:null,symbol:this._getAppliedCloneSymbol(ce,s||ce.color)}]};const n=M(e.stops??[])??[];i={type:"color-ramp",title:l||this._getPointCloudRendererTitle(e),infos:n,preview:z(n.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})}}else Ce(e)&&(r={type:"symbol-table",title:l||this._getPointCloudRendererTitle(e),infos:[]},e.colorUniqueValueInfos?.forEach((e=>{r.infos.push({label:e.label||e.values.join(", "),value:e.values.join(", "),symbol:this._getAppliedCloneSymbol(ce,e.color)})})));r&&r.infos.length&&s.push(r),i&&i.infos.length&&s.push(i);const n=s.reduce(((e,t)=>[...e,...t.infos??[]]),[]).filter((e=>!!e.symbol)).map((t=>this._getSymbolPreview(t,this.opacity,{symbolConfig:{applyColorModulation:!!e.colorModulation}})));return await Promise.allSettled(n),s}async _getElementInfoForDotDensity(e,t){const{color:l,label:s,valueExpressionTitle:r}=t,{backgroundColor:i,outline:n,dotSize:a}=e,o=this.effectList,u=o?.effects.map((e=>e.toJSON())),c=_(u),d=await qe("previewTemplateAriaLabel",s||r),y=a+"-"+l+"-"+i+"-"+(n&&JSON.stringify(n.toJSON()))+"-"+c,h=this._dotDensityUrlCache,m=h.has(y)?h.get(y):x(e,l,{ariaLabel:d});h.set(y,m);const p={shape:{type:"image",x:0,y:0,width:m.width,height:m.height,src:m.src},fill:null,stroke:null,offset:[0,0]},f=T([[p]],[m.width,m.height],{effectView:this.effectList,ariaLabel:d});return{opacity:1,src:m.src,preview:f,width:m.width,height:m.height}}async _constructDotDensityRendererLegendElements(e){const t=e.calculateDotValue(this.view.scale),l=e.legendOptions&&e.legendOptions.unit,s={type:"symbol-table",title:{value:t&&Math.round(t),unit:l||""},infos:[]};for(const r of e.attributes){const t=await this._getElementInfoForDotDensity(e,r);t.label=r.label||r.valueExpressionTitle||r.field,s.infos.push(t)}return[s]}async _constructPieChartRendererLegendElements(e){const t=this.layer.opacity,l=[];let s=null;const r=e.outline;e.attributes.forEach((e=>{const t=new ee({color:e.color,outline:r}),s=e.label||e.valueExpressionTitle||e.field;l.push({label:s,symbol:t})}));const i=l.length?[...l]:[];if(e.othersCategory?.color&&0!==e.othersCategory?.threshold){const t=new ee({color:e.othersCategory.color,outline:r});s=e.othersCategory.label||"Other",l.push({label:s,symbol:t})}if(e.defaultColor?.a){const t=new ee({color:e.defaultColor,outline:r});l.push({label:e.defaultLabel,symbol:t})}const n=await this._getVisualVariableLegendElements(e,this.layer)||[];if(l.length){n.unshift({type:"symbol-table",title:null,infos:l});const t=i.filter((e=>e.label!==s)).map((e=>e.symbol.color)).filter(Boolean),a=j(t,{holePercentage:e.holePercentage,backgroundColor:e.backgroundFillSymbol?.color,effectList:this.effectList,outline:r,ariaLabel:await qe("previewPieChartAriaLabel")});n.unshift({type:"pie-chart-ramp",title:this._getRendererTitle(e,this.layer),infos:l,preview:a})}const a=n.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol&&!e?.preview)).map((e=>this._getSymbolPreview(e,t,{effectList:this.effectList})));return await Promise.allSettled(a),n}async _constructRendererLegendElements(e,t={}){const{title:l,sublayer:s}=t,r=s||this.layer;this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._scaleDrivenSizeVariable=null;const i=await this._getVisualVariableLegendElements(e,r)||[],n={type:"symbol-table",title:l||this._getRendererTitle(e,r),infos:[]};let a=null,o=!1;const u=new Set;if(ye(e)&&!this._hasSizeRamp){const t=await Q(e);n.infos.push({label:null,symbol:t})}else if(Ue(e)){let t=l;const s=ke(e)?"univariate-above-and-below-ramp":"univariate-color-size-ramp",r=i.findIndex((e=>"color-ramp"===e.type)),n=-1!==r?i.splice(r,1)[0]:null,a=i.findIndex((e=>"size-ramp"===e.type)),o=-1!==a?i.splice(a,1)[0]:null,u=[];n&&(t=n.title,u.push(n)),o&&(t=o.title,u.push(o)),u.length>0&&i.push({type:s,title:t,infos:u})}else if(_e(e)){const t=k(e);i.push({type:"heatmap-ramp",title:l||this._getRendererTitle(e,r),infos:t,preview:z(t.map((e=>e.color)),{effectList:this.effectList,ariaLabel:await qe("previewColorRampAriaLabel")})})}else if(Se(e)){const t=e&&e.authoringInfo;if(t&&"relationship"===t.type){const{numClasses:l,field1:s,field2:a}=t,o=t.focus;if(l&&s&&a){const t=[s,a];let c=N(o)||0;for(const e of t){const{field:t,normalizationField:l,label:s}=e,i=s||{field:this._getFieldAlias(t,r),normField:l&&this._getFieldAlias(l,r)},a=He.clone();a.angle=c,n.infos.push({label:i,symbol:a}),u.add(a),c+=90}const d=q({focus:o,numClasses:l,infos:e.uniqueValueInfos??[]});i.unshift(d)}}else if(Oe(this.layer)||Ae(this.layer))e.uniqueValueInfos?.forEach((e=>{e.symbol&&n.infos.push({label:e.label||e.value,value:e.value,symbol:e.symbol})}));else{const{field:t,field2:s,field3:i,fieldDelimiter:a,valueExpression:u,defaultSymbol:c}=e,d=!(!t&&!u||!s&&!i),y=[];if(e.uniqueValueGroups?.forEach((e=>{const l={type:"symbol-table",title:e.heading,infos:[]};e.classes?.forEach((e=>{const{symbol:n,values:o}=e;if(n){const c=[],y=[];for(const e of o??[]){const{value:l,value2:n,value3:o}=e,h=[],m=[];(t||u)&&(h.push(l),m.push(this._getDomainName(t,l,r))),s&&(h.push(n),m.push(this._getDomainName(s,n,r))),i&&(h.push(o),m.push(this._getDomainName(i,o,r))),c.push(d?h.join(a||""):h[0]),y.push(m.join(" - "))}const h=c.join(", ");let m=e.label;if(!m){const e=y.filter(Boolean);m=e.length?e.join(", "):h}l.infos.push({label:m,value:h,symbol:n})}})),l.infos.length&&y.push(l)})),y.length){const t=y[0];1===y.length&&"title"in t&&!t.title?n.infos.push(...t.infos??[]):(c&&(y.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:c}]}),o=!0),n.infos.push(...y)),l||e.legendOptions&&e.legendOptions.title||e.valueExpressionTitle||(n.title=null)}}e.defaultSymbol&&!o&&(n.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),o=!0)}else if(be(e)){a=this._isUnclassedRenderer(e);(!a||!this._hasSizeRamp)&&(e.classBreakInfos.forEach((e=>{e.symbol&&n.infos.unshift({label:e.label||(a?null:e.minValue+" - "+e.maxValue),value:[e.minValue,e.maxValue],symbol:e.symbol})})),a&&(n.title=null),this._updateInfosforClassedSizeRenderer(e,n.infos)),e.defaultSymbol&&!a&&(n.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),o=!0)}else if(pe(e))if(Ae(this.layer)||Me(this.layer)){const t=await this._constructTileImageryStretchRendererElements(e);Be(t)?i.push(t):n.infos=t}else{const t=this.layer;let l,s;if(e.statistics?.length){const t=e.statistics[0];K(t)?(l=t.min,s=t.max):[l,s]=t}let r=[],a=t.serviceRasterInfo;if(t.rasterFunction)try{a=await t.generateRasterInfo(t.rasterFunction)}catch{}const o=a.keyProperties.BandProperties,u=E(a.pixelType);if(1===a.bandCount){const r=t.bandIds?.[0]||0;l=null!=l?l:a.statistics?a.statistics[r].min:u[0],s=null!=s?s:a.statistics?a.statistics[r].max:u[1],l||s?i.push(await this._getStretchLegendElements(e,{min:l,max:s})):this._getServerSideLegend()}else t.bandIds&&1===t.bandIds.length?(l=null!=l?l:a.statistics?a.statistics[t.bandIds[0]].min:u[0],s=null!=s?s:a.statistics?a.statistics[t.bandIds[0]].max:u[1],l||s?i.push(await this._getStretchLegendElements(e,{min:l,max:s})):this._getServerSideLegend()):a.bandCount>=3?o&&o.length>=a.bandCount?t.bandIds&&3===t.bandIds.length?(r=t.bandIds.map((e=>o[e].BandName)),n.infos=this._createSymbolTableElementMultiBand(r)):"lerc"===t.format?(r=[0,1,2].map((e=>o[e].BandName)),n.infos=this._createSymbolTableElementMultiBand(r)):this._getServerSideLegend():"lerc"===t.format?(r=["band1","band2","band3"],n.infos=this._createSymbolTableElementMultiBand(r)):this._getServerSideLegend():this._getServerSideLegend()}else if(me(e))e.colormapInfos.forEach((e=>{n.infos.push({label:e.label,value:e.value,symbol:this._getAppliedCloneSymbol(de,e.color)})}));else if(ge(e)){let l=e.symbol;switch(t.geometryType){case"point":l="pointSymbol"in r?r.pointSymbol:null;break;case"polyline":l="lineSymbol"in r?r.lineSymbol:null;break;case"polygon":l="polygonSymbol"in r?r.polygonSymbol:null}const s=this._hasClusterSizeVariable&&this._getClusterSymbol()||!this._hasSizeRamp;e.symbol&&s&&n.infos.push({label:e.label,symbol:l})}else if(he(e)){e.outputUnit&&(this.title="("+e.toJSON().outputUnit+")"),n.title=e.attributeField;const t=e.getClassBreakInfos();t?.length?t.forEach((e=>{n.infos.push({label:e.minValue+" - "+e.maxValue,symbol:e.symbol})})):n.infos.push({label:e.attributeField,symbol:e.getDefaultSymbol()})}else fe(e)&&i.push(await this._getStretchLegendElements(e,{min:0,max:255}));const c=e.defaultSymbol;!c||o||ge(e)||a&&!this._hasColorRamp&&!this._hasSizeRamp&&!this._hasOpacityRamp||i.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:c}]}),n.infos.length&&i.unshift(n);const d=null==t.opacity?this.opacity:t.opacity,y=this._isTallSymbol("visualVariables"in e?e.visualVariables:null),h=Oe(this.layer)||Ae(this.layer),m=i.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).map((e=>this._getSymbolPreview(e,d,{isDefault:e.symbol===c,applyScaleDrivenSize:!u.has(e.symbol),symbolConfig:{isTall:y,isSquareFill:h},effectList:u.has(e.symbol)?null:this.effectList})));return e=null,await Promise.allSettled(m),i}_getServerSideLegend(){setTimeout((()=>this.buildLegendElementsForTools()),0)}_getAllInfos(e){const t=e?.infos;return t?t.reduce(((e,t)=>e.concat(this._getAllInfos(t))),[]):[e]}async _constructTileImageryStretchRendererElements(e){const t=this.layer,{rasterInfo:l}=t.raster,s=l.bandCount||e.statistics.length;let r,i,n=[];const a=l.keyProperties&&l.keyProperties.BandProperties,o=e?.statistics?.length?e.statistics:l?.statistics;if(o){const e=o[0];K(e)?(r=e.min,i=e.max):[r,i]=e}else{const e=E(l.pixelType);r=e[0],i=e[1]}if(t.hasStandardTime()&&(r=t.getStandardTimeValue(r),i=t.getStandardTimeValue(i)),1===l.bandCount||1===t.bandIds?.length)return this._getStretchLegendElements(e,{min:r,max:i});function u(e){const s=(t?.bandIds?.length?t.bandIds:Array.from(Array(Math.min(l.bandCount,3)).keys())).map((t=>e&&e[t]&&e[t].BandName||"band"+(t+1)));return s.length<3?s.push(s[1]):s.length>3&&s.splice(3),s}return n=a&&a.length>=s?u(a):u(),this._createSymbolTableElementMultiBand(n)}async _getStretchLegendElements(e,t){const l=e.colorRamp,s=B(l,t);return{type:"stretch-ramp",title:"",infos:s,preview:z(s.map((e=>e.color)),{ariaLabel:await qe("previewColorRampAriaLabel")})}}_getClusterSymbol(){const e=this.layer,t="featureReduction"in e&&e.featureReduction,l=t&&"symbol"in t&&t.renderer;return l&&!0!==l?.authoringInfo?.isAutoGenerated?null:t&&"symbol"in t?t.symbol:null}async _getSizeLegendElement(e,t,l,s){return{type:"size-ramp",title:this._hasClusterSizeVariable?this._getClusterTitle(t):e,infos:await H(l,t,await X(l),this.scale,this.view.type,!!s,this._hasClusterSizeVariable?this._getClusterSymbol():null)}}_createSymbolTableElementMultiBand(e){const t=[],l=["red","green","blue"];return e.forEach(((e,s)=>{t.push({label:{colorName:l[s],bandName:e},src:Y[s],opacity:this.opacity??1})})),t}_updateInfosforClassedSizeRenderer(e,t){const l=e.authoringInfo&&"class-breaks-size"===e.authoringInfo.type,s=e.classBreakInfos.some((e=>P(e.symbol)));if(l&&s){const l=$,s=W,r=e.classBreakInfos.length,i=(l-s)/(r>1?r-1:r);t.forEach(((e,t)=>{e.size=l-i*t}))}}_isTallSymbol(e){let t=!1,l=!1;if(e)for(let s=0;s<e.length&&(!t||!l);s++){const r=e[s];"size"===r.type&&("height"===r.axis&&(t=!0),"width-and-depth"===r.axis&&(l=!0))}return t&&l}async _getSymbolPreview(e,t,l){let s=!l?.isDefault&&null==e.size&&this._hasSizeRamp?m(V.size):e.size;if(this._scaleDrivenSizeVariable&&l?.applyScaleDrivenSize){const{getSize:t}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");s=t(this._scaleDrivenSizeVariable,null,{view:this.view.type,scale:this.scale,shape:"simple-marker"===e.symbol.type?e.symbol.style:null})}return D(e.symbol,{size:s,opacity:t,scale:!1,symbolConfig:l?.symbolConfig,effectView:l?.effectList,ariaLabel:e.label&&"string"!=typeof e.label?null:await qe("previewTemplateAriaLabel",e.label)}).then((t=>(e.preview=t,e))).catch((()=>(e.preview=null,e)))}_getClusterRenderer(e){this._hasClusterSizeVariable=!1;const t="renderer"in this.layer?this.layer.renderer:null,l=e.renderer?.clone()||t?.clone(),s=O(this.layerView._effectiveRenderer,this.view);if(s&&null!=l&&"visualVariables"in l){const t=l.visualVariables?.some((e=>"size"===e.type&&"outline"!==e.target&&!oe.test(e.valueExpression)));if(!t){if("clusterMinSize"in e&&"clusterMaxSize"in e){const{clusterMinSize:t,clusterMaxSize:l}=e;s.legendOptions=new R({showLegend:t!==l})}const t=l.visualVariables||[];l.visualVariables=t.concat([s]),this._hasClusterSizeVariable=!0}}return l}async _loadRenderer(e){const t=[],l=e.clone(),s=await X(l);if(be(l)||Se(l)){const e=(l.classBreakInfos||l.uniqueValueInfos).map((e=>this._fetchSymbol(e.symbol,s).then((t=>{e.symbol=t})).catch((()=>{e.symbol=null}))));Array.prototype.push.apply(t,e)}return t.push(this._fetchSymbol(l.symbol||l.defaultSymbol,l.defaultSymbol?null:s).then((e=>{this._applySymbolToRenderer(l,e,ge(l))})).catch((()=>{this._applySymbolToRenderer(l,null,ge(l))}))),await Promise.allSettled(t),l}_applySymbolToRenderer(e,t,l){l?e.symbol=t:e.defaultSymbol=t}async _fetchSymbol(e,t){if(!e)throw new Error;if("web-style"===e.type){const l=this._webStyleSymbolCache;try{const s=await("2d"===this.view.type?e.fetchCIMSymbol({cache:l}):e.fetchSymbol({cache:l}));return this._getAppliedCloneSymbol(s,t)}catch{throw o.getLogger(this).warn("Fetching web-style failed!"),new Error}}return this._getAppliedCloneSymbol(e,t)}_getAppliedCloneSymbol(e,l){if(!e||!l)return e;const s=e.clone(),r=l&&l.toRgba();return s.type.includes("3d")?this._applyColorTo3dSymbol(s,r):"cim"===s.type?F(s,l):s.color&&(s.color=new t(r||s.color)),s}_applyColorTo3dSymbol(e,l){l&&e.symbolLayers.forEach((e=>{e&&(e.material||(e.material={}),e.material.color=new t(l))}))}async _getVisualVariableLegendElements(e,t){if(!("visualVariables"in e)||!e.visualVariables||"vector-field"===e.type)return null;const l=e.visualVariables,s=[],r=[],n=[];for(const i of l)"color"===i.type?s.push(i):"size"===i.type?r.push(i):"opacity"===i.type&&n.push(i);const a=[...s,...r,...n];let o,u;if(0===s.length&&be(e)&&e.classBreakInfos&&1===e.classBreakInfos.length){const t=e.classBreakInfos[0];o=t&&t.symbol}if(0===s.length&&ge(e)&&(o=e.symbol),o)if(o.type.includes("3d")){const e=o.symbolLayers.at(0);"water"===e.type?null!=e.color&&(u=e.color):null!=e.material&&null!=e.material.color&&(u=e.material.color)}else o.url||(u=o.color);const c=this.effectList;return(await Promise.all(a.map((async l=>{if(!l.legendOptions||!1!==l.legendOptions.showLegend){const s=ye(e)?l.field:this._getRampTitle(l,t);let r=null;const i="getField"in t?t.getField?.(l.field):null,n=i&&w(i);if("color"===l.type){const e=await U(l,null,n)??[];r={type:"color-ramp",title:s,infos:e,preview:z(e.map((e=>e.color)),{effectList:c,ariaLabel:await qe("previewColorRampAriaLabel")})},this._hasColorRamp||(this._hasColorRamp=e.length>0)}else if("size"===l.type&&"outline"!==l.target)oe.test(l.valueExpression)?this._hasClusterSizeVariable||(this._scaleDrivenSizeVariable=l):(r=await this._getSizeLegendElement(s,l,e,n),this._hasSizeRamp||(this._hasSizeRamp=!(null==r.infos||!r.infos.length)));else if("opacity"===l.type){const e=await U(l,u,n)??[];r={type:"opacity-ramp",title:s,infos:e,preview:z(e.map((e=>e.color)),{effectList:c,ariaLabel:await qe("previewColorRampAriaLabel")})},this._hasOpacityRamp||(this._hasOpacityRamp=e.length>0)}return r&&r.infos?r:null}})))).filter(i)}_getDomainName(e,t,l){if(e&&"function"!=typeof e){const s="getField"in l&&l.getField&&l.getField(e),r=s&&"getFieldDomain"in l&&l.getFieldDomain?l.getFieldDomain(s.name):null;return"coded-value"===r?.type?r.getName(t):null}return null}_getClusterTitle(e){const t=this.layer,l=e.field;if("featureReduction"in t&&t.featureReduction&&"cluster"===t.featureReduction.type){const e=t.featureReduction,s="popupTemplate"in e&&e.popupTemplate,r=s&&s.fieldInfos;if(r)for(const t of r)if(t.fieldName===l)return"cluster_count"===l?t.label||{showCount:!0}:t.label}return{showCount:!0}}_getRampTitle(e,t){let l=e.field,s=e.normalizationField,r=!1,i=!1,n=!1,a=null;l="function"==typeof l?null:l,s="function"==typeof s?null:s;const o=e.legendOptions&&e.legendOptions.title;if(null!=o)a=o;else if(e.valueExpressionTitle)a=e.valueExpressionTitle;else{if("renderer"in t&&t.renderer&&"authoringInfo"in t.renderer&&t.renderer.authoringInfo&&t.renderer.authoringInfo.visualVariables){const e=t.renderer.authoringInfo.visualVariables;for(let t=0;t<e.length;t++){const l=e[t];if("color"===l.type){if("ratio"===l.style){r=!0;break}if("percent"===l.style){i=!0;break}if("percent-of-total"===l.style){n=!0;break}}}}a={field:l&&this._getFieldAlias(l,t),normField:s&&this._getFieldAlias(s,t),ratio:r,ratioPercent:i,ratioPercentTotal:n}}return a}_getRendererTitle(e,t){const l=e;if(l.legendOptions&&l.legendOptions.title)return l.legendOptions.title;if(l.valueExpressionTitle)return l.valueExpressionTitle;let s=l.field,r=null,i=null;if(be(l)&&(r=l.normalizationField,i="percent-of-total"===l.normalizationType),s="function"==typeof s?null:s,r="function"==typeof r?null:r,Se(l)){const{field2:e,field3:r,fieldDelimiter:i}=l;let n=s&&this._getFieldAlias(s,t);return e&&(n=`<${n}>${i}<${this._getFieldAlias(e,t)}>`,r&&(n=`${n}${i}<${this._getFieldAlias(r,t)}>`)),n}let n=null;return(s||r)&&(n={field:s&&this._getFieldAlias(s,t),normField:r&&this._getFieldAlias(r,t),normByPct:i}),n}_getFieldAlias(e,t){const l="popupTemplate"in t?t.popupTemplate:null,s=l?.fieldInfos;let r;s&&s.some((t=>e===t.fieldName&&(r=t,!0)));let i=null;"getField"in t&&t.getField?i=t.getField(e):"fieldsIndex"in t&&t.fieldsIndex&&(i=t.fieldsIndex.get(e));let n=null;const a="featureReduction"in t&&t.featureReduction;a&&(!r&&"popupTemplate"in a&&a.popupTemplate&&a.popupTemplate.fieldInfos&&a.popupTemplate.fieldInfos.some((t=>e?.toLowerCase()===t.fieldName?.toLowerCase()&&(r=t,!0))),"fields"in a&&a.fields&&(n=a.fields.find((t=>t.name?.toLowerCase()===e?.toLowerCase()))));const o=r||i||n;let u=null;return o&&(u=r?.label||i?.alias||n?.alias||"name"in o&&o.name||"fieldName"in o&&o.fieldName||null),u}_isUnclassedRenderer(e){const t=e.visualVariables;let l=!1;return be(e)&&e.classBreakInfos&&1===e.classBreakInfos.length&&t&&(l=e.field?t.some((t=>!(!t||e.field!==t.field||(e.normalizationField||t.normalizationField)&&e.normalizationField!==t.normalizationField))):!!t.length),l}};e([f()],We.prototype,"children",void 0),e([f({readOnly:!0})],We.prototype,"effectList",null),e([f()],We.prototype,"layerView",void 0),e([f()],We.prototype,"layer",void 0),e([f()],We.prototype,"legendElements",void 0),e([f({readOnly:!0})],We.prototype,"opacity",null),e([f()],We.prototype,"parent",void 0),e([f({readOnly:!0,dependsOn:[]})],We.prototype,"ready",null),e([f()],We.prototype,"hideLayersNotInCurrentView",void 0),e([f()],We.prototype,"keepCacheOnDestroy",void 0),e([f()],We.prototype,"respectLayerVisibility",void 0),e([f({readOnly:!0})],We.prototype,"scale",null),e([f()],We.prototype,"sublayerIds",void 0),e([f({readOnly:!0})],We.prototype,"isScaleDriven",null),e([f()],We.prototype,"title",void 0),e([f({readOnly:!0,dependsOn:["ready"],value:0})],We.prototype,"version",null),e([f()],We.prototype,"view",void 0),We=e([g("esri.widgets.Legend.support.ActiveLayerInfo")],We);const Ge=We;export{Ge as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import l from"../../../Color.js";import{createStopLabel as e}from"./utils.js";const o=new l([64,64,64]);function r(l,o){const r=[],n=l.length-1;return 5===l.length?r.push(0,2,4):r.push(0,n),l.map(((l,t)=>r.includes(t)?e(l,t,n,o):null))}async function n(l,e,o){let n=!1,a=[],u=[];if(l.stops){const e=l.stops;a=e.map((l=>l.value)),n=e.some((l=>!!l.label)),n&&(u=e.map((l=>l.label)))}const s=a[0],i=a.at(-1);if(null==s&&null==i)return null;const c=n?null:r(a,o??!1);return(await Promise.all(a.map((async(o,r)=>({value:o,color:"opacity"===l.type?await t(o,l,e):(await import("../../../renderers/visualVariables/support/visualVariableUtils.js")).getColor(l,o),label:n?u[r]:c?.[r]??""}))))).reverse()}async function t(e,r,n){const t=new l(n??o),a=(await import("../../../renderers/visualVariables/support/visualVariableUtils.js")).getOpacity(r,e);return null!=a&&(t.a=a),t}function a(l){let e=!1,o=[],n=[];o=l.map((l=>l.value)),e=l.some((l=>!!l.label)),e&&(n=l.map((l=>l.label??"")));const t=o[0],a=o.at(-1);if(null==t&&null==a)return null;const s=e?null:r(o,!1);return o.map(((o,r)=>({value:o,color:u(o,l),label:e?n[r]:s?.[r]??""}))).reverse()}function u(e,o){const{startIndex:r,endIndex:n,weight:t}=s(e,o);if(r===n)return o[r].color;const a=l.blendColors(o[r].color,o[n].color,t);return new l(a)}function s(l,e){let o=0,r=e.length-1;return e.some(((e,n)=>l<e.value?(r=n,!0):(o=n,!1))),{startIndex:o,endIndex:r,weight:(l-e[o].value)/(e[r].value-e[o].value)}}function i(e,o){let r=[];if(e&&"multipart"===e.type)e.colorRamps.reverse().forEach(((n,t)=>{0===t?r.push({value:o.max,color:new l(n.toColor),label:"high"}):r.push({value:null,color:new l(n.toColor),label:""}),t===e.colorRamps.length-1?r.push({value:o.min,color:new l(n.fromColor),label:"low"}):r.push({value:null,color:new l(n.fromColor),label:""})}));else{let n,t;e&&"algorithmic"===e.type?(n=e.fromColor,t=e.toColor):(n=[0,0,0,1],t=[255,255,255,1]),r=[{value:o.max,color:new l(t),label:"high"},{value:o.min,color:new l(n),label:"low"}]}return r}export{u as getColorFromPointCloudStops,n as getRampStops,a as getRampStopsForPointCloud,i as getStrectchRampStops};
5
+ import l from"../../../Color.js";import{createStopLabel as e}from"./utils.js";const o=new l([64,64,64]);function n(l,o){const n=[],r=l.length-1;return 5===l.length?n.push(0,2,4):n.push(0,r),l.map(((l,t)=>n.includes(t)?e(l,t,r,o):null))}async function r(l,e,o){let r=!1,a=[],u=[];if(l.stops){const e=l.stops;a=e.map((l=>l.value)),r=e.some((l=>!!l.label)),r&&(u=e.map((l=>l.label)))}const s=a[0],i=a[a.length-1];if(null==s&&null==i)return null;const c=r?null:n(a,o??!1);return(await Promise.all(a.map((async(o,n)=>({value:o,color:"opacity"===l.type?await t(o,l,e):(await import("../../../renderers/visualVariables/support/visualVariableUtils.js")).getColor(l,o),label:r?u[n]:c?.[n]??""}))))).reverse()}async function t(e,n,r){const t=new l(r??o),a=(await import("../../../renderers/visualVariables/support/visualVariableUtils.js")).getOpacity(n,e);return null!=a&&(t.a=a),t}function a(l){let e=!1,o=[],r=[];o=l.map((l=>l.value)),e=l.some((l=>!!l.label)),e&&(r=l.map((l=>l.label??"")));const t=o[0],a=o[o.length-1];if(null==t&&null==a)return null;const s=e?null:n(o,!1);return o.map(((o,n)=>({value:o,color:u(o,l),label:e?r[n]:s?.[n]??""}))).reverse()}function u(e,o){const{startIndex:n,endIndex:r,weight:t}=s(e,o);if(n===r)return o[n].color;const a=l.blendColors(o[n].color,o[r].color,t);return new l(a)}function s(l,e){let o=0,n=e.length-1;return e.some(((e,r)=>l<e.value?(n=r,!0):(o=r,!1))),{startIndex:o,endIndex:n,weight:(l-e[o].value)/(e[n].value-e[o].value)}}function i(e,o){let n=[];if(e&&"multipart"===e.type)e.colorRamps.reverse().forEach(((r,t)=>{0===t?n.push({value:o.max,color:new l(r.toColor),label:"high"}):n.push({value:null,color:new l(r.toColor),label:""}),t===e.colorRamps.length-1?n.push({value:o.min,color:new l(r.fromColor),label:"low"}):n.push({value:null,color:new l(r.fromColor),label:""})}));else{let r,t;e&&"algorithmic"===e.type?(r=e.fromColor,t=e.toColor):(r=[0,0,0,1],t=[255,255,255,1]),n=[{value:o.max,color:new l(t),label:"high"},{value:o.min,color:new l(r),label:"low"}]}return n}export{u as getColorFromPointCloudStops,r as getRampStops,a as getRampStopsForPointCloud,i as getStrectchRampStops};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../Color.js";import{isSymbol3D as l}from"../../../symbols.js";import{round as t,numDigits as o,percentChange as i}from"../../../renderers/support/numberUtils.js";import{applyCIMSymbolColor as n}from"../../../symbols/support/cimSymbolUtils.js";import{isVolumetricSymbol as s,getSymbolOutlineSize as r}from"../../../symbols/support/utils.js";import{getSymbolForFlowRenderer as a,createStopLabel as u}from"./utils.js";import"../../support/widgetUtils.js";import{isDarkTheme as c}from"../../../support/themeUtils.js";import m from"../../../symbols/SimpleMarkerSymbol.js";import f from"../../../symbols/SimpleLineSymbol.js";const p=30,y=12,b=[255,255,255],h=[200,200,200],d=[128,128,128],w=20,S=5;function v(e){return"esri.symbols.SimpleMarkerSymbol"===e.declaredClass}function g(e){return"esri.symbols.PictureMarkerSymbol"===e.declaredClass}function z(e){return"esri.symbols.SimpleLineSymbol"===e.declaredClass}function j(e){return"esri.symbols.TextSymbol"===e.declaredClass}function V(e,l){const t=e.length-1;return e.map(((e,o)=>u(e,o,t,l)))}async function k(e,l,o,i,n,a,u){const c=l.legendOptions,m=c&&c.customValues,f=u||await U(e,o),p=l.stops,y=!!f,b=!!m,h=null!=l.minSize&&null!=l.maxSize,d=p&&p.length>1,w=!!l.target;if(!y||!b&&!(h||d&&!w))return;const S=s(f);let v=!1,g=null,z=null;g=S&&!d?t([l.minDataValue,l.maxDataValue]):m??await D(l,f,i,n);const j=e?.authoringInfo,k="univariate-color-size"===j?.type,C=k&&"above-and-below"===j?.univariateTheme;if(!g&&d&&(g=p.map((e=>e.value)),v=p.some((e=>!!e.label)),"flow"===e.type&&(g=t(g)),v&&(z=p.map((e=>e.label)))),S&&null!=g&&g?.length>2&&!C&&(g=[g[0],g.at(-1)]),!g)return null;k&&5!==g?.length&&(g=E({minSize:g[0],maxSize:g.at(-1)}));const I=S?x(e,g):null,M=r(f),T=v?null:V(g,a);return(await Promise.all(g.map((async(t,o)=>{const s=S?I[o]:await B(l,f,t,i,n);return{value:t,symbol:P(C&&"class-breaks"===e.type?L(e,o):f,s),label:v?z[o]:T[o],size:s,outlineSize:M}})))).reverse()}function x(e,l){const t=e?.authoringInfo,o="univariate-color-size"===t?.type;let i=[y,p];if(o){const e=l[0],t=l.at(-1),o=y,n=p;i=l.map((l=>o+(l-e)/(t-e)*(n-o)))}return o&&"below"===t?.univariateTheme&&i.reverse(),i}function L(e,l){const t=e.classBreakInfos,o=t.length,i=o<2||!(l>=2)?t[0].symbol.clone():t[o-1].symbol.clone();return e.visualVariables.some((e=>"color"===e.type))&&(i.type.includes("3d")?I(i):M(i)),i}async function U(e,l){if("flow"===e.type)return a(e,l);if("pie-chart"===e.type)return new m({color:null,outline:e.outline?.width?e.outline:new f});let t=null,o=null;if("simple"===e.type)t=e.symbol;else if("class-breaks"===e.type){const l=e.classBreakInfos;t=l&&l[0]&&l[0].symbol,o=l.length>1}else if("unique-value"===e.type){const l=e.uniqueValueInfos;t=l?.[0]?.symbol,o=null!=l&&l.length>1}return!t||C(t)?null:(t=t.clone(),(l||o)&&(t.type.includes("3d")?I(t):M(t)),t)}function C(e){if(e){if(l(e)){return!!e.symbolLayers&&e.symbolLayers.some((e=>e&&"fill"===e.type))}return e.type.includes("fill")}return!1}function I(e){"line-3d"===e.type?e.symbolLayers.forEach((e=>{e.material={color:d}})):e.symbolLayers.forEach((e=>{"icon"!==e.type||e.resource&&e.resource.href?e.material={color:h}:(e.material={color:b},e.outline={color:d,size:1.5})}))}function M(l){const t=c();if("cim"===l.type)n(l,new e(h));else if(l.type.includes("line"))l.color=d;else if(l.color=t?d:b,"simple-marker"===l.type)if(l.outline){const e=l.outline?.color?.toHex();"#ffffff"===e&&(l.outline.color=d)}else l.outline={color:d,width:1.5}}async function D(e,l,o,i){const n=(await import("../../../renderers/visualVariables/support/visualVariableUtils.js")).getSizeRangeAtScale(e,o,i),s=n&&E(n);if(!n||!s)return;let r=s.map((l=>T(l,e,n)));r=t(r);for(let t=1;t<r.length-1;t++){const n=await q(e,l,r[t],r[t-1],o,i);n&&(r[t]=n[0],s[t]=n[1])}return r}function E(e){const l=e.minSize,t=e.maxSize,o=S,i=(t-l)/(o-1),n=[];for(let s=0;s<o;s++)n.push(l+i*s);return n}function T(e,l,t){const o=t.minSize,i=t.maxSize,n=l.minDataValue,s=l.maxDataValue;let r;if(e<=o)r=n;else if(e>=i)r=s;else{r=(e-o)/(i-o)*(s-n)+n}return r}async function q(e,l,n,s,r,a){const u=await B(e,l,n,r,a),c=await B(e,l,s,r,a),m=o(n),f=m.fractional,p=w;let y=m.integer,b=null,h=null;n>0&&n<1&&(b=10**f,y=o(n*=b).integer);for(let o=y-1;o>=0;o--){const s=10**o;let m=Math.floor(n/s)*s,f=Math.ceil(n/s)*s;null!=b&&(m/=b,f/=b);let y=(m+f)/2;[,y]=t([m,y,f],{indexes:[1]});const d=await B(e,l,m,r,a),w=await B(e,l,f,r,a),S=await B(e,l,y,r,a),v=i(u,d,c,null),g=i(u,w,c,null),z=i(u,S,c,null);let j=v.previous<=p,V=g.previous<=p;if(j&&V&&(v.previous<=g.previous?(j=!0,V=!1):(V=!0,j=!1)),j?h=[m,d]:V?h=[f,w]:z.previous<=p&&(h=[y,S]),h)break}return h}async function B(e,l,t,o,i){const{getSize:n}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");return n(e,t,{scale:o,view:i,shape:"simple-marker"===l.type?l.style:null})}function P(e,t){const o=e.clone();if(l(o))s(o)||o.symbolLayers.forEach((e=>{"fill"!==e.type&&(e.size=t)}));else if(v(o))o.size=t;else if(g(o)){const e=o.width,l=o.height;o.height=t,o.width=t*(e/l)}else z(o)?o.width=t:j(o)&&o.font&&(o.font.size=t);return o}export{p as REAL_WORLD_MAX_SIZE,y as REAL_WORLD_MIN_SIZE,k as getRampStops};
5
+ import e from"../../../Color.js";import{isSymbol3D as l}from"../../../symbols.js";import{round as t,numDigits as n,percentChange as o}from"../../../renderers/support/numberUtils.js";import{applyCIMSymbolColor as i}from"../../../symbols/support/cimSymbolUtils.js";import{isVolumetricSymbol as s,getSymbolOutlineSize as r}from"../../../symbols/support/utils.js";import{getSymbolForFlowRenderer as a,createStopLabel as u}from"./utils.js";import"../../support/widgetUtils.js";import{isDarkTheme as c}from"../../../support/themeUtils.js";import m from"../../../symbols/SimpleMarkerSymbol.js";import f from"../../../symbols/SimpleLineSymbol.js";const p=30,y=12,b=[255,255,255],h=[200,200,200],d=[128,128,128],w=20,g=5;function S(e){return"esri.symbols.SimpleMarkerSymbol"===e.declaredClass}function v(e){return"esri.symbols.PictureMarkerSymbol"===e.declaredClass}function z(e){return"esri.symbols.SimpleLineSymbol"===e.declaredClass}function j(e){return"esri.symbols.TextSymbol"===e.declaredClass}function V(e,l){const t=e.length-1;return e.map(((e,n)=>u(e,n,t,l)))}async function k(e,l,n,o,i,a,u){const c=l.legendOptions,m=c&&c.customValues,f=u||await U(e,n),p=l.stops,y=!!f,b=!!m,h=null!=l.minSize&&null!=l.maxSize,d=p&&p.length>1,w=!!l.target;if(!y||!b&&!(h||d&&!w))return;const g=s(f);let S=!1,v=null,z=null;v=g&&!d?t([l.minDataValue,l.maxDataValue]):m??await D(l,f,o,i);const j=e?.authoringInfo,k="univariate-color-size"===j?.type,C=k&&"above-and-below"===j?.univariateTheme;if(!v&&d&&(v=p.map((e=>e.value)),S=p.some((e=>!!e.label)),"flow"===e.type&&(v=t(v)),S&&(z=p.map((e=>e.label)))),g&&null!=v&&v?.length>2&&!C&&(v=[v[0],v[v.length-1]]),!v)return null;k&&5!==v?.length&&(v=E({minSize:v[0],maxSize:v[v.length-1]}));const I=g?x(e,v):null,M=r(f),T=S?null:V(v,a);return(await Promise.all(v.map((async(t,n)=>{const s=g?I[n]:await B(l,f,t,o,i);return{value:t,symbol:P(C&&"class-breaks"===e.type?L(e,n):f,s),label:S?z[n]:T[n],size:s,outlineSize:M}})))).reverse()}function x(e,l){const t=e?.authoringInfo,n="univariate-color-size"===t?.type;let o=[y,p];if(n){const e=l[0],t=l[l.length-1],n=y,i=p;o=l.map((l=>n+(l-e)/(t-e)*(i-n)))}return n&&"below"===t?.univariateTheme&&o.reverse(),o}function L(e,l){const t=e.classBreakInfos,n=t.length,o=n<2||!(l>=2)?t[0].symbol.clone():t[n-1].symbol.clone();return e.visualVariables.some((e=>"color"===e.type))&&(o.type.includes("3d")?I(o):M(o)),o}async function U(e,l){if("flow"===e.type)return a(e,l);if("pie-chart"===e.type)return new m({color:null,outline:e.outline?.width?e.outline:new f});let t=null,n=null;if("simple"===e.type)t=e.symbol;else if("class-breaks"===e.type){const l=e.classBreakInfos;t=l&&l[0]&&l[0].symbol,n=l.length>1}else if("unique-value"===e.type){const l=e.uniqueValueInfos;t=l?.[0]?.symbol,n=null!=l&&l.length>1}return!t||C(t)?null:(t=t.clone(),(l||n)&&(t.type.includes("3d")?I(t):M(t)),t)}function C(e){if(e){if(l(e)){return!!e.symbolLayers&&e.symbolLayers.some((e=>e&&"fill"===e.type))}return e.type.includes("fill")}return!1}function I(e){"line-3d"===e.type?e.symbolLayers.forEach((e=>{e.material={color:d}})):e.symbolLayers.forEach((e=>{"icon"!==e.type||e.resource&&e.resource.href?e.material={color:h}:(e.material={color:b},e.outline={color:d,size:1.5})}))}function M(l){const t=c();if("cim"===l.type)i(l,new e(h));else if(l.type.includes("line"))l.color=d;else if(l.color=t?d:b,"simple-marker"===l.type)if(l.outline){const e=l.outline?.color?.toHex();"#ffffff"===e&&(l.outline.color=d)}else l.outline={color:d,width:1.5}}async function D(e,l,n,o){const i=(await import("../../../renderers/visualVariables/support/visualVariableUtils.js")).getSizeRangeAtScale(e,n,o),s=i&&E(i);if(!i||!s)return;let r=s.map((l=>T(l,e,i)));r=t(r);for(let t=1;t<r.length-1;t++){const i=await q(e,l,r[t],r[t-1],n,o);i&&(r[t]=i[0],s[t]=i[1])}return r}function E(e){const l=e.minSize,t=e.maxSize,n=g,o=(t-l)/(n-1),i=[];for(let s=0;s<n;s++)i.push(l+o*s);return i}function T(e,l,t){const n=t.minSize,o=t.maxSize,i=l.minDataValue,s=l.maxDataValue;let r;if(e<=n)r=i;else if(e>=o)r=s;else{r=(e-n)/(o-n)*(s-i)+i}return r}async function q(e,l,i,s,r,a){const u=await B(e,l,i,r,a),c=await B(e,l,s,r,a),m=n(i),f=m.fractional,p=w;let y=m.integer,b=null,h=null;i>0&&i<1&&(b=10**f,y=n(i*=b).integer);for(let n=y-1;n>=0;n--){const s=10**n;let m=Math.floor(i/s)*s,f=Math.ceil(i/s)*s;null!=b&&(m/=b,f/=b);let y=(m+f)/2;[,y]=t([m,y,f],{indexes:[1]});const d=await B(e,l,m,r,a),w=await B(e,l,f,r,a),g=await B(e,l,y,r,a),S=o(u,d,c,null),v=o(u,w,c,null),z=o(u,g,c,null);let j=S.previous<=p,V=v.previous<=p;if(j&&V&&(S.previous<=v.previous?(j=!0,V=!1):(V=!0,j=!1)),j?h=[m,d]:V?h=[f,w]:z.previous<=p&&(h=[y,g]),h)break}return h}async function B(e,l,t,n,o){const{getSize:i}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");return i(e,t,{scale:n,view:o,shape:"simple-marker"===l.type?l.style:null})}function P(e,t){const n=e.clone();if(l(n))s(n)||n.symbolLayers.forEach((e=>{"fill"!==e.type&&(e.size=t)}));else if(S(n))n.size=t;else if(v(n)){const e=n.width,l=n.height;n.height=t,n.width=t*(e/l)}else z(n)?n.width=t:j(n)&&n.font&&(n.font.size=t);return n}export{p as REAL_WORLD_MAX_SIZE,y as REAL_WORLD_MIN_SIZE,k as getRampStops};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import"../../../symbols.js";import{formatDate as A,convertDateFormatToIntlOptions as l}from"../../../intl/date.js";import{format as t}from"../../../renderers/support/numberUtils.js";import a from"../../../symbols/SimpleLineSymbol.js";const i="<",r=">",o=l("short-date");function n(l,a,n,s){let e="";0===a?e=`${i} `:a===n&&(e=`${r} `);let u=null;return u=s?A(l,o):t(l),e+u}const s=["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwcdIkqhiWn5fHwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu6JrzFUAAAAASUVORK5CYII=","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwaeIkqhiWl5/HwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu6sKxboAAAAASUVORK5CYII=","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwadJEqhiWl5fPwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu75+IUcAAAAASUVORK5CYII="];async function e(A){if(!("visualVariables"in A)||!A.visualVariables)return null;const l=A.visualVariables.find((A=>"color"===A.type));if(!l)return null;let t=null,a=null;if(l.stops){if(1===l.stops.length)return l.stops[0].color;t=l.stops[0].value,a=l.stops.at(-1).value}const i=null!=t&&null!=a?t+(a-t)/2:0,{getColor:r}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");return r(l,i)??null}async function u(A,l){const t=A.trailCap,i=A.trailWidth||1,r=l||await e(A)||A.color;return new a({cap:t,color:r,width:i})}function p(A){return null!=A&&"object"==typeof A&&"min"in A&&"max"in A}export{s as RGB_IMG_SOURCE,r as SPECIAL_CHARS_GREATER_THAN,i as SPECIAL_CHARS_LESS_THAN,n as createStopLabel,e as getMedianColor,u as getSymbolForFlowRenderer,p as isRasterBandStatistics};
5
+ import"../../../symbols.js";import{formatDate as A,convertDateFormatToIntlOptions as l}from"../../../intl/date.js";import{format as t}from"../../../renderers/support/numberUtils.js";import i from"../../../symbols/SimpleLineSymbol.js";const a="<",o=">",r=l("short-date");function n(l,i,n,s){let e="";0===i?e=`${a} `:i===n&&(e=`${o} `);let u=null;return u=s?A(l,r):t(l),e+u}const s=["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwcdIkqhiWn5fHwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu6JrzFUAAAAASUVORK5CYII=","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwaeIkqhiWl5/HwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu6sKxboAAAAASUVORK5CYII=","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwadJEqhiWl5fPwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu75+IUcAAAAASUVORK5CYII="];async function e(A){if(!("visualVariables"in A)||!A.visualVariables)return null;const l=A.visualVariables.find((A=>"color"===A.type));if(!l)return null;let t=null,i=null;if(l.stops){if(1===l.stops.length)return l.stops[0].color;t=l.stops[0].value,i=l.stops[l.stops.length-1].value}const a=null!=t&&null!=i?t+(i-t)/2:0,{getColor:o}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");return o(l,a)??null}async function u(A,l){const t=A.trailCap,a=A.trailWidth||1,o=l||await e(A)||A.color;return new i({cap:t,color:o,width:a})}function p(A){return null!=A&&"object"==typeof A&&"min"in A&&"max"in A}export{s as RGB_IMG_SOURCE,o as SPECIAL_CHARS_GREATER_THAN,a as SPECIAL_CHARS_LESS_THAN,n as createStopLabel,e as getMedianColor,u as getSymbolForFlowRenderer,p as isRasterBandStatistics};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../Graphic.js";import{isSome as r}from"../../core/arrayUtils.js";import i from"../../core/Collection.js";import o from"../../core/Evented.js";import{isSerializable as s}from"../../core/JSONSupport.js";import a from"../../core/Logger.js";import{clamp as n}from"../../core/mathUtils.js";import{destroyMaybe as l}from"../../core/maybe.js";import{once as g,on as h,watch as c,initial as u}from"../../core/reactiveUtils.js";import{createScreenPoint as m}from"../../core/screenUtils.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import{ensureType as p}from"../../core/accessorSupport/ensureType.js";import"../../core/has.js";import{subclass as y}from"../../core/accessorSupport/decorators/subclass.js";import _ from"../../geometry/Extent.js";import v from"../../layers/GraphicsLayer.js";import f from"../../layers/ImageryTileLayer.js";import{searchImages as C}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as w}from"../../layers/orientedImagery/core/bestImageUtils.js";import{createCoveragePolygon as P,computePolygonForInspection as I,resizePolygon as b,checkIfPolygonContainsSelectedPoint as F}from"../../layers/orientedImagery/core/coverageUtils.js";import{updateElevation as S,transformPoints as V}from"../../layers/orientedImagery/transformations/groundToImageUtils.js";import{transformPoints as x}from"../../layers/orientedImagery/transformations/imageToGroundUtils.js";import O from"../../layers/support/RasterFunction.js";import{convolutionKernel as j}from"../../layers/support/rasterFunctionConstants.js";import M from"../../views/MapView.js";import{getResolutionToScaleFactor as G}from"../../views/2d/viewpointUtils.js";import{projectWithEngineOrService as R}from"../../views/support/projectionUtils.js";import{activePolygonSymbol as L,polygonSymbol as A,activeSourcePointSymbol as D,sourcePointSymbol as E,crossSymbol as U,diamondSymbol as T}from"./symbols.js";import N from"../../geometry/Polygon.js";import J from"../../geometry/SpatialReference.js";import k from"../../geometry/Point.js";const H={click:"view-click",view:"view",viewLayers:"view-layers",mapLayers:"map-layers",layerViews:"layer-views",layerListMode:"layer-list-mode",children:"children",registerLayerSelection:"register-layer-selection",plotPointOnGround:"plot-point-on-ground"};function z(e){return"3d"===e?.type}function B(e){return"esri.Graphic"===e?.declaredClass}function $(e){return/.*.(tif|mrf)$/i.test(e??"")}let q=class extends o.EventedAccessor{constructor(e){super(e),this.activeLayer=null,this.shouldShowSelectedImage=!1,this.coverageFrustums=null,this.coveragePolygons=null,this.displayMessage=null,this.pointSources=null,this.selectedFeature=null,this.selectedPoint=null,this.features=null,this.mapImageConversionToolState=!1,this._additionalCoveragePolygons=null,this._additionalFeatureGraphics=null,this._currentCoveragePolygon=null,this._currentImage=null,this._fetchFeaturesController=null,this._imageViewer=null,this._initialCurrentCoveragePolygon=null,this._initialCurrentCoverageUpdate=!0,this._overlays=null,this._referencePointOnGround=null,this._referencePointOnImage=null,this._crossSymbol=null,this._panConstraint=null,this._scaleConstraint=null,this._transformController=new AbortController,this._updateCoverageController=null,this.loadViewer=this.loadViewer.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this)}initialize(){g((()=>this.view?.ready)).then((()=>{this._overlays=new v({listMode:"hide"}),this.view.map.layers.add(this._overlays)})),this.addHandles([h((()=>this.view),"click",(e=>{this.view.ready&&this.active&&(e.stopPropagation(),e.preventDefault(),"mouse"===e.pointerType&&0!==e.button||(this.mapImageConversionToolState?(this.plotReferencePoint(e),this.transformAndPlotReferencePointOnImage({feature:this.selectedFeature,selectedLocation:e.mapPoint,options:{signal:this._transformController?.signal}})):(this.displayMessage=null,this.selectedPoint=e.mapPoint,this.features=null,this.selectedFeature=null,this._overlays?.removeAll(),this._overlays?.add(new t({geometry:e.mapPoint.clone(),symbol:U})),this._fetchFeaturesWithController(e))))})),c((()=>this.view?.map?.allLayers?.length),(e=>{e&&this._overlays&&this.view.map.layers.reorder(this._overlays,e-1)}),{initial:!0})],H.view)}destroy(){this._cancelCurrentCoverageUpdate(),this._cancelFetchingFeatures(),this.coverageFrustums=null,this.coveragePolygons=null,this.pointSources=null,this._additionalCoveragePolygons=null,this._additionalFeatureGraphics=null,this._currentImage=l(this._currentImage),this._imageViewer=l(this._imageViewer),this._initialCurrentCoveragePolygon=l(this._initialCurrentCoveragePolygon),this._currentCoveragePolygon=l(this._currentCoveragePolygon),this._crossSymbol=l(this._crossSymbol),this._referencePointOnGround=l(this._referencePointOnGround),this._referencePointOnImage=l(this._referencePointOnImage),this._overlays&&this.view?.map.remove(this._overlays),this._overlays=l(this._overlays)}get active(){return!0===this.view?.map?.allLayers.some((e=>"oriented-imagery"===e.type&&e.loaded))}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",n(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",n(e,-10,10))}get currentImageView(){return this._imageViewer?.allLayerViews.find((e=>e.layer===this._currentImage))}get featureCount(){return this.features?.length??0}get imageLoaded(){return this._currentImage?.loaded??!1}get isAdditionalCoverageDisabled(){return!this._additionalCoveragePolygons?.length}get isAdditionalCoverageVisible(){return this._additionalCoveragePolygons?.getItemAt(0)?.visible??!1}get isAdditionalPointSourcesDisabled(){return!this._additionalFeatureGraphics?.length}get isAdditionalPointSourcesVisible(){return this._additionalFeatureGraphics?.getItemAt(0)?.visible??!1}get isCurrentCoverageDisabled(){return!this._currentCoveragePolygon}get isCurrentCoverageVisible(){return!!this._currentCoveragePolygon?.visible}get isImageGalleryEnabled(){return!(this.featureCount<2)&&$(this.selectedFeature?.attributes.image?.trim())}get updating(){return(this.currentImageView?.updating??!1)||"loading"===this._currentImage?.loadStatus||!!this._fetchFeaturesController}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",n(e,0,1))}get state(){const{active:e,activeLayer:t}=this;return e||t?this._currentImage?.loadStatus?`image-${this._currentImage.loadStatus}`:"ready":"disabled"}get thumbnails(){const{features:e}=this;return e?new i(e.map((({attributes:{image:e,objectId:t}})=>{const r=e?.trim();return $(r)?{url:r,objectId:t}:null})).filter(r)):null}set view(e){this._set("view",e)}getCurrentCoveragePolygon(){return this._currentCoveragePolygon}getSelectedFeature(){return this.selectedFeature}getSelectedFeaturePolygon(){return this._initialCurrentCoveragePolygon}loadViewer(e){const t=new Map,r={wkid:0};this._imageViewer=new M({container:e,map:t,spatialReferance:r,constraints:{snapToZoom:!1,rotationEnabled:!1},ui:{components:["zoom"]}}),g((()=>!0===this._imageViewer?.stationary)).then((()=>{this.setMessage("onLoadMessage","info")})),this._imageViewer.addHandles([this._imageViewer.on("click",(async e=>{if(0===e.button&&this._currentImage&&this.mapImageConversionToolState&&this._currentImage&&this._currentImage.fullExtent){const{xmin:t,xmax:r,ymin:i,ymax:o}=this._currentImage.fullExtent,{x:s,y:a}=e.mapPoint;if(t>s||r<s||o<a||i>a)return;this.plotReferencePointOnImage(e.mapPoint);const n=this.getSelectedFeature();if(n){const t=(await x([e.mapPoint.toJSON()],{feature:n,currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:this._transformController?.signal}}))[0];t&&this.plotReferencePointOnGround(t)}}})),c((()=>[this._imageViewer?.viewpoint,this._initialCurrentCoveragePolygon]),(()=>{this._imageViewer?.viewpoint&&this._initialCurrentCoveragePolygon&&(this._cancelCurrentCoverageUpdate(),this.updateCoverage())})),c((()=>this.selectedFeature),(async()=>{const{_fetchFeaturesController:e,selectedFeature:t,selectedPoint:r}=this;!t&&this._currentImage&&(this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage=l(this._currentImage)),t&&r&&(await this.loadImage(t,{signal:e?.signal}),this.transformAndPlotSelectedLocation({signal:this._fetchFeaturesController?.signal}))}))])}async searchBestImage(e,t){try{const r=await C(e,t);r&&await this._processFeatureResponse(r,{signal:t?.signal})}catch(r){const e=a.getLogger(this);this.setMessage("imageLoadError","error"),e.error("error occurred while finding best image",r)}}toggleAdditionalCameraLocations(){this._additionalFeatureGraphics?.forEach((e=>{e.visible=!e.visible}))}toggleAdditionalCoverage(){this._additionalCoveragePolygons?.forEach((e=>{e.visible=!e.visible}))}toggleCurrentCoverage(){this._currentCoveragePolygon&&(this._currentCoveragePolygon.visible=!this._currentCoveragePolygon.visible,this._selectedFeatureGraphic.visible=!this._selectedFeatureGraphic)}toggleMapImageConversionToolState(){this.mapImageConversionToolState=!this.mapImageConversionToolState}_cancelFetchingFeatures(){const e=this._fetchFeaturesController;e&&e.abort(),this._fetchFeaturesController=null}_cancelCurrentCoverageUpdate(){const e=this._updateCoverageController;e&&e.abort("Multiple Coverage Updates: Aborting Current Coverage Update to sync image and coverage"),this._updateCoverageController=null}async _fetchFeatures(e,t){const{screenPoint:r}=e,i=this.activeLayer;if(i){const e={include:i},o=await this.view.hitTest(r,e);this._processHitTestResults(i,o,t)}}async _fetchFeaturesWithController(e){this._cancelFetchingFeatures();const t=new AbortController,{signal:r}=t;this._fetchFeaturesController=t;try{this._fetchFeatures(e,{signal:r})}catch(i){const e=a.getLogger(this);this.setMessage("imageLoadError","error"),e.error("error occurred while fetching features",i)}this._fetchFeaturesController=null}async _processFeatureResponse(e,r){const{selectedPoint:o}=this;if(!o)return;if(!e)return;const a=e;if(this._fetchFeaturesController=null,!a)return;const{features:n}=a;if(!n.length)return this.setMessage("noImageError","error"),void(this.selectedFeature=null);const l=new Array;this.coveragePolygons=new i,this.coverageFrustums=new i,this.pointSources=new i,n.forEach((e=>{let t;const{polygon:r,frustum:i}=P(e);if(t=r,e.attributes.isInspection&&(t=I(e.attributes)),e.layer.coveragePercent&&(t=b(t,e.layer.coveragePercent)),F(t,o)){l.push(e);const r=t.toJSON(),o=i?.toJSON(),{attributes:a}=e,{cameraHeight:n,cameraHeading:g,location:h,objectId:c}=a,u=s(h)?h.toJSON():h;r.imageID=u.imageID=c,o&&(o.imageID=c),u.z=n,this.pointSources?.push(u),this.coveragePolygons?.push(g>0?r:void 0),this.coverageFrustums?.push(g>0?o:void 0)}}));const g=this.coveragePolygons?.getItemAt(0);if(!l.length)return void this.setMessage("noImageError","error");if(l[0].attributes.elevationSource&&!o.z&&g){const e=await S([o],{feature:l[0],currentCoveragePolygon:new N(g),options:r});if(e[0]){const t=e[0];o.elevation=t.z}}const h=w({features:l,selectedPoint:o,camera:z(this.view)?this.view.camera:null,currentImage:this.selectedFeature});h?.sort(((e,t)=>e.suitability-t.suitability));const c=h?.map((e=>e.feature)),u=c[0];await this._updateFeatures(c),this._additionalCoveragePolygons=new i,this._additionalFeatureGraphics=new i,this._currentCoveragePolygon&&(this._currentCoveragePolygon.destroy(),this._currentCoveragePolygon=null,this._initialCurrentCoveragePolygon=null);for(const i of this.coveragePolygons)i?.imageID===u?.attributes.objectId?this._initialCurrentCoveragePolygon=new t({attributes:{imageID:i?.imageID},geometry:{type:"polygon",...i},symbol:L,visible:!1}):this._additionalCoveragePolygons.push(new t({attributes:{imageID:i?.imageID},geometry:{type:"polygon",...i},symbol:A,visible:!1}));for(const i of this.pointSources)i.imageID===u?.attributes.objectId?this._selectedFeatureGraphic=new t({attributes:{imageID:i.imageID},geometry:{type:"point",...i},symbol:D,visible:!1}):this._additionalFeatureGraphics?.push(new t({attributes:{imageID:i.imageID},geometry:{type:"point",...i},symbol:E,visible:!1}));this.selectedFeature=u,this._initialCurrentCoverageUpdate=!0}async _processHitTestResults(e,t,r){const{screenPoint:i,results:o}=t,s=this.view.toMap(i),a=o[0],n={layerInstanceOrURL:e,point:s,queryParams:{maximumDistance:e.maximumDistance,objectIds:this.shouldShowSelectedImage?[a.graphic.attributes.id]:void 0,outSpatialReference:s.spatialReference},queryFeatures:null};await this.searchBestImage(n,r)}async _updateFeatures(e){e.length&&(this.features=new i(e),this.notifyChange("features"))}plotReferencePoint(e){"mapPoint"in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}updateCurrentCoveragePolygon(e){if(this._initialCurrentCoverageUpdate)if(this._initialCurrentCoverageUpdate=!1,e&&(this._currentCoveragePolygon&&(this._overlays?.remove(this._currentCoveragePolygon),this._currentCoveragePolygon.destroy()),e.visible=this.isCurrentCoverageVisible,this._currentCoveragePolygon=e),this.view)this._overlays?.graphics.addMany([...this._additionalCoveragePolygons??[],...this._additionalFeatureGraphics??[],this._currentCoveragePolygon,this._selectedFeatureGraphic].filter(B));else{const e={points:this.pointSources?.filter((e=>e?.imageID!==this.selectedFeature?.attributes.objectId)),frustums:this.coverageFrustums?.filter((e=>e?.imageID!==this.selectedFeature?.attributes.objectId)),polygons:this._additionalCoveragePolygons?.map((e=>e.geometry?.toJSON())),currentPoint:this.selectedFeature?.geometry,currentPolygon:this._currentCoveragePolygon,currentFrustum:this.coverageFrustums?.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId))};this.emit("plot-polygons",{data:e})}else if(this.view){const t=this._currentCoveragePolygon&&this._overlays?this._overlays.graphics.indexOf(this._currentCoveragePolygon):-1;e&&(this._currentCoveragePolygon&&(this._overlays?.remove(this._currentCoveragePolygon),this._currentCoveragePolygon.destroy()),e.visible=this.isCurrentCoverageVisible,this._currentCoveragePolygon=e,this._overlays?.graphics.add(this._currentCoveragePolygon,t>=0?t:void 0))}else e&&(this._currentCoveragePolygon=e,this.emit("update-current-coverage",{graphic:e.toJSON()}))}async loadImage(e,t){if(!this._imageViewer)return;if(this._imageViewer.graphics.removeAll(),this._currentImage&&this._imageViewer?.map.layers.includes(this._currentImage)&&(this._currentImage?.removeHandles("image-handles"),this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage?.destroy(),this._currentImage=null),!e)return void this.setMessage("noImageError","error");const r=e.attributes.image;this._referencePointOnGround&&(this._imageViewer?.graphics.remove(this._referencePointOnGround),this._referencePointOnGround.destroy());const i={skipExtensions:["aux.xml","jgw"]};this._currentImage=new f({ioConfig:i,url:r,options:t}),this._imageViewer.map.layers.add(this._currentImage);try{const t=await this._currentImage.when();this._imageViewer.extent=t.fullExtent,t.raster.rasterInfo.isPseudoSpatialReference&&(this._imageViewer.constraints.rotationEnabled=!0,this._imageViewer.rotation=(e.attributes.cameraRoll??0)+(e.attributes.imageRotation??0),this._imageViewer.constraints.rotationEnabled=!1),this._panConstraint&&this._imageViewer?.constraints.customConstraints.remove(this._panConstraint),this._panConstraint={constrain:(e,t)=>{if(!this._currentImage||!this._imageViewer||!e.targetGeometry)return e;const{xmin:r,xmax:i,ymin:o,ymax:s}=this._currentImage.fullExtent,{width:a,height:n}=this._imageViewer.extent,l=this._imageViewer?.rotation*Math.PI/180,g=Math.abs(Math.cos(l)*a+Math.sin(l)*n),h=Math.abs(Math.cos(l)*n+Math.sin(l)*a),{width:c,height:u}=this._currentImage.rasterInfo;return e.targetGeometry.x=Math.min(Math.max(r+(c>g?g:c)/2,e.targetGeometry.x),i-(c>g?g:c)/2),e.targetGeometry.y=Math.min(Math.max(o+(u>h?h:u)/2,e.targetGeometry.y),s-(u>h?h:u)/2),e}},this._scaleConstraint&&this._imageViewer?.constraints.customConstraints.remove(this._scaleConstraint),this._scaleConstraint={constrain:(e,t)=>{if(this._imageViewer&&this._currentImage){const{width:t,height:r}=this._currentImage.rasterInfo,{width:i,height:o}=this._imageViewer;e.scale=Math.min(e.scale,G(this._imageViewer.spatialReference)*Math.max(t/i,r/o))}return e}},this._imageViewer?.constraints.customConstraints.add(this._panConstraint),this._imageViewer?.constraints.customConstraints.add(this._scaleConstraint),t.addHandles(c((()=>[this.brightness,this.contrast,this.sharpness]),(([e,r,i])=>{t.loaded&&(t.effect=`contrast(${10*(r+10)}%) brightness(${10*(e+10)}%)`,this.sharpenImage(t,i))}),u))}catch(o){a.getLogger(this).error("oriented-imagery-viewer:load-image",o),this.setMessage("imageLoadError","error",o.message)}}sharpenImage(e,t){const r=[0,-1*t,0,-1*t,5,-1*t,0,-1*t,0],i=new O({functionName:"Convolution",functionArguments:{type:j.userDefined,cols:3,rows:3,kernel:r,convolutionType:j.userDefined}});e.renderer=null,e.rasterFunction=i}async transformAndPlotSelectedLocation(e){const{_currentImage:r,selectedFeature:i,selectedPoint:o}=this;if(!o||!i||!r?.loaded)return;const{pixelSize:s}=r.rasterInfo,a=await V([o],{feature:i,imageProperties:r.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:e});if(!a.length)return;const n=a[0];if(!n)return;const l=p(_,await R(r.fullExtent,p(J,this._imageViewer?.spatialReference),null,e?.signal));n.x=n.x*s.x+l.xmin,n.y=l.ymax-n.y*s.y,n.spatialReference=l.spatialReference,this._crossSymbol&&(this._imageViewer?.graphics.remove(this._crossSymbol),this._crossSymbol.destroy()),this._crossSymbol=new t({geometry:k.fromJSON(n),symbol:U}),this._imageViewer?.graphics.add(this._crossSymbol)}async transformAndPlotReferencePointOnImage(e){if(!this._imageViewer)return;const t=this._currentImage;if(!t)return;const{feature:r,selectedLocation:i,options:o}=e,{pixelSize:s,isPseudoSpatialReference:a,transform:n}=t.rasterInfo,l=await V([i],{feature:r,imageProperties:t.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:o});if(!l.length)return;let g=l[0];const h=await R(t.fullExtent,this._imageViewer.spatialReference,null,o?.signal);a?(g.x=g.x*s.x+h.xmin,g.y=h.ymax-g.y*s.y,g.spatialReference=h.spatialReference):g=n.forwardTransform(new k(g)),this.plotReferencePointOnImage(g)}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),this._referencePointOnGround=new t({geometry:{type:"point",...e.toJSON()},symbol:T}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit("plot-ground-point",{data:{point:this._referencePointOnGround?.geometry}})}plotReferencePointOnImage(e){this._imageViewer&&(this._referencePointOnImage&&(this._imageViewer.graphics.remove(this._referencePointOnImage),this._referencePointOnImage.destroy()),this._referencePointOnImage=new t({geometry:{type:"point",...s(e)?e.toJSON():e},symbol:T}),this._imageViewer.graphics.add(this._referencePointOnImage))}setMessage(e,t,r){this.displayMessage={key:e,type:t,data:r}}async updateCoverage(){const e=new AbortController,{signal:r}=e;this._updateCoverageController=e;const{_imageViewer:i}=this;if(this._currentImage?.loaded&&i){const{width:e,height:o}=this._currentImage.rasterInfo,{xmin:s,xmax:a,ymin:n,ymax:l}=this._currentImage.fullExtent,g=[[0,0],[Math.min(i.width,e),0],[Math.min(i.width,e),Math.min(i.height,o)],[0,Math.min(i.height,o)]].map((e=>i.toMap(m(e[0],e[1]))));g.forEach((e=>{e.x=s<=e.x&&e.x<=a?e.x:Math.abs(s-e.x)>Math.abs(a-e.x)?a:s,e.y=n<=e.y&&e.y<=l?e.y:Math.abs(n-e.y)>Math.abs(l-e.y)?l:n}));const h=await x(g,{feature:this.getSelectedFeature(),currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:r}});if(h&&!r.aborted){const e=[h.map((e=>[e.x,e.y,1]))];e[0].push(e[0][0]);const r=new N({hasZ:!0,rings:e,spatialReference:h[0].spatialReference});this.updateCurrentCoveragePolygon(new t({geometry:r,symbol:L,visible:this.isCurrentCoverageVisible}))}}}};e([d()],q.prototype,"active",null),e([d()],q.prototype,"activeLayer",void 0),e([d()],q.prototype,"shouldShowSelectedImage",void 0),e([d({type:Number})],q.prototype,"brightness",null),e([d({type:Number})],q.prototype,"contrast",null),e([d()],q.prototype,"coverageFrustums",void 0),e([d()],q.prototype,"coveragePolygons",void 0),e([d()],q.prototype,"currentImageView",null),e([d()],q.prototype,"displayMessage",void 0),e([d()],q.prototype,"pointSources",void 0),e([d()],q.prototype,"selectedFeature",void 0),e([d()],q.prototype,"selectedPoint",void 0),e([d({readOnly:!0})],q.prototype,"featureCount",null),e([d()],q.prototype,"features",void 0),e([d()],q.prototype,"imageLoaded",null),e([d()],q.prototype,"isAdditionalCoverageDisabled",null),e([d()],q.prototype,"isAdditionalCoverageVisible",null),e([d()],q.prototype,"isAdditionalPointSourcesDisabled",null),e([d()],q.prototype,"isAdditionalPointSourcesVisible",null),e([d()],q.prototype,"isCurrentCoverageDisabled",null),e([d()],q.prototype,"isCurrentCoverageVisible",null),e([d()],q.prototype,"isImageGalleryEnabled",null),e([d()],q.prototype,"mapImageConversionToolState",void 0),e([d()],q.prototype,"updating",null),e([d({type:Number})],q.prototype,"sharpness",null),e([d()],q.prototype,"state",null),e([d()],q.prototype,"thumbnails",null),e([d()],q.prototype,"view",null),e([d()],q.prototype,"_additionalCoveragePolygons",void 0),e([d()],q.prototype,"_additionalFeatureGraphics",void 0),e([d()],q.prototype,"_currentCoveragePolygon",void 0),e([d()],q.prototype,"_currentImage",void 0),e([d()],q.prototype,"_fetchFeaturesController",void 0),e([d()],q.prototype,"_imageViewer",void 0),e([d()],q.prototype,"_initialCurrentCoveragePolygon",void 0),e([d()],q.prototype,"_initialCurrentCoverageUpdate",void 0),e([d()],q.prototype,"_overlays",void 0),e([d()],q.prototype,"_referencePointOnGround",void 0),e([d()],q.prototype,"_referencePointOnImage",void 0),e([d()],q.prototype,"_selectedFeatureGraphic",void 0),q=e([y("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],q);const W=q;export{W as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../Graphic.js";import{isSome as r}from"../../core/arrayUtils.js";import i from"../../core/Collection.js";import s from"../../core/Evented.js";import{isSerializable as o}from"../../core/JSONSupport.js";import a from"../../core/Logger.js";import{clamp as n}from"../../core/mathUtils.js";import{destroyMaybe as l}from"../../core/maybe.js";import{once as c,on as h,watch as u,initial as g}from"../../core/reactiveUtils.js";import{createScreenPoint as m}from"../../core/screenUtils.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import{ensureType as p}from"../../core/accessorSupport/ensureType.js";import"../../core/has.js";import{subclass as y}from"../../core/accessorSupport/decorators/subclass.js";import _ from"../../geometry/Extent.js";import{geographicToWebMercator as v}from"../../geometry/support/webMercatorUtils.js";import f from"../../layers/GraphicsLayer.js";import P from"../../layers/ImageryTileLayer.js";import{searchImages as C}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as I}from"../../layers/orientedImagery/core/bestImageUtils.js";import{createCoveragePolygon as w,computePolygonForInspection as b,resizePolygon as F,checkIfPolygonContainsSelectedPoint as S}from"../../layers/orientedImagery/core/coverageUtils.js";import{updateElevation as x,transformPoints as V}from"../../layers/orientedImagery/transformations/groundToImageUtils.js";import{transformPoints as M}from"../../layers/orientedImagery/transformations/imageToGroundUtils.js";import j from"../../layers/support/RasterFunction.js";import{convolutionKernel as O}from"../../layers/support/rasterFunctionConstants.js";import A from"../../views/MapView.js";import{getResolutionToScaleFactor as G}from"../../views/2d/viewpointUtils.js";import{projectWithEngineOrService as D}from"../../views/support/projectionUtils.js";import{SECTORS_IN_ORDER as R,SECTORS_RADII as E}from"./constants.js";import{activePolygonSymbol as L,polygonSymbol as U,activeSourcePointSymbol as T,sourcePointSymbol as N,crossSymbol as k,diamondSymbol as H}from"./symbols.js";import{isTifOrMrf as J,isSceneView as z,isGraphic as B}from"./utils.js";import q from"../../geometry/Polygon.js";import $ from"../../geometry/SpatialReference.js";import W from"../../geometry/Point.js";const Z={click:"view-click",view:"view",viewLayers:"view-layers",mapLayers:"map-layers",layerViews:"layer-views",layerListMode:"layer-list-mode",children:"children",registerLayerSelection:"register-layer-selection",plotPointOnGround:"plot-point-on-ground"};let K=class extends s.EventedAccessor{constructor(e){super(e),this.activeLayer=null,this.shouldShowSelectedImage=!1,this.coverageFrustums=new i,this.coveragePolygons=new i,this.disabled=!1,this.displayMessage=null,this.pointSources=new i,this.previousFeatureAngle=0,this.selectedFeature=null,this.selectedFeatureAngle=0,this.selectedPoint=null,this.features=new i,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.isCurrentCoverageVisible=!1,this.mapImageConversionToolState=!1,this.navigatorSelectedFeature=null,this._additionalCoveragePolygons=new i,this._additionalFeatureGraphics=new i,this._currentCoveragePolygon=null,this._currentImage=null,this._fetchFeaturesController=null,this._imageViewer=null,this._initialCurrentCoveragePolygon=null,this._initialCurrentCoverageUpdate=!0,this._overlays=null,this._plotPolygons=!1,this._initialPreviousCoveragePolygon=null,this._referencePointOnGround=null,this._referencePointOnImage=null,this._sectorData=null,this._crossSymbol=null,this._panConstraint=null,this._scaleConstraint=null,this._suitabilities=null,this._transformController=new AbortController,this._updateCoverageController=null,this.handleSectorClick=this.handleSectorClick.bind(this),this.loadViewer=this.loadViewer.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this)}initialize(){c((()=>this.view?.ready)).then((()=>{this._overlays=new f({listMode:"hide"}),this.view.map.layers.add(this._overlays)})),this.addHandles([h((()=>this.view),"click",(e=>{if(this.view.ready&&!this.disabled&&this.active&&(e.stopPropagation(),e.preventDefault(),"mouse"!==e.pointerType||0===e.button))if(this.mapImageConversionToolState)this.plotReferencePoint(e),this.transformAndPlotReferencePointOnImage({feature:this.selectedFeature,selectedLocation:e.mapPoint,options:{signal:this._transformController?.signal}});else{const{mapPoint:t}=e;this.displayMessage=null,this.selectedPoint=t.spatialReference.isGeographic?v(t):t.clone(),this.features.removeAll(),this.selectedFeature=null,this._fetchFeaturesWithController(e)}})),u((()=>this.view?.map?.allLayers?.length),(e=>{e&&this._overlays&&this.view.map.layers.reorder(this._overlays,e-1)}),{initial:!0})],Z.view)}destroy(){this._cancelCurrentCoverageUpdate(),this._cancelFetchingFeatures(),this.coverageFrustums.destroy(),this.coveragePolygons.destroy(),this.pointSources.destroy(),this._additionalCoveragePolygons.destroy(),this._additionalFeatureGraphics.destroy(),this._currentImage=l(this._currentImage),this._imageViewer=l(this._imageViewer),this._initialCurrentCoveragePolygon=l(this._initialCurrentCoveragePolygon),this._currentCoveragePolygon=l(this._currentCoveragePolygon),this._crossSymbol=l(this._crossSymbol),this._referencePointOnGround=l(this._referencePointOnGround),this._referencePointOnImage=l(this._referencePointOnImage),this._overlays&&this.view?.map.remove(this._overlays),this._overlays=l(this._overlays)}get active(){return!0===this.view?.map?.allLayers.some((e=>"oriented-imagery"===e.type&&e.loaded))}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",n(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",n(e,-10,10))}get currentImageView(){return this._imageViewer?.allLayerViews.find((e=>e.layer===this._currentImage))}get featureCount(){return this.features?.length??0}get imageLoaded(){return this._currentImage?.loaded??!1}get isImageGalleryEnabled(){return!(this.featureCount<2)&&J(this.selectedFeature?.attributes.image?.trim())}get updating(){return"loading"===this._currentImage?.loadStatus||!!this._fetchFeaturesController}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",n(e,0,1))}get sectorData(){const{_sectorData:e}=this;if(e)return R.map((t=>e[t]))}get state(){const{active:e,activeLayer:t}=this;return e||t?this._currentImage?.loadStatus?`image-${this._currentImage.loadStatus}`:"ready":"disabled"}get thumbnails(){const{features:e}=this;return e?new i(e.map((({attributes:{image:e,objectId:t}})=>{const r=e?.trim();return J(r)?{url:r,objectId:t}:null})).filter(r)):null}set view(e){this._set("view",e)}getCurrentCoveragePolygon(){return this._currentCoveragePolygon}getSelectedFeature(){return this.selectedFeature}getSelectedFeaturePolygon(){return this._initialCurrentCoveragePolygon}handleSectorClick(e){if(isNaN(e))return;const t=this._sectorData?.[R[e]];t?.length&&this._updateSelectedFeature(t.at(0))}handleFeatureClick(e){const{sector:t,featureIndexInSector:r}=e;if(isNaN(r))return;const i=this._sectorData?.[t];i?.length&&this._updateSelectedFeature(i.at(r))}loadViewer(e){const t=new Map,r={wkid:0};this._imageViewer=new A({container:e,map:t,spatialReferance:r,constraints:{snapToZoom:!1,rotationEnabled:!1},ui:{components:["zoom"]}}),c((()=>!0===this._imageViewer?.stationary)).then((()=>{this.setMessage("onLoadMessage","info")})),this._imageViewer.addHandles([this._imageViewer.on("click",(async e=>{if(0===e.button&&this._currentImage&&this.mapImageConversionToolState&&this._currentImage&&this._currentImage.fullExtent){const{xmin:t,xmax:r,ymin:i,ymax:s}=this._currentImage.fullExtent,{x:o,y:a}=e.mapPoint;if(t>o||r<o||s<a||i>a)return;this.plotReferencePointOnImage(e.mapPoint);const n=this.getSelectedFeature();if(n){const t=(await M([e.mapPoint.toJSON()],{feature:n,currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:this._transformController?.signal}}))[0];t&&this.plotReferencePointOnGround(t)}}})),u((()=>[this._imageViewer?.viewpoint,this._initialCurrentCoveragePolygon]),((e,t)=>{this._initialPreviousCoveragePolygon=t?.[1],this._imageViewer?.viewpoint&&this._initialCurrentCoveragePolygon&&(this._cancelCurrentCoverageUpdate(),this.updateCoverage())})),u((()=>this.selectedFeatureAngle),((e,t)=>{this.previousFeatureAngle=t??0}),g),u((()=>this.selectedFeature),(async()=>{const{selectedFeature:e,selectedPoint:t}=this;this._fetchFeaturesController??=new AbortController;const{signal:r}=this._fetchFeaturesController;!e&&this._currentImage&&(this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage=l(this._currentImage)),e&&t&&(this._initialCurrentCoverageUpdate=!0,this._updatePointsAndPolygons(),await this.loadImage(e,{signal:r}).finally((()=>{this._fetchFeaturesController=null})))}))])}async searchBestImage(e,t){try{const r=await C(e,t);r&&await this._processFeatureResponse(r,{signal:t?.signal})}catch(r){const e=a.getLogger(this);this.setMessage("imageLoadError","error"),e.error("error occurred while finding best image",r)}}setAdditionalCameraLocationsVisibility(e){this._additionalFeatureGraphics.forEach((t=>{t.visible=e}))}setAdditionalCoverageVisibility(e){this._additionalCoveragePolygons.forEach((t=>{t.visible=e}))}setCurrentCoverageVisibility(e){this._currentCoveragePolygon&&(this._currentCoveragePolygon.visible=e),this._selectedFeatureGraphic&&(this._selectedFeatureGraphic.visible=e)}setMapImageConversionToolState(e){this.mapImageConversionToolState=e}_cancelFetchingFeatures(e){const t=this._fetchFeaturesController;t&&t.abort(e),this._fetchFeaturesController=null}_cancelCurrentCoverageUpdate(){const e=this._updateCoverageController;e&&e.abort("Multiple Coverage Updates: Aborting Current Coverage Update to sync image and coverage"),this._updateCoverageController=null}async _fetchFeatures(e,t){const{screenPoint:r}=e,i=this.activeLayer;if(i){const e={include:i},s=await this.view.hitTest(r,e);this._processHitTestResults(i,s,t)}}async _fetchFeaturesWithController(e){this._cancelFetchingFeatures();const t=new AbortController,{signal:r}=t;this._fetchFeaturesController=t;try{await this._fetchFeatures(e,{signal:r}).finally((()=>{this._fetchFeaturesController=null}))}catch(i){const e=a.getLogger(this);this.setMessage("imageLoadError","error"),e.error("error occurred while fetching features",i)}}_groupFeaturesBySectors(){const{_suitabilities:e,features:t}=this;if(!e||!t)return void(this._sectorData=null);this._sectorData={};for(const a of R)this._sectorData[a]=new i;const r=e.map(((e,t)=>({...e,featureIndex:t})));r.sort(((e,t)=>e.trueSuitability-t.trueSuitability));const s=r.map((({distance:e})=>e)),o=Math.max(...s);r.forEach((e=>{const{distance:r,angle:i,featureIndex:s}=e;let a="FAR";const n=r/o*E[2];n<=E[0]?a="NEAR":n<=E[1]&&(a="");let l="NORTH";if(Math.abs(i)>=135?l="WEST":i<-45&&i>-135?l="SOUTH":i<=45&&(l="EAST"),!this._sectorData)return;const c=E[3]+n*Math.sin(i*Math.PI/180),h=E[3]+n*Math.cos(i*Math.PI/180);let u;const g=t.at(s),m=g===this.selectedFeature,d=this.selectedFeature?.attributes.cameraPitch&&this.selectedFeature?.attributes.cameraPitch<5;if(m&&d)u=-90;else{const e=c-E[3],t=h-E[3],r=t/Math.sqrt(e**2+t**2);let i=180*Math.acos(r)/Math.PI;(e<0&&t<0||e<0&&t>0)&&(i*=-1),u=i}const p=""===a?l:`${a}_${l}`;m&&(u===this.selectedFeatureAngle?this.previousFeatureAngle=u:this.selectedFeatureAngle=u,this.navigatorSelectedFeature=d?null:{x:c,y:h,direction:l});const y=this._sectorData[p];y.add({angle:i,featureIndex:s,x:c,y:h,objectID:g.attributes.objectId,sector:p,featureIndexInSector:y.length})}))}async _processFeatureResponse(e,t){const{selectedPoint:r}=this;if(!r)return;if(!e)return;const i=e;if(!i)return;const{features:s}=i;if(!s.length)return this.setMessage("noImageError","error"),void(this.selectedFeature=null);const a=new Array;this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll(),s.forEach((e=>{let t;const{polygon:i,frustum:s}=w(e);if(t=i,e.attributes.isInspection&&(t=b(e.attributes)),e.layer.coveragePercent&&(t=F(t,e.layer.coveragePercent)),S(t,r)){a.push(e);const r=t.toJSON(),i=s?.toJSON(),{attributes:n}=e,{cameraHeight:l,cameraHeading:c,location:h,objectId:u}=n,g=o(h)?h.toJSON():h;r.imageID=g.imageID=u,i&&(i.imageID=u),g.z=l,this.pointSources?.push(g),this.coveragePolygons?.push(c>0?r:void 0),this.coverageFrustums?.push(c>0?i:void 0)}}));const n=this.coveragePolygons?.getItemAt(0);if(!a.length)return void this.setMessage("noImageError","error");if(a[0].attributes.elevationSource&&!r.z&&n){const e=await x([r],{feature:a[0],currentCoveragePolygon:new q(n),options:t});if(e[0]){const t=e[0];r.elevation=t.z}}this._suitabilities=I({features:a,selectedPoint:r,camera:z(this.view)?this.view.camera:null,currentImage:this.selectedFeature}),this._suitabilities?.sort(((e,t)=>e.suitability-t.suitability));const l=this._suitabilities?.map((e=>e.feature)),c=l[0];this._updateFeatures(l),this.selectedFeature=c,this._groupFeaturesBySectors(),this._initialCurrentCoverageUpdate=!0,this._plotPolygons=!0}async _processHitTestResults(e,t,r){const{screenPoint:i,results:s}=t,o=this.view.toMap(i),a=s[0],n={layerInstanceOrURL:e,point:o,queryParams:{maximumDistance:e.maximumDistance,objectIds:this.shouldShowSelectedImage?[a.graphic.attributes.id]:void 0},queryFeatures:null};await this.searchBestImage(n,r)}_updateFeatures(e){e.length&&(this.features.removeAll(),this.features.addMany(e))}_updatePointsAndPolygons(){const{coveragePolygons:e,pointSources:r,selectedFeature:i,isCurrentCoverageVisible:s,isAdditionalCoverageVisible:o,isAdditionalPointSourcesVisible:a}=this;if(e&&r&&i){this._additionalCoveragePolygons.removeAll(),this._additionalFeatureGraphics.removeAll(),this._currentCoveragePolygon&&(this._currentCoveragePolygon.destroy(),this._currentCoveragePolygon=null,this._initialCurrentCoveragePolygon=null);for(const r of e)r?.imageID===i?.attributes.objectId?this._initialCurrentCoveragePolygon=new t({attributes:{imageID:r?.imageID},geometry:{type:"polygon",...r},symbol:L,visible:!1}):this._additionalCoveragePolygons.push(new t({attributes:{imageID:r?.imageID},geometry:{type:"polygon",...r},symbol:U,visible:o}));for(const e of r)e.imageID===i?.attributes.objectId?this._selectedFeatureGraphic=new t({attributes:{imageID:e.imageID},geometry:{type:"point",...e},symbol:T,visible:s}):this._additionalFeatureGraphics?.push(new t({attributes:{imageID:e.imageID},geometry:{type:"point",...e},symbol:N,visible:a}))}}_updateSelectedFeature(e){if(!e)return;this.selectedFeature=this.features?.at(e.featureIndex);const t=this.selectedFeature?.attributes.cameraPitch&&this.selectedFeature?.attributes.cameraPitch<5;let r;if(t)r=-90;else{const t=e.x-E[3],i=e.y-E[3],s=i/Math.sqrt(t**2+i**2);let o=180*Math.acos(s)/Math.PI;(t<0&&i<0||t<0&&i>0)&&(o*=-1),r=o}r===this.selectedFeatureAngle?this.previousFeatureAngle=r:this.selectedFeatureAngle=r,this.navigatorSelectedFeature=t?null:{x:e.x,y:e.y,direction:e.sector.includes("_")?e.sector.split("_")[1]:e.sector}}plotReferencePoint(e){"mapPoint"in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}updateCurrentCoveragePolygon(e){if(this._initialCurrentCoverageUpdate)if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,e&&(this._currentCoveragePolygon&&this._currentCoveragePolygon.destroy(),e.visible=this.isCurrentCoverageVisible,this._currentCoveragePolygon=e),this.view){const e=this.selectedPoint?new t({geometry:this.selectedPoint.clone(),symbol:k,attributes:{imageID:this.selectedFeature?.attributes.objectId}}):null;this._overlays?.graphics.addMany([...this._additionalCoveragePolygons,...this._additionalFeatureGraphics,this._currentCoveragePolygon,this._selectedFeatureGraphic,e].filter(B))}else if(this._plotPolygons){this._plotPolygons=!1;const e={points:this.pointSources?.filter((e=>e?.imageID!==this.selectedFeature?.attributes.objectId)),frustums:this.coverageFrustums?.filter((e=>e?.imageID!==this.selectedFeature?.attributes.objectId)),polygons:this._additionalCoveragePolygons?.map((e=>e.geometry?.toJSON())),currentPoint:this.pointSources.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId)),currentPolygon:this._currentCoveragePolygon,currentFrustum:this.coverageFrustums?.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId))};this.emit("plot-polygons",{data:e})}else{const e={currentPoint:this.pointSources.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId)),additionalPoint:this.pointSources.find((e=>e?.imageID===this._initialPreviousCoveragePolygon?.attributes.imageID)),currentPolygon:this._currentCoveragePolygon,additionalPolygon:this._initialPreviousCoveragePolygon};this.emit("update-selected-feature",{data:e})}else if(this.view){const t=this._currentCoveragePolygon&&this._overlays?this._overlays.graphics.indexOf(this._currentCoveragePolygon):-1;e&&(this._currentCoveragePolygon&&(this._overlays?.remove(this._currentCoveragePolygon),this._currentCoveragePolygon.destroy()),e.visible=this.isCurrentCoverageVisible,this._currentCoveragePolygon=e,this._overlays?.graphics.add(this._currentCoveragePolygon,t>=0?t:void 0))}else e&&(this._currentCoveragePolygon=e,this.emit("update-current-coverage",{graphic:e.toJSON()}))}async loadImage(e,t){if(!this._imageViewer)return;if(this._imageViewer.graphics.removeAll(),this._currentImage&&this._imageViewer?.map.layers.includes(this._currentImage)&&(this._currentImage?.removeHandles("image-handles"),this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage?.destroy(),this._currentImage=null),!e)return void this.setMessage("noImageError","error");const r=e.attributes.image;this._referencePointOnGround&&(this._imageViewer?.graphics.remove(this._referencePointOnGround),this._referencePointOnGround.destroy());const i={skipExtensions:["aux.xml","jgw"]};this._currentImage=new P({ioConfig:i,url:r,options:t}),this._imageViewer.map.layers.add(this._currentImage);try{const r=await this._currentImage.when();this._imageViewer.extent=r.fullExtent,r.raster.rasterInfo.isPseudoSpatialReference&&(this._imageViewer.constraints.rotationEnabled=!0,this._imageViewer.rotation=(e.attributes.cameraRoll??0)+(e.attributes.imageRotation??0),this._imageViewer.constraints.rotationEnabled=!1),this._panConstraint&&this._imageViewer?.constraints.customConstraints.remove(this._panConstraint),this._panConstraint={constrain:(e,t)=>{if(!this._currentImage||!this._imageViewer||!e.targetGeometry)return e;const{xmin:r,xmax:i,ymin:s,ymax:o}=this._currentImage.fullExtent,{width:a,height:n}=this._imageViewer.extent,l=this._imageViewer?.rotation*Math.PI/180,c=Math.abs(Math.cos(l)*a+Math.sin(l)*n),h=Math.abs(Math.cos(l)*n+Math.sin(l)*a),{width:u,height:g}=this._currentImage.rasterInfo;return e.targetGeometry.x=Math.min(Math.max(r+(u>c?c:u)/2,e.targetGeometry.x),i-(u>c?c:u)/2),e.targetGeometry.y=Math.min(Math.max(s+(g>h?h:g)/2,e.targetGeometry.y),o-(g>h?h:g)/2),e}},this._scaleConstraint&&this._imageViewer?.constraints.customConstraints.remove(this._scaleConstraint),this._scaleConstraint={constrain:(e,t)=>{if(this._imageViewer&&this._currentImage){const{width:t,height:r}=this._currentImage.rasterInfo,{width:i,height:s}=this._imageViewer;e.scale=Math.min(e.scale,G(this._imageViewer.spatialReference)*Math.max(t/i,r/s))}return e}},this._imageViewer?.constraints.customConstraints.add(this._panConstraint),this._imageViewer?.constraints.customConstraints.add(this._scaleConstraint),r.addHandles(u((()=>[this.brightness,this.contrast,this.sharpness]),(([e,t,i])=>{r.loaded&&(r.effect=`contrast(${10*(t+10)}%) brightness(${10*(e+10)}%)`,this.sharpenImage(r,i))}),g)),await this.transformAndPlotSelectedLocation(t)}catch(s){a.getLogger(this).error("oriented-imagery-viewer:load-image",s),this.setMessage("imageLoadError","error",s.message)}}sharpenImage(e,t){const r=[0,-1*t,0,-1*t,5,-1*t,0,-1*t,0],i=new j({functionName:"Convolution",functionArguments:{type:O.userDefined,cols:3,rows:3,kernel:r,convolutionType:O.userDefined}});e.renderer=null,e.rasterFunction=i}async transformAndPlotSelectedLocation(e){const{_currentImage:r,selectedFeature:i,selectedPoint:s}=this;if(!s||!i||!r?.loaded)return;const{pixelSize:o}=r.rasterInfo,a=await V([s],{feature:i,imageProperties:r.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:e});if(!a.length)return;const n=a[0];if(!n)return;const l=p(_,await D(r.fullExtent,p($,this._imageViewer?.spatialReference),null,e?.signal));n.x=n.x*o.x+l.xmin,n.y=l.ymax-n.y*o.y,n.spatialReference=l.spatialReference,this._crossSymbol&&(this._imageViewer?.graphics.remove(this._crossSymbol),this._crossSymbol.destroy()),this._crossSymbol=new t({geometry:W.fromJSON(n),symbol:k}),this._imageViewer?.graphics.add(this._crossSymbol)}async transformAndPlotReferencePointOnImage(e){if(!this._imageViewer)return;const t=this._currentImage;if(!t)return;const{feature:r,selectedLocation:i,options:s}=e,{pixelSize:o,isPseudoSpatialReference:a,transform:n}=t.rasterInfo,l=await V([i],{feature:r,imageProperties:t.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:s});if(!l.length)return;let c=l[0];const h=await D(t.fullExtent,this._imageViewer.spatialReference,null,s?.signal);a?(c.x=c.x*o.x+h.xmin,c.y=h.ymax-c.y*o.y,c.spatialReference=h.spatialReference):c=n.forwardTransform(new W(c)),this.plotReferencePointOnImage(c)}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),this._referencePointOnGround=new t({geometry:{type:"point",...e.toJSON()},symbol:H}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit("plot-ground-point",{data:{point:this._referencePointOnGround?.geometry}})}plotReferencePointOnImage(e){this._imageViewer&&(this._referencePointOnImage&&(this._imageViewer.graphics.remove(this._referencePointOnImage),this._referencePointOnImage.destroy()),this._referencePointOnImage=new t({geometry:{type:"point",...o(e)?e.toJSON():e},symbol:H}),this._imageViewer.graphics.add(this._referencePointOnImage))}setMessage(e,t,r){this.displayMessage={key:e,type:t,data:r}}async updateCoverage(){const e=new AbortController,{signal:r}=e;this._updateCoverageController=e;const{_imageViewer:i}=this;if(this._currentImage?.loaded&&i){const{width:e,height:s}=this._currentImage.rasterInfo,{xmin:o,xmax:a,ymin:n,ymax:l}=this._currentImage.fullExtent,c=[[0,0],[Math.min(i.width,e),0],[Math.min(i.width,e),Math.min(i.height,s)],[0,Math.min(i.height,s)]].map((e=>i.toMap(m(e[0],e[1]))));c.forEach((e=>{e.x=o<=e.x&&e.x<=a?e.x:Math.abs(o-e.x)>Math.abs(a-e.x)?a:o,e.y=n<=e.y&&e.y<=l?e.y:Math.abs(n-e.y)>Math.abs(l-e.y)?l:n}));const h=await M(c,{feature:this.getSelectedFeature(),currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:r}});if(h&&!r.aborted){const e=[h.map((e=>[e.x,e.y,1]))];e[0].push(e[0][0]);const r=new q({hasZ:!0,rings:e,spatialReference:h[0].spatialReference});this.updateCurrentCoveragePolygon(new t({attributes:{imageID:this.selectedFeature?.attributes.objectId},geometry:r,symbol:L,visible:this.isCurrentCoverageVisible}))}}}};e([d()],K.prototype,"active",null),e([d()],K.prototype,"activeLayer",void 0),e([d()],K.prototype,"shouldShowSelectedImage",void 0),e([d({type:Number})],K.prototype,"brightness",null),e([d({type:Number})],K.prototype,"contrast",null),e([d()],K.prototype,"coverageFrustums",void 0),e([d()],K.prototype,"coveragePolygons",void 0),e([d()],K.prototype,"currentImageView",null),e([d()],K.prototype,"disabled",void 0),e([d()],K.prototype,"displayMessage",void 0),e([d()],K.prototype,"pointSources",void 0),e([d()],K.prototype,"previousFeatureAngle",void 0),e([d()],K.prototype,"selectedFeature",void 0),e([d()],K.prototype,"selectedFeatureAngle",void 0),e([d()],K.prototype,"selectedPoint",void 0),e([d({readOnly:!0})],K.prototype,"featureCount",null),e([d()],K.prototype,"features",void 0),e([d()],K.prototype,"imageLoaded",null),e([d()],K.prototype,"isAdditionalCoverageVisible",void 0),e([d()],K.prototype,"isAdditionalPointSourcesVisible",void 0),e([d()],K.prototype,"isCurrentCoverageVisible",void 0),e([d()],K.prototype,"isImageGalleryEnabled",null),e([d()],K.prototype,"mapImageConversionToolState",void 0),e([d()],K.prototype,"navigatorSelectedFeature",void 0),e([d()],K.prototype,"updating",null),e([d({type:Number})],K.prototype,"sharpness",null),e([d()],K.prototype,"sectorData",null),e([d()],K.prototype,"state",null),e([d()],K.prototype,"thumbnails",null),e([d()],K.prototype,"view",null),e([d()],K.prototype,"_additionalCoveragePolygons",void 0),e([d()],K.prototype,"_additionalFeatureGraphics",void 0),e([d()],K.prototype,"_currentCoveragePolygon",void 0),e([d()],K.prototype,"_currentImage",void 0),e([d()],K.prototype,"_fetchFeaturesController",void 0),e([d()],K.prototype,"_imageViewer",void 0),e([d()],K.prototype,"_initialCurrentCoveragePolygon",void 0),e([d()],K.prototype,"_initialCurrentCoverageUpdate",void 0),e([d()],K.prototype,"_overlays",void 0),e([d()],K.prototype,"_plotPolygons",void 0),e([d()],K.prototype,"_initialPreviousCoveragePolygon",void 0),e([d()],K.prototype,"_referencePointOnGround",void 0),e([d()],K.prototype,"_referencePointOnImage",void 0),e([d()],K.prototype,"_selectedFeatureGraphic",void 0),e([d()],K.prototype,"_sectorData",void 0),K=e([y("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],K);const Q=K;export{Q as default};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
+ */
5
+ function t(t,a,M,h){return[[[M-t/Math.SQRT2,h-t/Math.SQRT2],[M+t/Math.SQRT2,h-t/Math.SQRT2],[M+a/Math.SQRT2,h-a/Math.SQRT2],[M-a/Math.SQRT2,h-a/Math.SQRT2]],[[M+t/Math.SQRT2,h-t/Math.SQRT2],[M+t/Math.SQRT2,h+t/Math.SQRT2],[M+a/Math.SQRT2,h+a/Math.SQRT2],[M+a/Math.SQRT2,h-a/Math.SQRT2]],[[M+t/Math.SQRT2,h+t/Math.SQRT2],[M-t/Math.SQRT2,h+t/Math.SQRT2],[M-a/Math.SQRT2,h+a/Math.SQRT2],[M+a/Math.SQRT2,h+a/Math.SQRT2]],[[M-t/Math.SQRT2,h+t/Math.SQRT2],[M-t/Math.SQRT2,h-t/Math.SQRT2],[M-a/Math.SQRT2,h-a/Math.SQRT2],[M-a/Math.SQRT2,h+a/Math.SQRT2]]]}function a(t,a,M){const[h,Q,R,S]=t;return`M ${h.join(" ")} A ${a} ${a} 0 0 1 ${Q.join(" ")} L ${R.join(" ")} A ${M} ${M} 0 0 0 ${S.join(" ")} Z`}function M(M,h,Q){const[R,S,T,n]=[...M,0];return[...t(R,S,h,Q).map((t=>a(t,R,S))),...t(S,T,h,Q).map((t=>a(t,S,T))),...t(T,n,h,Q).map((t=>a(t,T,n)))]}export{M as getAllArcPath};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
+ */
5
+ const e="esri-widget",o="esri-oriented-imagery-viewer",t=`${o}__carousel`,a=`${o}__image-enhancement`,r=`${o}__navigation`,n="--oi-navigation-tool-rotation-from",i="--oi-navigation-tool-rotation-to",s={addCoverage:`${o}__body-additional-coverage`,addExpPoints:`${o}__body-additional-camera-locations`,body:`${o}__body`,carousel:`${o}__carousel`,carouselContainer:`${t}-container`,carouselContent:`${t}-content`,carouselItem:`${t}-item`,carouselItemWrapper:`${t}-item-wrapper`,close:`${o}__close`,currentCoverage:`${o}__body-current-coverage`,dock:`${o}--docked`,feature:`${r}-feature`,float:`${o}--floating`,footprint:`${o}__body-footprint`,imageEnhancementWrapper:`${a}-wrapper`,imageEnhancementTools:`${a}-tools`,imageEnhancementToolContainer:`${a}-tool-container`,messageBox:`${o}__message-box`,navigationPathOffset0:`${r}-feature-path-stop-offset-0`,navigationPathOffset1:`${r}-feature-path-stop-offset-1`,navigationWrapper:`${r}-wrapper`,navigationZoomed:`${r}-wrapper--zoomed`,north:`${r}-pointer-north`,outerSector:`${r}-sector-outer`,pointer:`${r}-pointer`,rotateWithAnimation:`${r}-animate`,selectedFeaturePath:`${r}-feature-path`,sector:`${r}-sector`,sectorCross:`${r}-sector-cross`,sectorDisabled:`${r}-sector-disabled`,sectorEnabled:`${r}-sector-enabled`,sectorSeparator:`${r}-sector-separator`,submenu:`${o}__submenu`,viewer:`${o}__viewer`,viewerContainer:`${o}__viewer-container`},c={closeButton:!0,coverageMenu:!0,imageEnhancement:!0,imageGallery:!0,mapImageConversionTool:!0,navigationTool:!0,viewerTools:!0,title:!0},$=120,_=[21,36,51,60],l=15,p=3.5,m=["FAR_WEST","FAR_NORTH","FAR_EAST","FAR_SOUTH","WEST","NORTH","EAST","SOUTH","NEAR_WEST","NEAR_NORTH","NEAR_EAST","NEAR_SOUTH"],d=23.937554159486076,g=96.06244584051393,u={EAST:[d,d,g,d,60,d],NORTH:[d,g,d,d,d,60],SOUTH:[g,d,g,g,g,60],WEST:[g,g,d,g,60,g]};export{e as BASE,t as CAROUSEL,s as CSS,c as DEFAULT_VISIBLE_ELEMENTS,p as FEATURE_CIRCLE_RADIUS,a as IMAGE_ENHANCEMENT,l as INNER_SECTORS_RADII_DIFFERENCE,r as NAVIGATION,$ as NAVIGATION_TOOL_DIMENSION_LENGTH,n as NAVIGATION_TOOL_ROTATION_FROM,i as NAVIGATION_TOOL_ROTATION_TO,o as ROOT,m as SECTORS_IN_ORDER,_ as SECTORS_RADII,u as SEGMENT_ARCS};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
+ */
5
+ function r(r){return"3d"===r?.type}function t(r){return"esri.Graphic"===r?.declaredClass}function e(r){return/.*.(tif|mrf)$/i.test(r??"")}export{t as isGraphic,r as isSceneView,e as isTifOrMrf};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../chunks/tslib.es6.js";import t from"../core/Logger.js";import{property as i}from"../core/accessorSupport/decorators/property.js";import{cast as a}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as s}from"../core/accessorSupport/decorators/subclass.js";import o from"../layers/support/rasterDatasets/RasterFactory.js";import n from"./Widget.js";import r from"./OrientedImageryViewer/OrientedImageryViewerViewModel.js";import{loadCalciteComponents as l}from"./support/componentsUtils.js";import"./support/widgetUtils.js";import{messageBundle as c}from"./support/decorators/messageBundle.js";import{tsx as m}from"./support/jsxFactory.js";import{isDarkTheme as d}from"../support/themeUtils.js";const h="esri-oriented-imagery-viewer",g=`${h}__carousel`,p=`${h}__image-enhancement`,u={addCoverage:`${h}__body-additional-coverage`,addExpPoints:`${h}__body-additional-camera-locations`,base:`${h}`,body:`${h}__body`,calciteThemeDark:"calcite-mode-dark",calciteThemeLight:"calcite-mode-light",carousel:`${h}__carousel`,carouselContainer:`${g}-container`,carouselContent:`${g}-content`,carouselItem:`${g}-item`,carouselItemWrapper:`${g}-item-wrapper`,close:`${h}__close`,currentCoverage:`${h}__body-current-coverage`,footprint:`${h}__body-footprint`,imageEnhancementWrapper:`${p}-wrapper`,imageEnhancementTools:`${p}-tools`,imageEnhancementToolContainer:`${p}-tool-container`,messageBox:`${h}__message-box`,submenu:`${h}__submenu`,viewer:`${h}__viewer`,viewerContainer:`${h}__viewer-container`},v={closeButton:!0,coverageMenu:!0,imageEnhancement:!0,imageGallery:!0,mapImageConversionTool:!0,viewerTools:!0,title:!0};let b=class extends n{constructor(e,t){super(e,t),this.isDocked=!1,this.isGalleryOpen=!1,this.imageEnhancementToolActive=!1,this.viewModel=new r,this.messagesCommon=null,this.visibleElements={...v},this._actionItems=new Map,this._canvasItems=new Map,this._galleryController=new AbortController,this._galleryObserver=new IntersectionObserver(this._lazyLoadImage.bind(this)),this._loadImageFromGallery=this._loadImageFromGallery.bind(this),this._registerGalleryItem=this._registerGalleryItem.bind(this),this._unregisterGalleryItem=this._unregisterGalleryItem.bind(this),this.renderViewerContainer=this.renderViewerContainer.bind(this),this.renderViewer=this.renderViewer.bind(this)}loadDependencies(){return l({tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js"),action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group.js"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar.js"),label:()=>import("@esri/calcite-components/dist/components/calcite-label.js"),panel:()=>import("@esri/calcite-components/dist/components/calcite-panel.js"),slider:()=>import("@esri/calcite-components/dist/components/calcite-slider.js")})}destroy(){this._galleryController.abort(),this._galleryObserver.disconnect()}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...v,...e}}async _getThumbnailPixelBlockInternal(e,i){const{level:a,offset:s,size:o}=this._getMaxLevelRasterParameters(e);try{const{pixelBlock:t}=await e.fetchRawPixels(a,s,o,i);return t}catch(n){t.getLogger(this).warn("failed to create canvas with pixeldata",n)}return null}_getMaxLevelRasterParameters(e){const{storageInfo:t,width:i,height:a}=e.rasterInfo,{maximumPyramidLevel:s,pyramidScalingFactor:o}=t,n=o??2;return{level:s,offset:{x:0,y:0},size:{width:Math.ceil(i/n**s),height:Math.ceil(a/n**s)}}}async _getThumbnailPixelBlock(e){const{signal:i}=this._galleryController;try{const t=await o.open({url:e,signal:i});return t?await this._getThumbnailPixelBlockInternal(t,{signal:i}):null}catch(a){t.getLogger(this).error("failed to create thumbnail",a)}return null}_handleBrightnessChange(e){this.viewModel.brightness=e.target.value??0}_handleContrastChange(e){this.viewModel.contrast=e.target.value??0}_handleSharpnessChange(e){this.viewModel.sharpness=e.target.value??0}_lazyLoadImage(e,t){e.forEach((async e=>{if(e.isIntersecting){const i=e.target,a=i.getAttribute("data-src");if(!a)return;const s=await this._getThumbnailPixelBlock(a);if(!s)return;i.width=s.width,i.height=s.height;const o=i.getContext("2d");if(!o)return;const n=o.createImageData(i.width,i.height);n.data.set(s.getAsRGBA()),o.putImageData(n,0,0),t.unobserve(i)}}))}_loadImageFromGallery(e){const{target:t}=e;if(!t)return;const i=t.getAttribute("data-objectid");i&&this.viewModel.selectedFeature?.attributes.objectId!==Number(i)&&(this.viewModel.selectedFeature=this.viewModel.features?.find((({attributes:e})=>e.objectId===Number(i))))}_registerGalleryItem(e){this._galleryObserver.observe(e)}_resetImageTools(){this.viewModel.sharpness=this.viewModel.brightness=this.viewModel.contrast=0}_storeActionElement(e){this._actionItems.set(e.text,e)}_toggleAdditionalCameraLocations(){this.viewModel.toggleAdditionalCameraLocations()}_toggleAdditionalCoverage(){this.viewModel.toggleAdditionalCoverage()}_toggleCurrentCoverage(){this.viewModel.toggleCurrentCoverage()}_toggleImageEnhancementToolState(){this.imageEnhancementToolActive=!this.imageEnhancementToolActive,this.isGalleryOpen&&this.imageEnhancementToolActive&&(this.isGalleryOpen=!1)}_toggleImageGallery(){this.isGalleryOpen=!this.isGalleryOpen,this.isGalleryOpen&&this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1)}_toggleMapImageConversionToolState(){this.viewModel.toggleMapImageConversionToolState()}_unregisterGalleryItem(e){this._galleryObserver.unobserve(e)}renderActionTooltips(){return[...this._actionItems].map((([e,t])=>m("calcite-tooltip",{key:e,label:e,referenceElement:t},m("span",null,e))))}renderBody(){return m("div",{class:u.body},this.renderViewerContainer(),this.visibleElements.imageGallery&&this.renderImageGallery(),this.visibleElements.imageEnhancement&&this.renderImageEnhancementTools())}renderImageEnhancementTools(){const{imageEnhancementToolActive:e,viewModel:{brightness:t,contrast:i,sharpness:a}}=this;return e&&m("calcite-panel",{bind:this,class:u.imageEnhancementWrapper,closable:!0,closed:!e,heading:this.messages.imageEnhancement,key:this.messages.imageEnhancement,onCalcitePanelClose:this._toggleImageEnhancementToolState},m("div",{class:u.imageEnhancementTools},m("div",{class:u.imageEnhancementToolContainer},m("calcite-label",null,this.messages.brightness,m("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,onCalciteSliderInput:this._handleBrightnessChange,ticks:5,value:t}))),m("div",{class:u.imageEnhancementToolContainer},m("calcite-label",null,this.messages.contrast,m("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,onCalciteSliderInput:this._handleContrastChange,ticks:5,value:i}))),m("div",{class:u.imageEnhancementToolContainer},m("calcite-label",null,this.messages.sharpness,m("calcite-slider",{bind:this,labelTicks:!0,max:1,min:0,onCalciteSliderInput:this._handleSharpnessChange,step:.1,ticks:.5,value:a})))),m("calcite-action",{bind:this,icon:"reset",onclick:this._resetImageTools,slot:"header-actions-end",text:this.messagesCommon.reset}))}renderImageGallery(){const{container:e,isGalleryOpen:t,viewModel:{thumbnails:i}}=this;return t&&(e&&i)?m("calcite-panel",{bind:this,class:u.carousel,closable:!0,closed:!t,heading:this.messages.imageGallery,key:this.messages.imageGallery,onCalcitePanelClose:this._toggleImageGallery},m("div",{class:u.carouselContainer},this.renderThumbnails(i))):null}renderMapImageConversionTool(){const{mapImageConversionToolState:e,state:t}=this.viewModel;return m("calcite-action",{active:e,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==t,icon:"image-pin",onclick:this._toggleMapImageConversionToolState,text:this.messages.mapImageConversionTool})}renderImageEnhancementTool(){const{state:e}=this.viewModel;return m("calcite-action",{active:this.imageEnhancementToolActive,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==e,icon:"annotate-tool",onclick:this._toggleImageEnhancementToolState,text:this.messages.imageEnhancement})}renderMenuBarContainer(){const{isCurrentCoverageDisabled:e,isCurrentCoverageVisible:t,isAdditionalCoverageDisabled:i,isAdditionalCoverageVisible:a,isAdditionalPointSourcesDisabled:s,isAdditionalPointSourcesVisible:o,isImageGalleryEnabled:n}=this.viewModel;return m("calcite-action-bar",{layout:"horizontal",expandDisabled:!0,slot:"action-bar"},m("calcite-action-group",{expanded:!0},m("calcite-action",{active:!e&&t,afterCreate:this._storeActionElement,bind:this,class:u.currentCoverage,disabled:e,icon:"trapezoid-area",onclick:this._toggleCurrentCoverage,text:this.messages.currentFootprint}),m("calcite-action",{active:!i&&a,afterCreate:this._storeActionElement,bind:this,class:u.addCoverage,disabled:i,icon:"trapezoid-area",onclick:this._toggleAdditionalCoverage,text:this.messages.additionalFootprints}),m("calcite-action",{active:!s&&o,afterCreate:this._storeActionElement,bind:this,class:u.addExpPoints,disabled:s,icon:"circle-area",onclick:this._toggleAdditionalCameraLocations,text:this.messages.additionalCameraLocations})),m("calcite-action-group",{layout:"horizontal"},this.visibleElements.mapImageConversionTool&&this.renderMapImageConversionTool(),this.visibleElements.imageEnhancement&&this.renderImageEnhancementTool()),n&&m("calcite-action-group",null,m("calcite-action",{active:this.isGalleryOpen,afterCreate:this._storeActionElement,bind:this,icon:"images",onclick:this._toggleImageGallery,text:this.messages.imageGallery,textEnabled:!0})))}renderMessageBox(){const{displayMessage:e}=this.viewModel;return e?m("span",{class:u.messageBox+"--"+e.type},this.messages[e.key],e?.data):null}renderThumbnails(e){const{selectedFeature:t}=this.viewModel;return t?m("div",{class:u.carouselContent},e.items.map((({url:e,objectId:i},a)=>m("div",{class:`${u.carouselItemWrapper}${t.attributes.objectId===i?"--selected":""}`,key:`${u.carouselItemWrapper}-${a}`},m("canvas",{afterCreate:this._registerGalleryItem,afterRemoved:this._unregisterGalleryItem,alt:`thumbnail-${i}`,class:u.carouselItem,"data-objectid":`${i}`,"data-src":e,onclick:this._loadImageFromGallery}))))):null}renderViewerContainer(){return m("div",{class:u.viewerContainer},this.renderViewer(),this.renderMessageBox())}renderViewer(){const{displayMessage:e}=this.viewModel;return m("div",{afterCreate:this.viewModel.loadViewer,bind:this,class:`${u.viewer}${e?"--hide":""}`})}render(){const{updating:e}=this.viewModel;return m("div",{class:u.base},m("calcite-panel",{bind:this,class:this.classes(`${u.base}--${this.isDocked?"docked":"floating"}`,d()?u.calciteThemeDark:u.calciteThemeLight),heading:this.visibleElements.title?this.messages.title:void 0,loading:e},this.visibleElements.coverageMenu&&this.renderMenuBarContainer(),this.renderBody()))}};e([i()],b.prototype,"isDocked",void 0),e([i()],b.prototype,"isGalleryOpen",void 0),e([i()],b.prototype,"imageEnhancementToolActive",void 0),e([i({type:r})],b.prototype,"viewModel",void 0),e([i(),c("esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer")],b.prototype,"messages",void 0),e([i(),c("esri/t9n/common")],b.prototype,"messagesCommon",void 0),e([i()],b.prototype,"view",null),e([i()],b.prototype,"visibleElements",void 0),e([a("visibleElements")],b.prototype,"castVisibleElements",null),b=e([s("esri.widgets.OrientedImageryViewer")],b);const y=b;export{y as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import{prefersReducedMotion as t}from"../core/a11yUtils.js";import i from"../core/Logger.js";import{watch as s,initial as a}from"../core/reactiveUtils.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import{cast as r}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as n}from"../core/accessorSupport/decorators/subclass.js";import l from"../layers/support/rasterDatasets/RasterFactory.js";import c from"./Widget.js";import{getAllArcPath as d}from"./OrientedImageryViewer/arcUtils.js";import{DEFAULT_VISIBLE_ELEMENTS as h,CSS as g,NAVIGATION_TOOL_ROTATION_FROM as m,NAVIGATION_TOOL_ROTATION_TO as v,SEGMENT_ARCS as p,SECTORS_RADII as u,FEATURE_CIRCLE_RADIUS as b,NAVIGATION as y,NAVIGATION_TOOL_DIMENSION_LENGTH as C,BASE as w,ROOT as I}from"./OrientedImageryViewer/constants.js";import _ from"./OrientedImageryViewer/OrientedImageryViewerViewModel.js";import{loadCalciteComponents as T}from"./support/componentsUtils.js";import"./support/widgetUtils.js";import{messageBundle as f}from"./support/decorators/messageBundle.js";import{tsx as M}from"./support/jsxFactory.js";let A=class extends c{constructor(e,t){super(e,t),this.isDocked=!1,this.isGalleryOpen=!1,this.imageEnhancementToolActive=!1,this.navigationToolActive=!1,this.viewModel=new _,this.messagesCommon=null,this.visibleElements={...h},this._navigationTool=null,this._actionItems=new Map,this._galleryController=new AbortController,this._galleryObserver=new IntersectionObserver(this._lazyLoadImage.bind(this)),this._loadImageFromGallery=this._loadImageFromGallery.bind(this),this._registerGalleryItem=this._registerGalleryItem.bind(this),this._unregisterGalleryItem=this._unregisterGalleryItem.bind(this),this.renderViewerContainer=this.renderViewerContainer.bind(this),this.renderViewer=this.renderViewer.bind(this)}initialize(){this.addHandles([s((()=>[this.viewModel?.selectedFeatureAngle,this._navigationTool]),(([e,t])=>{!this.viewModel.updating&&t&&this._updateNavigationTool(t)}),a),s((()=>this.isCurrentCoverageVisible),(e=>this._onCurrentCoverageVisibilityChange(e))),s((()=>this.isAdditionalCoverageVisible),(e=>this._onAdditionalCoverageVisibilityChange(e))),s((()=>this.isAdditionalPointSourcesVisible),(e=>this._onAdditionalCameraLocationsVisibility(e)))])}loadDependencies(){return T({tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js"),action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group.js"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar.js"),label:()=>import("@esri/calcite-components/dist/components/calcite-label.js"),panel:()=>import("@esri/calcite-components/dist/components/calcite-panel.js"),slider:()=>import("@esri/calcite-components/dist/components/calcite-slider.js")})}destroy(){this._galleryController.abort(),this._galleryObserver.disconnect()}get activeLayer(){return this.viewModel.activeLayer}set activeLayer(e){this.viewModel.activeLayer=e}get disabled(){return this.viewModel.disabled}set disabled(e){this.viewModel.disabled=e}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 isCurrentCoverageVisible(){return this.viewModel.isCurrentCoverageVisible}set isCurrentCoverageVisible(e){this.viewModel.isCurrentCoverageVisible=e}get isImageGalleryEnabled(){return this.viewModel.isImageGalleryEnabled}get mapImageConversionToolState(){return this.viewModel.mapImageConversionToolState}set mapImageConversionToolState(e){this.viewModel.mapImageConversionToolState=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...h,...e}}async _getThumbnailPixelBlockInternal(e,t){const{level:s,offset:a,size:o}=this._getMaxLevelRasterParameters(e);try{const{pixelBlock:i}=await e.fetchRawPixels(s,a,o,t);return i}catch(r){i.getLogger(this).warn("failed to create canvas with pixeldata",r)}return null}_getMaxLevelRasterParameters(e){const{storageInfo:t,width:i,height:s}=e.rasterInfo,{maximumPyramidLevel:a,pyramidScalingFactor:o}=t,r=o??2;return{level:a,offset:{x:0,y:0},size:{width:Math.ceil(i/r**a),height:Math.ceil(s/r**a)}}}async _getThumbnailPixelBlock(e){const{signal:t}=this._galleryController;try{const i=await l.open({url:e,signal:t});return i?await this._getThumbnailPixelBlockInternal(i,{signal:t}):null}catch(s){i.getLogger(this).error("failed to create thumbnail",s)}return null}_handleBrightnessChange(e){this.viewModel.brightness=e.target.value??0}_handleContrastChange(e){this.viewModel.contrast=e.target.value??0}_handleSharpnessChange(e){this.viewModel.sharpness=e.target.value??0}_lazyLoadImage(e,t){e.forEach((async e=>{if(e.isIntersecting){const i=e.target,s=i.getAttribute("data-src");if(!s)return;const a=await this._getThumbnailPixelBlock(s);if(!a)return;i.width=a.width,i.height=a.height;const o=i.getContext("2d");if(!o)return;const r=o.createImageData(i.width,i.height);r.data.set(a.getAsRGBA()),o.putImageData(r,0,0),t.unobserve(i)}}))}_loadImageFromGallery(e){const{target:t}=e;if(!t)return;const i=t.getAttribute("data-objectid");i&&this.viewModel.selectedFeature?.attributes.objectId!==Number(i)&&(this.viewModel.selectedFeature=this.viewModel.features?.find((({attributes:e})=>e.objectId===Number(i))))}_onAdditionalCoverageVisibilityChange(e){this.viewModel.setAdditionalCoverageVisibility(e)}_onAdditionalCameraLocationsVisibility(e){this.viewModel.setAdditionalCameraLocationsVisibility(e)}_onCurrentCoverageVisibilityChange(e){this.viewModel.setCurrentCoverageVisibility(e)}_registerGalleryItem(e){this._galleryObserver.observe(e)}_resetImageTools(){this.viewModel.sharpness=this.viewModel.brightness=this.viewModel.contrast=0}_resizeNavigationTool(){this._navigationTool?.parentElement?.classList.toggle(g.navigationZoomed)}_storeActionElement(e){this._actionItems.set(e.text,e)}_storeNavigationToolReference(e){this._navigationTool=e}_toggleAdditionalCameraLocations(){this.isAdditionalPointSourcesVisible=!this.isAdditionalPointSourcesVisible}_toggleAdditionalCoverage(){this.isAdditionalCoverageVisible=!this.isAdditionalCoverageVisible}_toggleCurrentCoverage(){this.isCurrentCoverageVisible=!this.isCurrentCoverageVisible}_toggleImageEnhancementToolState(){this.imageEnhancementToolActive=!this.imageEnhancementToolActive,this.imageEnhancementToolActive&&(this.isGalleryOpen&&(this.isGalleryOpen=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleImageGallery(){this.isGalleryOpen=!this.isGalleryOpen,this.isGalleryOpen&&(this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleNavigationTool(){this.navigationToolActive=!this.navigationToolActive,this.navigationToolActive&&(this.isGalleryOpen&&(this.isGalleryOpen=!1),this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1))}_toggleMapImageConversionToolState(){this.mapImageConversionToolState=!this.mapImageConversionToolState}_unregisterGalleryItem(e){this._galleryObserver.unobserve(e)}_updateNavigationTool(e){const{previousFeatureAngle:t,selectedFeatureAngle:i}=this.viewModel,s=(i-t+540)%360-180;e.style.setProperty(m,`${t}deg`),e.style.setProperty(v,`${t+s}deg`)}renderActionTooltips(){return[...this._actionItems].map((([e,t])=>M("calcite-tooltip",{key:e,label:e,referenceElement:t},M("span",null,e))))}renderBody(){return M("div",{class:g.body},this.renderViewerContainer(),this.renderImageGallery(),this.renderImageEnhancementTools(),this.renderNavigation())}renderImageEnhancementTools(){const{imageEnhancementToolActive:e,viewModel:{brightness:t,contrast:i,sharpness:s}}=this;return e&&M("calcite-panel",{bind:this,class:g.imageEnhancementWrapper,closable:!0,closed:!e,heading:this.messages.imageEnhancement,key:this.messages.imageEnhancement,onCalcitePanelClose:this._toggleImageEnhancementToolState},M("div",{class:g.imageEnhancementTools},M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.brightness,M("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,onCalciteSliderInput:this._handleBrightnessChange,ticks:5,value:t}))),M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.contrast,M("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,onCalciteSliderInput:this._handleContrastChange,ticks:5,value:i}))),M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.sharpness,M("calcite-slider",{bind:this,labelTicks:!0,max:1,min:0,onCalciteSliderInput:this._handleSharpnessChange,step:.1,ticks:.5,value:s})))),M("calcite-action",{bind:this,icon:"reset",onclick:this._resetImageTools,slot:"header-actions-end",text:this.messagesCommon.reset}))}renderImageGallery(){const{container:e,isGalleryOpen:t,viewModel:{thumbnails:i}}=this;return t&&(e&&i)?M("calcite-panel",{bind:this,class:g.carousel,closable:!0,closed:!t,heading:this.messages.imageGallery,key:this.messages.imageGallery,onCalcitePanelClose:this._toggleImageGallery},M("div",{class:g.carouselContainer},this.renderThumbnails(i))):null}renderMapImageConversionTool(){const{mapImageConversionToolState:e,viewModel:{state:t}}=this;return M("calcite-action",{active:e,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==t,icon:"image-pin",onclick:this._toggleMapImageConversionToolState,text:this.messages.mapImageConversionTool})}renderNavigation(){const{viewModel:{sectorData:e,features:i,selectedFeature:s,updating:a,navigatorSelectedFeature:o}}=this;if(!i.length||!this.container||!s)return null;let r,n,l,c,h;if(o){const{x:e,y:t,direction:i}=o,[s,a,d,g]=p[i];r=`M ${e} ${t} L ${s} ${a} A ${u[2]} ${u[2]} 0 0 1 ${d} ${g} Z`,n=e,c=t,l=p[i][4],h=p[i][5]}const m=e=>{const t=e.target.dataset?.sector;t&&this.viewModel.handleSectorClick(+t)},v=e=>{const t=e.target.dataset;if(!t)return;const{featureIndexInSector:i,sector:s}=t;i&&s&&this.viewModel.handleFeatureClick({sector:s,featureIndexInSector:+i})},w=e=>{e.removeEventListener("click",v)},I=e?.map((e=>e?.items)).filter(Boolean).flatMap((e=>e?.map((({x:e,y:t,objectID:i,featureIndexInSector:a,sector:o})=>M("circle",{afterRemoved:w,class:this.classes(g.feature,{selected:s.attributes.objectId===i}),"data-featureIndexInSector":a,"data-sector":o,key:`${g.feature}-${i}`,cx:e,cy:t,onclick:v,r:b}))))),_=e=>{e.removeEventListener("click",m)};return this.navigationToolActive&&!a?M("div",{bind:this,class:g.navigationWrapper,key:this.messages.navigationTool},M("svg",{afterCreate:this._storeNavigationToolReference.bind(this),class:t()?y:g.rotateWithAnimation,xmlns:"http://www.w3.org/2000/svg",width:C,height:C,role:"img",focusable:"false"},M("defs",null,M("linearGradient",{id:`${this.id}-coverage-fill`,gradientUnits:"userSpaceOnUse",x1:n,y1:c,x2:l,y2:h},M("stop",{class:g.navigationPathOffset0,offset:0}),M("stop",{class:g.navigationPathOffset1,offset:1}))),M("g",null,M("circle",{class:this.classes(g.sector,g.outerSector),onclick:this._resizeNavigationTool.bind(this),cx:u[3],cy:u[3],r:u[3]}),M("circle",{class:g.sector,cx:u[3],cy:u[3],r:u[2]}),M("circle",{class:g.sector,cx:u[3],cy:u[3],r:u[1]}),M("circle",{class:g.sector,cx:u[3],cy:u[3],r:u[0]}),M("path",{class:g.pointer,d:"M 56.5 6.06217782649107 L 60 0 L 63.5 6.06217782649107 Z",key:`${g.pointer}-west`}),M("path",{class:this.classes(g.pointer,g.north),d:"M 113.93782217350893 56.5 L 120 60 L 113.93782217350893 63.5 Z",key:`${g.pointer}-north`}),M("path",{class:g.pointer,d:"M 56.5 113.93782217350893 L 60 120 L 63.5 113.93782217350893 Z",key:`${g.pointer}-east`}),M("path",{class:g.pointer,d:"M 6.06217782649107 56.5 L 0 60 L 6.06217782649107 63.5 Z",key:`${g.pointer}-south`}),M("path",{class:this.classes(g.sector,g.sectorSeparator),d:"M 23.937554159486076 23.937554159486076 L 96.06244584051393 96.06244584051393 M 23.937554159486076 96.06244584051393 L 96.06244584051393 23.937554159486076",key:g.sectorSeparator}),d([u[2],u[1],u[0]],u[3],u[3]).map(((t,i)=>M("path",{afterRemoved:_,class:this.classes(g.sector,e?.[i]?.length?g.sectorEnabled:g.sectorDisabled),d:t,"data-sector":`${i}`,key:`${g.sector}-${i}`,onclick:m}))),M("path",{class:this.classes(g.sector,g.sectorCross),d:"M 56.4 56.4 L 63.53 63.53 M 63.53 56.4 L 56.4 63.53",key:g.sectorCross}),I,s.attributes.cameraPitch>=5&&r&&M("path",{class:g.selectedFeaturePath,d:r,fill:`url(#${this.id}-coverage-fill)`,key:g.selectedFeaturePath})))):null}renderNavigationTool(){const{state:e}=this.viewModel;return M("calcite-action",{active:this.navigationToolActive,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==e,icon:"explore",onclick:this._toggleNavigationTool,text:this.messages.navigationTool})}renderImageEnhancementTool(){const{state:e}=this.viewModel;return M("calcite-action",{active:this.imageEnhancementToolActive,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==e,icon:"annotate-tool",onclick:this._toggleImageEnhancementToolState,text:this.messages.imageEnhancement})}renderMenuBarContainer(){const{isCurrentCoverageVisible:e,isAdditionalCoverageVisible:t,isAdditionalPointSourcesVisible:i,isImageGalleryEnabled:s}=this;return M("calcite-action-bar",{layout:"horizontal",expandDisabled:!0,slot:"action-bar"},M("calcite-action-group",{expanded:!0},M("calcite-action",{active:e,afterCreate:this._storeActionElement,bind:this,class:g.currentCoverage,icon:"trapezoid-area",onclick:this._toggleCurrentCoverage,text:this.messages.currentFootprint}),M("calcite-action",{active:t,afterCreate:this._storeActionElement,bind:this,class:g.addCoverage,icon:"trapezoid-area",onclick:this._toggleAdditionalCoverage,text:this.messages.additionalFootprints}),M("calcite-action",{active:i,afterCreate:this._storeActionElement,bind:this,class:g.addExpPoints,icon:"circle-area",onclick:this._toggleAdditionalCameraLocations,text:this.messages.additionalCameraLocations})),M("calcite-action-group",{layout:"horizontal"},this.visibleElements.mapImageConversionTool&&this.renderMapImageConversionTool(),this.visibleElements.navigationTool&&this.renderNavigationTool(),this.visibleElements.imageEnhancement&&this.renderImageEnhancementTool()),s&&M("calcite-action-group",null,M("calcite-action",{active:this.isGalleryOpen,afterCreate:this._storeActionElement,bind:this,icon:"images",onclick:this._toggleImageGallery,text:this.messages.imageGallery,textEnabled:!0})),this.renderActionTooltips())}renderMessageBox(){const{displayMessage:e}=this.viewModel;return e?M("span",{class:g.messageBox+"--"+e.type},this.messages[e.key],e?.data):null}renderThumbnails(e){const{selectedFeature:t}=this.viewModel;return t?M("div",{class:g.carouselContent},e.items.map((({url:e,objectId:i},s)=>M("div",{class:`${g.carouselItemWrapper}${t.attributes.objectId===i?"--selected":""}`,key:`${g.carouselItemWrapper}-${s}`},M("canvas",{afterCreate:this._registerGalleryItem,afterRemoved:this._unregisterGalleryItem,alt:`thumbnail-${i}`,class:g.carouselItem,"data-objectid":`${i}`,"data-src":e,onclick:this._loadImageFromGallery}))))):null}renderViewerContainer(){return M("div",{class:g.viewerContainer},this.renderViewer(),this.renderMessageBox())}renderViewer(){const{displayMessage:e}=this.viewModel;return M("div",{afterCreate:this.viewModel.loadViewer,bind:this,class:`${g.viewer}${e?"--hide":""}`})}render(){const{isDocked:e,viewModel:{updating:t}}=this;return M("div",{class:this.classes(w,I)},M("calcite-panel",{bind:this,class:e?g.dock:g.float,heading:this.visibleElements.title?this.messages.title:void 0,loading:t},this.visibleElements.coverageMenu&&this.renderMenuBarContainer(),this.renderBody()))}};e([o()],A.prototype,"activeLayer",null),e([o()],A.prototype,"disabled",null),e([o()],A.prototype,"isDocked",void 0),e([o()],A.prototype,"isGalleryOpen",void 0),e([o()],A.prototype,"imageEnhancementToolActive",void 0),e([o()],A.prototype,"isAdditionalCoverageVisible",null),e([o()],A.prototype,"isAdditionalPointSourcesVisible",null),e([o()],A.prototype,"isCurrentCoverageVisible",null),e([o()],A.prototype,"isImageGalleryEnabled",null),e([o()],A.prototype,"mapImageConversionToolState",null),e([o()],A.prototype,"navigationToolActive",void 0),e([o({type:_})],A.prototype,"viewModel",void 0),e([o(),f("esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer")],A.prototype,"messages",void 0),e([o(),f("esri/t9n/common")],A.prototype,"messagesCommon",void 0),e([o()],A.prototype,"view",null),e([o()],A.prototype,"visibleElements",void 0),e([r("visibleElements")],A.prototype,"castVisibleElements",null),e([o()],A.prototype,"_navigationTool",void 0),A=e([n("esri.widgets.OrientedImageryViewer")],A);const E=A;export{E as default};