@arcgis/core 4.28.0-next.20230921 → 4.28.0-next.20230923

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 (415) hide show
  1. package/Graphic.js +1 -1
  2. package/PopupTemplate.js +1 -1
  3. package/TimeExtent.js +1 -1
  4. package/arcade/ArcadeDate.js +1 -1
  5. package/arcade/Feature.js +1 -1
  6. package/arcade/featureSetUtils.js +1 -1
  7. package/arcade/featureset/actions/Adapted.js +1 -1
  8. package/arcade/featureset/actions/GroupBy.js +1 -1
  9. package/arcade/featureset/support/FeatureSet.js +1 -1
  10. package/arcade/featureset/support/FeatureSetIterator.js +1 -1
  11. package/arcade/featureset/support/StatsField.js +1 -1
  12. package/arcade/featureset/support/sqlUtils.js +1 -1
  13. package/arcade/functions/convertdirection.js +1 -1
  14. package/arcade/functions/date.js +1 -1
  15. package/arcade/functions/featuresetbase.js +1 -1
  16. package/arcade/functions/featuresetstats.js +1 -1
  17. package/arcade/treeAnalysis.js +1 -1
  18. package/arcade.js +1 -1
  19. package/assets/esri/core/workers/RemoteClient.js +1 -1
  20. package/assets/esri/core/workers/chunks/02156fd04279f4d0fd3f.js +1 -0
  21. package/assets/esri/core/workers/chunks/07f6175b52366b2c28bd.js +1 -0
  22. package/assets/esri/core/workers/chunks/098073c3b2849f56dad8.js +1 -0
  23. package/assets/esri/core/workers/chunks/1186ba1947bd0c32f148.js +1 -0
  24. package/assets/esri/core/workers/chunks/186445b9fbedd261f684.js +1 -0
  25. package/assets/esri/core/workers/chunks/{580039dd491854ca325c.js → 21fc02f0d5716c4a7acd.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{dff1c3c38dda2bd1a9d6.js → 246a954347fe9318190e.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{c9dfb145f0c1d93e0fbd.js → 250bb6ae6f1992b5b4f9.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{314c307e30f308a40a28.js → 25b09e9c0511c8e1cf8a.js} +1 -1
  29. package/assets/esri/core/workers/chunks/2a0b3b52ecd787a613bc.js +1 -0
  30. package/assets/esri/core/workers/chunks/2bc9b55e655968229ef4.js +1 -0
  31. package/assets/esri/core/workers/chunks/2f0924e7aa89e689da4a.js +1 -0
  32. package/assets/esri/core/workers/chunks/3f218d65ec451b2a1027.js +1 -0
  33. package/assets/esri/core/workers/chunks/425b5733bb88e6efe242.js +1 -0
  34. package/assets/esri/core/workers/chunks/45d6b942cdccca2ce44a.js +1 -0
  35. package/assets/esri/core/workers/chunks/4bf1a7e82a68ccee0ee1.js +1 -0
  36. package/assets/esri/core/workers/chunks/4c110c7f4f940ec58010.js +1 -0
  37. package/assets/esri/core/workers/chunks/{bde89b2684b6185992ef.js → 4ed77097e69fa3096ce4.js} +1 -1
  38. package/assets/esri/core/workers/chunks/4fe5bac782a742d5b1c0.js +1 -0
  39. package/assets/esri/core/workers/chunks/{1cbaba30f55f00f7498b.js → 51324d042f469f3b8914.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{3f4e9b1663ec521bfe00.js → 542ce10e1872399790b4.js} +1 -1
  41. package/assets/esri/core/workers/chunks/54d2b7e2ac4ba883bee8.js +1 -0
  42. package/assets/esri/core/workers/chunks/54ecb6cae310818d1aa2.js +1 -0
  43. package/assets/esri/core/workers/chunks/57c932e289d89d97da4b.js +1 -0
  44. package/assets/esri/core/workers/chunks/{6403de6fc067cf8f7436.js → 592c1fb531f2be928e8a.js} +1 -1
  45. package/assets/esri/core/workers/chunks/59a807220d6f0dd18776.js +1 -0
  46. package/assets/esri/core/workers/chunks/59dff10d7ad2b1bf469e.js +1 -0
  47. package/assets/esri/core/workers/chunks/609a475ab395f2ce63e2.js +1 -0
  48. package/assets/esri/core/workers/chunks/612c485c5aad1548d708.js +1 -0
  49. package/assets/esri/core/workers/chunks/{2bb69d76a13564e8e455.js → 645ba2d5c10184632d23.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{332689bf60d246485993.js → 65186e168dd112ac6221.js} +1 -1
  51. package/assets/esri/core/workers/chunks/6b9248fb2d6aadbce7bb.js +1 -0
  52. package/assets/esri/core/workers/chunks/709465832d306e02df52.js +1 -0
  53. package/assets/esri/core/workers/chunks/72c5bd6f7b8541b8d69e.js +1 -0
  54. package/assets/esri/core/workers/chunks/{bbc0dcd316c5598bc9ad.js → 74368a5213def6c200a2.js} +1 -1
  55. package/assets/esri/core/workers/chunks/{94188fe381239d48a975.js → 76483c9a8848f3106126.js} +1 -1
  56. package/assets/esri/core/workers/chunks/7aa58c96798447ce5907.js +1 -0
  57. package/assets/esri/core/workers/chunks/7d078b8b9997b5300c0a.js +1 -0
  58. package/assets/esri/core/workers/chunks/7fe641cf1467496e670a.js +1 -0
  59. package/assets/esri/core/workers/chunks/{df8f62beb36fb9d2ac81.js → 810c8d6ff19976fd1366.js} +1 -1
  60. package/assets/esri/core/workers/chunks/8458ed96f3e72814cef2.js +1 -0
  61. package/assets/esri/core/workers/chunks/{243a4eed107d363dfad8.js → 887652bbdb3b71d0a089.js} +1 -1
  62. package/assets/esri/core/workers/chunks/896bfda379cf620b63ec.js +1 -0
  63. package/assets/esri/core/workers/chunks/91c9f0d59eaed7a735ce.js +1 -0
  64. package/assets/esri/core/workers/chunks/{1f7e041140088f8ac489.js → 97073a60f0ea2a397165.js} +1 -1
  65. package/assets/esri/core/workers/chunks/97658ac749664a07c92d.js +1 -0
  66. package/assets/esri/core/workers/chunks/{1da74a306aa5b4eacaae.js → 9866bbaeaf885c2dcca9.js} +1 -1
  67. package/assets/esri/core/workers/chunks/a39ae87298ac674f129d.js +1 -0
  68. package/assets/esri/core/workers/chunks/a7b3048c19348540e004.js +1 -0
  69. package/assets/esri/core/workers/chunks/a8ca4b116909e47722f9.js +1 -0
  70. package/assets/esri/core/workers/chunks/{101f776316a85b708927.js → a99070ec4c06c435b744.js} +1 -1
  71. package/assets/esri/core/workers/chunks/ab145d13932d87dd7bf9.js +1 -0
  72. package/assets/esri/core/workers/chunks/{77c15b1c2729c780f75a.js → aeeeb386134b341d7ad2.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{3ca759f72d3bb29e9ea9.js → af54b233f6d6ad70b4a3.js} +2 -2
  74. package/assets/esri/core/workers/chunks/b9146daae8457224fd08.js +1 -0
  75. package/assets/esri/core/workers/chunks/bcdd2e8841abcb4df6da.js +1 -0
  76. package/assets/esri/core/workers/chunks/be05cc0cdabd5e051045.js +1 -0
  77. package/assets/esri/core/workers/chunks/c5f5f37bef11c6fbdc40.js +1 -0
  78. package/assets/esri/core/workers/chunks/d414dba3179bcf75bc6b.js +1 -0
  79. package/assets/esri/core/workers/chunks/{b449d6bd5851187d419f.js → d6e5408f9fa6b4bcd118.js} +1 -1
  80. package/assets/esri/core/workers/chunks/d9fb500cbd0f04d219a3.js +1 -0
  81. package/assets/esri/core/workers/chunks/e0dd6789fb797e9b7206.js +1 -0
  82. package/assets/esri/core/workers/chunks/{6f271249e042086d5a16.js → e4e49deae8da74f629db.js} +1 -1
  83. package/assets/esri/core/workers/chunks/e5dcff7a4fa84ba09670.js +1 -0
  84. package/assets/esri/core/workers/chunks/{f508ccfde6425dabe9ac.js → ee0bf611d191103a7046.js} +1 -1
  85. package/assets/esri/core/workers/chunks/{ed1fbc1bc8d50453e2f5.js → f793cd41fcd022baeea2.js} +1 -1
  86. package/assets/esri/core/workers/chunks/fad6a7bb82a0a2df726f.js +1 -0
  87. package/assets/esri/themes/base/widgets/_FeatureForm.scss +2 -84
  88. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +2 -0
  89. package/assets/esri/themes/dark/main.css +1 -1
  90. package/assets/esri/themes/light/main.css +1 -1
  91. package/assets/esri/themes/light/view.css +1 -1
  92. package/chunks/arcade.js +1 -1
  93. package/config.js +1 -1
  94. package/core/Accessor.js +1 -1
  95. package/core/accessorSupport/diffUtils.js +1 -1
  96. package/core/has.js +1 -1
  97. package/core/number.js +1 -1
  98. package/core/reactiveUtils.js +1 -1
  99. package/core/sql/DateOnly.js +1 -1
  100. package/core/sql/WhereClause.js +1 -1
  101. package/core/sql.js +1 -1
  102. package/core/timeUtils.js +1 -1
  103. package/identity/IdentityForm.js +1 -1
  104. package/identity/IdentityModal.js +1 -1
  105. package/interfaces.d.ts +48 -203
  106. package/layers/LinkChartLayer.js +1 -1
  107. package/layers/OrientedImageryLayer.js +1 -1
  108. package/layers/SceneLayer.js +1 -1
  109. package/layers/graphics/applyEditsUtils.js +5 -0
  110. package/layers/graphics/editingSupport.js +1 -1
  111. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  112. package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
  113. package/layers/mixins/ArcGISImageService.js +1 -1
  114. package/layers/mixins/EditBusLayer.js +1 -1
  115. package/layers/orientedImagery/core/CameraOrientationLTP.js +1 -1
  116. package/layers/orientedImagery/core/ElevationSourceDefinitions.js +5 -0
  117. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  118. package/layers/orientedImagery/core/cameraOrientationFactory.js +1 -1
  119. package/layers/orientedImagery/core/utils.js +5 -0
  120. package/layers/orientedImagery/transformations/groundToImageUtils.js +1 -1
  121. package/layers/support/fieldProperties.js +1 -1
  122. package/layers/support/fieldUtils.js +1 -1
  123. package/layers/support/imageryRendererUtils.js +1 -1
  124. package/layers/support/kmlUtils.js +1 -1
  125. package/layers/support/rasterFunctions/BaseRasterFunction.js +1 -1
  126. package/layers/support/rasterFunctions/creators/createDataManagementFunctions.js +1 -1
  127. package/networks/Network.js +1 -1
  128. package/package.json +1 -1
  129. package/request.js +1 -1
  130. package/rest/featureService/FeatureService.js +1 -1
  131. package/rest/support/DirectionsFeatureSet.js +1 -1
  132. package/smartMapping/renderers/pieChart.js +1 -1
  133. package/smartMapping/renderers/relationship.js +1 -1
  134. package/smartMapping/renderers/support/utils.js +1 -1
  135. package/smartMapping/statistics/support/ageUtils.js +1 -1
  136. package/smartMapping/support/adapters/support/utils.js +1 -1
  137. package/smartMapping/support/utils.js +1 -1
  138. package/support/apiKeyUtils.js +1 -1
  139. package/support/arcadeUtils.js +1 -1
  140. package/support/revision.js +1 -1
  141. package/symbols/cim/cimAnalyzer.js +1 -1
  142. package/symbols/support/svgUtils.js +1 -1
  143. package/time/TimeReference.js +1 -1
  144. package/time/timeReferenceUtils.js +1 -1
  145. package/versionManagement/VersionManagementService.js +1 -1
  146. package/versionManagement/support/EditMomentStack.js +5 -0
  147. package/versionManagement/support/versionManagementUtils.js +1 -1
  148. package/views/2d/engine/Container.js +1 -1
  149. package/views/2d/engine/DisplayObject.js +1 -1
  150. package/views/2d/engine/ManagedCanvas.js +5 -0
  151. package/views/2d/engine/Stage.js +1 -1
  152. package/views/2d/engine/webgl/GroupContainer.js +1 -1
  153. package/views/2d/engine/webgl/Painter.js +1 -1
  154. package/views/2d/engine/webgl/WGLContainer.js +1 -1
  155. package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
  156. package/views/2d/engine/webgl/effects/FeatureEffect.js +1 -1
  157. package/views/2d/engine/webgl/effects/HighlightEffect.js +1 -1
  158. package/views/2d/engine/webgl/effects/HittestEffectVTL.js +1 -1
  159. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  160. package/views/2d/interactive/editingTools/TransformTool.js +1 -1
  161. package/views/2d/layers/GeoRSSLayerView2D.js +1 -1
  162. package/views/2d/layers/MediaLayerView2D.js +1 -1
  163. package/views/2d/layers/TileLayerView2D.js +1 -1
  164. package/views/2d/layers/WMTSLayerView2D.js +1 -1
  165. package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
  166. package/views/2d/layers/features/tileRenderers/support/WGLFeatureView.js +1 -1
  167. package/views/2d/layers/graphics/BaseGraphicContainer.js +1 -1
  168. package/views/2d/layers/graphics/GraphicContainer.js +1 -1
  169. package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
  170. package/views/2d/layers/graphics/HighlightGraphicContainer.js +1 -1
  171. package/views/2d/layers/imagery/VectorFieldView2D.js +1 -1
  172. package/views/2d/layers/support/DisplayGL.js +1 -1
  173. package/views/2d/webglDeps.js +1 -1
  174. package/views/3d/glTF/loader.js +1 -1
  175. package/views/3d/interactive/editingTools/manipulations/MoveManipulation.js +1 -1
  176. package/views/3d/interactive/editingTools/transformGraphic/isSupportedGraphic.js +1 -1
  177. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  178. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  179. package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
  180. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  181. package/views/3d/layers/SceneLayerView3D.js +1 -1
  182. package/views/3d/layers/graphics/ElevationAligners.js +1 -1
  183. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  184. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  185. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  186. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  187. package/views/3d/layers/graphics/Labeler.js +1 -1
  188. package/views/3d/layers/graphics/graphicUtils.js +1 -1
  189. package/views/3d/layers/i3s/featureEditing.js +1 -1
  190. package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
  191. package/views/3d/state/ViewStateManager.js +1 -1
  192. package/views/3d/support/buffer/glUtil.js +1 -1
  193. package/views/3d/support/engineContent/line.js +1 -1
  194. package/views/3d/support/viewpointUtils.js +1 -1
  195. package/views/3d/webgl-engine/Stage.js +1 -1
  196. package/views/3d/webgl-engine/effects/RenderPluginInput.js +1 -1
  197. package/views/3d/webgl-engine/effects/blit/Blit.js +5 -0
  198. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  199. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
  200. package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
  201. package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
  202. package/views/3d/webgl-engine/lib/Geometry.js +1 -1
  203. package/views/3d/webgl-engine/lib/ModelDirtySet.js +1 -1
  204. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  205. package/views/3d/webgl-engine/lib/RenderSlot.js +1 -1
  206. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  207. package/views/3d/webgl-engine/lib/TextRenderer.js +1 -1
  208. package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
  209. package/views/3d/webgl-engine/lib/TextTextureFactory.js +1 -1
  210. package/views/3d/webgl-engine/lib/VertexAttribute.js +1 -1
  211. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  212. package/views/3d/webgl-engine/lib/edgeRendering/bufferLayouts.js +1 -1
  213. package/views/3d/webgl-engine/lib/edgeRendering/edgeProcessing.js +1 -1
  214. package/views/View.js +1 -1
  215. package/views/interactive/tooltip/TooltipContentWithHelpMessage.js +1 -1
  216. package/views/interactive/tooltip/TooltipEditableField.js +1 -1
  217. package/views/interactive/tooltip/constraintUtils.js +1 -1
  218. package/views/interactive/tooltip/content/Fields.js +1 -1
  219. package/views/interactive/tooltip/content/TooltipContentDrawCircle.js +1 -1
  220. package/views/interactive/tooltip/content/TooltipContentDrawMesh.js +1 -1
  221. package/views/interactive/tooltip/content/TooltipContentDrawPoint.js +1 -1
  222. package/views/interactive/tooltip/content/TooltipContentDrawPolygon.js +1 -1
  223. package/views/interactive/tooltip/content/TooltipContentDrawPolyline.js +1 -1
  224. package/views/interactive/tooltip/content/TooltipContentDrawRectangle.js +1 -1
  225. package/views/interactive/tooltip/content/TooltipContentExtentRotate.js +1 -1
  226. package/views/interactive/tooltip/content/TooltipContentExtentScale.js +1 -1
  227. package/views/interactive/tooltip/content/TooltipContentReshapeEdgeOffset.js +1 -1
  228. package/views/interactive/tooltip/content/TooltipContentTransformAbsolute.js +1 -1
  229. package/views/interactive/tooltip/content/TooltipContentTransformRotate.js +1 -1
  230. package/views/interactive/tooltip/content/TooltipContentTransformScale.js +1 -1
  231. package/views/interactive/tooltip/content/TooltipContentTranslateGraphic.js +1 -1
  232. package/views/interactive/tooltip/content/TooltipContentTranslateGraphicXY.js +1 -1
  233. package/views/interactive/tooltip/content/TooltipContentTranslateGraphicZ.js +1 -1
  234. package/views/interactive/tooltip/content/TooltipContentTranslateVertex.js +1 -1
  235. package/views/interactive/tooltip/content/TooltipContentTranslateVertexXY.js +1 -1
  236. package/views/interactive/tooltip/content/TooltipContentTranslateVertexZ.js +1 -1
  237. package/views/support/angularMeasurementUtils.js +1 -1
  238. package/views/ui/UI.js +1 -1
  239. package/views/webgl/ShaderTranspiler.js +1 -1
  240. package/views/webgl/Texture.js +1 -1
  241. package/views/webgl/contextUtils.js +1 -1
  242. package/webmap/InitialViewProperties.js +1 -1
  243. package/widgets/AreaMeasurement2D.js +1 -1
  244. package/widgets/AreaMeasurement3D.js +1 -1
  245. package/widgets/Attachments/AttachmentsViewModel.js +1 -1
  246. package/widgets/Attachments.js +1 -1
  247. package/widgets/Attribution.js +1 -1
  248. package/widgets/BasemapGallery.js +1 -1
  249. package/widgets/BasemapLayerList.js +1 -1
  250. package/widgets/BasemapToggle.js +1 -1
  251. package/widgets/Bookmarks.js +1 -1
  252. package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesNode.js +1 -1
  253. package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesTree.js +1 -1
  254. package/widgets/BuildingExplorer/BuildingLevelPicker/BuildingLevelPicker.js +1 -1
  255. package/widgets/BuildingExplorer/BuildingLevelPicker/Label.js +1 -1
  256. package/widgets/BuildingExplorer/BuildingLevelPicker/LevelItem.js +1 -1
  257. package/widgets/BuildingExplorer/BuildingPhasePicker/BuildingPhasePicker.js +1 -1
  258. package/widgets/BuildingExplorer.js +1 -1
  259. package/widgets/Compass.js +1 -1
  260. package/widgets/CoordinateConversion.js +1 -1
  261. package/widgets/Daylight/support/SliderWithDropdown.js +1 -1
  262. package/widgets/Daylight.js +1 -1
  263. package/widgets/DirectLineMeasurement3D.js +1 -1
  264. package/widgets/DirectionalPad.js +1 -1
  265. package/widgets/Directions/components/SaveLayer.js +1 -1
  266. package/widgets/Directions.js +1 -1
  267. package/widgets/DistanceMeasurement2D.js +1 -1
  268. package/widgets/Editor/components/FooterActions.js +1 -1
  269. package/widgets/Editor/components/Notices.js +1 -1
  270. package/widgets/Editor/components/PanelContent.js +1 -1
  271. package/widgets/Editor/components/PanelToolbar.js +1 -1
  272. package/widgets/Editor/components/Prompt.js +1 -1
  273. package/widgets/Editor/components/Settings.js +1 -1
  274. package/widgets/Editor/components/UpdateFeaturePanelContent.js +1 -1
  275. package/widgets/Editor/components/UploadDetails.js +1 -1
  276. package/widgets/Editor.js +1 -1
  277. package/widgets/ElevationProfile/components/LegendItem.js +1 -1
  278. package/widgets/ElevationProfile/components/SettingsButton.js +1 -1
  279. package/widgets/ElevationProfile/components/Statistics.js +1 -1
  280. package/widgets/ElevationProfile.js +1 -1
  281. package/widgets/Expand.js +1 -1
  282. package/widgets/Feature/FeatureContent.js +1 -1
  283. package/widgets/Feature/FeatureExpression.js +1 -1
  284. package/widgets/Feature/FeatureFields.js +1 -1
  285. package/widgets/Feature/FeatureMedia.js +1 -1
  286. package/widgets/Feature/FeatureRelationship.js +1 -1
  287. package/widgets/Feature/FeatureViewModel.js +1 -1
  288. package/widgets/Feature/support/FeatureContentMixin.js +1 -1
  289. package/widgets/Feature/support/FeatureElementInfo.js +1 -1
  290. package/widgets/Feature.js +1 -1
  291. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  292. package/widgets/FeatureForm/GroupInput.js +1 -1
  293. package/widgets/FeatureForm/css.js +1 -1
  294. package/widgets/FeatureForm.js +1 -1
  295. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  296. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  297. package/widgets/FeatureTable/Grid/support/ButtonMenu.js +1 -1
  298. package/widgets/FeatureTable.js +1 -1
  299. package/widgets/FeatureTemplates/ItemList.js +1 -1
  300. package/widgets/FeatureTemplates.js +1 -1
  301. package/widgets/Features/FeaturesRelatedRecords.js +1 -1
  302. package/widgets/Features.js +1 -1
  303. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  304. package/widgets/FloorFilter.js +1 -1
  305. package/widgets/Fullscreen.js +1 -1
  306. package/widgets/Histogram.js +1 -1
  307. package/widgets/HistogramRangeSlider.js +1 -1
  308. package/widgets/Home.js +1 -1
  309. package/widgets/LayerList/ListItemPanel.js +1 -1
  310. package/widgets/LayerList.js +1 -1
  311. package/widgets/Legend/LegendViewModel.js +1 -1
  312. package/widgets/Legend/styles/Card.js +1 -1
  313. package/widgets/Legend/styles/Classic.js +1 -1
  314. package/widgets/Legend/styles/support/relationshipUtils.js +1 -1
  315. package/widgets/Legend/styles/support/univariateUtils.js +1 -1
  316. package/widgets/LineOfSight.js +1 -1
  317. package/widgets/Locate.js +1 -1
  318. package/widgets/NavigationToggle.js +1 -1
  319. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  320. package/widgets/OrientedImageryViewer.js +1 -1
  321. package/widgets/Popup.js +1 -1
  322. package/widgets/Print.js +1 -1
  323. package/widgets/ScaleRangeSlider/scalePreviewUtils.js +1 -1
  324. package/widgets/ScaleRangeSlider.js +1 -1
  325. package/widgets/Search/SearchResultRenderer.js +1 -1
  326. package/widgets/Search.js +1 -1
  327. package/widgets/ShadowCast/components/DiscreteConfigurator.js +1 -1
  328. package/widgets/ShadowCast/components/DurationConfigurator.js +1 -1
  329. package/widgets/ShadowCast/components/ShadowTooltipContent.js +1 -1
  330. package/widgets/ShadowCast/components/ThresholdConfigurator.js +1 -1
  331. package/widgets/ShadowCast.js +1 -1
  332. package/widgets/Sketch.js +1 -1
  333. package/widgets/Slice.js +1 -1
  334. package/widgets/Slider.js +1 -1
  335. package/widgets/Swipe.js +1 -1
  336. package/widgets/TableList.js +1 -1
  337. package/widgets/TimeSlider.js +1 -1
  338. package/widgets/Track.js +1 -1
  339. package/widgets/UtilityNetworkAssociations/UtilityNetworkAssociationsLineSymbolPicker.js +1 -1
  340. package/widgets/UtilityNetworkAssociations.js +1 -1
  341. package/widgets/UtilityNetworkTrace.js +1 -1
  342. package/widgets/UtilityNetworkValidateTopology.js +1 -1
  343. package/widgets/ValuePicker.js +1 -1
  344. package/widgets/VideoPlayer/components/PlayerControlsGroup.js +1 -1
  345. package/widgets/VideoPlayer/components/SettingsButton.js +1 -1
  346. package/widgets/VideoPlayer.js +1 -1
  347. package/widgets/Weather/LabeledSlider.js +1 -1
  348. package/widgets/Weather.js +1 -1
  349. package/widgets/Zoom/IconButton.js +1 -1
  350. package/widgets/smartMapping/BinaryColorSizeSlider.js +1 -1
  351. package/widgets/smartMapping/ClassedColorSlider.js +1 -1
  352. package/widgets/smartMapping/ClassedSizeSlider.js +1 -1
  353. package/widgets/smartMapping/ColorSizeSlider.js +1 -1
  354. package/widgets/smartMapping/ColorSlider.js +1 -1
  355. package/widgets/smartMapping/HeatmapSlider.js +1 -1
  356. package/widgets/smartMapping/OpacitySlider.js +1 -1
  357. package/widgets/smartMapping/SizeSlider.js +1 -1
  358. package/widgets/smartMapping/SmartMappingSliderBase.js +1 -1
  359. package/widgets/support/ColorPicker.js +1 -1
  360. package/widgets/support/DatePicker.js +1 -1
  361. package/widgets/support/Heading.js +1 -1
  362. package/widgets/support/LabeledSwitch.js +1 -1
  363. package/widgets/support/MeasurementWidgetContent.js +1 -1
  364. package/widgets/support/Popover.js +1 -1
  365. package/widgets/support/SelectionToolbar.js +1 -1
  366. package/widgets/support/SketchTooltipControls.js +1 -1
  367. package/widgets/support/SnappingControls.js +1 -1
  368. package/widgets/support/TimePicker.js +1 -1
  369. package/widgets/support/TimezonePicker.js +1 -1
  370. package/widgets/support/UnitSelect.js +1 -1
  371. package/widgets/support/dateUtils.js +1 -1
  372. package/assets/esri/core/workers/chunks/072b4e041b8630c513a0.js +0 -1
  373. package/assets/esri/core/workers/chunks/092920c25cac89c038ee.js +0 -1
  374. package/assets/esri/core/workers/chunks/114269dda1d296893908.js +0 -1
  375. package/assets/esri/core/workers/chunks/126df6237fc80608344e.js +0 -1
  376. package/assets/esri/core/workers/chunks/1b3655f5bf5d90fa8730.js +0 -1
  377. package/assets/esri/core/workers/chunks/1c83f47d446f2bca1721.js +0 -1
  378. package/assets/esri/core/workers/chunks/1cf7bb514e7eefc3e9c6.js +0 -1
  379. package/assets/esri/core/workers/chunks/21a9c8aa2a9e9990df41.js +0 -1
  380. package/assets/esri/core/workers/chunks/24629402c647ef6b5f6b.js +0 -1
  381. package/assets/esri/core/workers/chunks/2a1c1be9c202462cf54d.js +0 -1
  382. package/assets/esri/core/workers/chunks/2cb36f9686693234991a.js +0 -1
  383. package/assets/esri/core/workers/chunks/2d0d03cbea83c868edba.js +0 -1
  384. package/assets/esri/core/workers/chunks/2e130cb2f1038055c07b.js +0 -1
  385. package/assets/esri/core/workers/chunks/3619e04cbb6691549014.js +0 -1
  386. package/assets/esri/core/workers/chunks/3dbfb4f370a874393822.js +0 -1
  387. package/assets/esri/core/workers/chunks/406db5c90271a3a203d4.js +0 -1
  388. package/assets/esri/core/workers/chunks/4369a6c1e0a82ab4db6a.js +0 -1
  389. package/assets/esri/core/workers/chunks/4f4a424d1747d04501df.js +0 -1
  390. package/assets/esri/core/workers/chunks/59c00d6fba0fd1c03d01.js +0 -1
  391. package/assets/esri/core/workers/chunks/5a5720caa64a46daadf9.js +0 -1
  392. package/assets/esri/core/workers/chunks/5edb99b58549cd66b394.js +0 -1
  393. package/assets/esri/core/workers/chunks/6203ddf6caad3d356327.js +0 -1
  394. package/assets/esri/core/workers/chunks/650a317b6dc245a7060f.js +0 -1
  395. package/assets/esri/core/workers/chunks/7a358b1fd0c0cce59e9b.js +0 -1
  396. package/assets/esri/core/workers/chunks/83d1a1b3d371c991cc4c.js +0 -1
  397. package/assets/esri/core/workers/chunks/846b7a81b870c8b238a1.js +0 -1
  398. package/assets/esri/core/workers/chunks/8ab832468300cc4feb5a.js +0 -1
  399. package/assets/esri/core/workers/chunks/bc1dc6383e60e7e61d50.js +0 -1
  400. package/assets/esri/core/workers/chunks/bc6323bdc98013da6fe5.js +0 -1
  401. package/assets/esri/core/workers/chunks/c4bb67150ccd01ea6014.js +0 -1
  402. package/assets/esri/core/workers/chunks/c60cf62f374e71e562fc.js +0 -1
  403. package/assets/esri/core/workers/chunks/c6ea5aac232d1eca04dd.js +0 -1
  404. package/assets/esri/core/workers/chunks/c8438c2d9ac48afe4033.js +0 -1
  405. package/assets/esri/core/workers/chunks/c8f239c25fe864f0e47a.js +0 -1
  406. package/assets/esri/core/workers/chunks/cad260881653567bc8f9.js +0 -1
  407. package/assets/esri/core/workers/chunks/d824f4b405a72cd2fa74.js +0 -1
  408. package/assets/esri/core/workers/chunks/dd7508d4016715371e0c.js +0 -1
  409. package/assets/esri/core/workers/chunks/e55f7fc7eff0074ce0fc.js +0 -1
  410. package/assets/esri/core/workers/chunks/eef27d305023034084a4.js +0 -1
  411. package/assets/esri/core/workers/chunks/f38c54ada9e7012a2960.js +0 -1
  412. package/assets/esri/core/workers/chunks/f5e0ff5292b9fd18fc92.js +0 -1
  413. package/assets/esri/core/workers/chunks/f5eb8b5021620be7538e.js +0 -1
  414. package/core/watchUtils.d.ts +0 -4
  415. package/core/watchUtils.js +0 -5
@@ -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"../../intl.js";import r from"../../core/Accessor.js";import i from"../../core/Collection.js";import{watch as t,initial as s,when as a}from"../../core/reactiveUtils.js";import{property as n}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import{get as l}from"../../core/accessorSupport/get.js";import y from"./support/ActiveLayerInfo.js";import{onLocaleChange as d}from"../../intl/locale.js";const h={state:"state",view:"view",allLayerViews:"all-layer-views",legendProperties:"legend-properties"},c=i.ofType(y),L=["esri.layers.BuildingSceneLayer","esri.layers.CSVLayer","esri.layers.FeatureLayer","esri.layers.GeoJSONLayer","esri.layers.GeoRSSLayer","esri.layers.GroupLayer","esri.layers.HeatmapLayer","esri.layers.ImageryLayer","esri.layers.ImageryTileLayer","esri.layers.MapImageLayer","esri.layers.OGCFeatureLayer","esri.layers.PointCloudLayer","esri.layers.StreamLayer","esri.layers.SceneLayer","esri.layers.SubtypeGroupLayer","esri.layers.TileLayer","esri.layers.VoxelLayer","esri.layers.WFSLayer","esri.layers.WMSLayer","esri.layers.WMTSLayer","esri.layers.WCSLayer","esri.layers.LinkChartLayer","esri.layers.knowledgeGraph.KnowledgeGraphSublayer"],u="view.basemapView.baseLayerViews",f="view.groundView.layerViews",p="view.basemapView.referenceLayerViews",_=[u,f,"view.layerViews",p];let v=class extends r{constructor(e){super(e),this._layerViewByLayerId={},this._layerInfosByLayerViewId={},this._activeLayerInfosByLayerViewId={},this._activeLayerInfosWithNoParent=new i,this.activeLayerInfos=new c,this.basemapLegendVisible=!1,this.groundLegendVisible=!1,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.respectLayerVisibility=!0,this.layerInfos=[],this.view=null}initialize(){this.addHandles(t((()=>this.view),(()=>this._viewHandles()),s),h.view),this.addHandles(d((()=>this._refresh())))}destroy(){this._destroyViewActiveLayerInfos(),this.view=null}get state(){return this.view?.ready?"ready":"disabled"}_viewHandles(){this.removeHandles(h.state),this.view&&this.addHandles(t((()=>this.state),(()=>this._stateHandles()),s),h.state)}_stateHandles(){this._resetAll(),"ready"===this.state&&this._watchPropertiesAndAllLayerViews()}_resetAll(){this.removeHandles([h.allLayerViews,h.legendProperties]),this._destroyViewActiveLayerInfos(),this.activeLayerInfos.removeAll()}_destroyViewActiveLayerInfos(){Object.keys(this._activeLayerInfosByLayerViewId).forEach(this._destroyViewActiveLayerInfo,this)}_destroyViewActiveLayerInfo(e){this.removeHandles(e);const r=this._activeLayerInfosByLayerViewId[e];delete this._activeLayerInfosByLayerViewId[e],r&&r.parent&&r.parent.children.remove(r)}_watchPropertiesAndAllLayerViews(){const{view:e}=this;if(!e)return;const{allLayerViews:r}=e;r.length&&this._refresh(),this.addHandles(r.on("change",(e=>this._allLayerViewsChangeHandle(e))),h.allLayerViews),this.addHandles(t((()=>[this.layerInfos,this.basemapLegendVisible,this.groundLegendVisible]),(()=>this._propertiesChangeHandle())),h.legendProperties)}_allLayerViewsChangeHandle(e){e.removed.forEach((e=>this._destroyViewActiveLayerInfo(e.uid))),this._refresh()}_propertiesChangeHandle(){this._destroyViewActiveLayerInfos(),this._refresh()}_refresh(){this._layerInfosByLayerViewId={},this.activeLayerInfos.removeAll(),this._generateLayerViews().filter(this._filterLayerViewsByLayerInfos,this).filter(this._isLayerViewSupported,this).forEach(this._generateActiveLayerInfo,this),this._sortActiveLayerInfos(this.activeLayerInfos)}_sortActiveLayerInfos(e){const r=this.view;if(e.length<2||!r)return;const i=[];e.forEach((r=>{if(!r.parent){const t=r.layer.parent,s=t&&"uid"in t&&this._layerViewByLayerId[t.uid],a=s&&this._activeLayerInfosByLayerViewId[s.uid];a&&e.includes(a)&&(i.push(r),r.parent=a,a.children.add(r),this._sortActiveLayerInfos(a.children))}})),e.removeMany(i);const t={};r.allLayerViews.forEach(((e,r)=>t[e.layer.uid]=r)),e.sort(((e,r)=>{const i=t[e.layer.uid]||0;return(t[r.layer.uid]||0)-i}))}_generateLayerViews(){const e=[];return _.filter(this._filterLayerViews,this).map((e=>l(this,e))).filter((e=>null!=e)).forEach(this._collectLayerViews("layerViews",e)),e}_filterLayerViews(e){const r=!this.basemapLegendVisible&&(e===u||e===p),i=!this.groundLegendVisible&&e===f;return!r&&!i}_collectLayerViews(e,r){const i=t=>(t&&t.forEach((t=>{r.push(t),i(t[e])})),r);return i}_filterLayerViewsByLayerInfos(e){const r=this.layerInfos;return!r||!r.length||r.some((r=>this._hasLayerInfo(r,e)))}_hasLayerInfo(e,r){const i=this._isLayerUIDMatching(e.layer,r.layer.uid);return i&&(this._layerInfosByLayerViewId[r.uid]=e),i}_isLayerUIDMatching(e,r){return e&&(e.uid===r||this._hasLayerUID(e.layers,r))}_hasLayerUID(e,r){return e&&e.some((e=>this._isLayerUIDMatching(e,r)))}_isLayerViewSupported(e){return!!L.includes(e.layer.declaredClass)&&(this._layerViewByLayerId[e.layer.uid]=e,!0)}_generateActiveLayerInfo(e){this._isLayerActive(e)?this._buildActiveLayerInfo(e):(this.removeHandles(e.uid),this.addHandles(t((()=>[e.legendEnabled,e.layer.legendEnabled]),(()=>this._layerActiveHandle(e))),e.uid))}_layerActiveHandle(e){this._isLayerActive(e)&&(this.removeHandles(e.uid),this._buildActiveLayerInfo(e))}_isLayerActive(e){return!this.respectLayerVisibility||e.legendEnabled&&e.layer?.legendEnabled}_buildActiveLayerInfo(e){const r=e.layer,i=e.uid,n=this._layerInfosByLayerViewId[i];let o=this._activeLayerInfosByLayerViewId[i];if(!o){const t=n&&void 0!==n.title&&n.layer.uid===r.uid;o=new y({layer:r,layerView:e,title:t?n.title:r.title,view:this.view,respectLayerVisibility:this.respectLayerVisibility,hideLayersNotInCurrentView:this.hideLayersNotInCurrentView,keepCacheOnDestroy:this.keepCacheOnDestroy,sublayerIds:n&&n.sublayerIds||[]}),this._activeLayerInfosByLayerViewId[i]=o}const l=r.parent&&"uid"in r.parent?this._layerViewByLayerId[r.parent?.uid]:null;if(o.parent=this._activeLayerInfosByLayerViewId[l?.uid],!this.hasHandles(i)){const n=[t((()=>r.title),(e=>this._titleHandle(e,o))),t((()=>[r.opacity,"renderer"in r&&r.renderer,"pointSymbol"in r&&r.pointSymbol,"lineSymbol"in r&&r.lineSymbol,"polygonSymbol"in r&&r.polygonSymbol]),(()=>this._constructLegendElements(o))),a((()=>!0===this.view?.stationary),(()=>this._scaleHandle(o)),s),t((()=>e._effectiveRenderer),(()=>this._constructLegendElements(o))),t((()=>"effect"in r&&r.effect),(()=>this._constructLegendElements(o)))];if(this.respectLayerVisibility){const i=t((()=>e.legendEnabled),(e=>this._legendEnabledHandle(e,o))),s=t((()=>r.legendEnabled),(e=>this._legendEnabledHandle(e,o)));n.push(i,s)}this.addHandles(n,i)}o.isScaleDriven||this._constructLegendElements(o),this._addActiveLayerInfo(o)}_titleHandle(e,r){r.title=e,this._constructLegendElements(r)}_legendEnabledHandle(e,r){e?this._addActiveLayerInfo(r):this._removeActiveLayerInfo(r)}_scaleHandle(e){(e.isScaleDriven||e.hideLayersNotInCurrentView)&&this._constructLegendElements(e)}_addActiveLayerInfo(e){const{layerView:r,layer:i}=e;if(this._isLayerActive(r)&&!this.activeLayerInfos.includes(e)){const r=e.parent;if(r)r.children.includes(e)||r.children.push(e),this._sortActiveLayerInfos(r.children);else{const r=this.layerInfos?.some((e=>e.layer.uid===i.uid));i.parent&&"uid"in i.parent&&!r?this._activeLayerInfosWithNoParent.add(e):(this.activeLayerInfos.add(e),this._sortActiveLayerInfos(this.activeLayerInfos))}if(this._activeLayerInfosWithNoParent.length){const e=[];this._activeLayerInfosWithNoParent.forEach((r=>{const i=r.layer.parent,t=i&&"uid"in i?this._layerViewByLayerId[i?.uid]:null,s=this._activeLayerInfosByLayerViewId[t?.uid];s&&(e.push(r),r.parent=s)})),e.length&&(this._activeLayerInfosWithNoParent.removeMany(e),e.forEach((e=>this._addActiveLayerInfo(e))))}}}_removeActiveLayerInfo(e){const r=e.parent;r?r.children.remove(e):this.activeLayerInfos.remove(e)}_constructLegendElements(e){const r=e.layer;"featureCollections"in r&&r.featureCollections?e.buildLegendElementsForFeatureCollections(r.featureCollections):"featureReduction"in r&&r.featureReduction&&"renderer"in r.featureReduction&&("binning"===r.featureReduction.type||"cluster"===r.featureReduction.type)?e.buildLegendElementsForFeatureReduction(r.featureReduction):"renderer"in r&&r.renderer&&!("sublayers"in r)?e.buildLegendElementsForRenderer(r.renderer):"url"in r&&r.url?e.buildLegendElementsForTools():e.children.forEach((e=>this._constructLegendElements(e)))}};e([n({type:c})],v.prototype,"activeLayerInfos",void 0),e([n()],v.prototype,"basemapLegendVisible",void 0),e([n()],v.prototype,"groundLegendVisible",void 0),e([n()],v.prototype,"hideLayersNotInCurrentView",void 0),e([n()],v.prototype,"keepCacheOnDestroy",void 0),e([n()],v.prototype,"respectLayerVisibility",void 0),e([n()],v.prototype,"layerInfos",void 0),e([n({readOnly:!0})],v.prototype,"state",null),e([n()],v.prototype,"view",void 0),v=e([o("esri.widgets.Legend.LegendViewModel")],v);const I=v;export{I as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import"../../intl.js";import r from"../../core/Accessor.js";import i from"../../core/Collection.js";import{watch as t,initial as s,when as a}from"../../core/reactiveUtils.js";import{property as n}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as o}from"../../core/accessorSupport/decorators/subclass.js";import{get as l}from"../../core/accessorSupport/get.js";import y from"./support/ActiveLayerInfo.js";import{onLocaleChange as d}from"../../intl/locale.js";const h={state:"state",view:"view",allLayerViews:"all-layer-views",legendProperties:"legend-properties"},c=i.ofType(y),L=new Set(["esri.layers.BuildingSceneLayer","esri.layers.CSVLayer","esri.layers.FeatureLayer","esri.layers.GeoJSONLayer","esri.layers.GeoRSSLayer","esri.layers.GroupLayer","esri.layers.HeatmapLayer","esri.layers.ImageryLayer","esri.layers.ImageryTileLayer","esri.layers.MapImageLayer","esri.layers.OGCFeatureLayer","esri.layers.PointCloudLayer","esri.layers.StreamLayer","esri.layers.SceneLayer","esri.layers.SubtypeGroupLayer","esri.layers.TileLayer","esri.layers.VoxelLayer","esri.layers.WFSLayer","esri.layers.WMSLayer","esri.layers.WMTSLayer","esri.layers.WCSLayer","esri.layers.LinkChartLayer","esri.layers.knowledgeGraph.KnowledgeGraphSublayer"]),u="view.basemapView.baseLayerViews",f="view.groundView.layerViews",p="view.basemapView.referenceLayerViews",_=[u,f,"view.layerViews",p];let v=class extends r{constructor(e){super(e),this._layerViewByLayerId={},this._layerInfosByLayerViewId={},this._activeLayerInfosByLayerViewId={},this._activeLayerInfosWithNoParent=new i,this.activeLayerInfos=new c,this.basemapLegendVisible=!1,this.groundLegendVisible=!1,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.respectLayerVisibility=!0,this.layerInfos=[],this.view=null}initialize(){this.addHandles(t((()=>this.view),(()=>this._viewHandles()),s),h.view),this.addHandles(d((()=>this._refresh())))}destroy(){this._destroyViewActiveLayerInfos(),this.view=null}get state(){return this.view?.ready?"ready":"disabled"}_viewHandles(){this.removeHandles(h.state),this.view&&this.addHandles(t((()=>this.state),(()=>this._stateHandles()),s),h.state)}_stateHandles(){this._resetAll(),"ready"===this.state&&this._watchPropertiesAndAllLayerViews()}_resetAll(){this.removeHandles([h.allLayerViews,h.legendProperties]),this._destroyViewActiveLayerInfos(),this.activeLayerInfos.removeAll()}_destroyViewActiveLayerInfos(){Object.keys(this._activeLayerInfosByLayerViewId).forEach(this._destroyViewActiveLayerInfo,this)}_destroyViewActiveLayerInfo(e){this.removeHandles(e);const r=this._activeLayerInfosByLayerViewId[e];delete this._activeLayerInfosByLayerViewId[e],r&&r.parent&&r.parent.children.remove(r)}_watchPropertiesAndAllLayerViews(){const{view:e}=this;if(!e)return;const{allLayerViews:r}=e;r.length&&this._refresh(),this.addHandles(r.on("change",(e=>this._allLayerViewsChangeHandle(e))),h.allLayerViews),this.addHandles(t((()=>[this.layerInfos,this.basemapLegendVisible,this.groundLegendVisible]),(()=>this._propertiesChangeHandle())),h.legendProperties)}_allLayerViewsChangeHandle(e){e.removed.forEach((e=>this._destroyViewActiveLayerInfo(e.uid))),this._refresh()}_propertiesChangeHandle(){this._destroyViewActiveLayerInfos(),this._refresh()}_refresh(){this._layerInfosByLayerViewId={},this.activeLayerInfos.removeAll(),this._generateLayerViews().filter(this._filterLayerViewsByLayerInfos,this).filter(this._isLayerViewSupported,this).forEach(this._generateActiveLayerInfo,this),this._sortActiveLayerInfos(this.activeLayerInfos)}_sortActiveLayerInfos(e){const r=this.view;if(e.length<2||!r)return;const i=[];e.forEach((r=>{if(!r.parent){const t=r.layer.parent,s=t&&"uid"in t&&this._layerViewByLayerId[t.uid],a=s&&this._activeLayerInfosByLayerViewId[s.uid];a&&e.includes(a)&&(i.push(r),r.parent=a,a.children.add(r),this._sortActiveLayerInfos(a.children))}})),e.removeMany(i);const t={};r.allLayerViews.forEach(((e,r)=>t[e.layer.uid]=r)),e.sort(((e,r)=>{const i=t[e.layer.uid]||0;return(t[r.layer.uid]||0)-i}))}_generateLayerViews(){const e=[];return _.filter(this._filterLayerViews,this).map((e=>l(this,e))).filter((e=>null!=e)).forEach(this._collectLayerViews("layerViews",e)),e}_filterLayerViews(e){const r=!this.basemapLegendVisible&&(e===u||e===p),i=!this.groundLegendVisible&&e===f;return!r&&!i}_collectLayerViews(e,r){const i=t=>(t&&t.forEach((t=>{r.push(t),i(t[e])})),r);return i}_filterLayerViewsByLayerInfos(e){const r=this.layerInfos;return!r||!r.length||r.some((r=>this._hasLayerInfo(r,e)))}_hasLayerInfo(e,r){const i=this._isLayerUIDMatching(e.layer,r.layer.uid);return i&&(this._layerInfosByLayerViewId[r.uid]=e),i}_isLayerUIDMatching(e,r){return e&&(e.uid===r||this._hasLayerUID(e.layers,r))}_hasLayerUID(e,r){return e&&e.some((e=>this._isLayerUIDMatching(e,r)))}_isLayerViewSupported(e){return!!L.has(e.layer.declaredClass)&&(this._layerViewByLayerId[e.layer.uid]=e,!0)}_generateActiveLayerInfo(e){this._isLayerActive(e)?this._buildActiveLayerInfo(e):(this.removeHandles(e.uid),this.addHandles(t((()=>[e.legendEnabled,e.layer.legendEnabled]),(()=>this._layerActiveHandle(e))),e.uid))}_layerActiveHandle(e){this._isLayerActive(e)&&(this.removeHandles(e.uid),this._buildActiveLayerInfo(e))}_isLayerActive(e){return!this.respectLayerVisibility||e.legendEnabled&&e.layer?.legendEnabled}_buildActiveLayerInfo(e){const r=e.layer,i=e.uid,n=this._layerInfosByLayerViewId[i];let o=this._activeLayerInfosByLayerViewId[i];if(!o){const t=n&&void 0!==n.title&&n.layer.uid===r.uid;o=new y({layer:r,layerView:e,title:t?n.title:r.title,view:this.view,respectLayerVisibility:this.respectLayerVisibility,hideLayersNotInCurrentView:this.hideLayersNotInCurrentView,keepCacheOnDestroy:this.keepCacheOnDestroy,sublayerIds:n&&n.sublayerIds||[]}),this._activeLayerInfosByLayerViewId[i]=o}const l=r.parent&&"uid"in r.parent?this._layerViewByLayerId[r.parent?.uid]:null;if(o.parent=this._activeLayerInfosByLayerViewId[l?.uid],!this.hasHandles(i)){const n=[t((()=>r.title),(e=>this._titleHandle(e,o))),t((()=>[r.opacity,"renderer"in r&&r.renderer,"pointSymbol"in r&&r.pointSymbol,"lineSymbol"in r&&r.lineSymbol,"polygonSymbol"in r&&r.polygonSymbol]),(()=>this._constructLegendElements(o))),a((()=>!0===this.view?.stationary),(()=>this._scaleHandle(o)),s),t((()=>e._effectiveRenderer),(()=>this._constructLegendElements(o))),t((()=>"effect"in r&&r.effect),(()=>this._constructLegendElements(o)))];if(this.respectLayerVisibility){const i=t((()=>e.legendEnabled),(e=>this._legendEnabledHandle(e,o))),s=t((()=>r.legendEnabled),(e=>this._legendEnabledHandle(e,o)));n.push(i,s)}this.addHandles(n,i)}o.isScaleDriven||this._constructLegendElements(o),this._addActiveLayerInfo(o)}_titleHandle(e,r){r.title=e,this._constructLegendElements(r)}_legendEnabledHandle(e,r){e?this._addActiveLayerInfo(r):this._removeActiveLayerInfo(r)}_scaleHandle(e){(e.isScaleDriven||e.hideLayersNotInCurrentView)&&this._constructLegendElements(e)}_addActiveLayerInfo(e){const{layerView:r,layer:i}=e;if(this._isLayerActive(r)&&!this.activeLayerInfos.includes(e)){const r=e.parent;if(r)r.children.includes(e)||r.children.push(e),this._sortActiveLayerInfos(r.children);else{const r=this.layerInfos?.some((e=>e.layer.uid===i.uid));i.parent&&"uid"in i.parent&&!r?this._activeLayerInfosWithNoParent.add(e):(this.activeLayerInfos.add(e),this._sortActiveLayerInfos(this.activeLayerInfos))}if(this._activeLayerInfosWithNoParent.length){const e=[];this._activeLayerInfosWithNoParent.forEach((r=>{const i=r.layer.parent,t=i&&"uid"in i?this._layerViewByLayerId[i?.uid]:null,s=this._activeLayerInfosByLayerViewId[t?.uid];s&&(e.push(r),r.parent=s)})),e.length&&(this._activeLayerInfosWithNoParent.removeMany(e),e.forEach((e=>this._addActiveLayerInfo(e))))}}}_removeActiveLayerInfo(e){const r=e.parent;r?r.children.remove(e):this.activeLayerInfos.remove(e)}_constructLegendElements(e){const r=e.layer;"featureCollections"in r&&r.featureCollections?e.buildLegendElementsForFeatureCollections(r.featureCollections):"featureReduction"in r&&r.featureReduction&&"renderer"in r.featureReduction&&("binning"===r.featureReduction.type||"cluster"===r.featureReduction.type)?e.buildLegendElementsForFeatureReduction(r.featureReduction):"renderer"in r&&r.renderer&&!("sublayers"in r)?e.buildLegendElementsForRenderer(r.renderer):"url"in r&&r.url?e.buildLegendElementsForTools():e.children.forEach((e=>this._constructLegendElements(e)))}};e([n({type:c})],v.prototype,"activeLayerInfos",void 0),e([n()],v.prototype,"basemapLegendVisible",void 0),e([n()],v.prototype,"groundLegendVisible",void 0),e([n()],v.prototype,"hideLayersNotInCurrentView",void 0),e([n()],v.prototype,"keepCacheOnDestroy",void 0),e([n()],v.prototype,"respectLayerVisibility",void 0),e([n()],v.prototype,"layerInfos",void 0),e([n({readOnly:!0})],v.prototype,"state",null),e([n()],v.prototype,"view",void 0),v=e([o("esri.widgets.Legend.LegendViewModel")],v);const I=v;export{I 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{_ as e}from"../../../chunks/tslib.es6.js";import"../../../intl.js";import{watch as t}from"../../../core/reactiveUtils.js";import{pt2px as s}from"../../../core/screenUtils.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import{renderSVG as r}from"../../../symbols/support/svgUtils.js";import{getCSSFilterFromEffectList as o}from"../../../symbols/support/utils.js";import l from"../../Widget.js";import{css as n}from"./CardCSS.js";import{renderRelationshipRamp as c}from"./support/relationshipUtils.js";import{getUnivariateAboveAndBelowRampElements as p,getUnivariateSizeRampSize as d,getUnivariateColorRampSize as m,getUnivariateColorRampPreview as h,getUnivariateColorRampMargin as y,getUnivariateColorSizeRampElements as g}from"./support/univariateUtils.js";import{getTitle as v,attachToNode as u,isImageryStretchedLegend as f,getStretchStopLabel as b}from"../support/styleUtils.js";import{Heading as _,incrementHeadingLevel as w}from"../../support/Heading.js";import{accessibleHandler as L}from"../../support/decorators/accessibleHandler.js";import{messageBundle as S}from"../../support/decorators/messageBundle.js";import{tsx as x}from"../../support/jsxFactory.js";import{isRTL as C}from"../../support/widgetUtils.js";import{substitute as R}from"../../../intl/substitute.js";const $=25,k=25,z=768,I=100;var N;!function(e){e.Auto="auto",e.Stack="stack",e.SideBySide="side-by-side"}(N||(N={}));const A="#ddd",j=window.devicePixelRatio;function E(e){if(e){if(e.type.includes("3d")){const t=e.symbolLayers&&e.symbolLayers.length;if(!t)return;const s=e.symbolLayers.at(t-1),i=s.resource&&s.resource.primitive;return"circle"===i||"cross"===i||"kite"===i||"sphere"===i||"cube"===i||"diamond"===i}{const t=e.style;return"circle"===t||"diamond"===t||"cross"===t}}}function F(e){if(e){if(e.type.includes("3d")){const t=e.symbolLayers&&e.symbolLayers.length;if(!t)return;const s=e.symbolLayers.at(t-1).get("resource.primitive");return"triangle"===s||"cone"===s||"tetrahedron"===s}return"triangle"===e.style}}let T=class extends l{constructor(e,t){super(e,t),this._hasIndicators=!1,this._selectedSectionName=null,this._sectionNames=[],this._sectionMap=new Map,this.activeLayerInfos=null,this.headingLevel=3,this.layout=N.Stack,this.messages=null,this.messagesCommon=null,this.type="card",this.view=null}initialize(){this.addHandles(t((()=>this.activeLayerInfos),(e=>{this.removeAllHandles(),this._watchForSectionChanges(e)})))}render(){const{view:e}=this;this._hasIndicators=this.layout===N.Auto&&e&&e.container.clientWidth<=z||this.layout===N.Stack;const t=this.activeLayerInfos,s=t&&t.toArray().map((e=>this._renderLegendForLayer(e))).filter((e=>!!e));this._hasIndicators?this._selectedSectionName&&this._sectionNames.includes(this._selectedSectionName)||(this._selectedSectionName=this._sectionNames&&this._sectionNames[0]):this._selectedSectionName=null;const i=this._sectionNames.length,a=this._sectionNames.map(((e,t)=>{const s=R(this.messagesCommon.pagination.pageText,{index:t+1,total:i});return x("div",{key:e,role:"tab",id:e,"aria-label":s,"aria-controls":`${e}-panel`,"aria-selected":(this._selectedSectionName===e).toString(),tabIndex:this._selectedSectionName===e?0:-1,title:s,onclick:this._selectSection,onkeydown:this._focusSection,bind:this,class:this.classes(n.indicator,{[n.activated]:this._selectedSectionName===e}),"data-section-name":e})})),r=this._hasIndicators&&i>1?x("div",{class:n.indicatorContainer,key:"carousel-navigation",role:"tablist"},a):null,o=this._hasIndicators?this._sectionMap.get(this._selectedSectionName):s&&s.length?s:null,l={[n.stacked]:this._hasIndicators};return x("div",{class:this.classes(n.base,l)},o||x("div",{class:n.message},this.messages.noLegend),r)}_selectSection(e){const t=e.target.getAttribute("data-section-name");t&&(this._selectedSectionName=t)}_focusSection(e){switch(e.key){case"ArrowLeft":case"ArrowRight":this._switchSectionOnArrowPress(e);break;case"Enter":case" ":this._selectSection(e)}}_switchSectionOnArrowPress(e){const t=e.key,s="ArrowLeft"===t?-1:1,i=e.target.getAttribute("data-section-name"),a=this._sectionNames.indexOf(i),r=this._sectionNames;let o=null;-1!==a&&(r[a+s]?o=document.getElementById(r[a+s]):"ArrowLeft"===t?o=document.getElementById(r[r.length-1]):"ArrowRight"===t&&(o=document.getElementById(r[0])),o?.focus())}_watchForSectionChanges(e){if(this._generateSectionNames(),e){e.forEach((e=>{const s=`activeLayerInfo-${e.layer.uid}-version-change`;this.removeHandles(s),this._watchForSectionChanges(e.children),this.addHandles(t((()=>e.version),(()=>this._generateSectionNames())),s)}));const s="activeLayerInfos-collection-change";this.removeHandles(s),this.addHandles(e.on("change",(()=>this._watchForSectionChanges(e))),s)}}_generateSectionNames(){this._sectionNames.length=0,this._selectedSectionName=null,this.activeLayerInfos&&this.activeLayerInfos.forEach(this._generateSectionNamesForActiveLayerInfo,this)}_getSectionName(e,t,s){return`${this.id}${e.uid}-type-${t.type}-${s}`}_generateSectionNamesForActiveLayerInfo(e){e.children.forEach(this._generateSectionNamesForActiveLayerInfo,this),e.legendElements&&e.legendElements.forEach(((t,s)=>{this._sectionNames.push(this._getSectionName(e.layer,t,s))}))}_renderLegendForLayer(e){if(!e.ready)return null;if(e.children.length){const t=e.children.map((e=>this._renderLegendForLayer(e))).toArray();return x("div",{key:e.layer.uid,class:this.classes(n.service,n.groupLayer)},x("div",{class:n.serviceCaptionContainer},e.title),t)}{const t=e.legendElements;if(t&&!t.length)return null;const s=t.some((e=>"relationship-ramp"===e.type)),i=t.map(((t,i)=>this._renderLegendForElement(t,e,i,s))).filter((e=>!!e));if(!i.length)return null;const a={[n.groupLayerChild]:!!e.parent};return x("div",{key:e.layer.uid,class:this.classes(n.service,a)},x("div",{class:n.serviceCaptionContainer},x("div",{class:n.serviceCaptionText},e.title)),x("div",{class:n.serviceContent},i))}}_renderLegendForElement(e,t,s,i=!1,a=!1){const r="color-ramp"===e.type,o="opacity-ramp"===e.type,l=t.layer;let p=null;if("string"==typeof e.title)p=e.title;else if(e.title){const t=e.title,s=v(this.messages,t,r||o);p=t.title?`${t.title} (${s})`:s}const d=this._getSectionName(l,e,s),m=this._hasIndicators&&!a?x("div",null,x(_,{level:this.headingLevel,class:n.carouselTitle},t.title),x(_,{level:w(this.headingLevel),class:n.layerCaption},p)):p?x(_,{level:this.headingLevel,class:n.layerCaption},p):null,h=t.effectList;let y=null;switch(e.type){case"symbol-table":{const s=e.infos.map(((s,i)=>this._renderLegendForElementInfo(s,t,e.legendType,i))).filter((e=>!!e));if(s.length){const e=s[0].properties.classes&&s[0].properties.classes[n.symbolRow],t={[n.labelContainer]:!e&&!i,[n.relationshipLabelContainer]:i};y=x("div",{class:this.classes(t)},s)}break}case"color-ramp":case"opacity-ramp":case"heatmap-ramp":case"stretch-ramp":y=this._renderLegendForRamp(e,l.opacity,h);break;case"size-ramp":y=this._renderSizeRamp(e,l.opacity);break;case"pie-chart-ramp":y=this._renderPieChartRamp(e);break;case"relationship-ramp":y=c(e,this.id,{opacity:l.opacity,effectList:h,ariaLabel:this.messages.previewRelationshipRampAriaLabel});break;case"univariate-above-and-below-ramp":y=this._renderUnivariateAboveAndBelowRamp(e,l.opacity,h);break;case"univariate-color-size-ramp":y=this._renderUnivariateColorSizeRamp(e,l.opacity,h)}if(!y)return null;const g=x("div",{key:d,class:n.section,id:`${d}-panel`,role:"tabpanel","aria-labelledby":d,tabIndex:0},[m,y]);return a||this._sectionMap.set(d,g),g}_renderPieChartRamp(e){return x("div",{class:n.pieChartRampPreview,bind:e.preview,afterCreate:u})}_renderUnivariateAboveAndBelowRamp(e,t,s){const{sizeRampElement:i,colorRampElement:a}=p(e,t,"horizontal");if(!i)return null;const r=d(i,"full",!0,"horizontal"),o=m(i,"above",!0,"horizontal"),l=m(i,"below",!0,"horizontal"),c=12,g=this.messages?.previewColorRampAriaLabel,v=h(a,{width:o,height:c,rampAlignment:"horizontal",opacity:t,type:"above",effectList:s,ariaLabel:g}),f=h(a,{width:l,height:c,rampAlignment:"horizontal",opacity:t,type:"below",effectList:s,ariaLabel:g}),b=y(i,"card"),_=i.infos.map((e=>e.label)),w=_.length-1,L=_.map(((e,t)=>0===t||t===w?x("div",{key:t},e):null)),S={display:"flex",flexDirection:"column"},R={display:"flex",flexDirection:"row"},$={marginTop:"3px",display:"flex"};C(this.container)?$.marginRight=`${b}px`:$.marginLeft=`${b}px`;const k={width:`${r}px`,display:"flex",flexDirection:"row",justifyContent:"space-between"};return x("div",{class:n.layerRow,key:"size-ramp-preview",styles:S},x("div",{class:this.classes(n.symbolContainer,n.sizeRampHorizontal),styles:R},i.infos.map(((e,t)=>x("div",{key:t,class:n.symbol,bind:e.preview,afterCreate:u})))),v?x("div",{class:n.univariateAboveAndBelowColorRamp,styles:$,key:"color-ramp-preview"},x("div",{bind:v,afterCreate:u}),x("div",{bind:f,afterCreate:u})):null,x("div",{class:n.layerInfo},x("div",{class:n.rampLabelsContainer,styles:k},L)))}_renderUnivariateColorSizeRamp(e,t,s){const{sizeRampElement:i,colorRampElement:a}=g(e,"horizontal");if(!i)return null;const r=d(i,"full",!1,"horizontal"),o=m(i,"full",!1,"horizontal"),l=h(a,{width:o,height:12,rampAlignment:"horizontal",opacity:t,type:"full",effectList:s,ariaLabel:this.messages?.previewColorRampAriaLabel}),c=y(i,"card"),p=i.infos.length-1,v=i.infos.map(((e,t)=>0===t||t===p?x("div",{key:t},e.label):null)),f={display:"flex",flexDirection:"column"},b={display:"flex",flexDirection:"row"},_={marginTop:"3px",display:"flex"};C(this.container)?_.marginRight=`${c}px`:_.marginLeft=`${c}px`;const w={width:`${r}px`,display:"flex",flexDirection:"row",justifyContent:"space-between"};return x("div",{class:n.layerRow,key:"size-ramp-preview",styles:f},x("div",{class:this.classes(n.symbolContainer,n.sizeRampHorizontal),styles:b},i.infos.map(((e,t)=>x("div",{key:t,class:n.symbol,bind:e.preview,afterCreate:u})))),x("div",{class:n.univariateAboveAndBelowColorRamp,styles:_,key:"color-ramp-preview"},x("div",{bind:l,afterCreate:u})),x("div",{class:n.layerInfo},x("div",{class:n.rampLabelsContainer,styles:w},v)))}_renderLegendForElementInfo(e,t,s,i){const a=t.layer;if(e.type)return this._renderLegendForElement(e,t,i,!1,!0);const r=f(a,s),l=v(this.messages,e.label,!1)??"";if(e.preview){if(!e.symbol||!e.symbol.type.includes("simple-fill")){if(!e.label)return x("div",{key:i,bind:e.preview,afterCreate:u});const t={[n.symbolCell]:this._hasIndicators};return x("div",{key:i,class:this.classes(n.layerRow,{[n.symbolRow]:this._hasIndicators})},x("div",{class:this.classes(t),bind:e.preview,afterCreate:u}),x("div",{class:this.classes(n.imageLabel,{[n.labelCell]:this._hasIndicators})},l))}let s=255,r=255,c=255,p=0,d=255,m=255,h=255,y=0;const g=e.symbol.color&&e.symbol.color.a,v=e.symbol.outline&&e.symbol.outline.color&&e.symbol.outline.color.a;g&&(s=e.symbol.color.r,r=e.symbol.color.g,c=e.symbol.color.b,p=e.symbol.color.a*a.opacity),v&&(d=e.symbol.outline.color.r,m=e.symbol.outline.color.g,h=e.symbol.outline.color.b,y=e.symbol.outline.color.a*a.opacity);const f=e.symbol.color?.isBright??!0,b=f?"rgba(255, 255, 255, .6)":"rgba(0, 0, 0, .6)",_={background:g?`rgba(${s}, ${r}, ${c}, ${p})`:"none",color:f?"black":"white",textShadow:`-1px -1px 0 ${b},\n 1px -1px 0 ${b},\n -1px 1px 0 ${b},\n 1px 1px 0 ${b}`,border:v?`1px solid rgba(${d}, ${m}, ${h}, ${y})`:"none",filter:o(t.effectList)??void 0};return x("div",{key:i,class:n.layerRow},x("div",{class:n.labelElement,styles:_},l))}if(e.src){const t=this._renderImage(e,a,r);return x("div",{key:i,class:n.layerRow},t,x("div",{class:n.imageLabel},l))}}_renderImage(e,t,s){const{label:i,src:a,opacity:r}=e,o={[n.imageryLayerStretchedImage]:s,[n.symbol]:!s},l={opacity:`${null!=r?r:t.opacity}`};return x("img",{alt:v(this.messages,i,!1),"aria-label":v(this.messages,i,!1),src:a,border:0,width:e.width,height:e.height,class:this.classes(o),styles:l})}_renderSizeRampLines(e){const t=e.infos,i=t[0],a=t[t.length-1],r=i.symbol,o=this._hasIndicators,l=s(i.size+i.outlineSize)*j,n=s(a.size+a.outlineSize)*j,c=o?l:l+50*j,p=o?l/2+50*j:l,d=F(r),m=E(r),h=document.createElement("canvas");h.width=c,h.height=p,h.style.width=h.width/j+"px",h.style.height=h.height/j+"px";const y=h.getContext("2d");if(o){y.beginPath();const e=0,t=0,s=c/2-n/2,i=p;y.moveTo(e,t),y.lineTo(s,i);const a=c,r=0,o=c/2+n/2,l=p;y.moveTo(a,r),y.lineTo(o,l)}else{y.beginPath();const e=0,t=p/2-n/2,s=c,i=0;y.moveTo(e,t),y.lineTo(s,i);const a=0,r=p/2+n/2,o=c,l=p;y.moveTo(a,r),y.lineTo(o,l)}return y.strokeStyle=A,y.stroke(),x("div",{bind:h,afterCreate:u,styles:o?{display:"flex",marginTop:`-${d?0:m?l/2:0}px`,marginBottom:`-${d?n:m?n/2:0}px`}:{display:"flex",marginRight:`-${d?0:m?l/2:0}px`,marginLeft:`-${d?0:m?n/2:0}px`}})}_renderSizeRamp(e,t){const s=e.infos,i=s[0].label,a=s[s.length-1].label;let r=s[0].preview,o=s[s.length-1].preview;const l=this._hasIndicators,c={"flex-direction":l?"column":"row-reverse"};r&&(r=r.cloneNode(!0),r.style.display="flex"),o&&(o=o.cloneNode(!0),o.style.display="flex");const p={opacity:null!=t?`${t}`:""};return x("div",{class:this.classes(n.layerRow,{[n.sizeRampRow]:l})},x("div",{class:n.rampLabel},l?i:a),x("div",{class:n.sizeRampContainer,styles:c},x("div",{bind:r,afterCreate:u,class:n.sizeRampPreview,styles:p}),this._renderSizeRampLines(e),x("div",{bind:o,afterCreate:u,class:n.sizeRampContainer,styles:p})),x("div",{class:n.rampLabel},l?a:i))}_getRampStopLabel(e,t){switch(t){case"heatmap-ramp":return this.messages[e.label];case"stretch-ramp":return b(e,this.messages);default:return e.label}}_renderLegendForRamp(e,t,s){const i=e.infos,a=e.type,l="heatmap-ramp"===a,c=i.length-1,p=k,d=c>2&&!l?$*c:I,m=d+20,h=10,y=i.slice(0).reverse(),g=y.length-1,v=y.length%2!=0?y[y.length/2|0]:null,u=v&&x("div",{class:n.intervalSeparatorsContainer},x("div",{class:n.intervalSeparator},"|"),x("div",{class:n.rampLabel},this._getRampStopLabel(v,a))),f=[[{shape:{type:"path",path:`M0 ${p/2} L${h} 0 L${h} ${p} Z`},fill:y[0].color,stroke:{width:0}},{shape:{type:"rect",x:h,y:0,width:d,height:p},fill:{type:"linear",x1:h,y1:0,x2:d+h,y2:0,colors:y.map(((e,t)=>({color:e.color,offset:l&&"ratio"in e?e.ratio:t/c})))},stroke:{width:0}},{shape:{type:"path",path:`M${d+h} 0 L${m} ${p/2} L${d+h} ${p} Z`},fill:y[g].color,stroke:{width:0}}]],b=r(f,m,p),_={filter:o(s)??void 0,opacity:null==t?void 0:`${t}`},w={justifyContent:"center"};return x("div",{class:n.layerRow,styles:w},x("div",{class:n.rampLabel},this._getRampStopLabel(y[0],a)),x("div",{class:n.symbolContainer},x("div",{styles:_},b),u),x("div",{class:n.rampLabel},this._getRampStopLabel(y[g],a)))}};e([i()],T.prototype,"activeLayerInfos",void 0),e([i()],T.prototype,"headingLevel",void 0),e([i()],T.prototype,"layout",void 0),e([i(),S("esri/widgets/Legend/t9n/Legend")],T.prototype,"messages",void 0),e([i(),S("esri/t9n/common")],T.prototype,"messagesCommon",void 0),e([i({readOnly:!0})],T.prototype,"type",void 0),e([i()],T.prototype,"view",void 0),e([L()],T.prototype,"_selectSection",null),T=e([a("esri.widgets.Legend.styles.Card")],T);const U=T;export{U as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import"../../../intl.js";import{watch as t}from"../../../core/reactiveUtils.js";import{pt2px as s}from"../../../core/screenUtils.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as a}from"../../../core/accessorSupport/decorators/subclass.js";import{renderSVG as r}from"../../../symbols/support/svgUtils.js";import{getCSSFilterFromEffectList as o}from"../../../symbols/support/utils.js";import l from"../../Widget.js";import{css as n}from"./CardCSS.js";import{renderRelationshipRamp as c}from"./support/relationshipUtils.js";import{getUnivariateAboveAndBelowRampElements as p,getUnivariateSizeRampSize as d,getUnivariateColorRampSize as m,getUnivariateColorRampPreview as h,getUnivariateColorRampMargin as y,getUnivariateColorSizeRampElements as g}from"./support/univariateUtils.js";import{getTitle as v,attachToNode as u,isImageryStretchedLegend as f,getStretchStopLabel as b}from"../support/styleUtils.js";import{Heading as _,incrementHeadingLevel as w}from"../../support/Heading.js";import{accessibleHandler as L}from"../../support/decorators/accessibleHandler.js";import{messageBundle as S}from"../../support/decorators/messageBundle.js";import{tsx as x}from"../../support/jsxFactory.js";import{isRTL as C}from"../../support/widgetUtils.js";import{substitute as R}from"../../../intl/substitute.js";const $=25,k=25,z=768,I=100;var N;!function(e){e.Auto="auto",e.Stack="stack",e.SideBySide="side-by-side"}(N||(N={}));const A="#ddd",j=window.devicePixelRatio;function E(e){if(e){if(e.type.includes("3d")){const t=e.symbolLayers&&e.symbolLayers.length;if(!t)return;const s=e.symbolLayers.at(t-1),i=s.resource&&s.resource.primitive;return"circle"===i||"cross"===i||"kite"===i||"sphere"===i||"cube"===i||"diamond"===i}{const t=e.style;return"circle"===t||"diamond"===t||"cross"===t}}}function F(e){if(e){if(e.type.includes("3d")){const t=e.symbolLayers&&e.symbolLayers.length;if(!t)return;const s=e.symbolLayers.at(t-1).get("resource.primitive");return"triangle"===s||"cone"===s||"tetrahedron"===s}return"triangle"===e.style}}let T=class extends l{constructor(e,t){super(e,t),this._hasIndicators=!1,this._selectedSectionName=null,this._sectionNames=[],this._sectionMap=new Map,this.activeLayerInfos=null,this.headingLevel=3,this.layout=N.Stack,this.messages=null,this.messagesCommon=null,this.type="card",this.view=null}initialize(){this.addHandles(t((()=>this.activeLayerInfos),(e=>{this.removeAllHandles(),this._watchForSectionChanges(e)})))}render(){const{view:e}=this;this._hasIndicators=this.layout===N.Auto&&e&&e.container.clientWidth<=z||this.layout===N.Stack;const t=this.activeLayerInfos,s=t&&t.toArray().map((e=>this._renderLegendForLayer(e))).filter((e=>!!e));this._hasIndicators?this._selectedSectionName&&this._sectionNames.includes(this._selectedSectionName)||(this._selectedSectionName=this._sectionNames&&this._sectionNames[0]):this._selectedSectionName=null;const i=this._sectionNames.length,a=this._sectionNames.map(((e,t)=>{const s=R(this.messagesCommon.pagination.pageText,{index:t+1,total:i});return x("div",{"aria-controls":`${e}-panel`,"aria-label":s,"aria-selected":(this._selectedSectionName===e).toString(),bind:this,class:this.classes(n.indicator,{[n.activated]:this._selectedSectionName===e}),"data-section-name":e,id:e,key:e,onclick:this._selectSection,onkeydown:this._focusSection,role:"tab",tabIndex:this._selectedSectionName===e?0:-1,title:s})})),r=this._hasIndicators&&i>1?x("div",{class:n.indicatorContainer,key:"carousel-navigation",role:"tablist"},a):null,o=this._hasIndicators?this._sectionMap.get(this._selectedSectionName):s&&s.length?s:null,l={[n.stacked]:this._hasIndicators};return x("div",{class:this.classes(n.base,l)},o||x("div",{class:n.message},this.messages.noLegend),r)}_selectSection(e){const t=e.target.getAttribute("data-section-name");t&&(this._selectedSectionName=t)}_focusSection(e){switch(e.key){case"ArrowLeft":case"ArrowRight":this._switchSectionOnArrowPress(e);break;case"Enter":case" ":this._selectSection(e)}}_switchSectionOnArrowPress(e){const t=e.key,s="ArrowLeft"===t?-1:1,i=e.target.getAttribute("data-section-name"),a=this._sectionNames.indexOf(i),r=this._sectionNames;let o=null;-1!==a&&(r[a+s]?o=document.getElementById(r[a+s]):"ArrowLeft"===t?o=document.getElementById(r[r.length-1]):"ArrowRight"===t&&(o=document.getElementById(r[0])),o?.focus())}_watchForSectionChanges(e){if(this._generateSectionNames(),e){e.forEach((e=>{const s=`activeLayerInfo-${e.layer.uid}-version-change`;this.removeHandles(s),this._watchForSectionChanges(e.children),this.addHandles(t((()=>e.version),(()=>this._generateSectionNames())),s)}));const s="activeLayerInfos-collection-change";this.removeHandles(s),this.addHandles(e.on("change",(()=>this._watchForSectionChanges(e))),s)}}_generateSectionNames(){this._sectionNames.length=0,this._selectedSectionName=null,this.activeLayerInfos&&this.activeLayerInfos.forEach(this._generateSectionNamesForActiveLayerInfo,this)}_getSectionName(e,t,s){return`${this.id}${e.uid}-type-${t.type}-${s}`}_generateSectionNamesForActiveLayerInfo(e){e.children.forEach(this._generateSectionNamesForActiveLayerInfo,this),e.legendElements&&e.legendElements.forEach(((t,s)=>{this._sectionNames.push(this._getSectionName(e.layer,t,s))}))}_renderLegendForLayer(e){if(!e.ready)return null;if(e.children.length){const t=e.children.map((e=>this._renderLegendForLayer(e))).toArray();return x("div",{class:this.classes(n.service,n.groupLayer),key:e.layer.uid},x("div",{class:n.serviceCaptionContainer},e.title),t)}{const t=e.legendElements;if(t&&!t.length)return null;const s=t.some((e=>"relationship-ramp"===e.type)),i=t.map(((t,i)=>this._renderLegendForElement(t,e,i,s))).filter((e=>!!e));if(!i.length)return null;const a={[n.groupLayerChild]:!!e.parent};return x("div",{class:this.classes(n.service,a),key:e.layer.uid},x("div",{class:n.serviceCaptionContainer},x("div",{class:n.serviceCaptionText},e.title)),x("div",{class:n.serviceContent},i))}}_renderLegendForElement(e,t,s,i=!1,a=!1){const r="color-ramp"===e.type,o="opacity-ramp"===e.type,l=t.layer;let p=null;if("string"==typeof e.title)p=e.title;else if(e.title){const t=e.title,s=v(this.messages,t,r||o);p=t.title?`${t.title} (${s})`:s}const d=this._getSectionName(l,e,s),m=this._hasIndicators&&!a?x("div",null,x(_,{class:n.carouselTitle,level:this.headingLevel},t.title),x(_,{class:n.layerCaption,level:w(this.headingLevel)},p)):p?x(_,{class:n.layerCaption,level:this.headingLevel},p):null,h=t.effectList;let y=null;switch(e.type){case"symbol-table":{const s=e.infos.map(((s,i)=>this._renderLegendForElementInfo(s,t,e.legendType,i))).filter((e=>!!e));if(s.length){const e=s[0].properties.classes&&s[0].properties.classes[n.symbolRow],t={[n.labelContainer]:!e&&!i,[n.relationshipLabelContainer]:i};y=x("div",{class:this.classes(t)},s)}break}case"color-ramp":case"opacity-ramp":case"heatmap-ramp":case"stretch-ramp":y=this._renderLegendForRamp(e,l.opacity,h);break;case"size-ramp":y=this._renderSizeRamp(e,l.opacity);break;case"pie-chart-ramp":y=this._renderPieChartRamp(e);break;case"relationship-ramp":y=c(e,this.id,{opacity:l.opacity,effectList:h,ariaLabel:this.messages.previewRelationshipRampAriaLabel});break;case"univariate-above-and-below-ramp":y=this._renderUnivariateAboveAndBelowRamp(e,l.opacity,h);break;case"univariate-color-size-ramp":y=this._renderUnivariateColorSizeRamp(e,l.opacity,h)}if(!y)return null;const g=x("div",{"aria-labelledby":d,class:n.section,id:`${d}-panel`,key:d,role:"tabpanel",tabIndex:0},[m,y]);return a||this._sectionMap.set(d,g),g}_renderPieChartRamp(e){return x("div",{afterCreate:u,bind:e.preview,class:n.pieChartRampPreview})}_renderUnivariateAboveAndBelowRamp(e,t,s){const{sizeRampElement:i,colorRampElement:a}=p(e,t,"horizontal");if(!i)return null;const r=d(i,"full",!0,"horizontal"),o=m(i,"above",!0,"horizontal"),l=m(i,"below",!0,"horizontal"),c=12,g=this.messages?.previewColorRampAriaLabel,v=h(a,{width:o,height:c,rampAlignment:"horizontal",opacity:t,type:"above",effectList:s,ariaLabel:g}),f=h(a,{width:l,height:c,rampAlignment:"horizontal",opacity:t,type:"below",effectList:s,ariaLabel:g}),b=y(i,"card"),_=i.infos.map((e=>e.label)),w=_.length-1,L=_.map(((e,t)=>0===t||t===w?x("div",{key:t},e):null)),S={display:"flex",flexDirection:"column"},R={display:"flex",flexDirection:"row"},$={marginTop:"3px",display:"flex"};C(this.container)?$.marginRight=`${b}px`:$.marginLeft=`${b}px`;const k={width:`${r}px`,display:"flex",flexDirection:"row",justifyContent:"space-between"};return x("div",{class:n.layerRow,key:"size-ramp-preview",styles:S},x("div",{class:this.classes(n.symbolContainer,n.sizeRampHorizontal),styles:R},i.infos.map(((e,t)=>x("div",{afterCreate:u,bind:e.preview,class:n.symbol,key:t})))),v?x("div",{class:n.univariateAboveAndBelowColorRamp,key:"color-ramp-preview",styles:$},x("div",{afterCreate:u,bind:v}),x("div",{afterCreate:u,bind:f})):null,x("div",{class:n.layerInfo},x("div",{class:n.rampLabelsContainer,styles:k},L)))}_renderUnivariateColorSizeRamp(e,t,s){const{sizeRampElement:i,colorRampElement:a}=g(e,"horizontal");if(!i)return null;const r=d(i,"full",!1,"horizontal"),o=m(i,"full",!1,"horizontal"),l=h(a,{width:o,height:12,rampAlignment:"horizontal",opacity:t,type:"full",effectList:s,ariaLabel:this.messages?.previewColorRampAriaLabel}),c=y(i,"card"),p=i.infos.length-1,v=i.infos.map(((e,t)=>0===t||t===p?x("div",{key:t},e.label):null)),f={display:"flex",flexDirection:"column"},b={display:"flex",flexDirection:"row"},_={marginTop:"3px",display:"flex"};C(this.container)?_.marginRight=`${c}px`:_.marginLeft=`${c}px`;const w={width:`${r}px`,display:"flex",flexDirection:"row",justifyContent:"space-between"};return x("div",{class:n.layerRow,key:"size-ramp-preview",styles:f},x("div",{class:this.classes(n.symbolContainer,n.sizeRampHorizontal),styles:b},i.infos.map(((e,t)=>x("div",{afterCreate:u,bind:e.preview,class:n.symbol,key:t})))),x("div",{class:n.univariateAboveAndBelowColorRamp,key:"color-ramp-preview",styles:_},x("div",{afterCreate:u,bind:l})),x("div",{class:n.layerInfo},x("div",{class:n.rampLabelsContainer,styles:w},v)))}_renderLegendForElementInfo(e,t,s,i){const a=t.layer;if(e.type)return this._renderLegendForElement(e,t,i,!1,!0);const r=f(a,s),l=v(this.messages,e.label,!1)??"";if(e.preview){if(!e.symbol||!e.symbol.type.includes("simple-fill")){if(!e.label)return x("div",{afterCreate:u,bind:e.preview,key:i});const t={[n.symbolCell]:this._hasIndicators};return x("div",{class:this.classes(n.layerRow,{[n.symbolRow]:this._hasIndicators}),key:i},x("div",{afterCreate:u,bind:e.preview,class:this.classes(t)}),x("div",{class:this.classes(n.imageLabel,{[n.labelCell]:this._hasIndicators})},l))}let s=255,r=255,c=255,p=0,d=255,m=255,h=255,y=0;const g=e.symbol.color&&e.symbol.color.a,v=e.symbol.outline&&e.symbol.outline.color&&e.symbol.outline.color.a;g&&(s=e.symbol.color.r,r=e.symbol.color.g,c=e.symbol.color.b,p=e.symbol.color.a*a.opacity),v&&(d=e.symbol.outline.color.r,m=e.symbol.outline.color.g,h=e.symbol.outline.color.b,y=e.symbol.outline.color.a*a.opacity);const f=e.symbol.color?.isBright??!0,b=f?"rgba(255, 255, 255, .6)":"rgba(0, 0, 0, .6)",_={background:g?`rgba(${s}, ${r}, ${c}, ${p})`:"none",color:f?"black":"white",textShadow:`-1px -1px 0 ${b},\n 1px -1px 0 ${b},\n -1px 1px 0 ${b},\n 1px 1px 0 ${b}`,border:v?`1px solid rgba(${d}, ${m}, ${h}, ${y})`:"none",filter:o(t.effectList)??void 0};return x("div",{class:n.layerRow,key:i},x("div",{class:n.labelElement,styles:_},l))}if(e.src){const t=this._renderImage(e,a,r);return x("div",{class:n.layerRow,key:i},t,x("div",{class:n.imageLabel},l))}}_renderImage(e,t,s){const{label:i,src:a,opacity:r}=e,o={[n.imageryLayerStretchedImage]:s,[n.symbol]:!s},l={opacity:`${null!=r?r:t.opacity}`};return x("img",{alt:v(this.messages,i,!1),"aria-label":v(this.messages,i,!1),border:0,class:this.classes(o),height:e.height,src:a,styles:l,width:e.width})}_renderSizeRampLines(e){const t=e.infos,i=t[0],a=t[t.length-1],r=i.symbol,o=this._hasIndicators,l=s(i.size+i.outlineSize)*j,n=s(a.size+a.outlineSize)*j,c=o?l:l+50*j,p=o?l/2+50*j:l,d=F(r),m=E(r),h=document.createElement("canvas");h.width=c,h.height=p,h.style.width=h.width/j+"px",h.style.height=h.height/j+"px";const y=h.getContext("2d");if(o){y.beginPath();const e=0,t=0,s=c/2-n/2,i=p;y.moveTo(e,t),y.lineTo(s,i);const a=c,r=0,o=c/2+n/2,l=p;y.moveTo(a,r),y.lineTo(o,l)}else{y.beginPath();const e=0,t=p/2-n/2,s=c,i=0;y.moveTo(e,t),y.lineTo(s,i);const a=0,r=p/2+n/2,o=c,l=p;y.moveTo(a,r),y.lineTo(o,l)}return y.strokeStyle=A,y.stroke(),x("div",{afterCreate:u,bind:h,styles:o?{display:"flex",marginTop:`-${d?0:m?l/2:0}px`,marginBottom:`-${d?n:m?n/2:0}px`}:{display:"flex",marginRight:`-${d?0:m?l/2:0}px`,marginLeft:`-${d?0:m?n/2:0}px`}})}_renderSizeRamp(e,t){const s=e.infos,i=s[0].label,a=s[s.length-1].label;let r=s[0].preview,o=s[s.length-1].preview;const l=this._hasIndicators,c={"flex-direction":l?"column":"row-reverse"};r&&(r=r.cloneNode(!0),r.style.display="flex"),o&&(o=o.cloneNode(!0),o.style.display="flex");const p={opacity:null!=t?`${t}`:""};return x("div",{class:this.classes(n.layerRow,{[n.sizeRampRow]:l})},x("div",{class:n.rampLabel},l?i:a),x("div",{class:n.sizeRampContainer,styles:c},x("div",{afterCreate:u,bind:r,class:n.sizeRampPreview,styles:p}),this._renderSizeRampLines(e),x("div",{afterCreate:u,bind:o,class:n.sizeRampContainer,styles:p})),x("div",{class:n.rampLabel},l?a:i))}_getRampStopLabel(e,t){switch(t){case"heatmap-ramp":return this.messages[e.label];case"stretch-ramp":return b(e,this.messages);default:return e.label}}_renderLegendForRamp(e,t,s){const i=e.infos,a=e.type,l="heatmap-ramp"===a,c=i.length-1,p=k,d=c>2&&!l?$*c:I,m=d+20,h=10,y=i.slice(0).reverse(),g=y.length-1,v=y.length%2!=0?y[y.length/2|0]:null,u=v&&x("div",{class:n.intervalSeparatorsContainer},x("div",{class:n.intervalSeparator},"|"),x("div",{class:n.rampLabel},this._getRampStopLabel(v,a))),f=[[{shape:{type:"path",path:`M0 ${p/2} L${h} 0 L${h} ${p} Z`},fill:y[0].color,stroke:{width:0}},{shape:{type:"rect",x:h,y:0,width:d,height:p},fill:{type:"linear",x1:h,y1:0,x2:d+h,y2:0,colors:y.map(((e,t)=>({color:e.color,offset:l&&"ratio"in e?e.ratio:t/c})))},stroke:{width:0}},{shape:{type:"path",path:`M${d+h} 0 L${m} ${p/2} L${d+h} ${p} Z`},fill:y[g].color,stroke:{width:0}}]],b=r(f,m,p),_={filter:o(s)??void 0,opacity:null==t?void 0:`${t}`},w={justifyContent:"center"};return x("div",{class:n.layerRow,styles:w},x("div",{class:n.rampLabel},this._getRampStopLabel(y[0],a)),x("div",{class:n.symbolContainer},x("div",{styles:_},b),u),x("div",{class:n.rampLabel},this._getRampStopLabel(y[g],a)))}};e([i()],T.prototype,"activeLayerInfos",void 0),e([i()],T.prototype,"headingLevel",void 0),e([i()],T.prototype,"layout",void 0),e([i(),S("esri/widgets/Legend/t9n/Legend")],T.prototype,"messages",void 0),e([i(),S("esri/t9n/common")],T.prototype,"messagesCommon",void 0),e([i({readOnly:!0})],T.prototype,"type",void 0),e([i()],T.prototype,"view",void 0),e([L()],T.prototype,"_selectSection",null),T=e([a("esri.widgets.Legend.styles.Card")],T);const U=T;export{U 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{_ as e}from"../../../chunks/tslib.es6.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as t}from"../../../core/accessorSupport/decorators/subclass.js";import a from"../../Widget.js";import{css as r,legend as i}from"./ClassicCSS.js";import{renderRelationshipRamp as l}from"./support/relationshipUtils.js";import{getUnivariateAboveAndBelowRampElements as o,getUnivariateColorRampSize as n,getUnivariateColorRampPreview as p,getUnivariateColorRampMargin as d,getUnivariateColorSizeRampElements as c}from"./support/univariateUtils.js";import{getTitle as m,isRendererTitle as y,attachToNode as v,getStretchStopLabel as h,isImageryStretchedLegend as g}from"../support/styleUtils.js";import{globalCss as u}from"../../support/globalCss.js";import{Heading as b}from"../../support/Heading.js";import"../../support/widgetUtils.js";import{messageBundle as f}from"../../support/decorators/messageBundle.js";import{tsx as L}from"../../support/jsxFactory.js";const w=`${i}__`,C=24,R={display:"flex",alignItems:"flex-start"},A={marginLeft:"3px"},_={display:"table-cell",verticalAlign:"middle"};let j=class extends a{constructor(e,s){super(e,s),this.activeLayerInfos=null,this.headingLevel=3,this.messages=null,this.type="classic"}render(){const e=this.activeLayerInfos,s=e&&e.toArray().map((e=>this._renderLegendForLayer(e))).filter((e=>!!e));return L("div",null,s&&s.length?s:L("div",{class:r.message},this.messages.noLegend))}_renderLegendForLayer(e){if(!e.ready)return null;const s=!!e.children.length,t=`${w}${e.layer.uid}-version-${e.version}`,a=e.title?b({level:this.headingLevel,class:this.classes(u.heading,r.label)},e.title):null;if(s){const s=e.children.map((e=>this._renderLegendForLayer(e))).toArray();return L("div",{key:t,class:this.classes(r.service,r.groupLayer)},a,s)}{const s=e.legendElements;if(s&&!s.length)return null;const i=s.map((s=>this._renderLegendForElement(s,e.layer,e.effectList))).filter((e=>!!e));if(!i.length)return null;const l={[r.groupLayerChild]:!!e.parent};return L("div",{key:t,class:this.classes(r.service,l)},a,L("div",{class:r.layer},i))}}_renderLegendForElement(e,s,t,a){const i="color-ramp"===e.type,o="opacity-ramp"===e.type,n="size-ramp"===e.type;let p=null;if("symbol-table"===e.type||n){const a=e.infos.map((a=>this._renderLegendForElementInfo(a,s,t,n,e.legendType))).filter((e=>!!e));a.length&&(p=L("div",{class:r.layerBody},a))}else"color-ramp"===e.type||"opacity-ramp"===e.type||"heatmap-ramp"===e.type||"stretch-ramp"===e.type?p=this._renderLegendForRamp(e,s.opacity):"relationship-ramp"===e.type?p=l(e,this.id,{opacity:s.opacity,effectList:t,ariaLabel:this.messages.previewRelationshipRampAriaLabel}):"pie-chart-ramp"===e.type?p=this._renderPieChartRamp(e):"univariate-above-and-below-ramp"===e.type?p=this._renderUnivariateAboveAndBelowRamp(e,s.opacity,t):"univariate-color-size-ramp"===e.type&&(p=this._renderUnivariateColorSizeRamp(e,s.opacity,t));if(!p)return null;const d=e.title;let c=null;if("string"==typeof d)c=d;else if(d){const e=m(this.messages,d,i||o);c=y(d,i||o)&&d.title?`${d.title} (${e})`:e}const v=a?r.layerChildTable:r.layerTable,h=c?L("div",{class:r.layerCaption},c):null,g={[r.layerTableSizeRamp]:n||!a};return L("div",{class:this.classes(v,g)},h,p)}_renderPieChartRamp(e){return L("div",{bind:e.preview,afterCreate:v})}_renderUnivariateAboveAndBelowRamp(e,s,t){const{sizeRampElement:a,colorRampElement:i}=o(e,s);if(!a)return null;const l=this.messages?.previewColorRampAriaLabel,c=n(a,"above",!0),m=n(a,"below",!0),y=12,h=p(i,{width:y,height:c,rampAlignment:"vertical",opacity:s,type:"above",effectList:t,ariaLabel:l}),g=p(i,{width:y,height:m,rampAlignment:"vertical",opacity:s,type:"below",effectList:t,ariaLabel:l}),u=d(a),b=a.infos.map((e=>e.label)),f=b.map(((e,s)=>{const t=2===s;return 0===s?L("div",{key:s,class:e?h?r.univariateAboveAndBelowLabel:r.rampLabel:void 0},e):t?L("div",null):null})),w=b.length-1,C=Math.floor(b.length/2),j=b.map(((e,s)=>s===C||s===w?L("div",{key:s,class:e?h?r.univariateAboveAndBelowLabel:r.rampLabel:void 0},e):null)),$={display:"table-cell",verticalAlign:"middle"},I={marginTop:`${u}px`},x={height:`${c}px`},S={height:`${m}px`};return L("div",{key:"univariate-above-and-below-ramp-preview",styles:R},L("div",{class:r.layerBody},a.infos.map(((e,s)=>L("div",{class:this.classes(r.layerRow,r.sizeRamp)},L("div",{class:r.symbol,styles:$,bind:e.preview,afterCreate:v}),h||s%2!=0?null:L("div",{class:r.layerInfo},b[s]))))),h?L("div",{styles:I,key:"color-ramp-preview"},L("div",{styles:A},L("div",{styles:_},L("div",{class:r.rampContainer,bind:h,afterCreate:v})),L("div",{styles:_},L("div",{class:r.rampLabelsContainer,styles:x},f))),L("div",{styles:A},L("div",{styles:_},L("div",{class:r.rampContainer,bind:g,afterCreate:v})),L("div",{styles:_},L("div",{class:r.rampLabelsContainer,styles:S},j)))):null)}_renderUnivariateColorSizeRamp(e,s,t){const{sizeRampElement:a,colorRampElement:i}=c(e);if(!a)return null;const l=d(a),o=12,m=n(a,"full",!1),y=p(i,{width:o,height:m,rampAlignment:"vertical",opacity:s,type:"full",effectList:t,ariaLabel:this.messages?.previewColorRampAriaLabel}),h=a.infos.length-1,g=a.infos.map(((e,s)=>0===s||s===h?L("div",{key:s,class:e.label?i?r.univariateAboveAndBelowLabel:r.rampLabel:void 0},e.label):null)),u={display:"table-cell",verticalAlign:"middle"},b={marginTop:`${l}px`},f={height:`${m}px`};return L("div",{key:"univariate-above-and-below-ramp-preview",styles:R},L("div",{class:r.layerBody},a.infos.map((e=>L("div",{class:this.classes(r.layerRow,r.sizeRamp)},L("div",{class:r.symbol,styles:u,bind:e.preview,afterCreate:v}))))),L("div",{styles:b,key:"color-ramp-preview"},L("div",{styles:A},L("div",{styles:_},L("div",{class:r.rampContainer,bind:y,afterCreate:v})),L("div",{styles:_},L("div",{class:r.rampLabelsContainer,styles:f},g)))))}_renderLegendForRamp(e,s){const t=e.infos,a="opacity-ramp"===e.type,i="heatmap-ramp"===e.type,l="stretch-ramp"===e.type,o=e.preview,n=a?r.opacityRamp:"";o.className=`${r.colorRamp} ${n}`,null!=s&&(o.style.opacity=s.toString());const p=t.map((e=>L("div",{class:e.label?r.rampLabel:void 0},i?this.messages[e.label]||e.label:l?h(e,this.messages):e.label))),d={width:`${C}px`},c={height:o.style.height};return L("div",{class:r.layerRow},L("div",{class:r.symbolContainer,styles:d},L("div",{class:r.rampContainer,bind:o,afterCreate:v})),L("div",{class:r.layerInfo},L("div",{class:r.rampLabelsContainer,styles:c},p)))}_renderLegendForElementInfo(e,s,t,a,i){if(e.type)return this._renderLegendForElement(e,s,t,!0);let l=null;const o=g(s,i);if(e.preview?l=L("div",{class:r.symbol,bind:e.preview,afterCreate:v}):e.src&&(l=this._renderImage(e,s,o)),!l)return null;const n={[r.imageryLayerInfoStretched]:o},p={[r.imageryLayerInfoStretched]:o,[r.sizeRamp]:!o&&a};return L("div",{class:r.layerRow},L("div",{class:this.classes(r.symbolContainer,p)},l),L("div",{class:this.classes(r.layerInfo,n)},m(this.messages,e.label,!1)||""))}_renderImage(e,s,t){const{label:a,src:i,opacity:l}=e,o={[r.imageryLayerStretchedImage]:t,[r.symbol]:!t},n={opacity:`${null!=l?l:s.opacity}`};return L("img",{alt:m(this.messages,a,!1),"aria-label":m(this.messages,a,!1),src:i,border:0,width:e.width,height:e.height,class:this.classes(o),styles:n})}};e([s()],j.prototype,"activeLayerInfos",void 0),e([s()],j.prototype,"headingLevel",void 0),e([s(),f("esri/widgets/Legend/t9n/Legend")],j.prototype,"messages",void 0),e([s({readOnly:!0})],j.prototype,"type",void 0),j=e([t("esri.widgets.Legend.styles.Classic")],j);const $=j;export{$ as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/accessorSupport/ensureType.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import{subclass as t}from"../../../core/accessorSupport/decorators/subclass.js";import a from"../../Widget.js";import{css as r,legend as i}from"./ClassicCSS.js";import{renderRelationshipRamp as l}from"./support/relationshipUtils.js";import{getUnivariateAboveAndBelowRampElements as o,getUnivariateColorRampSize as n,getUnivariateColorRampPreview as p,getUnivariateColorRampMargin as d,getUnivariateColorSizeRampElements as c}from"./support/univariateUtils.js";import{getTitle as m,isRendererTitle as y,attachToNode as v,getStretchStopLabel as h,isImageryStretchedLegend as g}from"../support/styleUtils.js";import{globalCss as u}from"../../support/globalCss.js";import{Heading as b}from"../../support/Heading.js";import"../../support/widgetUtils.js";import{messageBundle as f}from"../../support/decorators/messageBundle.js";import{tsx as L}from"../../support/jsxFactory.js";const w=`${i}__`,C=24,R={display:"flex",alignItems:"flex-start"},A={marginLeft:"3px"},_={display:"table-cell",verticalAlign:"middle"};let j=class extends a{constructor(e,s){super(e,s),this.activeLayerInfos=null,this.headingLevel=3,this.messages=null,this.type="classic"}render(){const e=this.activeLayerInfos,s=e&&e.toArray().map((e=>this._renderLegendForLayer(e))).filter((e=>!!e));return L("div",null,s&&s.length?s:L("div",{class:r.message},this.messages.noLegend))}_renderLegendForLayer(e){if(!e.ready)return null;const s=!!e.children.length,t=`${w}${e.layer.uid}-version-${e.version}`,a=e.title?b({level:this.headingLevel,class:this.classes(u.heading,r.label)},e.title):null;if(s){const s=e.children.map((e=>this._renderLegendForLayer(e))).toArray();return L("div",{class:this.classes(r.service,r.groupLayer),key:t},a,s)}{const s=e.legendElements;if(s&&!s.length)return null;const i=s.map((s=>this._renderLegendForElement(s,e.layer,e.effectList))).filter((e=>!!e));if(!i.length)return null;const l={[r.groupLayerChild]:!!e.parent};return L("div",{class:this.classes(r.service,l),key:t},a,L("div",{class:r.layer},i))}}_renderLegendForElement(e,s,t,a){const i="color-ramp"===e.type,o="opacity-ramp"===e.type,n="size-ramp"===e.type;let p=null;if("symbol-table"===e.type||n){const a=e.infos.map((a=>this._renderLegendForElementInfo(a,s,t,n,e.legendType))).filter((e=>!!e));a.length&&(p=L("div",{class:r.layerBody},a))}else"color-ramp"===e.type||"opacity-ramp"===e.type||"heatmap-ramp"===e.type||"stretch-ramp"===e.type?p=this._renderLegendForRamp(e,s.opacity):"relationship-ramp"===e.type?p=l(e,this.id,{opacity:s.opacity,effectList:t,ariaLabel:this.messages.previewRelationshipRampAriaLabel}):"pie-chart-ramp"===e.type?p=this._renderPieChartRamp(e):"univariate-above-and-below-ramp"===e.type?p=this._renderUnivariateAboveAndBelowRamp(e,s.opacity,t):"univariate-color-size-ramp"===e.type&&(p=this._renderUnivariateColorSizeRamp(e,s.opacity,t));if(!p)return null;const d=e.title;let c=null;if("string"==typeof d)c=d;else if(d){const e=m(this.messages,d,i||o);c=y(d,i||o)&&d.title?`${d.title} (${e})`:e}const v=a?r.layerChildTable:r.layerTable,h=c?L("div",{class:r.layerCaption},c):null,g={[r.layerTableSizeRamp]:n||!a};return L("div",{class:this.classes(v,g)},h,p)}_renderPieChartRamp(e){return L("div",{afterCreate:v,bind:e.preview})}_renderUnivariateAboveAndBelowRamp(e,s,t){const{sizeRampElement:a,colorRampElement:i}=o(e,s);if(!a)return null;const l=this.messages?.previewColorRampAriaLabel,c=n(a,"above",!0),m=n(a,"below",!0),y=12,h=p(i,{width:y,height:c,rampAlignment:"vertical",opacity:s,type:"above",effectList:t,ariaLabel:l}),g=p(i,{width:y,height:m,rampAlignment:"vertical",opacity:s,type:"below",effectList:t,ariaLabel:l}),u=d(a),b=a.infos.map((e=>e.label)),f=b.map(((e,s)=>{const t=2===s;return 0===s?L("div",{class:e?h?r.univariateAboveAndBelowLabel:r.rampLabel:void 0,key:s},e):t?L("div",null):null})),w=b.length-1,C=Math.floor(b.length/2),j=b.map(((e,s)=>s===C||s===w?L("div",{class:e?h?r.univariateAboveAndBelowLabel:r.rampLabel:void 0,key:s},e):null)),$={display:"table-cell",verticalAlign:"middle"},I={marginTop:`${u}px`},x={height:`${c}px`},S={height:`${m}px`};return L("div",{key:"univariate-above-and-below-ramp-preview",styles:R},L("div",{class:r.layerBody},a.infos.map(((e,s)=>L("div",{class:this.classes(r.layerRow,r.sizeRamp)},L("div",{afterCreate:v,bind:e.preview,class:r.symbol,styles:$}),h||s%2!=0?null:L("div",{class:r.layerInfo},b[s]))))),h?L("div",{key:"color-ramp-preview",styles:I},L("div",{styles:A},L("div",{styles:_},L("div",{afterCreate:v,bind:h,class:r.rampContainer})),L("div",{styles:_},L("div",{class:r.rampLabelsContainer,styles:x},f))),L("div",{styles:A},L("div",{styles:_},L("div",{afterCreate:v,bind:g,class:r.rampContainer})),L("div",{styles:_},L("div",{class:r.rampLabelsContainer,styles:S},j)))):null)}_renderUnivariateColorSizeRamp(e,s,t){const{sizeRampElement:a,colorRampElement:i}=c(e);if(!a)return null;const l=d(a),o=12,m=n(a,"full",!1),y=p(i,{width:o,height:m,rampAlignment:"vertical",opacity:s,type:"full",effectList:t,ariaLabel:this.messages?.previewColorRampAriaLabel}),h=a.infos.length-1,g=a.infos.map(((e,s)=>0===s||s===h?L("div",{class:e.label?i?r.univariateAboveAndBelowLabel:r.rampLabel:void 0,key:s},e.label):null)),u={display:"table-cell",verticalAlign:"middle"},b={marginTop:`${l}px`},f={height:`${m}px`};return L("div",{key:"univariate-above-and-below-ramp-preview",styles:R},L("div",{class:r.layerBody},a.infos.map((e=>L("div",{class:this.classes(r.layerRow,r.sizeRamp)},L("div",{afterCreate:v,bind:e.preview,class:r.symbol,styles:u}))))),L("div",{key:"color-ramp-preview",styles:b},L("div",{styles:A},L("div",{styles:_},L("div",{afterCreate:v,bind:y,class:r.rampContainer})),L("div",{styles:_},L("div",{class:r.rampLabelsContainer,styles:f},g)))))}_renderLegendForRamp(e,s){const t=e.infos,a="opacity-ramp"===e.type,i="heatmap-ramp"===e.type,l="stretch-ramp"===e.type,o=e.preview,n=a?r.opacityRamp:"";o.className=`${r.colorRamp} ${n}`,null!=s&&(o.style.opacity=s.toString());const p=t.map((e=>L("div",{class:e.label?r.rampLabel:void 0},i?this.messages[e.label]||e.label:l?h(e,this.messages):e.label))),d={width:`${C}px`},c={height:o.style.height};return L("div",{class:r.layerRow},L("div",{class:r.symbolContainer,styles:d},L("div",{afterCreate:v,bind:o,class:r.rampContainer})),L("div",{class:r.layerInfo},L("div",{class:r.rampLabelsContainer,styles:c},p)))}_renderLegendForElementInfo(e,s,t,a,i){if(e.type)return this._renderLegendForElement(e,s,t,!0);let l=null;const o=g(s,i);if(e.preview?l=L("div",{afterCreate:v,bind:e.preview,class:r.symbol}):e.src&&(l=this._renderImage(e,s,o)),!l)return null;const n={[r.imageryLayerInfoStretched]:o},p={[r.imageryLayerInfoStretched]:o,[r.sizeRamp]:!o&&a};return L("div",{class:r.layerRow},L("div",{class:this.classes(r.symbolContainer,p)},l),L("div",{class:this.classes(r.layerInfo,n)},m(this.messages,e.label,!1)||""))}_renderImage(e,s,t){const{label:a,src:i,opacity:l}=e,o={[r.imageryLayerStretchedImage]:t,[r.symbol]:!t},n={opacity:`${null!=l?l:s.opacity}`};return L("img",{alt:m(this.messages,a,!1),"aria-label":m(this.messages,a,!1),border:0,class:this.classes(o),height:e.height,src:i,styles:n,width:e.width})}};e([s()],j.prototype,"activeLayerInfos",void 0),e([s()],j.prototype,"headingLevel",void 0),e([s(),f("esri/widgets/Legend/t9n/Legend")],j.prototype,"messages",void 0),e([s({readOnly:!0})],j.prototype,"type",void 0),j=e([t("esri.widgets.Legend.styles.Classic")],j);const $=j;export{$ 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{generateFillAttributes as e,generateStrokeAttributes as l,renderDef as a,renderShape as r,getBoundingBox as t,computeBBox as s,getTransformMatrix as o}from"../../../../symbols/support/svgUtils.js";import{getCSSFilterFromEffectList as i}from"../../../../symbols/support/utils.js";import{isRTL as n,classes as d}from"../../../support/widgetUtils.js";import{tsx as m}from"../../../support/jsxFactory.js";const b="esri-relationship-ramp",u=`${b}--diamond`,c=`${b}--square`,f="http://www.w3.org/2000/svg",p={diamondContainer:`${u}__container`,diamondLeftCol:`${u}__left-column`,diamondRightCol:`${u}__right-column`,diamondMidCol:`${u}__middle-column`,diamondMidColLabel:`${u}__middle-column--label`,diamondMidColRamp:`${u}__middle-column--ramp`,squareTable:`${c}__table`,squareTableRow:`${c}__table-row`,squareTableCell:`${c}__table-cell`,squareTableLabel:`${c}__table-label`,squareTableLabelLeftBottom:`${c}__table-label--left-bottom`,squareTableLabelRightBottom:`${c}__table-label--right-bottom`,squareTableLabelLeftTop:`${c}__table-label--left-top`,squareTableLabelRightTop:`${c}__table-label--right-top`};function h(e,l,a={}){const{focus:r,labels:t}=e,s=!!r,o=T(e,l,a),i={justifyContent:"center"},b=n();return s?m("div",{class:p.diamondContainer,styles:i},m("div",{class:p.diamondLeftCol},b?t.right:t.left),m("div",{class:p.diamondMidCol},m("div",{class:p.diamondMidColLabel},t.top),o,m("div",{class:p.diamondMidColLabel},t.bottom)),m("div",{class:p.diamondRightCol},b?t.left:t.right)):m("div",{class:p.squareTable},m("div",{class:p.squareTableRow},m("div",{class:d(p.squareTableCell,p.squareTableLabel,p.squareTableLabelRightBottom)},b?t.top:t.left),m("div",{class:p.squareTableCell}),m("div",{class:d(p.squareTableCell,p.squareTableLabel,p.squareTableLabelLeftBottom)},b?t.left:t.top)),m("div",{class:p.squareTableRow},m("div",{class:p.squareTableCell}),o,m("div",{class:p.squareTableCell})),m("div",{class:p.squareTableRow},m("div",{class:d(p.squareTableCell,p.squareTableLabel,p.squareTableLabelRightTop)},b?t.right:t.bottom),m("div",{class:p.squareTableCell}),m("div",{class:d(p.squareTableCell,p.squareTableLabel,p.squareTableLabelLeftTop)},b?t.bottom:t.right)))}function k(e,l,a){const r=`${a}_arrowStart`,t=`${a}_arrowEnd`,s="left"===e,o={markerStart:null,markerEnd:null};switch(l){case"HL":s?o.markerStart=`url(#${t})`:o.markerEnd=`url(#${r})`;break;case"LL":o.markerStart=`url(#${t})`;break;case"LH":s?o.markerEnd=`url(#${r})`:o.markerStart=`url(#${t})`;break;default:o.markerEnd=`url(#${r})`}return o}function T(n,d,b={}){const{focus:u,numClasses:c,colors:h,rotation:T}=n,{opacity:_,effectList:q,ariaLabel:L}=b,g=b.size??60,$=!!u,C=Math.sqrt(g**2+g**2)+($?0:5),v=[],w=[],y=[],x=(g||75)/c;for(let s=0;s<c;s++){const o=s*x;for(let i=0;i<c;i++){const n=i*x,d=e(h[s][i]),m=l(null),b={type:"rect",x:n,y:o,width:x,height:x},u=a(d);u&&v.push(u);const c=r(b,d.fill,m,null);c&&w.push(c),y.push(t(b))}}const R=10,E=15,M=15,S=10;let j=null;$||(j="margin: -15px -15px -18px -15px");const B=k("left",u,d),H=k("right",u,d),U=s(y),W=o(U,C,C,0,!1,T,!1),X=o(U,C,C,0,!1,$?-45:null,!1),Y={filter:i(q)??void 0,opacity:null==_?"":`${_}`};return m("div",{styles:Y,class:$?p.diamondMidColRamp:p.squareTableCell},m("svg",{xmlns:f,width:C,height:C,style:j,"aria-labelledBy":L,role:"image",focusable:!1},m("defs",null,m("marker",{id:`${d}_arrowStart`,markerWidth:"10",markerHeight:"10",refX:"5",refY:"5",markerUnits:"strokeWidth",orient:"auto"},m("polyline",{points:"0,0 5,5 0,10",fill:"none",stroke:"#555555","stroke-width":"1"})),m("marker",{id:`${d}_arrowEnd`,markerWidth:"10",markerHeight:"10",refX:"0",refY:"5",markerUnits:"strokeWidth",orient:"auto"},m("polyline",{points:"5,0 0,5 5,10",fill:"none",stroke:"#555555","stroke-width":"1"})),v),m("g",{transform:W},w),m("g",{transform:X},m("line",{fill:"none",stroke:"#555555","stroke-width":"1","marker-start":B.markerStart,"marker-end":B.markerEnd,x1:-R,y1:g-E,x2:-R,y2:E}),m("line",{fill:"none",stroke:"#555555","stroke-width":"1","marker-start":H.markerStart,"marker-end":H.markerEnd,x1:M,y1:g+S,x2:g-M,y2:g+S}))))}export{h as renderRelationshipRamp};
5
+ import{generateFillAttributes as e,generateStrokeAttributes as l,renderDef as a,renderShape as r,getBoundingBox as t,computeBBox as s,getTransformMatrix as o}from"../../../../symbols/support/svgUtils.js";import{getCSSFilterFromEffectList as i}from"../../../../symbols/support/utils.js";import{isRTL as n,classes as d}from"../../../support/widgetUtils.js";import{tsx as m}from"../../../support/jsxFactory.js";const b="esri-relationship-ramp",u=`${b}--diamond`,c=`${b}--square`,f="http://www.w3.org/2000/svg",p={diamondContainer:`${u}__container`,diamondLeftCol:`${u}__left-column`,diamondRightCol:`${u}__right-column`,diamondMidCol:`${u}__middle-column`,diamondMidColLabel:`${u}__middle-column--label`,diamondMidColRamp:`${u}__middle-column--ramp`,squareTable:`${c}__table`,squareTableRow:`${c}__table-row`,squareTableCell:`${c}__table-cell`,squareTableLabel:`${c}__table-label`,squareTableLabelLeftBottom:`${c}__table-label--left-bottom`,squareTableLabelRightBottom:`${c}__table-label--right-bottom`,squareTableLabelLeftTop:`${c}__table-label--left-top`,squareTableLabelRightTop:`${c}__table-label--right-top`};function h(e,l,a={}){const{focus:r,labels:t}=e,s=!!r,o=T(e,l,a),i={justifyContent:"center"},b=n();return s?m("div",{class:p.diamondContainer,styles:i},m("div",{class:p.diamondLeftCol},b?t.right:t.left),m("div",{class:p.diamondMidCol},m("div",{class:p.diamondMidColLabel},t.top),o,m("div",{class:p.diamondMidColLabel},t.bottom)),m("div",{class:p.diamondRightCol},b?t.left:t.right)):m("div",{class:p.squareTable},m("div",{class:p.squareTableRow},m("div",{class:d(p.squareTableCell,p.squareTableLabel,p.squareTableLabelRightBottom)},b?t.top:t.left),m("div",{class:p.squareTableCell}),m("div",{class:d(p.squareTableCell,p.squareTableLabel,p.squareTableLabelLeftBottom)},b?t.left:t.top)),m("div",{class:p.squareTableRow},m("div",{class:p.squareTableCell}),o,m("div",{class:p.squareTableCell})),m("div",{class:p.squareTableRow},m("div",{class:d(p.squareTableCell,p.squareTableLabel,p.squareTableLabelRightTop)},b?t.right:t.bottom),m("div",{class:p.squareTableCell}),m("div",{class:d(p.squareTableCell,p.squareTableLabel,p.squareTableLabelLeftTop)},b?t.bottom:t.right)))}function k(e,l,a){const r=`${a}_arrowStart`,t=`${a}_arrowEnd`,s="left"===e,o={markerStart:null,markerEnd:null};switch(l){case"HL":s?o.markerStart=`url(#${t})`:o.markerEnd=`url(#${r})`;break;case"LL":o.markerStart=`url(#${t})`;break;case"LH":s?o.markerEnd=`url(#${r})`:o.markerStart=`url(#${t})`;break;default:o.markerEnd=`url(#${r})`}return o}function T(n,d,b={}){const{focus:u,numClasses:c,colors:h,rotation:T}=n,{opacity:_,effectList:q,ariaLabel:L}=b,g=b.size??60,$=!!u,C=Math.sqrt(g**2+g**2)+($?0:5),v=[],w=[],y=[],x=(g||75)/c;for(let s=0;s<c;s++){const o=s*x;for(let i=0;i<c;i++){const n=i*x,d=e(h[s][i]),m=l(null),b={type:"rect",x:n,y:o,width:x,height:x},u=a(d);u&&v.push(u);const c=r(b,d.fill,m,null);c&&w.push(c),y.push(t(b))}}const R=10,E=15,M=15,S=10;let j=null;$||(j="margin: -15px -15px -18px -15px");const B=k("left",u,d),H=k("right",u,d),U=s(y),W=o(U,C,C,0,!1,T,!1),X=o(U,C,C,0,!1,$?-45:null,!1),Y={filter:i(q)??void 0,opacity:null==_?"":`${_}`};return m("div",{class:$?p.diamondMidColRamp:p.squareTableCell,styles:Y},m("svg",{"aria-labelledBy":L,focusable:!1,height:C,role:"image",style:j,width:C,xmlns:f},m("defs",null,m("marker",{id:`${d}_arrowStart`,markerHeight:"10",markerUnits:"strokeWidth",markerWidth:"10",orient:"auto",refX:"5",refY:"5"},m("polyline",{fill:"none",points:"0,0 5,5 0,10",stroke:"#555555","stroke-width":"1"})),m("marker",{id:`${d}_arrowEnd`,markerHeight:"10",markerUnits:"strokeWidth",markerWidth:"10",orient:"auto",refX:"0",refY:"5"},m("polyline",{fill:"none",points:"5,0 0,5 5,10",stroke:"#555555","stroke-width":"1"})),v),m("g",{transform:W},w),m("g",{transform:X},m("line",{fill:"none","marker-end":B.markerEnd,"marker-start":B.markerStart,stroke:"#555555","stroke-width":"1",x1:-R,x2:-R,y1:g-E,y2:E}),m("line",{fill:"none","marker-end":H.markerEnd,"marker-start":H.markerStart,stroke:"#555555","stroke-width":"1",x1:M,x2:g-M,y1:g+S,y2:g+S}))))}export{h as renderRelationshipRamp};
@@ -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{pt2px as e}from"../../../../core/screenUtils.js";import"../../../../libs/maquette/projection.js";import{createProjector as t}from"../../../../libs/maquette/projector.js";import{renderColorRampPreviewHTML as o}from"../../../../symbols/support/symbolUtils.js";import"../../../support/widgetUtils.js";import{tsx as i}from"../../../support/jsxFactory.js";const l=t(),n=10,r=20,s=10,a=20,c={univariateAboveAndBelowSymbol:"esri-univariate-above-and-below-ramp__symbol",colorRamp:"esri-legend__color-ramp"};function f(e="vertical"){const t="stroke:rgb(200, 200, 200);stroke-width:1";return"vertical"===e?i("svg",{height:"4",width:"10"},i("line",{x1:"0",y1:"2",x2:"10",y2:"2",style:t})):i("svg",{height:"10",width:"10"},i("line",{x1:"5",y1:"0",x2:"5",y2:"10",style:t}))}function p(e,t="vertical"){const o=document.createElement("div");return o.style.height=`${r}px`,o.className=c.univariateAboveAndBelowSymbol,null!=e&&(o.style.opacity=e.toString()),l.append(o,f.bind(null,t)),o}function m(t,o,i="vertical",l){t.infos.forEach(((t,n)=>{if(l&&2===n)t.preview=p(o,i);else{const o=e(t.size)+("horizontal"===i?a:s),l=t.preview,n="div"===l?.tagName.toLowerCase(),r=n?l:document.createElement("div");r.className=c.univariateAboveAndBelowSymbol,"horizontal"===i?r.style.width=`${o}px`:r.style.height=`${o}px`,!n&&l&&r.appendChild(l),t.preview=r}}))}function u(t,o="classic"){const i=t.infos;return"classic"===o?(e(i[0].size)+s)/2:(e(i[0].size)-e(i[i.length-1].size))/2}function h(e,t){if(!e)return null;const i=e.infos.map((e=>e.color)),l=o("full"===t.type?i:"above"===t.type?i.slice(0,3):i.slice(2,5),{width:t.width,height:t.height,align:t.rampAlignment,effectList:t.effectList,ariaLabel:t.ariaLabel});return l.className=c.colorRamp,null!=t.opacity&&(l.style.opacity=t.opacity.toString()),l}function v(t,o,i,l="vertical"){let c=0;const f=t.infos,p=Math.floor(f.length/2),m="full"===o||"above"===o?0:p,u="full"===o||"below"===o?f.length-1:p;for(let h=m;h<=u;h++)if(i&&h===p)c+="horizontal"===l?n:r;else{c+=e(f[h].size)+("horizontal"===l?a:s)}return Math.round(c)}function y(t,o,i,l="vertical"){const c=v(t,o,i,l),f=t.infos,p=Math.floor(f.length/2),m="full"===o||"above"===o?0:p,u="full"===o||"below"===o?f.length-1:p,h="full"===o?f[m].size+f[u].size:"above"===o?f[m].size:f[u].size,y=i?"vertical"===l?r:n:0,d="vertical"===l?s*("full"===o?2:1):a*("full"===o?2:1);return Math.round(c-(e(h)/2+y/2+d/2))}function d(e,t,o="vertical"){const i=e.infos;let l=i.find((({type:e})=>"size-ramp"===e)),n=i.find((({type:e})=>"color-ramp"===e));return l&&(l={...l},l.infos=[...l.infos],m(l,t,o,!0)),n&&(n={...n},n.infos=[...n.infos]),"horizontal"===o&&(l?.infos.reverse(),n?.infos.reverse()),{sizeRampElement:l,colorRampElement:n}}function b(e,t="vertical"){const o=e.infos;let i=o.find((({type:e})=>"size-ramp"===e)),l=o.find((({type:e})=>"color-ramp"===e));return i&&(i={...i},i.infos=[...i.infos],m(i,null,t,!1)),l&&(l={...l},l.infos=[...l.infos]),"horizontal"===t&&(i?.infos.reverse(),l?.infos.reverse()),{sizeRampElement:i,colorRampElement:l}}export{d as getUnivariateAboveAndBelowRampElements,u as getUnivariateColorRampMargin,h as getUnivariateColorRampPreview,y as getUnivariateColorRampSize,b as getUnivariateColorSizeRampElements,v as getUnivariateSizeRampSize};
5
+ import{pt2px as e}from"../../../../core/screenUtils.js";import"../../../../libs/maquette/projection.js";import{createProjector as t}from"../../../../libs/maquette/projector.js";import{renderColorRampPreviewHTML as o}from"../../../../symbols/support/symbolUtils.js";import"../../../support/widgetUtils.js";import{tsx as i}from"../../../support/jsxFactory.js";const l=t(),n=10,r=20,s=10,a=20,c={univariateAboveAndBelowSymbol:"esri-univariate-above-and-below-ramp__symbol",colorRamp:"esri-legend__color-ramp"};function f(e="vertical"){const t="stroke:rgb(200, 200, 200);stroke-width:1";return"vertical"===e?i("svg",{height:"4",width:"10"},i("line",{style:t,x1:"0",x2:"10",y1:"2",y2:"2"})):i("svg",{height:"10",width:"10"},i("line",{style:t,x1:"5",x2:"5",y1:"0",y2:"10"}))}function p(e,t="vertical"){const o=document.createElement("div");return o.style.height=`${r}px`,o.className=c.univariateAboveAndBelowSymbol,null!=e&&(o.style.opacity=e.toString()),l.append(o,f.bind(null,t)),o}function m(t,o,i="vertical",l){t.infos.forEach(((t,n)=>{if(l&&2===n)t.preview=p(o,i);else{const o=e(t.size)+("horizontal"===i?a:s),l=t.preview,n="div"===l?.tagName.toLowerCase(),r=n?l:document.createElement("div");r.className=c.univariateAboveAndBelowSymbol,"horizontal"===i?r.style.width=`${o}px`:r.style.height=`${o}px`,!n&&l&&r.appendChild(l),t.preview=r}}))}function u(t,o="classic"){const i=t.infos;return"classic"===o?(e(i[0].size)+s)/2:(e(i[0].size)-e(i[i.length-1].size))/2}function h(e,t){if(!e)return null;const i=e.infos.map((e=>e.color)),l=o("full"===t.type?i:"above"===t.type?i.slice(0,3):i.slice(2,5),{width:t.width,height:t.height,align:t.rampAlignment,effectList:t.effectList,ariaLabel:t.ariaLabel});return l.className=c.colorRamp,null!=t.opacity&&(l.style.opacity=t.opacity.toString()),l}function v(t,o,i,l="vertical"){let c=0;const f=t.infos,p=Math.floor(f.length/2),m="full"===o||"above"===o?0:p,u="full"===o||"below"===o?f.length-1:p;for(let h=m;h<=u;h++)if(i&&h===p)c+="horizontal"===l?n:r;else{c+=e(f[h].size)+("horizontal"===l?a:s)}return Math.round(c)}function y(t,o,i,l="vertical"){const c=v(t,o,i,l),f=t.infos,p=Math.floor(f.length/2),m="full"===o||"above"===o?0:p,u="full"===o||"below"===o?f.length-1:p,h="full"===o?f[m].size+f[u].size:"above"===o?f[m].size:f[u].size,y=i?"vertical"===l?r:n:0,d="vertical"===l?s*("full"===o?2:1):a*("full"===o?2:1);return Math.round(c-(e(h)/2+y/2+d/2))}function d(e,t,o="vertical"){const i=e.infos;let l=i.find((({type:e})=>"size-ramp"===e)),n=i.find((({type:e})=>"color-ramp"===e));return l&&(l={...l},l.infos=[...l.infos],m(l,t,o,!0)),n&&(n={...n},n.infos=[...n.infos]),"horizontal"===o&&(l?.infos.reverse(),n?.infos.reverse()),{sizeRampElement:l,colorRampElement:n}}function b(e,t="vertical"){const o=e.infos;let i=o.find((({type:e})=>"size-ramp"===e)),l=o.find((({type:e})=>"color-ramp"===e));return i&&(i={...i},i.infos=[...i.infos],m(i,null,t,!1)),l&&(l={...l},l.infos=[...l.infos]),"horizontal"===t&&(i?.infos.reverse(),l?.infos.reverse()),{sizeRampElement:i,colorRampElement:l}}export{d as getUnivariateAboveAndBelowRampElements,u as getUnivariateColorRampMargin,h as getUnivariateColorRampPreview,y as getUnivariateColorRampSize,b as getUnivariateColorSizeRampElements,v as getUnivariateSizeRampSize};
@@ -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{ignoreAbortErrors as t}from"../core/promiseUtils.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import o from"./LineOfSight/LineOfSightViewModel.js";import{loadCalciteComponents as r}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import{legacyIcon as a}from"./support/legacyIcon.js";import"./support/widgetUtils.js";import{messageBundle as u}from"./support/decorators/messageBundle.js";import{tsx as d}from"./support/jsxFactory.js";const p="esri-line-of-sight",c={base:p,actions:`${p}__actions`,container:`${p}__container`,error:`${p}__error`,hint:`${p}__hint`,hintText:`${p}__hint-text`,newAnalysisButton:`${p}__new-analysis-button`,widgetIcon:a.lineOfSight},h={newAnalysisButton:`${p}__new-button`,continueButton:`${p}__continue-button`,doneButton:`${p}__done-button`};let m=class extends n{constructor(e,s){super(e,s),this.iconClass=c.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new o,this._onNewAnalysis=()=>{t(this.viewModel.start())},this._onDone=()=>{this.viewModel.stop()},this._onContinue=()=>{this.viewModel.continue()}}loadDependencies(){return r({button:()=>import("@esri/calcite-components/dist/components/calcite-button.js")})}get active(){return this.viewModel.active}get analysis(){return this.viewModel.analysis}set analysis(e){this.viewModel.analysis=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}render(){return d("div",{class:this.classes(c.base,l.widget,l.panel),role:"presentation"},this.renderContainerNode())}renderContainerNode(){if(!this.visible)return null;if(!this.viewModel.supported)return this._renderUnsupportedMessage();let e=null;const t=[this._renderNewAnalysisButton()];return"creating"===this.viewModel.state?(e=this._renderHint(),t.unshift(this._renderDoneButton())):"created"===this.viewModel.state&&this.viewModel.targets.length>0&&t.unshift(this._renderContinueButton()),d("div",{class:c.container},e,d("div",{class:c.actions},t))}_renderUnsupportedMessage(){return d("div",{class:c.error,key:"esri-line-of-sight__unsupported"},d("p",null,this.messages.unsupported))}_renderHint(){return d("div",{class:c.hint,key:"esri-line-of-sight__hint"},d("p",{class:c.hintText},this.messages.hint))}_renderNewAnalysisButton(){return this._renderButton({className:c.newAnalysisButton,id:h.newAnalysisButton,label:this.messages.newAnalysis,onClick:this._onNewAnalysis,primary:!0})}_renderDoneButton(){return this._renderButton({id:h.doneButton,label:this.messages.done,onClick:this._onDone,primary:!1})}_renderContinueButton(){return this._renderButton({id:h.newAnalysisButton,label:this.messages.continueAnalysis,onClick:this._onContinue,primary:!1})}_renderButton({className:e,id:t,label:s,onClick:i,primary:n}){const o="disabled"===this.viewModel.state;return d("calcite-button",{appearance:n?"solid":"outline-fill","data-id":t,disabled:o,key:t,onclick:i,class:e},s)}get test(){return{IDS:h}}};e([s()],m.prototype,"active",null),e([s({constructOnly:!0,nonNullable:!0})],m.prototype,"analysis",null),e([s()],m.prototype,"iconClass",void 0),e([s()],m.prototype,"icon",void 0),e([s()],m.prototype,"label",null),e([s(),u("esri/widgets/LineOfSight/t9n/LineOfSight")],m.prototype,"messages",void 0),e([s()],m.prototype,"view",null),e([s({type:o})],m.prototype,"viewModel",void 0),e([s()],m.prototype,"visible",null),m=e([i("esri.widgets.LineOfSight")],m);const _=m;export{_ as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import{ignoreAbortErrors as t}from"../core/promiseUtils.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import o from"./LineOfSight/LineOfSightViewModel.js";import{loadCalciteComponents as r}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import{legacyIcon as a}from"./support/legacyIcon.js";import"./support/widgetUtils.js";import{messageBundle as u}from"./support/decorators/messageBundle.js";import{tsx as d}from"./support/jsxFactory.js";const p="esri-line-of-sight",c={base:p,actions:`${p}__actions`,container:`${p}__container`,error:`${p}__error`,hint:`${p}__hint`,hintText:`${p}__hint-text`,newAnalysisButton:`${p}__new-analysis-button`,widgetIcon:a.lineOfSight},h={newAnalysisButton:`${p}__new-button`,continueButton:`${p}__continue-button`,doneButton:`${p}__done-button`};let m=class extends n{constructor(e,s){super(e,s),this.iconClass=c.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new o,this._onNewAnalysis=()=>{t(this.viewModel.start())},this._onDone=()=>{this.viewModel.stop()},this._onContinue=()=>{this.viewModel.continue()}}loadDependencies(){return r({button:()=>import("@esri/calcite-components/dist/components/calcite-button.js")})}get active(){return this.viewModel.active}get analysis(){return this.viewModel.analysis}set analysis(e){this.viewModel.analysis=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}render(){return d("div",{class:this.classes(c.base,l.widget,l.panel),role:"presentation"},this.renderContainerNode())}renderContainerNode(){if(!this.visible)return null;if(!this.viewModel.supported)return this._renderUnsupportedMessage();let e=null;const t=[this._renderNewAnalysisButton()];return"creating"===this.viewModel.state?(e=this._renderHint(),t.unshift(this._renderDoneButton())):"created"===this.viewModel.state&&this.viewModel.targets.length>0&&t.unshift(this._renderContinueButton()),d("div",{class:c.container},e,d("div",{class:c.actions},t))}_renderUnsupportedMessage(){return d("div",{class:c.error,key:"esri-line-of-sight__unsupported"},d("p",null,this.messages.unsupported))}_renderHint(){return d("div",{class:c.hint,key:"esri-line-of-sight__hint"},d("p",{class:c.hintText},this.messages.hint))}_renderNewAnalysisButton(){return this._renderButton({className:c.newAnalysisButton,id:h.newAnalysisButton,label:this.messages.newAnalysis,onClick:this._onNewAnalysis,primary:!0})}_renderDoneButton(){return this._renderButton({id:h.doneButton,label:this.messages.done,onClick:this._onDone,primary:!1})}_renderContinueButton(){return this._renderButton({id:h.newAnalysisButton,label:this.messages.continueAnalysis,onClick:this._onContinue,primary:!1})}_renderButton({className:e,id:t,label:s,onClick:i,primary:n}){const o="disabled"===this.viewModel.state;return d("calcite-button",{appearance:n?"solid":"outline-fill",class:e,"data-id":t,disabled:o,key:t,onclick:i},s)}get test(){return{IDS:h}}};e([s()],m.prototype,"active",null),e([s({constructOnly:!0,nonNullable:!0})],m.prototype,"analysis",null),e([s()],m.prototype,"iconClass",void 0),e([s()],m.prototype,"icon",void 0),e([s()],m.prototype,"label",null),e([s(),u("esri/widgets/LineOfSight/t9n/LineOfSight")],m.prototype,"messages",void 0),e([s()],m.prototype,"view",null),e([s({type:o})],m.prototype,"viewModel",void 0),e([s()],m.prototype,"visible",null),m=e([i("esri.widgets.LineOfSight")],m);const _=m;export{_ as default};
package/widgets/Locate.js CHANGED
@@ -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{deprecatedProperty as o}from"../core/deprecate.js";import t from"../core/Logger.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import r from"./Widget.js";import n from"./Locate/LocateViewModel.js";import{loadCalciteComponents as a}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import{legacyIcon as c}from"./support/legacyIcon.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{messageBundle as d}from"./support/decorators/messageBundle.js";import{vmEvent as g}from"./support/decorators/vmEvent.js";import{tsx as u}from"./support/jsxFactory.js";import"./support/widgetUtils.js";const m={base:"esri-locate",widgetIcon:c.northNavigation},h="gps-off",v="esri.widgets.Locate",w=t.getLogger(v);let b=class extends r{constructor(e,o){super(e,o),this.iconClass=m.widgetIcon,this.icon=null,this.messages=null,this.messagesCommon=null,this.viewModel=new n}loadDependencies(){return a({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")})}get geolocationOptions(){return this.viewModel.geolocationOptions}set geolocationOptions(e){this.viewModel.geolocationOptions=e}get goToLocationEnabled(){return this.viewModel.goToLocationEnabled}set goToLocationEnabled(e){this.viewModel.goToLocationEnabled=e}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get graphic(){return this.viewModel.graphic}set graphic(e){this.viewModel.graphic=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get popupEnabled(){return this.viewModel.popupEnabled}set popupEnabled(e){this.viewModel.popupEnabled=e}get rotationEnabled(){return this.viewModel.rotationEnabled}set rotationEnabled(e){this.viewModel.rotationEnabled=e}get scale(){return this.viewModel.scale}set scale(e){this.viewModel.scale=e}get useHeadingEnabled(){return o(w,"useHeadingEnabled",{replacement:"rotationEnabled",version:"4.27",warnOnce:!0}),this.viewModel.rotationEnabled}set useHeadingEnabled(e){o(w,"useHeadingEnabled",{replacement:"rotationEnabled",version:"4.27",warnOnce:!0}),this.viewModel.rotationEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}cancelLocate(){this.viewModel.cancelLocate()}locate(){return this.viewModel.locate()}render(){const{state:e}=this.viewModel,o="locating"===e?this.messagesCommon.cancel:this.messages.title;return u("div",{bind:this,class:this.classes(m.base,l.widget,l.widgetButton,{[l.disabled]:"disabled"===e,[l.hidden]:"feature-unsupported"===e}),hidden:"feature-unsupported"===e,onclick:this._locate,onkeydown:this._locate,role:"button",tabIndex:0,"aria-label":o,title:o},this._renderIcon(),u("span",{class:c.fontFallbackText},this.messages.title))}_renderIcon(){const{icon:e,iconClass:o,viewModel:t}=this;return"locating"===t?.state?u("calcite-loader",{key:"loader",type:"indeterminate",inline:!0,scale:"s",label:""}):e?this._renderCalciteIcon(e):o&&o!==m.widgetIcon?this._renderLegacyIcon(o):this._renderCalciteIcon(h)}_renderCalciteIcon(e){return u("calcite-icon",{key:"icon",icon:e,scale:"s"})}_renderLegacyIcon(e){return u("span",{key:"legacy-icon","aria-hidden":"true",class:e})}_locate(){const{viewModel:e}=this;"locating"===e.state?e.cancelLocate():e.locate()}};e([s()],b.prototype,"geolocationOptions",null),e([s()],b.prototype,"goToLocationEnabled",null),e([s()],b.prototype,"goToOverride",null),e([s()],b.prototype,"graphic",null),e([s()],b.prototype,"iconClass",void 0),e([s()],b.prototype,"icon",void 0),e([s()],b.prototype,"label",null),e([s(),d("esri/widgets/Locate/t9n/Locate")],b.prototype,"messages",void 0),e([s(),d("esri/t9n/common")],b.prototype,"messagesCommon",void 0),e([s()],b.prototype,"popupEnabled",null),e([s()],b.prototype,"rotationEnabled",null),e([s()],b.prototype,"scale",null),e([s()],b.prototype,"useHeadingEnabled",null),e([s()],b.prototype,"view",null),e([s({type:n}),g(["locate","locate-error"])],b.prototype,"viewModel",void 0),e([p()],b.prototype,"_locate",null),b=e([i(v)],b);const y=b;export{y as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import{deprecatedProperty as o}from"../core/deprecate.js";import t from"../core/Logger.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import r from"./Widget.js";import n from"./Locate/LocateViewModel.js";import{loadCalciteComponents as a}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import{legacyIcon as c}from"./support/legacyIcon.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{messageBundle as d}from"./support/decorators/messageBundle.js";import{vmEvent as g}from"./support/decorators/vmEvent.js";import{tsx as u}from"./support/jsxFactory.js";import"./support/widgetUtils.js";const m={base:"esri-locate",widgetIcon:c.northNavigation},h="gps-off",v="esri.widgets.Locate",w=t.getLogger(v);let b=class extends r{constructor(e,o){super(e,o),this.iconClass=m.widgetIcon,this.icon=null,this.messages=null,this.messagesCommon=null,this.viewModel=new n}loadDependencies(){return a({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")})}get geolocationOptions(){return this.viewModel.geolocationOptions}set geolocationOptions(e){this.viewModel.geolocationOptions=e}get goToLocationEnabled(){return this.viewModel.goToLocationEnabled}set goToLocationEnabled(e){this.viewModel.goToLocationEnabled=e}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get graphic(){return this.viewModel.graphic}set graphic(e){this.viewModel.graphic=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get popupEnabled(){return this.viewModel.popupEnabled}set popupEnabled(e){this.viewModel.popupEnabled=e}get rotationEnabled(){return this.viewModel.rotationEnabled}set rotationEnabled(e){this.viewModel.rotationEnabled=e}get scale(){return this.viewModel.scale}set scale(e){this.viewModel.scale=e}get useHeadingEnabled(){return o(w,"useHeadingEnabled",{replacement:"rotationEnabled",version:"4.27",warnOnce:!0}),this.viewModel.rotationEnabled}set useHeadingEnabled(e){o(w,"useHeadingEnabled",{replacement:"rotationEnabled",version:"4.27",warnOnce:!0}),this.viewModel.rotationEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}cancelLocate(){this.viewModel.cancelLocate()}locate(){return this.viewModel.locate()}render(){const{state:e}=this.viewModel,o="locating"===e?this.messagesCommon.cancel:this.messages.title;return u("div",{"aria-label":o,bind:this,class:this.classes(m.base,l.widget,l.widgetButton,{[l.disabled]:"disabled"===e,[l.hidden]:"feature-unsupported"===e}),hidden:"feature-unsupported"===e,onclick:this._locate,onkeydown:this._locate,role:"button",tabIndex:0,title:o},this._renderIcon(),u("span",{class:c.fontFallbackText},this.messages.title))}_renderIcon(){const{icon:e,iconClass:o,viewModel:t}=this;return"locating"===t?.state?u("calcite-loader",{inline:!0,key:"loader",label:"",scale:"s",type:"indeterminate"}):e?this._renderCalciteIcon(e):o&&o!==m.widgetIcon?this._renderLegacyIcon(o):this._renderCalciteIcon(h)}_renderCalciteIcon(e){return u("calcite-icon",{icon:e,key:"icon",scale:"s"})}_renderLegacyIcon(e){return u("span",{"aria-hidden":"true",class:e,key:"legacy-icon"})}_locate(){const{viewModel:e}=this;"locating"===e.state?e.cancelLocate():e.locate()}};e([s()],b.prototype,"geolocationOptions",null),e([s()],b.prototype,"goToLocationEnabled",null),e([s()],b.prototype,"goToOverride",null),e([s()],b.prototype,"graphic",null),e([s()],b.prototype,"iconClass",void 0),e([s()],b.prototype,"icon",void 0),e([s()],b.prototype,"label",null),e([s(),d("esri/widgets/Locate/t9n/Locate")],b.prototype,"messages",void 0),e([s(),d("esri/t9n/common")],b.prototype,"messagesCommon",void 0),e([s()],b.prototype,"popupEnabled",null),e([s()],b.prototype,"rotationEnabled",null),e([s()],b.prototype,"scale",null),e([s()],b.prototype,"useHeadingEnabled",null),e([s()],b.prototype,"view",null),e([s({type:n}),g(["locate","locate-error"])],b.prototype,"viewModel",void 0),e([p()],b.prototype,"_locate",null),b=e([i(v)],b);const y=b;export{y 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{_ as t}from"../chunks/tslib.es6.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as e}from"../core/accessorSupport/decorators/subclass.js";import s from"./Widget.js";import{css as i}from"./NavigationToggle/css.js";import r from"./NavigationToggle/NavigationToggleViewModel.js";import{globalCss as a}from"./support/globalCss.js";import{legacyIcon as l}from"./support/legacyIcon.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{messageBundle as n}from"./support/decorators/messageBundle.js";import{tsx as g}from"./support/jsxFactory.js";import"./support/widgetUtils.js";let c=class extends s{constructor(t,o){super(t,o),this.iconClass=i.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new r}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}set layout(t){"horizontal"!==t&&(t="vertical"),this._set("layout",t)}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}toggle(){return this.viewModel.toggle()}render(){const t="disabled"===this.viewModel?.state,o="pan"===this.viewModel?.navigationMode,e={[a.disabled]:t,[i.isLayoutHorizontal]:"horizontal"===this.layout},s={[i.activeButton]:o},r={[i.activeButton]:!o},p=t?-1:0,n=this.messages.toggle;return g("div",{bind:this,class:this.classes(i.base,a.widget,e),onclick:this._toggle,onkeydown:this._toggle,tabIndex:p,"aria-label":n,title:n},g("div",{class:this.classes(i.button,a.widgetButton,i.panButton,s)},g("span",{class:l.pan})),g("div",{class:this.classes(i.button,a.widgetButton,i.rotateButton,r)},g("span",{class:l.rotate})))}_toggle(){this.toggle()}};t([o()],c.prototype,"iconClass",void 0),t([o()],c.prototype,"icon",void 0),t([o()],c.prototype,"label",null),t([o({value:"vertical"})],c.prototype,"layout",null),t([o(),n("esri/widgets/NavigationToggle/t9n/NavigationToggle")],c.prototype,"messages",void 0),t([o()],c.prototype,"view",null),t([o({type:r})],c.prototype,"viewModel",void 0),t([p()],c.prototype,"_toggle",null),c=t([e("esri.widgets.NavigationToggle")],c);const d=c;export{d as default};
5
+ import{_ as t}from"../chunks/tslib.es6.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as e}from"../core/accessorSupport/decorators/subclass.js";import s from"./Widget.js";import{css as i}from"./NavigationToggle/css.js";import r from"./NavigationToggle/NavigationToggleViewModel.js";import{globalCss as a}from"./support/globalCss.js";import{legacyIcon as l}from"./support/legacyIcon.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{messageBundle as n}from"./support/decorators/messageBundle.js";import{tsx as g}from"./support/jsxFactory.js";import"./support/widgetUtils.js";let c=class extends s{constructor(t,o){super(t,o),this.iconClass=i.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new r}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}set layout(t){"horizontal"!==t&&(t="vertical"),this._set("layout",t)}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}toggle(){return this.viewModel.toggle()}render(){const t="disabled"===this.viewModel?.state,o="pan"===this.viewModel?.navigationMode,e={[a.disabled]:t,[i.isLayoutHorizontal]:"horizontal"===this.layout},s={[i.activeButton]:o},r={[i.activeButton]:!o},p=t?-1:0,n=this.messages.toggle;return g("div",{"aria-label":n,bind:this,class:this.classes(i.base,a.widget,e),onclick:this._toggle,onkeydown:this._toggle,tabIndex:p,title:n},g("div",{class:this.classes(i.button,a.widgetButton,i.panButton,s)},g("span",{class:l.pan})),g("div",{class:this.classes(i.button,a.widgetButton,i.rotateButton,r)},g("span",{class:l.rotate})))}_toggle(){this.toggle()}};t([o()],c.prototype,"iconClass",void 0),t([o()],c.prototype,"icon",void 0),t([o()],c.prototype,"label",null),t([o({value:"vertical"})],c.prototype,"layout",null),t([o(),n("esri/widgets/NavigationToggle/t9n/NavigationToggle")],c.prototype,"messages",void 0),t([o()],c.prototype,"view",null),t([o({type:r})],c.prototype,"viewModel",void 0),t([p()],c.prototype,"_toggle",null),c=t([e("esri.widgets.NavigationToggle")],c);const d=c;export{d 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{_ 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 h,on as c,watch as g,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{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 M}from"../../layers/orientedImagery/core/coverageUtils.js";import{updateElevation as S,transformPoints as x}from"../../layers/orientedImagery/transformations/groundToImageUtils.js";import{transformPoints as V}from"../../layers/orientedImagery/transformations/imageToGroundUtils.js";import j from"../../layers/support/RasterFunction.js";import{convolutionKernel as A}from"../../layers/support/rasterFunctionConstants.js";import O from"../../layers/support/rasterDatasets/RasterFactory.js";import G from"../../rest/support/AttachmentQuery.js";import D from"../../views/MapView.js";import{getResolutionToScaleFactor as R}from"../../views/2d/viewpointUtils.js";import{projectWithEngineOrService as L}from"../../views/support/projectionUtils.js";import{sectorsInOrder as E,sectorsRadii as U}from"./constants.js";import{activePolygonSymbol as T,polygonSymbol as N,activeSourcePointSymbol as k,sourcePointSymbol as H,crossSymbol as J,diamondSymbol as z}from"./symbols.js";import{isTifOrMrf as $,isSceneView as q,isGraphic as B}from"./utils.js";import W from"../../geometry/Polygon.js";import Z from"../../geometry/SpatialReference.js";import Q from"../../geometry/Point.js";const K={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"},X=e=>/^https?:/i.test(e),Y=e=>"FA"===e;let ee=class extends s.EventedAccessor{constructor(e){super(e),this.activeLayer=null,this.shouldShowSelectedImage=!1,this.coverageFrustums=new i,this.coveragePolygons=new i,this.currentCoverageVisible=!0,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.localPort=null,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(){h((()=>this.view?.ready)).then((()=>{this._overlays=new f({listMode:"hide"}),this.view.map.layers.add(this._overlays)})),this.addHandles([c((()=>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)}})),g((()=>this.view?.map?.allLayers?.length),(e=>{e&&this._overlays&&this.view.map.layers.reorder(this._overlays,e-1)}),{initial:!0})],K.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 imageGalleryEnabled(){return $(this.selectedFeature?.attributes.image?.trim())}get imageLoaded(){return this._currentImage?.loaded??!1}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 E.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 $(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?.[E[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 D({container:e,map:t,spatialReferance:r,constraints:{snapToZoom:!1,rotationEnabled:!1},ui:{components:["zoom"]}}),h((()=>!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 V([e.mapPoint.toJSON()],{feature:n,currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:this._transformController?.signal}}))[0];t&&this.plotReferencePointOnGround(t)}}})),g((()=>[this._imageViewer?.viewpoint,this._initialCurrentCoveragePolygon]),((e,t)=>{this._initialPreviousCoveragePolygon=t?.[1],this._imageViewer?.viewpoint&&this._initialCurrentCoveragePolygon&&(this._cancelCurrentCoverageUpdate(),this.updateCoverage())})),g((()=>this.selectedFeatureAngle),((e,t)=>{this.previousFeatureAngle=t??0}),u),g((()=>this.selectedFeature),(async()=>{const{selectedFeature:e,selectedPoint:t}=this;if(!e&&this._currentImage&&(this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage=l(this._currentImage)),e&&t){this._initialCurrentCoverageUpdate=!0,this._updatePointsAndPolygons(),this._fetchFeaturesController??=new AbortController;const{signal:t}=this._fetchFeaturesController;await this.loadImage(e,{signal:t}).finally((()=>{this._fetchFeaturesController=null}))}}))])}resetImage(){this._currentImage=l(this._currentImage),this.setMessage("onLoadMessage","info"),this._cancelCurrentCoverageUpdate(),this._cancelFetchingFeatures()}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 E)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*U[2];n<=U[0]?a="NEAR":n<=U[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 h=U[3]+n*Math.sin(i*Math.PI/180),c=U[3]+n*Math.cos(i*Math.PI/180);let g;const u=t.at(s),m=u===this.selectedFeature,d=this.selectedFeature?.attributes.cameraPitch&&this.selectedFeature?.attributes.cameraPitch<5;if(m&&d)g=-90;else{const e=h-U[3],t=c-U[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),g=i}const p=""===a?l:`${a}_${l}`;m&&(g===this.selectedFeatureAngle?this.previousFeatureAngle=g:this.selectedFeatureAngle=g,this.navigatorSelectedFeature=d?null:{x:h,y:c,direction:l});const y=this._sectorData[p];y.add({angle:i,featureIndex:s,x:h,y:c,objectID:u.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)),M(t,r)){a.push(e);const r=t.toJSON(),i=s?.toJSON(),{attributes:n}=e,{cameraHeight:l,cameraHeading:h,location:c,objectId:g}=n,u=o(c)?c.toJSON():c;r.imageID=u.imageID=g,i&&(i.imageID=g),u.z=l,this.pointSources?.push(u),this.coveragePolygons?.push(h>0?r:void 0),this.coverageFrustums?.push(h>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 S([r],{feature:a[0],currentCoveragePolygon:new W(n),options:t});if(e[0]){const t=e[0];r.elevation=t.z}}this._suitabilities=I({features:a,selectedPoint:r,camera:q(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)),h=l[0];this._updateFeatures(l),this.selectedFeature=h,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,currentCoverageVisible: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:T,visible:!1}):this._additionalCoveragePolygons.push(new t({attributes:{imageID:r?.imageID},geometry:{type:"polygon",...r},symbol:N,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:k,visible:s}):this._additionalFeatureGraphics?.push(new t({attributes:{imageID:e.imageID},geometry:{type:"point",...e},symbol:H,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-U[3],i=e.y-U[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.currentCoverageVisible,this._currentCoveragePolygon=e),this.view){const e=this.selectedPoint?new t({geometry:this.selectedPoint.clone(),symbol:J,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.currentCoverageVisible,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");let r,i,s=e.attributes.image;if(!X(s)&&!Y(s)){if(!this.localPort)return this.setMessage("noLocalPort","error"),void a.getLogger(this).error("oriented-imagery-viewer:missing-local-port","A value for local port is not set. Local port is needed to load local images.");s=`http://127.0.0.1:${this.localPort}/${s}`}this._referencePointOnGround&&(this._imageViewer?.graphics.remove(this._referencePointOnGround),this._referencePointOnGround.destroy());const o={skipExtensions:["aux.xml","jgw"]};if(Y(s)){const a=new G({objectIds:[e.attributes.objectId]}),n=(await e.layer.queryAttachments(a,t))[`${e.attributes.objectId}`];if(!n[0]?.url)return void this.setMessage("noAttachment","error");if(r=n[0].contentType.split("/")[1]?.toUpperCase(),s=n[0]?.url,i=await O.open({ioConfig:o,url:s,datasetFormat:r,...t}).catch((e=>(this.setMessage("imageLoadError","error",e.message),null))),!i)return}this._currentImage=new P({ioConfig:o,url:s,raster:i,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.rotation=(e.attributes.cameraRoll??0)+(e.attributes.imageRotation??0)),this._panConstraint&&this._imageViewer.constraints.customConstraints.remove(this._panConstraint),this._scaleConstraint&&this._imageViewer.constraints.customConstraints.remove(this._scaleConstraint),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,{extent:a,rotation:n}=this._imageViewer,l=n*Math.PI/180,h=Math.abs(Math.cos(l)*a.width+Math.sin(l)*a.height),c=Math.abs(Math.cos(l)*a.height+Math.sin(l)*a.width),{rasterInfo:g}=this._currentImage;return e.targetGeometry.x=Math.min(Math.max(r+Math.min(g.width,h)/2,e.targetGeometry.x),i-Math.min(g.width,h)/2),e.targetGeometry.y=Math.min(Math.max(s+Math.min(g.height,c)/2,e.targetGeometry.y),o-Math.min(g.height,c)/2),e},applyPanConstraint:e=>{if(!this._currentImage||!this._imageViewer||!e.targetGeometry)return e;const{xmin:t,xmax:r,ymin:i,ymax:s}=this._currentImage.fullExtent,{extent:o,rotation:a}=this._imageViewer,n=a*Math.PI/180,l=Math.abs(Math.cos(n)*o.width+Math.sin(n)*o.height),h=Math.abs(Math.cos(n)*o.height+Math.sin(n)*o.width),{rasterInfo:c}=this._currentImage;return e.targetGeometry.x=Math.min(Math.max(t+Math.min(c.width,l)/2,e.targetGeometry.x),r-Math.min(c.width,l)/2),e.targetGeometry.y=Math.min(Math.max(i+Math.min(c.height,h)/2,e.targetGeometry.y),s-Math.min(c.height,h)/2),e}},this._scaleConstraint={constrain:(e,t)=>{if(this._imageViewer&&this._currentImage){const{width:t,height:r}=this._currentImage.rasterInfo,{width:i,height:s,rotation:o,zoom:a}=this._imageViewer,n=o*Math.PI/180,l=Math.abs(Math.cos(n)*t+Math.sin(n)*r),h=Math.abs(Math.cos(n)*r+Math.sin(n)*t);a<1&&(e.scale=Math.max(e.scale,R(this._imageViewer.spatialReference)*Math.max(l/i,h/s)/2**a))}return e}},this._imageViewer.constraints.customConstraints.addMany([this._panConstraint,this._scaleConstraint]),r.addHandles(g((()=>[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))}),u)),await this.transformAndPlotSelectedLocation(t)}catch(n){a.getLogger(this).error("oriented-imagery-viewer:load-image",n),this.setMessage("imageLoadError","error",n.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:A.userDefined,cols:3,rows:3,kernel:r,convolutionType:A.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 x([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 L(r.fullExtent,p(Z,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:Q.fromJSON(n),symbol:J}),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 x([i],{feature:r,imageProperties:t.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:s});if(!l.length)return;let h=l[0];const c=await L(t.fullExtent,this._imageViewer.spatialReference,null,s?.signal);a?(h.x=h.x*o.x+c.xmin,h.y=c.ymax-h.y*o.y,h.spatialReference=c.spatialReference):h=n.forwardTransform(new Q(h)),this.plotReferencePointOnImage(h)}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),this._referencePointOnGround=new t({geometry:{type:"point",...e.toJSON()},symbol:z}),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:z}),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,h=[[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]))));h.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 c=await V(h,{feature:this.getSelectedFeature(),currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:r}});if(c&&!r.aborted){const e=[c.map((e=>[e.x,e.y,1]))];e[0].push(e[0][0]);const r=new W({hasZ:!0,rings:e,spatialReference:c[0].spatialReference});this.updateCurrentCoveragePolygon(new t({attributes:{imageID:this.selectedFeature?.attributes.objectId},geometry:r,symbol:T,visible:this.currentCoverageVisible}))}}}};e([d()],ee.prototype,"active",null),e([d()],ee.prototype,"activeLayer",void 0),e([d()],ee.prototype,"shouldShowSelectedImage",void 0),e([d({type:Number})],ee.prototype,"brightness",null),e([d({type:Number})],ee.prototype,"contrast",null),e([d()],ee.prototype,"coverageFrustums",void 0),e([d()],ee.prototype,"coveragePolygons",void 0),e([d()],ee.prototype,"currentCoverageVisible",void 0),e([d()],ee.prototype,"currentImageView",null),e([d()],ee.prototype,"disabled",void 0),e([d()],ee.prototype,"displayMessage",void 0),e([d()],ee.prototype,"pointSources",void 0),e([d()],ee.prototype,"previousFeatureAngle",void 0),e([d()],ee.prototype,"selectedFeature",void 0),e([d()],ee.prototype,"selectedFeatureAngle",void 0),e([d()],ee.prototype,"selectedPoint",void 0),e([d({readOnly:!0})],ee.prototype,"featureCount",null),e([d()],ee.prototype,"features",void 0),e([d()],ee.prototype,"imageGalleryEnabled",null),e([d()],ee.prototype,"imageLoaded",null),e([d()],ee.prototype,"isAdditionalCoverageVisible",void 0),e([d()],ee.prototype,"isAdditionalPointSourcesVisible",void 0),e([d({type:Number})],ee.prototype,"localPort",void 0),e([d()],ee.prototype,"mapImageConversionToolState",void 0),e([d()],ee.prototype,"navigatorSelectedFeature",void 0),e([d()],ee.prototype,"updating",null),e([d({type:Number})],ee.prototype,"sharpness",null),e([d()],ee.prototype,"sectorData",null),e([d()],ee.prototype,"state",null),e([d()],ee.prototype,"thumbnails",null),e([d()],ee.prototype,"view",null),e([d()],ee.prototype,"_additionalCoveragePolygons",void 0),e([d()],ee.prototype,"_additionalFeatureGraphics",void 0),e([d()],ee.prototype,"_currentCoveragePolygon",void 0),e([d()],ee.prototype,"_currentImage",void 0),e([d()],ee.prototype,"_fetchFeaturesController",void 0),e([d()],ee.prototype,"_imageViewer",void 0),e([d()],ee.prototype,"_initialCurrentCoveragePolygon",void 0),e([d()],ee.prototype,"_initialCurrentCoverageUpdate",void 0),e([d()],ee.prototype,"_overlays",void 0),e([d()],ee.prototype,"_plotPolygons",void 0),e([d()],ee.prototype,"_initialPreviousCoveragePolygon",void 0),e([d()],ee.prototype,"_referencePointOnGround",void 0),e([d()],ee.prototype,"_referencePointOnImage",void 0),e([d()],ee.prototype,"_selectedFeatureGraphic",void 0),e([d()],ee.prototype,"_sectorData",void 0),ee=e([y("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],ee);const te=ee;export{te 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 h,on as c,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 M}from"../../layers/orientedImagery/core/coverageUtils.js";import{updateElevation as S,transformPoints as x}from"../../layers/orientedImagery/transformations/groundToImageUtils.js";import{transformPoints as V}from"../../layers/orientedImagery/transformations/imageToGroundUtils.js";import j from"../../layers/support/RasterFunction.js";import{convolutionKernel as A}from"../../layers/support/rasterFunctionConstants.js";import O from"../../layers/support/rasterDatasets/RasterFactory.js";import G from"../../rest/support/AttachmentQuery.js";import D from"../../views/MapView.js";import{getResolutionToScaleFactor as R}from"../../views/2d/viewpointUtils.js";import{projectWithEngineOrService as L}from"../../views/support/projectionUtils.js";import{sectorsInOrder as E,sectorsRadii as U}from"./constants.js";import{activePolygonSymbol as T,polygonSymbol as N,activeSourcePointSymbol as k,sourcePointSymbol as H,crossSymbol as J,diamondSymbol as z}from"./symbols.js";import{isTifOrMrf as $,isSceneView as q,isGraphic as B}from"./utils.js";import W from"../../geometry/Polygon.js";import Z from"../../geometry/SpatialReference.js";import Q from"../../geometry/Point.js";const K={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"},X=e=>/^https?:/i.test(e),Y=e=>"FA"===e;let ee=class extends s.EventedAccessor{constructor(e){super(e),this.activeLayer=null,this.shouldShowSelectedImage=!1,this.coverageFrustums=new i,this.coveragePolygons=new i,this.currentCoverageVisible=!0,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.localPort=null,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(){h((()=>this.view?.ready)).then((()=>{this._overlays=new f({listMode:"hide"}),this.view.map.layers.add(this._overlays)})),this.addHandles([c((()=>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})],K.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 imageGalleryEnabled(){return $(this.selectedFeature?.attributes.imagePath.trim())}get imageLoaded(){return this._currentImage?.loaded??!1}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 E.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:{imagePath: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}handleSectorClick(e){if(isNaN(e))return;const t=this._sectorData?.[E[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 D({container:e,map:t,spatialReferance:r,constraints:{snapToZoom:!1,rotationEnabled:!1},ui:{components:["zoom"]}}),h((()=>!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 V([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;if(!e&&this._currentImage&&(this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage=l(this._currentImage)),e&&t){this._initialCurrentCoverageUpdate=!0,this._updatePointsAndPolygons(),this._fetchFeaturesController??=new AbortController;const{signal:t}=this._fetchFeaturesController;await this.loadImage(e,{signal:t}).finally((()=>{this._fetchFeaturesController=null}))}}))])}resetImage(){this._currentImage=l(this._currentImage),this.setMessage("onLoadMessage","info"),this._cancelCurrentCoverageUpdate(),this._cancelFetchingFeatures()}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 E)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*U[2];n<=U[0]?a="NEAR":n<=U[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 h=U[3]+n*Math.sin(i*Math.PI/180),c=U[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=h-U[3],t=c-U[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:h,y:c,direction:l});const y=this._sectorData[p];y.add({angle:i,featureIndex:s,x:h,y:c,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)),M(t,r)){a.push(e);const r=t.toJSON(),i=s?.toJSON(),{attributes:n}=e,{cameraHeight:l,cameraHeading:h,location:c,objectId:u}=n,g=o(c)?c.toJSON():c;r.imageID=g.imageID=u,i&&(i.imageID=u),g.z=l,this.pointSources?.push(g),this.coveragePolygons?.push(h>0?r:void 0),this.coverageFrustums?.push(h>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 S([r],{feature:a[0],currentCoveragePolygon:new W(n),options:t});if(e[0]){const t=e[0];r.elevation=t.z}}this._suitabilities=I({features:a,selectedPoint:r,camera:q(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)),h=l[0];this._updateFeatures(l),this.selectedFeature=h,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,currentCoverageVisible: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:T,visible:!1}):this._additionalCoveragePolygons.push(new t({attributes:{imageID:r?.imageID},geometry:{type:"polygon",...r},symbol:N,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:k,visible:s}):this._additionalFeatureGraphics?.push(new t({attributes:{imageID:e.imageID},geometry:{type:"point",...e},symbol:H,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-U[3],i=e.y-U[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.currentCoverageVisible,this._currentCoveragePolygon=e),this.view){const e=this.selectedPoint?new t({geometry:this.selectedPoint.clone(),symbol:J,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.currentCoverageVisible,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{horizontalFieldOfView:r,isSpherical:i}=e.attributes;if(360===r||i)return void this.setMessage("unsupportedPanaromicImageryError","error");let s,o,n=e.attributes.imagePath;if(!X(n)&&!Y(n)){if(!this.localPort)return this.setMessage("noLocalPort","error"),void a.getLogger(this).error("oriented-imagery-viewer:missing-local-port","A value for local port is not set. Local port is needed to load local images.");n=`http://127.0.0.1:${this.localPort}/${n}`}this._referencePointOnGround&&(this._imageViewer?.graphics.remove(this._referencePointOnGround),this._referencePointOnGround.destroy());const l={skipExtensions:["aux.xml","jgw"]};if(Y(n)){const r=new G({objectIds:[e.attributes.objectId]}),i=(await e.layer.queryAttachments(r,t))[`${e.attributes.objectId}`];if(!i[0]?.url)return void this.setMessage("noAttachment","error");if(s=i[0].contentType.split("/")[1]?.toUpperCase(),n=i[0]?.url,o=await O.open({ioConfig:l,url:n,datasetFormat:s,...t}).catch((e=>(this.setMessage("imageLoadError","error",e.message),null))),!o)return}this._currentImage=new P({ioConfig:l,url:n,raster:o,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.rotation=(e.attributes.cameraRoll??0)+(e.attributes.imageRotation??0)),this._panConstraint&&this._imageViewer.constraints.customConstraints.remove(this._panConstraint),this._scaleConstraint&&this._imageViewer.constraints.customConstraints.remove(this._scaleConstraint),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,{extent:a,rotation:n}=this._imageViewer,l=n*Math.PI/180,h=Math.abs(Math.cos(l)*a.width+Math.sin(l)*a.height),c=Math.abs(Math.cos(l)*a.height+Math.sin(l)*a.width),{rasterInfo:u}=this._currentImage;return e.targetGeometry.x=Math.min(Math.max(r+Math.min(u.width,h)/2,e.targetGeometry.x),i-Math.min(u.width,h)/2),e.targetGeometry.y=Math.min(Math.max(s+Math.min(u.height,c)/2,e.targetGeometry.y),o-Math.min(u.height,c)/2),e},applyPanConstraint:e=>{if(!this._currentImage||!this._imageViewer||!e.targetGeometry)return e;const{xmin:t,xmax:r,ymin:i,ymax:s}=this._currentImage.fullExtent,{extent:o,rotation:a}=this._imageViewer,n=a*Math.PI/180,l=Math.abs(Math.cos(n)*o.width+Math.sin(n)*o.height),h=Math.abs(Math.cos(n)*o.height+Math.sin(n)*o.width),{rasterInfo:c}=this._currentImage;return e.targetGeometry.x=Math.min(Math.max(t+Math.min(c.width,l)/2,e.targetGeometry.x),r-Math.min(c.width,l)/2),e.targetGeometry.y=Math.min(Math.max(i+Math.min(c.height,h)/2,e.targetGeometry.y),s-Math.min(c.height,h)/2),e}},this._scaleConstraint={constrain:(e,t)=>{if(this._imageViewer&&this._currentImage){const{width:t,height:r}=this._currentImage.rasterInfo,{width:i,height:s,rotation:o,zoom:a}=this._imageViewer,n=o*Math.PI/180,l=Math.abs(Math.cos(n)*t+Math.sin(n)*r),h=Math.abs(Math.cos(n)*r+Math.sin(n)*t);a<1&&(e.scale=Math.max(e.scale,R(this._imageViewer.spatialReference)*Math.max(l/i,h/s)/2**a))}return e}},this._imageViewer.constraints.customConstraints.addMany([this._panConstraint,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(h){a.getLogger(this).error("oriented-imagery-viewer:load-image",h),this.setMessage("imageLoadError","error",h.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:A.userDefined,cols:3,rows:3,kernel:r,convolutionType:A.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 x([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 L(r.fullExtent,p(Z,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:Q.fromJSON(n),symbol:J}),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 x([i],{feature:r,imageProperties:t.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:s});if(!l.length)return;let h=l[0];const c=await L(t.fullExtent,this._imageViewer.spatialReference,null,s?.signal);a?(h.x=h.x*o.x+c.xmin,h.y=c.ymax-h.y*o.y,h.spatialReference=c.spatialReference):h=n.forwardTransform(new Q(h)),this.plotReferencePointOnImage(h)}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),this._referencePointOnGround=new t({geometry:{type:"point",...e.toJSON()},symbol:z}),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:z}),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,h=[[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]))));h.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 c=await V(h,{feature:this.getSelectedFeature(),currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:r}});if(c&&!r.aborted){const e=[c.map((e=>[e.x,e.y,1]))];e[0].push(e[0][0]);const r=new W({hasZ:!0,rings:e,spatialReference:c[0].spatialReference});this.updateCurrentCoveragePolygon(new t({attributes:{imageID:this.selectedFeature?.attributes.objectId},geometry:r,symbol:T,visible:this.currentCoverageVisible}))}}}};e([d()],ee.prototype,"active",null),e([d()],ee.prototype,"activeLayer",void 0),e([d()],ee.prototype,"shouldShowSelectedImage",void 0),e([d({type:Number})],ee.prototype,"brightness",null),e([d({type:Number})],ee.prototype,"contrast",null),e([d()],ee.prototype,"coverageFrustums",void 0),e([d()],ee.prototype,"coveragePolygons",void 0),e([d()],ee.prototype,"currentCoverageVisible",void 0),e([d()],ee.prototype,"currentImageView",null),e([d()],ee.prototype,"disabled",void 0),e([d()],ee.prototype,"displayMessage",void 0),e([d()],ee.prototype,"pointSources",void 0),e([d()],ee.prototype,"previousFeatureAngle",void 0),e([d()],ee.prototype,"selectedFeature",void 0),e([d()],ee.prototype,"selectedFeatureAngle",void 0),e([d()],ee.prototype,"selectedPoint",void 0),e([d({readOnly:!0})],ee.prototype,"featureCount",null),e([d()],ee.prototype,"features",void 0),e([d()],ee.prototype,"imageGalleryEnabled",null),e([d()],ee.prototype,"imageLoaded",null),e([d()],ee.prototype,"isAdditionalCoverageVisible",void 0),e([d()],ee.prototype,"isAdditionalPointSourcesVisible",void 0),e([d({type:Number})],ee.prototype,"localPort",void 0),e([d()],ee.prototype,"mapImageConversionToolState",void 0),e([d()],ee.prototype,"navigatorSelectedFeature",void 0),e([d()],ee.prototype,"updating",null),e([d({type:Number})],ee.prototype,"sharpness",null),e([d()],ee.prototype,"sectorData",null),e([d()],ee.prototype,"state",null),e([d()],ee.prototype,"thumbnails",null),e([d()],ee.prototype,"view",null),e([d()],ee.prototype,"_additionalCoveragePolygons",void 0),e([d()],ee.prototype,"_additionalFeatureGraphics",void 0),e([d()],ee.prototype,"_currentCoveragePolygon",void 0),e([d()],ee.prototype,"_currentImage",void 0),e([d()],ee.prototype,"_fetchFeaturesController",void 0),e([d()],ee.prototype,"_imageViewer",void 0),e([d()],ee.prototype,"_initialCurrentCoveragePolygon",void 0),e([d()],ee.prototype,"_initialCurrentCoverageUpdate",void 0),e([d()],ee.prototype,"_overlays",void 0),e([d()],ee.prototype,"_plotPolygons",void 0),e([d()],ee.prototype,"_initialPreviousCoveragePolygon",void 0),e([d()],ee.prototype,"_referencePointOnGround",void 0),e([d()],ee.prototype,"_referencePointOnImage",void 0),e([d()],ee.prototype,"_selectedFeatureGraphic",void 0),e([d()],ee.prototype,"_sectorData",void 0),ee=e([y("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],ee);const te=ee;export{te 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{_ 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{defaultVisibleElements as h,css as g,navigationToolRotationFrom as m,navigationToolRotationTo as v,base as p,root as u,segmentArcs as b,sectorsRadii as y,featureCircleRadius as _,navigation as C,navigationToolDimensionLength as w}from"./OrientedImageryViewer/constants.js";import I 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.galleryOpened=!1,this.imageEnhancementToolActive=!1,this.navigationToolActive=!1,this.viewModel=new I,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.currentCoverageVisible),(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 currentCoverageVisible(){return this.viewModel.currentCoverageVisible}set currentCoverageVisible(e){this.viewModel.currentCoverageVisible=e}get disabled(){return this.viewModel.disabled}set disabled(e){this.viewModel.disabled=e}get imageGalleryEnabled(){return this.viewModel.imageGalleryEnabled}get isAdditionalCoverageVisible(){return this.viewModel.isAdditionalCoverageVisible}set isAdditionalCoverageVisible(e){this.viewModel.isAdditionalCoverageVisible=e}get isAdditionalPointSourcesVisible(){return this.viewModel.isAdditionalPointSourcesVisible}set isAdditionalPointSourcesVisible(e){this.viewModel.isAdditionalPointSourcesVisible=e}get mapImageConversionToolState(){return this.viewModel.mapImageConversionToolState}set mapImageConversionToolState(e){this.viewModel.mapImageConversionToolState=e}get 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.currentCoverageVisible=!this.currentCoverageVisible}_toggleImageEnhancementToolState(){this.imageEnhancementToolActive=!this.imageEnhancementToolActive,this.imageEnhancementToolActive&&(this.galleryOpened&&(this.galleryOpened=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleImageGallery(){this.galleryOpened=!!this.imageGalleryEnabled&&!this.galleryOpened,this.galleryOpened&&(this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleNavigationTool(){this.navigationToolActive=!this.navigationToolActive,this.navigationToolActive&&(this.galleryOpened&&(this.galleryOpened=!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`)}resetImage(){this.viewModel.resetImage()}render(){const{isDocked:e,viewModel:{updating:t}}=this;return M("div",{class:this.classes(p,u)},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()))}_renderActionTooltips(){return[...this._actionItems].map((([e,t])=>M("calcite-tooltip",{key: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,galleryOpened:t,imageGalleryEnabled:i,viewModel:{thumbnails:s}}=this;return i&&t&&(e&&s)?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(s))):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]=b[i];r=`M ${e} ${t} L ${s} ${a} A ${y[2]} ${y[2]} 0 0 1 ${d} ${g} Z`,n=e,c=t,l=b[i][4],h=b[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})},p=e=>{e.removeEventListener("click",v)},u=e?.map((e=>e?.items)).filter(Boolean).flatMap((e=>e?.map((({x:e,y:t,objectID:i,featureIndexInSector:a,sector:o})=>M("circle",{afterRemoved:p,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:_}))))),I=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()?C:g.rotateWithAnimation,xmlns:"http://www.w3.org/2000/svg",width:w,height:w,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:y[3],cy:y[3],r:y[3]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[2]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[1]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[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([y[2],y[1],y[0]],y[3],y[3]).map(((t,i)=>M("path",{afterRemoved:I,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}),u,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:"sliders-horizontal",onclick:this._toggleImageEnhancementToolState,text:this.messages.imageEnhancement})}_renderMenuBarContainer(){const{currentCoverageVisible:e,isAdditionalCoverageVisible:t,isAdditionalPointSourcesVisible:i,imageGalleryEnabled: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()),M("calcite-action-group",null,M("calcite-action",{active:this.galleryOpened,afterCreate:this._storeActionElement,bind:this,disabled:!s,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},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":""}`})}};e([o()],A.prototype,"activeLayer",null),e([o()],A.prototype,"currentCoverageVisible",null),e([o()],A.prototype,"disabled",null),e([o()],A.prototype,"isDocked",void 0),e([o()],A.prototype,"galleryOpened",void 0),e([o()],A.prototype,"imageEnhancementToolActive",void 0),e([o()],A.prototype,"imageGalleryEnabled",null),e([o()],A.prototype,"isAdditionalCoverageVisible",null),e([o()],A.prototype,"isAdditionalPointSourcesVisible",null),e([o()],A.prototype,"mapImageConversionToolState",null),e([o()],A.prototype,"navigationToolActive",void 0),e([o({type:I})],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};
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{defaultVisibleElements as h,css as g,navigationToolRotationFrom as m,navigationToolRotationTo as v,base as p,root as u,segmentArcs as b,sectorsRadii as y,featureCircleRadius as _,navigation as C,navigationToolDimensionLength as w}from"./OrientedImageryViewer/constants.js";import I 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.galleryOpened=!1,this.imageEnhancementToolActive=!1,this.navigationToolActive=!1,this.viewModel=new I,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.currentCoverageVisible),(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 currentCoverageVisible(){return this.viewModel.currentCoverageVisible}set currentCoverageVisible(e){this.viewModel.currentCoverageVisible=e}get disabled(){return this.viewModel.disabled}set disabled(e){this.viewModel.disabled=e}get imageGalleryEnabled(){return this.viewModel.imageGalleryEnabled}get isAdditionalCoverageVisible(){return this.viewModel.isAdditionalCoverageVisible}set isAdditionalCoverageVisible(e){this.viewModel.isAdditionalCoverageVisible=e}get isAdditionalPointSourcesVisible(){return this.viewModel.isAdditionalPointSourcesVisible}set isAdditionalPointSourcesVisible(e){this.viewModel.isAdditionalPointSourcesVisible=e}get mapImageConversionToolState(){return this.viewModel.mapImageConversionToolState}set mapImageConversionToolState(e){this.viewModel.mapImageConversionToolState=e}get 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.currentCoverageVisible=!this.currentCoverageVisible}_toggleImageEnhancementToolState(e){e.stopPropagation(),this.imageEnhancementToolActive=!this.imageEnhancementToolActive,this.imageEnhancementToolActive&&(this.galleryOpened&&(this.galleryOpened=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleImageGallery(e){e.stopPropagation(),this.galleryOpened=!!this.imageGalleryEnabled&&!this.galleryOpened,this.galleryOpened&&(this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleNavigationTool(){this.navigationToolActive=!this.navigationToolActive,this.navigationToolActive&&(this.galleryOpened&&(this.galleryOpened=!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`)}resetImage(){this.viewModel.resetImage()}render(){const{isDocked:e,viewModel:{updating:t}}=this;return M("div",{class:this.classes(p,u)},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():null,this._renderBody()))}_renderActionTooltips(){return[...this._actionItems].map((([e,t])=>M("calcite-tooltip",{key: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,ticks:5,value:t,onCalciteSliderInput:this._handleBrightnessChange}))),M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.contrast,M("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,ticks:5,value:i,onCalciteSliderInput:this._handleContrastChange}))),M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.sharpness,M("calcite-slider",{bind:this,labelTicks:!0,max:1,min:0,step:.1,ticks:.5,value:s,onCalciteSliderInput:this._handleSharpnessChange})))),M("calcite-action",{bind:this,icon:"reset",onclick:this._resetImageTools,slot:"header-actions-end",text:this.messagesCommon.reset}))}_renderImageGallery(){const{container:e,galleryOpened:t,imageGalleryEnabled:i,viewModel:{thumbnails:s}}=this;return i&&t&&(e&&s)?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(s))):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]=b[i];r=`M ${e} ${t} L ${s} ${a} A ${y[2]} ${y[2]} 0 0 1 ${d} ${g} Z`,n=e,c=t,l=b[i][4],h=b[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})},p=e=>{e.removeEventListener("click",v)},u=e?.map((e=>e?.items)).filter(Boolean).flatMap((e=>e?.map((({x:e,y:t,objectID:i,featureIndexInSector:a,sector:o})=>M("circle",{afterRemoved:p,class:this.classes(g.feature,{selected:s.attributes.objectId===i}),cx:e,cy:t,"data-featureIndexInSector":a,"data-sector":o,key:`${g.feature}-${i}`,onclick:v,r:_}))))),I=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()?C:g.rotateWithAnimation,focusable:"false",height:w,role:"img",width:w,xmlns:"http://www.w3.org/2000/svg"},M("defs",null,M("linearGradient",{gradientUnits:"userSpaceOnUse",id:`${this.id}-coverage-fill`,x1:n,x2:l,y1:c,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),cx:y[3],cy:y[3],onclick:this._resizeNavigationTool.bind(this),r:y[3]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[2]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[1]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[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([y[2],y[1],y[0]],y[3],y[3]).map(((t,i)=>M("path",{afterRemoved:I,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}),u,s.attributes.cameraPitch>=5&&r?M("path",{class:g.selectedFeaturePath,d:r,fill:`url(#${this.id}-coverage-fill)`,key:g.selectedFeaturePath}):null))):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:"sliders-horizontal",onclick:this._toggleImageEnhancementToolState,text:this.messages.imageEnhancement})}_renderMenuBarContainer(){const{currentCoverageVisible:e,isAdditionalCoverageVisible:t,isAdditionalPointSourcesVisible:i,imageGalleryEnabled:s}=this;return M("calcite-action-bar",{expandDisabled:!0,layout:"horizontal",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():null,this.visibleElements.navigationTool?this._renderNavigationTool():null,this.visibleElements.imageEnhancement?this._renderImageEnhancementTool():null),M("calcite-action-group",null,M("calcite-action",{active:this.galleryOpened,afterCreate:this._storeActionElement,bind:this,disabled:!s,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},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":""}`})}};e([o()],A.prototype,"activeLayer",null),e([o()],A.prototype,"currentCoverageVisible",null),e([o()],A.prototype,"disabled",null),e([o()],A.prototype,"isDocked",void 0),e([o()],A.prototype,"galleryOpened",void 0),e([o()],A.prototype,"imageEnhancementToolActive",void 0),e([o()],A.prototype,"imageGalleryEnabled",null),e([o()],A.prototype,"isAdditionalCoverageVisible",null),e([o()],A.prototype,"isAdditionalPointSourcesVisible",null),e([o()],A.prototype,"mapImageConversionToolState",null),e([o()],A.prototype,"navigationToolActive",void 0),e([o({type:I})],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};