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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/Color.js +1 -1
  2. package/analysis/AreaMeasurementAnalysis.js +1 -1
  3. package/arcade/arcadeCompiler.js +1 -1
  4. package/arcade/featureSetUtils.js +1 -1
  5. package/arcade/featureset/actions/Top.js +1 -1
  6. package/arcade/featureset/sources/FeatureLayerDynamic.js +1 -1
  7. package/arcade/featureset/support/FeatureSet.js +1 -1
  8. package/arcade/featureset/support/FeatureSetIterator.js +1 -1
  9. package/arcade/functions/convertdirection.js +1 -1
  10. package/arcade/functions/featuresetbase.js +1 -1
  11. package/arcade/functions/geomasync.js +1 -1
  12. package/arcade/functions/geomsync.js +1 -1
  13. package/arcade/lib/comment-handler.js +1 -1
  14. package/arcade/lib/parser.js +1 -1
  15. package/arcade/lib/scanner.js +1 -1
  16. package/assets/esri/core/workers/RemoteClient.js +1 -1
  17. package/assets/esri/core/workers/chunks/{75c28da8d0b02d612d69.js → 040b3fc9c9c0736dd893.js} +1 -1
  18. package/assets/esri/core/workers/chunks/0652f6a8d5221e978033.js +1 -0
  19. package/assets/esri/core/workers/chunks/{e579ca7d4c1387e17305.js → 092fda62b6f62c2e4869.js} +2 -2
  20. package/assets/esri/core/workers/chunks/{57e0ad037188bd2997e7.js → 0af18a96cbd4e2d35436.js} +1 -1
  21. package/assets/esri/core/workers/chunks/0b5eeec0f66c87a46a0c.js +1 -0
  22. package/assets/esri/core/workers/chunks/{68e568b67b6fb34393db.js → 0cad2b991d0d0fd07846.js} +1 -1
  23. package/assets/esri/core/workers/chunks/0dccbc6c2559fdc0c2ad.js +1 -0
  24. package/assets/esri/core/workers/chunks/256a82f6f6e1405fbcc6.js +1 -0
  25. package/assets/esri/core/workers/chunks/{bb9213899049e1db90da.js → 2c57c9bd71637c5bed8a.js} +1 -1
  26. package/assets/esri/core/workers/chunks/2cdbabcbfe32286ec78d.js +1 -0
  27. package/assets/esri/core/workers/chunks/{2b1c83453a862e01954b.js → 2d9d80b2d0042a9c09fb.js} +1 -1
  28. package/assets/esri/core/workers/chunks/2f9aec2238ff6cb99e09.js +1 -0
  29. package/assets/esri/core/workers/chunks/{55705b1bbac91d7db0e7.js → 32d940b2c891bf6ff9a2.js} +1 -1
  30. package/assets/esri/core/workers/chunks/3a0349c79551a03c2d8e.js +1 -0
  31. package/assets/esri/core/workers/chunks/{7dbd3e6406fb3e3a1a8f.js → 3cf748c025f3936c1cb2.js} +1 -1
  32. package/assets/esri/core/workers/chunks/4481d1103363434f16da.js +1 -0
  33. package/assets/esri/core/workers/chunks/58e11ca7c6e27e0ece7e.js +1 -0
  34. package/assets/esri/core/workers/chunks/5ae325e6a795c72eac6c.js +1 -0
  35. package/assets/esri/core/workers/chunks/5e4dde2886a1027b4b96.js +1 -0
  36. package/assets/esri/core/workers/chunks/{357e0381b6d767585576.js → 675e16d99758e67e5f51.js} +1 -1
  37. package/assets/esri/core/workers/chunks/726bb661b9e6998572e7.js +1 -0
  38. package/assets/esri/core/workers/chunks/730eb7e5f617fdab4f10.js +1 -0
  39. package/assets/esri/core/workers/chunks/{5a2e6bed9431cf4f42b1.js → 740dc67038f554431f1b.js} +1 -1
  40. package/assets/esri/core/workers/chunks/7cab61c9e09580520990.js +1 -0
  41. package/assets/esri/core/workers/chunks/{09178454bda15bb7929a.js → 7fbdfd1527582c52f9b6.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{26546aa98a338051df66.js → 807742f38885fa90b4fe.js} +1 -1
  43. package/assets/esri/core/workers/chunks/82dfbc175b52c7a10475.js +1 -0
  44. package/assets/esri/core/workers/chunks/870a05451e074b58f19a.js +1 -0
  45. package/assets/esri/core/workers/chunks/88038ad401e5ec02f4d3.js +1 -0
  46. package/assets/esri/core/workers/chunks/88d63d1e56732d148f67.js +1 -0
  47. package/assets/esri/core/workers/chunks/8b72cd9340e8a44358ac.js +1 -0
  48. package/assets/esri/core/workers/chunks/8c5a8c1dfb086069bb06.js +1 -0
  49. package/assets/esri/core/workers/chunks/99a5a434e0bad48c7a5c.js +1 -0
  50. package/assets/esri/core/workers/chunks/9a5916c66dad91d01d5b.js +1 -0
  51. package/assets/esri/core/workers/chunks/9c133fd8c1fbd0295b86.js +1 -0
  52. package/assets/esri/core/workers/chunks/9cddb504079d396779ea.js +1 -0
  53. package/assets/esri/core/workers/chunks/a3a1d4f32e518e97d071.js +1 -0
  54. package/assets/esri/core/workers/chunks/{9548aa449fe3a300c015.js → a4fa40dc77e116c954ac.js} +1 -1
  55. package/assets/esri/core/workers/chunks/a54ec9929a7db879d5db.js +1 -0
  56. package/assets/esri/core/workers/chunks/afc5b84693757fda2bc8.js +1 -0
  57. package/assets/esri/core/workers/chunks/{591b5c277cfd3a4101a4.js → b08f2a4aa94087c6c367.js} +1 -1
  58. package/assets/esri/core/workers/chunks/c0e12f6a7bb2360e4c21.js +1 -0
  59. package/assets/esri/core/workers/chunks/c8e656cd470a17f538e9.js +1 -0
  60. package/assets/esri/core/workers/chunks/d0e203405f95e14b1399.js +1 -0
  61. package/assets/esri/core/workers/chunks/d61506497275bafba384.js +1 -0
  62. package/assets/esri/core/workers/chunks/{ec72f492f24e67e008ae.js → d8e58dc14d3495f0830c.js} +1 -1
  63. package/assets/esri/core/workers/chunks/db9a303ee0468d018def.js +1 -0
  64. package/assets/esri/core/workers/chunks/ddc393a012588f799f42.js +1 -0
  65. package/assets/esri/core/workers/chunks/de3baa85b1639c25458d.js +1 -0
  66. package/assets/esri/core/workers/chunks/e66cea26064ba8353af0.js +1 -0
  67. package/assets/esri/core/workers/chunks/ea478f2f4a19463e13fd.js +1 -0
  68. package/assets/esri/core/workers/chunks/eba197e45507f56f3ed0.js +1 -0
  69. package/assets/esri/core/workers/chunks/ebd006fcd568a7731115.js +1 -0
  70. package/assets/esri/core/workers/chunks/ef9a9a7d66d818720e20.js +1 -0
  71. package/assets/esri/core/workers/chunks/f3b458f55236566c940b.js +1 -0
  72. package/assets/esri/core/workers/chunks/fd0a91b9e0216cc269c3.js +1 -0
  73. package/assets/esri/core/workers/chunks/{a4fe220a912b1f428e49.js → fdd6403a8390d629392b.js} +1 -1
  74. package/assets/esri/themes/base/widgets/_Directions.scss +13 -7
  75. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +108 -4
  76. package/assets/esri/themes/dark/main.css +1 -1
  77. package/assets/esri/themes/light/main.css +1 -1
  78. package/assets/esri/themes/light/view.css +1 -1
  79. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer.json +1 -1
  80. package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_en.json +1 -1
  81. package/chunks/ComponentShader.glsl.js +1 -1
  82. package/chunks/LineSeries.js +1 -1
  83. package/chunks/Theme.js +1 -1
  84. package/chunks/array.js +1 -1
  85. package/chunks/chartUtilsAm5.js +1 -1
  86. package/core/Collection.js +1 -1
  87. package/core/accessorSupport/decorators/subclass.js +1 -1
  88. package/core/accessorSupport/ensureType.js +1 -1
  89. package/core/accessorSupport/get.js +1 -1
  90. package/core/accessorSupport/tracking.js +1 -1
  91. package/core/accessorSupport/utils.js +1 -1
  92. package/core/libs/rbush/PooledRBush.js +1 -1
  93. package/core/urlUtils.js +1 -1
  94. package/geometry/GeometryCursor.js +1 -1
  95. package/geometry/support/TileClipper.js +1 -1
  96. package/geometry/support/geodesicUtils.js +1 -1
  97. package/interfaces.d.ts +9 -3
  98. package/layers/BuildingSceneLayer.js +1 -1
  99. package/layers/IntegratedMeshLayer.js +1 -1
  100. package/layers/LinkChartLayer.js +1 -1
  101. package/layers/PointCloudLayer.js +1 -1
  102. package/layers/SceneLayer.js +1 -1
  103. package/layers/VectorTileLayer.js +1 -1
  104. package/layers/VoxelLayer.js +1 -1
  105. package/layers/VoxelWasmPerSceneView.js +1 -1
  106. package/layers/WCSLayer.js +1 -1
  107. package/layers/effects/EffectView.js +1 -1
  108. package/layers/graphics/sources/geojson/geojson.js +1 -1
  109. package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
  110. package/layers/mixins/ArcGISCachedService.js +1 -1
  111. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  112. package/layers/orientedImagery/core/bestImageUtils.js +1 -1
  113. package/layers/orientedImagery/queries.js +1 -1
  114. package/layers/save/featureLayerUtils.js +1 -1
  115. package/layers/support/ElevationQuery.js +1 -1
  116. package/layers/support/MultidimensionalSubset.js +1 -1
  117. package/layers/support/Sublayer.js +1 -1
  118. package/layers/support/TileInfo.js +1 -1
  119. package/layers/support/TileInfoTilemapCache.js +1 -1
  120. package/layers/support/TilemapCache.js +1 -1
  121. package/layers/support/rasterDatasets/multidimensionalUtils.js +1 -1
  122. package/layers/support/rasterDatasets/pamParser.js +1 -1
  123. package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
  124. package/layers/support/rasterFormats/Raw.js +1 -1
  125. package/layers/support/rasterFormats/TiffDecoder.js +1 -1
  126. package/layers/support/rasterFunctions/ExtractBandFunction.js +1 -1
  127. package/layers/support/rasterFunctions/colormaps.js +1 -1
  128. package/layers/support/rasterFunctions/pixelUtils.js +1 -1
  129. package/layers/support/rasterFunctions/rasterProjectionHelper.js +1 -1
  130. package/layers/video/VideoController.js +1 -1
  131. package/layers/voxel/VoxelDimension.js +1 -1
  132. package/layers/voxel/VoxelTransferFunctionStyle.js +1 -1
  133. package/layers/voxel/VoxelVolume.js +1 -1
  134. package/package.json +1 -1
  135. package/renderers/support/RasterSymbolizer.js +1 -1
  136. package/renderers/support/colorRampUtils.js +1 -1
  137. package/renderers/visualVariables/support/visualVariableUtils.js +1 -1
  138. package/rest/query/operations/pbfDehydratedFeatureSet.js +1 -1
  139. package/rest/query/operations/pbfJSONFeatureSet.js +1 -1
  140. package/rest/support/generateRendererUtils.js +1 -1
  141. package/smartMapping/raster/renderers/classBreaks.js +1 -1
  142. package/smartMapping/renderers/color.js +1 -1
  143. package/smartMapping/renderers/support/utils.js +1 -1
  144. package/smartMapping/renderers/type.js +1 -1
  145. package/smartMapping/renderers/univariateColorSize.js +1 -1
  146. package/smartMapping/support/adapters/support/utils.js +1 -1
  147. package/statistics/utils.js +1 -1
  148. package/support/elevationInfoUtils.js +1 -1
  149. package/support/revision.js +1 -1
  150. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  151. package/symbols/cim/GeometryWalker.js +1 -1
  152. package/symbols/cim/cimAnalyzer.js +1 -1
  153. package/symbols/cim/effects/EffectArrow.js +1 -1
  154. package/symbols/cim/effects/EffectControlMeasureLine.js +1 -1
  155. package/symbols/support/symbolUtils.js +1 -1
  156. package/views/2d/constraints/ZoomConstraint.js +1 -1
  157. package/views/2d/engine/flow/dataUtils.js +1 -1
  158. package/views/2d/engine/flow/utils.js +1 -1
  159. package/views/2d/engine/vectorTiles/VectorTile.js +1 -1
  160. package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
  161. package/views/2d/engine/vectorTiles/expression/expression.js +1 -1
  162. package/views/2d/engine/vectorTiles/style/VectorTileSource.js +1 -1
  163. package/views/2d/engine/vectorTiles/tileInfoUtils.js +1 -1
  164. package/views/2d/engine/webgl/TurboLine.js +1 -1
  165. package/views/2d/engine/webgl/mesh/MeshData.js +1 -1
  166. package/views/2d/engine/webgl/mesh/templates/shapingUtils.js +1 -1
  167. package/views/2d/interactive/editingTools/ControlPointsTransformTool.js +1 -1
  168. package/views/2d/interactive/editingTools/draw/DrawGraphicTool2D.js +1 -1
  169. package/views/2d/layers/BaseLayerView2D.js +1 -1
  170. package/views/2d/layers/BaseLayerViewGL2D.js +1 -1
  171. package/views/2d/layers/BitmapTileLayerView2D.js +1 -1
  172. package/views/2d/layers/MediaLayerView2D.js +1 -1
  173. package/views/2d/layers/TileLayerView2D.js +1 -1
  174. package/views/2d/layers/VectorTileLayerView2D.js +1 -1
  175. package/views/2d/layers/WMTSLayerView2D.js +1 -1
  176. package/views/2d/layers/features/support/rendererUtils.js +1 -1
  177. package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
  178. package/views/2d/layers/support/vectorTileDebugUtils.js +5 -0
  179. package/views/2d/tiling/TileInfoView.js +1 -1
  180. package/views/2d/tiling/TileInfoViewPOT.js +1 -1
  181. package/views/2d/tiling/TileQueue.js +1 -1
  182. package/views/2d/tiling.js +1 -1
  183. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  184. package/views/3d/environment/ChapmanAtmosphere.js +1 -1
  185. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  186. package/views/3d/externalRenderers/ExternalRendererStore.js +1 -1
  187. package/views/3d/interactive/editingTools/moveGraphic/GraphicMoveTool.js +1 -1
  188. package/views/3d/interactive/visualElements/LaserlineVisualElement.js +1 -1
  189. package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
  190. package/views/3d/layers/TiledLayerView3D.js +1 -1
  191. package/views/3d/layers/VectorTileLayerView3D.js +1 -1
  192. package/views/3d/layers/graphics/Deconflictor.js +1 -1
  193. package/views/3d/layers/graphics/Labeler.js +1 -1
  194. package/views/3d/layers/i3s/PointRenderer.js +1 -1
  195. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  196. package/views/3d/layers/support/featureReference.js +1 -1
  197. package/views/3d/support/LaserLineRenderer.js +1 -1
  198. package/views/3d/terrain/Overlay.js +1 -1
  199. package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
  200. package/views/3d/terrain/OverlayManager.js +1 -1
  201. package/views/3d/terrain/OverlayRenderTarget.js +1 -1
  202. package/views/3d/terrain/OverlayRenderer.js +1 -1
  203. package/views/3d/terrain/TerrainRenderer.js +1 -1
  204. package/views/3d/terrain/TerrainSurface.js +1 -1
  205. package/views/3d/terrain/TileCompositor.js +1 -1
  206. package/views/3d/terrain/TileRenderer.js +1 -1
  207. package/views/3d/terrain/TilingScheme.js +1 -1
  208. package/views/3d/webgl-engine/collections/Component/ComponentData.js +1 -1
  209. package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
  210. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js +1 -1
  211. package/views/3d/webgl-engine/core/shaderModules/interfaces.js +1 -1
  212. package/views/3d/webgl-engine/effects/RenderPlugin.js +5 -0
  213. package/views/3d/webgl-engine/effects/RenderPluginManager.js +5 -0
  214. package/views/3d/webgl-engine/effects/ScreenSpaceGeometry.js +5 -0
  215. package/views/3d/webgl-engine/effects/SmaaRenderPass.js +5 -0
  216. package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
  217. package/views/3d/webgl-engine/lib/GLMaterials.js +1 -1
  218. package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
  219. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  220. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  221. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  222. package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
  223. package/views/3d/webgl-engine/lib/SSAOHelper.js +1 -1
  224. package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
  225. package/views/3d/webgl-engine/lib/WebGLLayer.js +1 -1
  226. package/views/3d/webgl-engine/lib/lodRendering/LodComponentData.js +1 -1
  227. package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
  228. package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
  229. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  230. package/views/3d/webgl-engine/parts/requireUtils.js +1 -1
  231. package/views/3d/webgl-engine/statistics/RendererPerformanceInfo.js +1 -1
  232. package/views/LayerViewManager.js +1 -1
  233. package/views/MapView.js +1 -1
  234. package/views/SceneView.js +1 -1
  235. package/views/animation/pointToPoint/Path.js +1 -1
  236. package/views/draw/DrawOperation.js +1 -1
  237. package/views/draw/support/Reshape.js +1 -1
  238. package/views/draw/support/createUtils.js +1 -1
  239. package/views/interactive/SegmentLabels.js +1 -1
  240. package/views/interactive/editGeometry/EditGeometry.js +1 -1
  241. package/views/interactive/editGeometry/EditGeometryOperations.js +1 -1
  242. package/views/interactive/editGeometry/operations/UndoGroup.js +1 -1
  243. package/views/layers/GroupLayerView.js +1 -1
  244. package/views/layers/ImageryTileLayerView.js +1 -1
  245. package/views/webgl/ProgramCache.js +1 -1
  246. package/webscene/spec-certification/api.js +1 -1
  247. package/webscene/spec-certification/spec.js +1 -1
  248. package/webscene/spec-certification/utils.js +1 -1
  249. package/widgets/BuildingExplorer/BuildingNumericFilterViewModel.js +1 -1
  250. package/widgets/BuildingExplorer/BuildingPhase.js +1 -1
  251. package/widgets/BuildingExplorer/support/validation.js +1 -1
  252. package/widgets/Directions/support/resources.js +1 -1
  253. package/widgets/Directions.js +1 -1
  254. package/widgets/Editor/EditorViewModel.js +1 -1
  255. package/widgets/Editor/UpdateRecordWorkflow.js +1 -1
  256. package/widgets/Editor/Workflow.js +1 -1
  257. package/widgets/Editor.js +1 -1
  258. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  259. package/widgets/FeatureForm/FieldInput.js +1 -1
  260. package/widgets/FeatureForm/FormExpressionsManager.js +1 -1
  261. package/widgets/FeatureForm.js +1 -1
  262. package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
  263. package/widgets/FeatureTemplates.js +1 -1
  264. package/widgets/Features.js +1 -1
  265. package/widgets/Histogram/HistogramViewModel.js +1 -1
  266. package/widgets/HistogramRangeSlider/HistogramRangeSliderViewModel.js +1 -1
  267. package/widgets/Legend/styles/Card.js +1 -1
  268. package/widgets/Legend/styles/support/univariateUtils.js +1 -1
  269. package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
  270. package/widgets/Legend/support/colorRampUtils.js +1 -1
  271. package/widgets/Legend/support/sizeRampUtils.js +1 -1
  272. package/widgets/Legend/support/utils.js +1 -1
  273. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  274. package/widgets/OrientedImageryViewer/arcUtils.js +5 -0
  275. package/widgets/OrientedImageryViewer/constants.js +5 -0
  276. package/widgets/OrientedImageryViewer/utils.js +5 -0
  277. package/widgets/OrientedImageryViewer.js +1 -1
  278. package/widgets/Popup/PopupViewModel.js +1 -1
  279. package/widgets/Popup.js +1 -1
  280. package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.js +1 -1
  281. package/widgets/ScaleRangeSlider/ScaleRanges.js +1 -1
  282. package/widgets/ValuePicker/ValuePickerSlider.js +1 -1
  283. package/widgets/smartMapping/ClassedSizeSlider.js +1 -1
  284. package/widgets/smartMapping/ColorSizeSlider.js +1 -1
  285. package/widgets/smartMapping/HeatmapSlider/HeatmapSliderViewModel.js +1 -1
  286. package/widgets/smartMapping/SizeSlider.js +1 -1
  287. package/widgets/smartMapping/SmartMappingPrimaryHandleSliderViewModel.js +1 -1
  288. package/widgets/smartMapping/SmartMappingSliderViewModel.js +1 -1
  289. package/widgets/support/ColorPicker.js +1 -1
  290. package/assets/esri/core/workers/chunks/07bb40162d97d098bc19.js +0 -1
  291. package/assets/esri/core/workers/chunks/0a18317566c1fcb68422.js +0 -1
  292. package/assets/esri/core/workers/chunks/0de65e03db8c611af9fb.js +0 -1
  293. package/assets/esri/core/workers/chunks/1a60d23a92bcf91dbb22.js +0 -1
  294. package/assets/esri/core/workers/chunks/205a0b34b698d5329854.js +0 -1
  295. package/assets/esri/core/workers/chunks/2158a6ec165503ec4711.js +0 -1
  296. package/assets/esri/core/workers/chunks/25211d5904ee9d5f4a9d.js +0 -1
  297. package/assets/esri/core/workers/chunks/26b12d1ea713c1e07701.js +0 -1
  298. package/assets/esri/core/workers/chunks/2bfa7ee324c32a56b0d3.js +0 -1
  299. package/assets/esri/core/workers/chunks/370a992bd308bd806f48.js +0 -1
  300. package/assets/esri/core/workers/chunks/3892650ecc61322f6f7f.js +0 -1
  301. package/assets/esri/core/workers/chunks/38d168e9a29c40de179d.js +0 -1
  302. package/assets/esri/core/workers/chunks/4bf1c6c7e0a3051dc797.js +0 -1
  303. package/assets/esri/core/workers/chunks/524156c3f5383c2dd0e3.js +0 -1
  304. package/assets/esri/core/workers/chunks/59666ecb7c2c1f5a13b2.js +0 -1
  305. package/assets/esri/core/workers/chunks/5ae98195bdfd7dc0c44e.js +0 -1
  306. package/assets/esri/core/workers/chunks/5c005c9514354c77ec27.js +0 -1
  307. package/assets/esri/core/workers/chunks/5d46fd68878c973bcfab.js +0 -1
  308. package/assets/esri/core/workers/chunks/5dd23092c8a8a5ccd5d0.js +0 -1
  309. package/assets/esri/core/workers/chunks/620ec5c75561183d3d73.js +0 -1
  310. package/assets/esri/core/workers/chunks/68512670816f59c0e6a5.js +0 -1
  311. package/assets/esri/core/workers/chunks/6c7374ebc18b46b3480a.js +0 -1
  312. package/assets/esri/core/workers/chunks/75ba2af92da232067adb.js +0 -1
  313. package/assets/esri/core/workers/chunks/7c1f0598a016516dcec3.js +0 -1
  314. package/assets/esri/core/workers/chunks/8dcec8d1b670d2b7ea2b.js +0 -1
  315. package/assets/esri/core/workers/chunks/8e07dfb6fc2673b640cb.js +0 -1
  316. package/assets/esri/core/workers/chunks/9008dde941cb3973de20.js +0 -1
  317. package/assets/esri/core/workers/chunks/9050b167355588b7003d.js +0 -1
  318. package/assets/esri/core/workers/chunks/9230d68799f0b0b9ef36.js +0 -1
  319. package/assets/esri/core/workers/chunks/94d124453e90a5ab1706.js +0 -1
  320. package/assets/esri/core/workers/chunks/9ca312af9c056b1efe40.js +0 -1
  321. package/assets/esri/core/workers/chunks/b0a57718a0765d1c8df0.js +0 -1
  322. package/assets/esri/core/workers/chunks/b431b81a7bf45dd527da.js +0 -1
  323. package/assets/esri/core/workers/chunks/bda311ad48efdb265939.js +0 -1
  324. package/assets/esri/core/workers/chunks/da547c3cabe4a89c3ce6.js +0 -1
  325. package/assets/esri/core/workers/chunks/dd295fa57b45b7ec4ec5.js +0 -1
  326. package/assets/esri/core/workers/chunks/eb92aa372e706ce5a5eb.js +0 -1
  327. package/assets/esri/core/workers/chunks/f553b464e969d45bf451.js +0 -1
  328. package/assets/esri/core/workers/chunks/f5865294983eb160de8c.js +0 -1
  329. package/assets/esri/core/workers/chunks/fdb7b1fbdb6fe091ad83.js +0 -1
  330. package/assets/esri/core/workers/chunks/fe8544bf3bbbacd74b8b.js +0 -1
  331. package/views/2d/tiling/PagedTileQueue.js +0 -5
  332. package/views/3d/webgl-engine/lib/RenderPluginManager.js +0 -5
  333. package/views/3d/webgl-engine/lib/SmaaRenderPass.js +0 -5
  334. /package/views/3d/webgl-engine/{lib → effects}/SmaaRenderPassData.js +0 -0
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import{_ as r}from"../../chunks/tslib.es6.js";import{JSONSupport as e}from"../../core/JSONSupport.js";import{property as t}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 o from"./VoxelIrregularSpacing.js";import s from"./VoxelRegularSpacing.js";let p=class extends e{constructor(){super(...arguments),this.irregularSpacing=null,this.isPositiveUp=!0,this.isWrappedDateLine=!1,this.label=null,this.name=null,this.quantity=null,this.regularSpacing=null,this.size=0,this.unit=null}get isRegular(){return(null==this.irregularSpacing||void 0===this.irregularSpacing)&&null!==this.regularSpacing}getRange(){return this.isRegular?[this.regularSpacing.offset,this.regularSpacing.offset+this.regularSpacing.scale*(this.size-1)]:Array.isArray(this.irregularSpacing?.values)&&this.irregularSpacing.values.length>1?[this.irregularSpacing.values[0],this.irregularSpacing.values.at(-1)]:[0,0]}};r([t({type:o,json:{write:!0}})],p.prototype,"irregularSpacing",void 0),r([t({type:Boolean,json:{write:!0}})],p.prototype,"isPositiveUp",void 0),r([t({type:Boolean,json:{write:!0}})],p.prototype,"isWrappedDateLine",void 0),r([t({type:String,json:{write:!0}})],p.prototype,"label",void 0),r([t({type:String,json:{write:!0}})],p.prototype,"name",void 0),r([t({type:String,json:{write:!0}})],p.prototype,"quantity",void 0),r([t({type:s,json:{write:!0}})],p.prototype,"regularSpacing",void 0),r([t({type:Number,json:{write:!0}})],p.prototype,"size",void 0),r([t({type:String,json:{write:!0}})],p.prototype,"unit",void 0),r([t({type:Boolean,json:{read:!1}})],p.prototype,"isRegular",null),p=r([i("esri.layers.voxel.VoxelDimension")],p);const a=p;export{a as default};
5
+ import{_ as r}from"../../chunks/tslib.es6.js";import{JSONSupport as e}from"../../core/JSONSupport.js";import{property as t}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 o from"./VoxelIrregularSpacing.js";import s from"./VoxelRegularSpacing.js";let p=class extends e{constructor(){super(...arguments),this.irregularSpacing=null,this.isPositiveUp=!0,this.isWrappedDateLine=!1,this.label=null,this.name=null,this.quantity=null,this.regularSpacing=null,this.size=0,this.unit=null}get isRegular(){return(null==this.irregularSpacing||void 0===this.irregularSpacing)&&null!==this.regularSpacing}getRange(){return this.isRegular?[this.regularSpacing.offset,this.regularSpacing.offset+this.regularSpacing.scale*(this.size-1)]:Array.isArray(this.irregularSpacing?.values)&&this.irregularSpacing.values.length>1?[this.irregularSpacing.values[0],this.irregularSpacing.values[this.irregularSpacing.values.length-1]]:[0,0]}};r([t({type:o,json:{write:!0}})],p.prototype,"irregularSpacing",void 0),r([t({type:Boolean,json:{write:!0}})],p.prototype,"isPositiveUp",void 0),r([t({type:Boolean,json:{write:!0}})],p.prototype,"isWrappedDateLine",void 0),r([t({type:String,json:{write:!0}})],p.prototype,"label",void 0),r([t({type:String,json:{write:!0}})],p.prototype,"name",void 0),r([t({type:String,json:{write:!0}})],p.prototype,"quantity",void 0),r([t({type:s,json:{write:!0}})],p.prototype,"regularSpacing",void 0),r([t({type:Number,json:{write:!0}})],p.prototype,"size",void 0),r([t({type:String,json:{write:!0}})],p.prototype,"unit",void 0),r([t({type:Boolean,json:{read:!1}})],p.prototype,"isRegular",null),p=r([i("esri.layers.voxel.VoxelDimension")],p);const a=p;export{a 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 o}from"../../chunks/tslib.es6.js";import t from"../../Color.js";import{ClonableMixin as r}from"../../core/Clonable.js";import e from"../../core/Collection.js";import{referenceSetter as s}from"../../core/collectionUtils.js";import{JSONSupport as i}from"../../core/JSONSupport.js";import{clamp as p,lerp as n}from"../../core/mathUtils.js";import{property as l}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as c}from"../../core/accessorSupport/decorators/subclass.js";import a from"./VoxelColorStop.js";import h from"./VoxelOpacityStop.js";import f from"./VoxelRangeFilter.js";var u;!function(o){o[o.Color=1]="Color",o[o.Alpha=2]="Alpha",o[o.Both=3]="Both"}(u||(u={}));let y=class extends(r(i)){constructor(o){super(o),this.interpolation=null,this.stretchRange=null,this.rangeFilter=null,this._colorMapSize=256,this.colorStops=new(e.ofType(a)),this.opacityStops=new(e.ofType(h))}set colorStops(o){this._set("colorStops",s(o,this._get("colorStops"),e.ofType(a)))}set opacityStops(o){this._set("opacityStops",s(o,this._get("opacityStops"),e.ofType(h)))}getPreviousNext(o,t,r){let e=o;for(;--e>0&&t[e].type!==r&&t[e].type!==u.Both;);let s=o;const i=t.length;for(;++s<i&&t[s].type!==r&&t[s].type!==u.Both;);return[e,s]}get rasterizedTransferFunction(){const o=[];if(this.colorStops.length<2)return o;const r=[],e=[],s=1e-5;for(const t of this.colorStops){if(!t.color)return o;e.push({color:{r:t.color.r,g:t.color.g,b:t.color.b,a:Math.round(255*(1-t.color.a))},position:t.position,type:u.Color})}if(0===this.opacityStops.length)for(const t of e)r.push({color:t.color,position:t.position});else{for(const t of this.opacityStops){const o=p(t.position,0,1),r=Math.round(255*p(1-t.opacity,0,1));let i=!1;for(const t of e)if(t.type===u.Color&&Math.abs(t.position-o)<s){t.color.a=r,t.type=u.Both,i=!0;break}i||e.push({color:{r:0,g:0,b:0,a:r},position:t.position,type:u.Alpha})}e.sort(((o,t)=>o.position<t.position?-1:1));const o=e.length;for(let t=0;t<o;++t){const r=e[t];if(r.type!==u.Both)if(r.type===u.Color){const[s,i]=this.getPreviousNext(t,e,u.Alpha);if(-1!==s&&i!==o){const o=(r.position-e[s].position)/(e[i].position-e[s].position);r.color.a=Math.round(n(e[s].color.a,e[i].color.a,o))}else r.color.a=-1!==s?e[s].color.a:e[i].color.a}else{const[s,i]=this.getPreviousNext(t,e,u.Color);if(-1!==s&&i!==o){const o=(r.position-e[s].position)/(e[i].position-e[s].position),t=e[s].color,p=e[i].color;g.forEach((e=>{r.color[e]=Math.round(n(t[e],p[e],o))}))}else-1!==s?g.forEach((o=>{r.color[o]=e[s].color[o]})):g.forEach((o=>{r.color[o]=e[i].color[o]}))}}for(const t of e)r.push({color:t.color,position:t.position})}r[0].position=0,r.at(-1).position=1;let i=0,l=1;for(let c=0;c<this._colorMapSize;++c){const e=c/this._colorMapSize;for(;e>r[l].position;)i=l++;const s=(e-r[i].position)/(r[l].position-r[i].position),a=r[i].color,h=r[l].color,f=new t;g.forEach((o=>{f[o]=Math.round(n(a[o],h[o],s))})),f.a=p(1-n(a.a,h.a,s)/255,0,1),o.push(f)}return o}getColorForContinuousDataValue(o,t){const r=this.rasterizedTransferFunction;if(this.colorStops.length<2||!Array.isArray(this.stretchRange)||this.stretchRange.length<2||r.length<256)return null;let e=this.stretchRange[0],s=this.stretchRange[1];if(e>s){const o=e;e=s,s=o}o=p(o,e,s);const i=r[Math.round((o-e)/(s-e)*(this._colorMapSize-1))].clone();return t||(i.a=1),i}};o([l({type:["linear","nearest"],json:{write:!0}})],y.prototype,"interpolation",void 0),o([l({type:[Number],json:{write:{enabled:!0,isRequired:!0}}})],y.prototype,"stretchRange",void 0),o([l({type:e.ofType(a),json:{write:{enabled:!0,overridePolicy(){return{enabled:!!this.colorStops&&this.colorStops.length>0}}}}})],y.prototype,"colorStops",null),o([l({type:e.ofType(h),json:{read:{source:"alphaStops"},write:{enabled:!0,target:"alphaStops",overridePolicy(){return{enabled:!!this.opacityStops&&this.opacityStops.length>0}}}}})],y.prototype,"opacityStops",null),o([l({type:f,json:{write:!0}})],y.prototype,"rangeFilter",void 0),o([l({type:[t],clonable:!1,json:{read:!1}})],y.prototype,"rasterizedTransferFunction",null),y=o([c("esri.layers.voxel.VoxelTransferFunctionStyle")],y);const S=y,g=["r","g","b"];export{S as default};
5
+ import{_ as o}from"../../chunks/tslib.es6.js";import t from"../../Color.js";import{ClonableMixin as r}from"../../core/Clonable.js";import e from"../../core/Collection.js";import{referenceSetter as s}from"../../core/collectionUtils.js";import{JSONSupport as i}from"../../core/JSONSupport.js";import{clamp as p,lerp as n}from"../../core/mathUtils.js";import{property as l}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as c}from"../../core/accessorSupport/decorators/subclass.js";import a from"./VoxelColorStop.js";import h from"./VoxelOpacityStop.js";import f from"./VoxelRangeFilter.js";var u;!function(o){o[o.Color=1]="Color",o[o.Alpha=2]="Alpha",o[o.Both=3]="Both"}(u||(u={}));let y=class extends(r(i)){constructor(o){super(o),this.interpolation=null,this.stretchRange=null,this.rangeFilter=null,this._colorMapSize=256,this.colorStops=new(e.ofType(a)),this.opacityStops=new(e.ofType(h))}set colorStops(o){this._set("colorStops",s(o,this._get("colorStops"),e.ofType(a)))}set opacityStops(o){this._set("opacityStops",s(o,this._get("opacityStops"),e.ofType(h)))}getPreviousNext(o,t,r){let e=o;for(;--e>0&&t[e].type!==r&&t[e].type!==u.Both;);let s=o;const i=t.length;for(;++s<i&&t[s].type!==r&&t[s].type!==u.Both;);return[e,s]}get rasterizedTransferFunction(){const o=[];if(this.colorStops.length<2)return o;const r=[],e=[],s=1e-5;for(const t of this.colorStops){if(!t.color)return o;e.push({color:{r:t.color.r,g:t.color.g,b:t.color.b,a:Math.round(255*(1-t.color.a))},position:t.position,type:u.Color})}if(0===this.opacityStops.length)for(const t of e)r.push({color:t.color,position:t.position});else{for(const t of this.opacityStops){const o=p(t.position,0,1),r=Math.round(255*p(1-t.opacity,0,1));let i=!1;for(const t of e)if(t.type===u.Color&&Math.abs(t.position-o)<s){t.color.a=r,t.type=u.Both,i=!0;break}i||e.push({color:{r:0,g:0,b:0,a:r},position:t.position,type:u.Alpha})}e.sort(((o,t)=>o.position<t.position?-1:1));const o=e.length;for(let t=0;t<o;++t){const r=e[t];if(r.type!==u.Both)if(r.type===u.Color){const[s,i]=this.getPreviousNext(t,e,u.Alpha);if(-1!==s&&i!==o){const o=(r.position-e[s].position)/(e[i].position-e[s].position);r.color.a=Math.round(n(e[s].color.a,e[i].color.a,o))}else r.color.a=-1!==s?e[s].color.a:e[i].color.a}else{const[s,i]=this.getPreviousNext(t,e,u.Color);if(-1!==s&&i!==o){const o=(r.position-e[s].position)/(e[i].position-e[s].position),t=e[s].color,p=e[i].color;g.forEach((e=>{r.color[e]=Math.round(n(t[e],p[e],o))}))}else-1!==s?g.forEach((o=>{r.color[o]=e[s].color[o]})):g.forEach((o=>{r.color[o]=e[i].color[o]}))}}for(const t of e)r.push({color:t.color,position:t.position})}r[0].position=0,r[r.length-1].position=1;let i=0,l=1;for(let c=0;c<this._colorMapSize;++c){const e=c/this._colorMapSize;for(;e>r[l].position;)i=l++;const s=(e-r[i].position)/(r[l].position-r[i].position),a=r[i].color,h=r[l].color,f=new t;g.forEach((o=>{f[o]=Math.round(n(a[o],h[o],s))})),f.a=p(1-n(a.a,h.a,s)/255,0,1),o.push(f)}return o}getColorForContinuousDataValue(o,t){const r=this.rasterizedTransferFunction;if(this.colorStops.length<2||!Array.isArray(this.stretchRange)||this.stretchRange.length<2||r.length<256)return null;let e=this.stretchRange[0],s=this.stretchRange[1];if(e>s){const o=e;e=s,s=o}o=p(o,e,s);const i=r[Math.round((o-e)/(s-e)*(this._colorMapSize-1))].clone();return t||(i.a=1),i}};o([l({type:["linear","nearest"],json:{write:!0}})],y.prototype,"interpolation",void 0),o([l({type:[Number],json:{write:{enabled:!0,isRequired:!0}}})],y.prototype,"stretchRange",void 0),o([l({type:e.ofType(a),json:{write:{enabled:!0,overridePolicy(){return{enabled:!!this.colorStops&&this.colorStops.length>0}}}}})],y.prototype,"colorStops",null),o([l({type:e.ofType(h),json:{read:{source:"alphaStops"},write:{enabled:!0,target:"alphaStops",overridePolicy(){return{enabled:!!this.opacityStops&&this.opacityStops.length>0}}}}})],y.prototype,"opacityStops",null),o([l({type:f,json:{write:!0}})],y.prototype,"rangeFilter",void 0),o([l({type:[t],clonable:!1,json:{read:!1}})],y.prototype,"rasterizedTransferFunction",null),y=o([c("esri.layers.voxel.VoxelTransferFunctionStyle")],y);const S=y,g=["r","g","b"];export{S 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{JSONSupport as i}from"../../core/JSONSupport.js";import s from"../../core/Logger.js";import{property as r}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{b as n,E as o,C as a,a as l}from"../../chunks/vec3.js";import{f as p,g as u}from"../../chunks/vec3f64.js";import m from"../../geometry/Point.js";import c from"../../geometry/SpatialReference.js";import{equals as h}from"../../geometry/support/spatialReferenceUtils.js";import y from"./VoxelDimension.js";const d="esri.layers.voxel.VoxelVolume",g=s.getLogger(d);let f=class extends i{constructor(e){super(e),this.id=0,this.dimensions=null,this.spatialReference=c.WGS84}get zDimension(){if(!this.dimensions)return-1;if(!Array.isArray(this.dimensions))return-1;if(4!==this.dimensions.length)return-1;for(let e=2;e<4;++e)if(this.dimensions[e].size>0)return e;return-1}get isValid(){return!!this.dimensions&&(!!Array.isArray(this.dimensions)&&(4===this.dimensions.length&&(!(this.dimensions[0].size<1||this.dimensions[1].size<1)&&!(-1===this.zDimension||this.dimensions[this.zDimension].size<1))))}get originInLayerSpace3D(){if(!this.isValid||"xyt"===this.volumeType)return[0,0,0];const e=this.dimensions[0].getRange(),i=this.dimensions[1].getRange(),s=this.dimensions[2],r=s.isRegular?s.getRange():[0,s.size];return[e[0],i[0],r[0]]}get voxelSizeInLayerSpaceSigned(){if(!this.isValid||"xyt"===this.volumeType)return[0,0,0];const e=this.dimensions[0].getRange(),i=this.dimensions[1].getRange(),s=this.dimensions[2],r=s.isRegular?s.getRange():[0,s.size],t=[this.sizeInVoxels[0],this.sizeInVoxels[1],this.sizeInVoxels[2]];for(let n=0;n<3;++n)t[n]<2?t[n]=1:t[n]-=1;return s.isRegular&&!s.isPositiveUp&&(t[2]*=-1),[(e[1]-e[0])/t[0],(i[1]-i[0])/t[1],(r[1]-r[0])/t[2]]}get volumeType(){if(this.isValid){const e=this.dimensions[2].size>0,i=this.dimensions[3].size>0;if(!e&&i)return"xyt";if(e&&i)return"xyzt"}return"xyz"}get sizeInVoxels(){if(!this.isValid)return[0,0,0];const e=this.zDimension;return[this.dimensions[0].size,this.dimensions[1].size,this.dimensions[e].size]}computeVoxelSpaceLocation(e){if(!this.isValid)return[0,0,0];if("xyt"===this.volumeType)return g.error("computeVoxelSpacePosition cannot be used with XYT volumes."),[0,0,0];if(!h(this.spatialReference,e.spatialReference))return g.error("pos argument should have the same spatial reference as the VoxelLayer."),[0,0,0];const i=p(e.x,e.y,e.z??0);n(i,i,this.originInLayerSpace3D),o(i,i,this.voxelSizeInLayerSpaceSigned);const s=this.dimensions[this.zDimension];if(!s.isRegular&&Array.isArray(s.irregularSpacing?.values)&&s.irregularSpacing.values.length>1){const r=e.z??0,t=s.irregularSpacing.values,n=s.isPositiveUp?1:-1,o=t.reduce(((e,i)=>Math.abs(n*i-r)<Math.abs(n*e-r)?i:e));for(let e=0;e<t.length;++e)if(t[e]===o){i[2]=e;break}}return[i[0],i[1],i[2]]}computeLayerSpaceLocation(e){if(!this.isValid)return new m({x:0,y:0,spatialReference:this.spatialReference});const i=u(e);if(a(i,i,this.voxelSizeInLayerSpaceSigned),l(i,i,this.originInLayerSpace3D),"xyt"===this.volumeType)return new m({x:i[0],y:i[1],spatialReference:this.spatialReference});const s=this.dimensions[this.zDimension];return s.isRegular||Array.isArray(s.irregularSpacing?.values)&&(e[2]<0?i[2]=s.irregularSpacing.values[0]:e[2]<s.irregularSpacing.values.length?i[2]=s.irregularSpacing.values[e[2]]:i[2]=s.irregularSpacing.values.at(-1),s.isPositiveUp||(i[2]*=-1)),new m({x:i[0],y:i[1],z:i[2],spatialReference:this.spatialReference})}};e([r({type:Number,json:{write:{enabled:!0,isRequired:!0}}})],f.prototype,"id",void 0),e([r({type:[y],json:{write:{enabled:!0,isRequired:!0}}})],f.prototype,"dimensions",void 0),e([r({type:c,json:{read:{enabled:!1}}})],f.prototype,"spatialReference",void 0),e([r({type:Number,json:{read:!1}})],f.prototype,"zDimension",null),e([r({type:[Boolean],json:{read:!1}})],f.prototype,"isValid",null),e([r({type:[Number],json:{read:!1}})],f.prototype,"originInLayerSpace3D",null),e([r({type:[Number],json:{read:!1}})],f.prototype,"voxelSizeInLayerSpaceSigned",null),e([r({type:["xyz","xyzt","xyt"],json:{read:{enabled:!1}}})],f.prototype,"volumeType",null),e([r({type:[Number],json:{read:!1}})],f.prototype,"sizeInVoxels",null),f=e([t(d)],f);const z=f;export{z as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import{JSONSupport as i}from"../../core/JSONSupport.js";import s from"../../core/Logger.js";import{property as r}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{b as n,E as o,C as a,a as l}from"../../chunks/vec3.js";import{f as p,g as u}from"../../chunks/vec3f64.js";import m from"../../geometry/Point.js";import c from"../../geometry/SpatialReference.js";import{equals as h}from"../../geometry/support/spatialReferenceUtils.js";import g from"./VoxelDimension.js";const y="esri.layers.voxel.VoxelVolume",d=s.getLogger(y);let f=class extends i{constructor(e){super(e),this.id=0,this.dimensions=null,this.spatialReference=c.WGS84}get zDimension(){if(!this.dimensions)return-1;if(!Array.isArray(this.dimensions))return-1;if(4!==this.dimensions.length)return-1;for(let e=2;e<4;++e)if(this.dimensions[e].size>0)return e;return-1}get isValid(){return!!this.dimensions&&(!!Array.isArray(this.dimensions)&&(4===this.dimensions.length&&(!(this.dimensions[0].size<1||this.dimensions[1].size<1)&&!(-1===this.zDimension||this.dimensions[this.zDimension].size<1))))}get originInLayerSpace3D(){if(!this.isValid||"xyt"===this.volumeType)return[0,0,0];const e=this.dimensions[0].getRange(),i=this.dimensions[1].getRange(),s=this.dimensions[2],r=s.isRegular?s.getRange():[0,s.size];return[e[0],i[0],r[0]]}get voxelSizeInLayerSpaceSigned(){if(!this.isValid||"xyt"===this.volumeType)return[0,0,0];const e=this.dimensions[0].getRange(),i=this.dimensions[1].getRange(),s=this.dimensions[2],r=s.isRegular?s.getRange():[0,s.size],t=[this.sizeInVoxels[0],this.sizeInVoxels[1],this.sizeInVoxels[2]];for(let n=0;n<3;++n)t[n]<2?t[n]=1:t[n]-=1;return s.isRegular&&!s.isPositiveUp&&(t[2]*=-1),[(e[1]-e[0])/t[0],(i[1]-i[0])/t[1],(r[1]-r[0])/t[2]]}get volumeType(){if(this.isValid){const e=this.dimensions[2].size>0,i=this.dimensions[3].size>0;if(!e&&i)return"xyt";if(e&&i)return"xyzt"}return"xyz"}get sizeInVoxels(){if(!this.isValid)return[0,0,0];const e=this.zDimension;return[this.dimensions[0].size,this.dimensions[1].size,this.dimensions[e].size]}computeVoxelSpaceLocation(e){if(!this.isValid)return[0,0,0];if("xyt"===this.volumeType)return d.error("computeVoxelSpacePosition cannot be used with XYT volumes."),[0,0,0];if(!h(this.spatialReference,e.spatialReference))return d.error("pos argument should have the same spatial reference as the VoxelLayer."),[0,0,0];const i=p(e.x,e.y,e.z??0);n(i,i,this.originInLayerSpace3D),o(i,i,this.voxelSizeInLayerSpaceSigned);const s=this.dimensions[this.zDimension];if(!s.isRegular&&Array.isArray(s.irregularSpacing?.values)&&s.irregularSpacing.values.length>1){const r=e.z??0,t=s.irregularSpacing.values,n=s.isPositiveUp?1:-1,o=t.reduce(((e,i)=>Math.abs(n*i-r)<Math.abs(n*e-r)?i:e));for(let e=0;e<t.length;++e)if(t[e]===o){i[2]=e;break}}return[i[0],i[1],i[2]]}computeLayerSpaceLocation(e){if(!this.isValid)return new m({x:0,y:0,spatialReference:this.spatialReference});const i=u(e);if(a(i,i,this.voxelSizeInLayerSpaceSigned),l(i,i,this.originInLayerSpace3D),"xyt"===this.volumeType)return new m({x:i[0],y:i[1],spatialReference:this.spatialReference});const s=this.dimensions[this.zDimension];return s.isRegular||Array.isArray(s.irregularSpacing?.values)&&(e[2]<0?i[2]=s.irregularSpacing.values[0]:e[2]<s.irregularSpacing.values.length?i[2]=s.irregularSpacing.values[e[2]]:i[2]=s.irregularSpacing.values[s.irregularSpacing.values.length-1],s.isPositiveUp||(i[2]*=-1)),new m({x:i[0],y:i[1],z:i[2],spatialReference:this.spatialReference})}};e([r({type:Number,json:{write:{enabled:!0,isRequired:!0}}})],f.prototype,"id",void 0),e([r({type:[g],json:{write:{enabled:!0,isRequired:!0}}})],f.prototype,"dimensions",void 0),e([r({type:c,json:{read:{enabled:!1}}})],f.prototype,"spatialReference",void 0),e([r({type:Number,json:{read:!1}})],f.prototype,"zDimension",null),e([r({type:[Boolean],json:{read:!1}})],f.prototype,"isValid",null),e([r({type:[Number],json:{read:!1}})],f.prototype,"originInLayerSpace3D",null),e([r({type:[Number],json:{read:!1}})],f.prototype,"voxelSizeInLayerSpaceSigned",null),e([r({type:["xyz","xyzt","xyt"],json:{read:{enabled:!1}}})],f.prototype,"volumeType",null),e([r({type:[Number],json:{read:!1}})],f.prototype,"sizeInVoxels",null),f=e([t(y)],f);const S=f;export{S as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "4.28.0-next.20230719",
3
+ "version": "4.28.0-next.20230721",
4
4
  "homepage": "https://js.arcgis.com",
5
5
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
6
6
  "keywords": [
@@ -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{toHSV as t}from"../../core/colorUtils.js";import{JSONSupport as r}from"../../core/JSONSupport.js";import s from"../../core/Logger.js";import{property as a}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 n from"../../layers/support/RasterInfo.js";import{colorize as i,remapColor as l,lookupPixels as u,createColormapLUT as c,isValidPixelBlock as p}from"../../layers/support/rasterFunctions/pixelUtils.js";import{stretch as d,getStretchCutoff as h,createStretchLUT as m,computeGammaValues as f,createHistogramEqualizationLUT as y}from"../../layers/support/rasterFunctions/stretchUtils.js";import{hillshade as b,tintHillshade as g,calculateHillshadeParams as S}from"../../layers/support/rasterFunctions/surfaceUtils.js";import{convertColorRampToColormap as k}from"./colorRampUtils.js";import{isUVRendererSupported as R,isColormapRendererSupported as x,isShadedReliefRendererSupported as I}from"./rasterRendererChecks.js";let _=class extends r{constructor(e){super(e)}bind(){const{rendererJSON:e}=this;if(!e)return{success:!1};let t;switch(this.lookup={rendererJSON:{}},e.type){case"uniqueValue":t=this._updateUVRenderer(e);break;case"rasterColormap":t=this._updateColormapRenderer(e);break;case"rasterStretch":t=this._updateStretchRenderer(e);break;case"classBreaks":t=this._updateClassBreaksRenderer(e);break;case"rasterShadedRelief":t=this._updateShadedReliefRenderer(e);break;case"vectorField":t=this._updateVectorFieldRenderer();break;case"flowRenderer":t=this._updateFlowRenderer()}return t}symbolize(e){let t=e&&e.pixelBlock;if(!C(t))return t;if(e.simpleStretchParams&&"rasterStretch"===this.rendererJSON.type)return this.simpleStretch(t,e.simpleStretchParams);try{let r;switch(t.pixels.length>3&&(t=t.extractBands([0,1,2])),this.rendererJSON.type){case"uniqueValue":case"rasterColormap":r=this._symbolizeColormap(t);break;case"classBreaks":r=this._symbolizeClassBreaks(t);break;case"rasterStretch":r=this._symbolizeStretch(t,e.bandIds);break;case"rasterShadedRelief":{const s=e.extent,a=s.spatialReference.isGeographic,o={x:(s.xmax-s.xmin)/t.width,y:(s.ymax-s.ymin)/t.height};r=this._symbolizeShadedRelief(t,{isGCS:a,resolution:o});break}}return r}catch(r){return s.getLogger(this).error("symbolize",r.message),t}}simpleStretch(e,t){if(!C(e))return e;try{return e.pixels.length>3&&(e=e.extractBands([0,1,2])),d(e,{...t,isRenderer:!0})}catch(r){return s.getLogger(this).error("symbolize",r.message),e}}generateWebGLParameters(e){if(["uniqueValue","rasterColormap","classBreaks"].includes(this.rendererJSON.type)){const{indexedColormap:e,offset:t}=this.lookup.colormapLut||{};return{colormap:e,colormapOffset:t,type:"lut"}}const{pixelBlock:t,isGCS:r,resolution:s,bandIds:a}=e,{rendererJSON:o}=this;return"rasterStretch"===o.type?this._generateStretchWebGLParams(t,o,a):"rasterShadedRelief"===o.type?this._generateShadedReliefWebGLParams(o,r,s??void 0):"vectorField"===o.type?this._generateVectorFieldWebGLParams(o):null}_isLUTChanged(e){if(!this.lookup||!this.lookup.rendererJSON)return!0;if("colorRamp"in this.rendererJSON){const t=this.rendererJSON.colorRamp;return e?JSON.stringify(t)!==JSON.stringify(this.lookup.rendererJSON.colorRamp):(this.rendererJSON,this.lookup.rendererJSON,JSON.stringify(this.rendererJSON)!==JSON.stringify(this.lookup.rendererJSON))}return JSON.stringify(this.rendererJSON)!==JSON.stringify(this.lookup.rendererJSON)}_symbolizeColormap(e){if(this._isLUTChanged()){if(!this.bind().success)return e}return i(e,this.lookup.colormapLut)}_symbolizeClassBreaks(e){const{canUseIndexedLUT:t}=this._analyzeClassBreaks(this.rendererJSON);if(this._isLUTChanged()){if(!this.bind().success)return e}return t?i(e,this.lookup.colormapLut):l(e,this.lookup.remapLut??[])}_symbolizeStretch(e,t){const{rasterInfo:r}=this,{pixelType:s,bandCount:a}=r,o=this.rendererJSON,n=["u8","u16","s8","s16"].includes(s);let l,c;const{dra:p}=o,{gamma:f}=this.lookup;if("histogramEqualization"===o.stretchType){const s=p?null:this.lookup?.histogramLut,a=h(o,{rasterInfo:r,pixelBlock:e,bandIds:t,returnHistogramLut:!s}),n=d(e,{...a,gamma:f,isRenderer:!0});c=u(n,{lut:p?a.histogramLut:s,offset:0})}else if(n){if(p){const a=h(o,{rasterInfo:r,pixelBlock:e,bandIds:t});l=m({pixelType:s,...a,gamma:f,rounding:"floor"})}else if(this._isLUTChanged()){if(!this.bind().success)return e;l=this.lookup?this.lookup.stretchLut:null}else l=this.lookup?this.lookup.stretchLut:null;if(!l)return e;a>1&&null!=t&&t.length===e?.pixels.length&&l?.lut.length===a&&(l={lut:t.map((e=>l.lut[e])),offset:l.offset}),c=u(e,l)}else{const s=h(o,{rasterInfo:r,pixelBlock:e,bandIds:t});c=d(e,{...s,gamma:f,isRenderer:!0})}if(o.colorRamp){if(this._isLUTChanged(!0)){if(!this.bind().success)return e}c=i(c,this.lookup?.colormapLut)}return c}_symbolizeShadedRelief(e,t){const r=this.rendererJSON,s={...r,...t},a=b(e,s);if(!r.colorRamp)return a;let o;if(this._isLUTChanged(!0)){if(!this.bind().success)return a;o=this.lookup?this.lookup.hsvMap:null}else o=this.lookup?this.lookup.hsvMap:null;if(!o)return a;const n=this.rasterInfo.statistics?.[0]??{min:0,max:8e3};return g(a,e,o,n),a}_isVectorFieldData(){const{bandCount:e,dataType:t}=this.rasterInfo;return 2===e&&("vector-magdir"===t||"vector-uv"===t)}_updateVectorFieldRenderer(){return this._isVectorFieldData()?{success:!0}:{success:!1,error:`Unsupported data type "${this.rasterInfo.dataType}"; VectorFieldRenderer only supports "vector-magdir" and "vector-uv".`}}_updateFlowRenderer(){return this._isVectorFieldData()?{success:!0}:{success:!1,error:`Unsupported data type "${this.rasterInfo.dataType}"; FlowRenderer only supports "vector-magdir" and "vector-uv".`}}_updateUVRenderer(e){const{bandCount:t,attributeTable:r,pixelType:s}=this.rasterInfo,a=e.field1;if(!a)return{success:!1,error:"Unsupported renderer; missing UniqueValueRenderer.field."};const o=e.defaultSymbol,n=1===t&&["u8","s8"].includes(s);if(!R(this.rasterInfo,a)&&!n)return{success:!1,error:"Unsupported data; UniqueValueRenderer is only supported on single band data with a valid raster attribute table."};const i=[];if(null!=r){const t=r.fields.find((e=>"value"===e.name.toLowerCase()));if(!t)return{success:!1,error:"Unsupported data; the data's raster attribute table does not have a value field."};r.features.forEach((r=>{const s=e.uniqueValueInfos?.find((e=>String(e.value)===String(r.attributes[a]))),n=s?.symbol?.color;n?i.push([r.attributes[t.name]].concat(n)):o&&i.push([r.attributes[t.name]].concat(o.color))}))}else{if("value"!==a.toLowerCase())return{success:!1,error:'Unsupported renderer; UniqueValueRenderer.field must be "Value" when raster attribute table is not availalbe.'};e.uniqueValueInfos?.forEach((e=>{const t=e?.symbol?.color;t?i.push([parseInt(""+e.value,10)].concat(t)):o&&i.push([parseInt(""+e.value,10)].concat(o?.color))}))}if(0===i.length)return{success:!1,error:"Invalid UniqueValueRenderer. Cannot find matching records in the raster attribute table."};const l=c({colormap:i});return this.lookup={rendererJSON:e,colormapLut:l},this.canRenderInWebGL=!0,{success:!0}}_updateColormapRenderer(e){if(!x(this.rasterInfo))return{success:!1,error:"Unsupported data; the data source does not have a colormap."};const t=e.colormapInfos.map((e=>[e.value].concat(e.color))).sort(((e,t)=>e[0]-t[0]));if(!t||0===t.length)return{success:!1,error:"Unsupported renderer; ColormapRenderer must have meaningful colormapInfos."};const r=c({colormap:t});return this.lookup={rendererJSON:e,colormapLut:r},this.canRenderInWebGL=!0,{success:!0}}_updateShadedReliefRenderer(e){if(!I(this.rasterInfo))return{success:!1,error:`Unsupported data type "${this.rasterInfo.dataType}"; ShadedReliefRenderer only supports "elevation", or single band float/s16 data.`};if(e.colorRamp){const r=k(e.colorRamp,{interpolateAlpha:!0}),s=c({colormap:r}),a=[],o=s.indexedColormap;for(let e=0;e<o.length;e+=4){const r=t({r:o[e],g:o[e+1],b:o[e+2]});a.push([r.h/60,r.s/100,255*r.v/100])}this.lookup={rendererJSON:e,colormapLut:s,hsvMap:a}}else this.lookup=null;return this.canRenderInWebGL=!0,{success:!0}}_analyzeClassBreaks(e){const{attributeTable:t,pixelType:r}=this.rasterInfo,s=null!=t?t.fields.find((e=>"value"===e.name.toLowerCase())):null,a=null!=t?t.fields.find((t=>t.name.toLowerCase()===e.field.toLowerCase())):null,o=null!=s&&null!==a;return{canUseIndexedLUT:["u8","u16","s8","s16"].includes(r)||o,tableValueField:s,tableBreakField:a}}_updateClassBreaksRenderer(e){const{attributeTable:t}=this.rasterInfo,{canUseIndexedLUT:r,tableValueField:s,tableBreakField:a}=this._analyzeClassBreaks(e),o=e.classBreakInfos;if(!o?.length)return{success:!1,error:"Unsupported renderer; missing or invalid ClassBreaksRenderer.classBreakInfos."};const n=o.sort(((e,t)=>e.classMaxValue-t.classMaxValue)),i=n.at(-1);let l=e.minValue;if(!r){const t=[];for(let e=0;e<n.length;e++)t.push({value:n[e].classMinValue??l,mappedColor:n[e].symbol.color}),l=n[e].classMaxValue;return t.push({value:i.classMaxValue,mappedColor:i.symbol.color}),this.lookup={rendererJSON:e,remapLut:t},this.canRenderInWebGL=!1,{success:!0}}const u=[];if(null!=t&&null!=s&&null!==a&&s!==a){const r=s.name,o=a.name,i=n.at(-1),{classMaxValue:c}=i;l=e.minValue;for(const e of t.features){const t=e.attributes[r],s=e.attributes[o],a=s===c?i:s<l?null:n.find((({classMaxValue:e})=>e>s));a&&u.push([t].concat(a.symbol.color))}}else{l=Math.floor(e.minValue);for(let e=0;e<n.length;e++){const t=n[e];for(let e=l;e<t.classMaxValue;e++)u.push([e].concat(t.symbol.color));l=Math.ceil(t.classMaxValue)}i.classMaxValue===l&&u.push([i.classMaxValue].concat(i.symbol.color))}const p=c({colormap:u,fillUnspecified:!1});return this.lookup={rendererJSON:e,colormapLut:p},this.canRenderInWebGL=!0,{success:!0}}_isHistogramRequired(e){return"percentClip"===e||"histogramEqualization"===e}_isValidRasterStatistics(e){return null!=e&&e.length>0&&null!=e[0].min&&null!=e[0].max}_updateStretchRenderer(e){let{stretchType:t,dra:r}=e;if(!("none"===t||e.statistics?.length||this._isValidRasterStatistics(this.rasterInfo.statistics)||r))return{success:!1,error:"Unsupported renderer; StretchRenderer.statistics is required when dynamic range adjustment is not used."};const s=e.histograms||this.rasterInfo.histograms;!this._isHistogramRequired(e.stretchType)||s?.length||r||(t="minMax");const{computeGamma:a,useGamma:o,colorRamp:n}=e;let{gamma:i}=e;if(o&&a&&!i?.length){const t=e.statistics?.length?e.statistics:this.rasterInfo.statistics;i=f(this.rasterInfo.pixelType,t)}const l=this.rasterInfo.pixelType,u=!r&&["u8","u16","s8","s16"].includes(l);if("histogramEqualization"===t){const t=s.map((e=>y(e)));this.lookup={rendererJSON:e,histogramLut:t}}else if(u){const t=h(e,{rasterInfo:this.rasterInfo}),r=m({pixelType:l,...t,gamma:o?i:null,rounding:"floor"});this.lookup={rendererJSON:e,stretchLut:r}}if(n){const t=k(n,{interpolateAlpha:!0});this.lookup||(this.lookup={rendererJSON:e}),this.lookup.colormapLut=c({colormap:t}),this.lookup.rendererJSON=e}return this.lookup.gamma=o&&i?.length?i:null,this.canRenderInWebGL=!0,{success:!0}}_generateStretchWebGLParams(e,t,r){let s=null,a=null;const o=this.lookup&&this.lookup.colormapLut;t.colorRamp&&o&&(s=o.indexedColormap,a=o.offset),"histogramEqualization"===t.stretchType&&(t={...t,stretchType:"minMax"});const{gamma:n}=this.lookup,i=!!(t.useGamma&&n&&n.some((e=>1!==e))),{minCutOff:l,maxCutOff:u,outMin:c,outMax:p}=h(t,{rasterInfo:this.rasterInfo,pixelBlock:e,bandIds:r});let d=0;null!=e&&(d=e.getPlaneCount(),2===d&&((e=e.clone()).statistics=[e.statistics[0]],e.pixels=[e.pixels[0]]));const{bandCount:m}=this.rasterInfo,f=Math.min(3,r?.length||d||m,m),y=new Float32Array(f),b=s||i?1:255;let g;for(g=0;g<l.length;g++)y[g]=u[g]===l[g]?0:(p-c)/(u[g]-l[g])/b;const S=new Float32Array(f);if(i&&n)for(g=0;g<f;g++)n[g]>1?n[g]>2?S[g]=6.5+(n[g]-2)**2.5:S[g]=6.5+100*(2-n[g])**4:S[g]=1;return{bandCount:f,outMin:c/b,outMax:p/b,minCutOff:l,maxCutOff:u,factor:y,useGamma:i,gamma:i?n:[1,1,1],gammaCorrection:i?S:[1,1,1],colormap:s,colormapOffset:a,stretchType:t.stretchType,type:"stretch"}}_generateShadedReliefWebGLParams(e,t=!1,r={x:0,y:0}){let s=null,a=null;const o=this.lookup&&this.lookup.colormapLut;e.colorRamp&&o&&(s=o.indexedColormap,a=o.offset);const n={...e,isGCS:t,resolution:r},i=S(n),l=this.rasterInfo.statistics?.[0];return{...i,minValue:l?.min??0,maxValue:l?.max??8e3,hillshadeType:"traditional"===e.hillshadeType?0:1,type:"hillshade",colormap:s,colormapOffset:a}}_generateVectorFieldWebGLParams(e){const{style:t,inputUnit:r,outputUnit:s,visualVariables:a,symbolTileSize:o,flowRepresentation:n}=e;let i;const l=this.rasterInfo.statistics?.[0].min??0,u=this.rasterInfo.statistics?.[0].max??50,c=a?.find((e=>"sizeInfo"===e.type))??{type:"sizeInfo",field:"Magnitude",maxDataValue:u,maxSize:.8*o,minDataValue:l,minSize:.2*o},p=c.minDataValue??l,d=c.maxDataValue??u,h=null!=c.maxSize&&null!=c.minSize?[c.minSize/o,c.maxSize/o]:[.2,.8];if("wind_speed"===t){const e=(h[0]+h[1])/2;h[0]=h[1]=e}const m=null!=p&&null!=d?[p,d]:null;if("classified_arrow"===t)if(null!=p&&null!=d&&null!=c){i=[];const e=(c.maxDataValue-c.minDataValue)/5;for(let t=0;t<6;t++)i.push(c.minDataValue+e*t)}else i=[0,1e-6,3.5,7,10.5,14];const f="flow_to"===n===("ocean_current_kn"===t||"ocean_current_m"===t)?0:Math.PI,y=a?.find((e=>"rotationInfo"===e.type));return{breakValues:i,dataRange:m,inputUnit:r,outputUnit:s,symbolTileSize:o,symbolPercentRange:h,style:t||"single_arrow",rotation:f,rotationType:this.rasterInfo.storageInfo?.tileInfo&&"vector-uv"===this.rasterInfo.dataType?"geographic":y?.rotationType||e.rotationType,type:"vectorField"}}};function C(e){return p(e)&&0!==e.validPixelCount}e([a({json:{write:!0}})],_.prototype,"rendererJSON",void 0),e([a({type:n,json:{write:!0}})],_.prototype,"rasterInfo",void 0),e([a({json:{write:!0}})],_.prototype,"lookup",void 0),e([a()],_.prototype,"canRenderInWebGL",void 0),_=e([o("esri.renderers.support.RasterSymbolizer")],_);const L=_;export{L as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import{toHSV as t}from"../../core/colorUtils.js";import{JSONSupport as r}from"../../core/JSONSupport.js";import s from"../../core/Logger.js";import{property as a}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 n from"../../layers/support/RasterInfo.js";import{colorize as i,remapColor as l,lookupPixels as u,createColormapLUT as c,isValidPixelBlock as p}from"../../layers/support/rasterFunctions/pixelUtils.js";import{stretch as d,getStretchCutoff as h,createStretchLUT as m,computeGammaValues as f,createHistogramEqualizationLUT as y}from"../../layers/support/rasterFunctions/stretchUtils.js";import{hillshade as g,tintHillshade as b,calculateHillshadeParams as S}from"../../layers/support/rasterFunctions/surfaceUtils.js";import{convertColorRampToColormap as k}from"./colorRampUtils.js";import{isUVRendererSupported as R,isColormapRendererSupported as x,isShadedReliefRendererSupported as I}from"./rasterRendererChecks.js";let _=class extends r{constructor(e){super(e)}bind(){const{rendererJSON:e}=this;if(!e)return{success:!1};let t;switch(this.lookup={rendererJSON:{}},e.type){case"uniqueValue":t=this._updateUVRenderer(e);break;case"rasterColormap":t=this._updateColormapRenderer(e);break;case"rasterStretch":t=this._updateStretchRenderer(e);break;case"classBreaks":t=this._updateClassBreaksRenderer(e);break;case"rasterShadedRelief":t=this._updateShadedReliefRenderer(e);break;case"vectorField":t=this._updateVectorFieldRenderer();break;case"flowRenderer":t=this._updateFlowRenderer()}return t}symbolize(e){let t=e&&e.pixelBlock;if(!C(t))return t;if(e.simpleStretchParams&&"rasterStretch"===this.rendererJSON.type)return this.simpleStretch(t,e.simpleStretchParams);try{let r;switch(t.pixels.length>3&&(t=t.extractBands([0,1,2])),this.rendererJSON.type){case"uniqueValue":case"rasterColormap":r=this._symbolizeColormap(t);break;case"classBreaks":r=this._symbolizeClassBreaks(t);break;case"rasterStretch":r=this._symbolizeStretch(t,e.bandIds);break;case"rasterShadedRelief":{const s=e.extent,a=s.spatialReference.isGeographic,o={x:(s.xmax-s.xmin)/t.width,y:(s.ymax-s.ymin)/t.height};r=this._symbolizeShadedRelief(t,{isGCS:a,resolution:o});break}}return r}catch(r){return s.getLogger(this).error("symbolize",r.message),t}}simpleStretch(e,t){if(!C(e))return e;try{return e.pixels.length>3&&(e=e.extractBands([0,1,2])),d(e,{...t,isRenderer:!0})}catch(r){return s.getLogger(this).error("symbolize",r.message),e}}generateWebGLParameters(e){if(["uniqueValue","rasterColormap","classBreaks"].includes(this.rendererJSON.type)){const{indexedColormap:e,offset:t}=this.lookup.colormapLut||{};return{colormap:e,colormapOffset:t,type:"lut"}}const{pixelBlock:t,isGCS:r,resolution:s,bandIds:a}=e,{rendererJSON:o}=this;return"rasterStretch"===o.type?this._generateStretchWebGLParams(t,o,a):"rasterShadedRelief"===o.type?this._generateShadedReliefWebGLParams(o,r,s??void 0):"vectorField"===o.type?this._generateVectorFieldWebGLParams(o):null}_isLUTChanged(e){if(!this.lookup||!this.lookup.rendererJSON)return!0;if("colorRamp"in this.rendererJSON){const t=this.rendererJSON.colorRamp;return e?JSON.stringify(t)!==JSON.stringify(this.lookup.rendererJSON.colorRamp):(this.rendererJSON,this.lookup.rendererJSON,JSON.stringify(this.rendererJSON)!==JSON.stringify(this.lookup.rendererJSON))}return JSON.stringify(this.rendererJSON)!==JSON.stringify(this.lookup.rendererJSON)}_symbolizeColormap(e){if(this._isLUTChanged()){if(!this.bind().success)return e}return i(e,this.lookup.colormapLut)}_symbolizeClassBreaks(e){const{canUseIndexedLUT:t}=this._analyzeClassBreaks(this.rendererJSON);if(this._isLUTChanged()){if(!this.bind().success)return e}return t?i(e,this.lookup.colormapLut):l(e,this.lookup.remapLut??[])}_symbolizeStretch(e,t){const{rasterInfo:r}=this,{pixelType:s,bandCount:a}=r,o=this.rendererJSON,n=["u8","u16","s8","s16"].includes(s);let l,c;const{dra:p}=o,{gamma:f}=this.lookup;if("histogramEqualization"===o.stretchType){const s=p?null:this.lookup?.histogramLut,a=h(o,{rasterInfo:r,pixelBlock:e,bandIds:t,returnHistogramLut:!s}),n=d(e,{...a,gamma:f,isRenderer:!0});c=u(n,{lut:p?a.histogramLut:s,offset:0})}else if(n){if(p){const a=h(o,{rasterInfo:r,pixelBlock:e,bandIds:t});l=m({pixelType:s,...a,gamma:f,rounding:"floor"})}else if(this._isLUTChanged()){if(!this.bind().success)return e;l=this.lookup?this.lookup.stretchLut:null}else l=this.lookup?this.lookup.stretchLut:null;if(!l)return e;a>1&&null!=t&&t.length===e?.pixels.length&&l?.lut.length===a&&(l={lut:t.map((e=>l.lut[e])),offset:l.offset}),c=u(e,l)}else{const s=h(o,{rasterInfo:r,pixelBlock:e,bandIds:t});c=d(e,{...s,gamma:f,isRenderer:!0})}if(o.colorRamp){if(this._isLUTChanged(!0)){if(!this.bind().success)return e}c=i(c,this.lookup?.colormapLut)}return c}_symbolizeShadedRelief(e,t){const r=this.rendererJSON,s={...r,...t},a=g(e,s);if(!r.colorRamp)return a;let o;if(this._isLUTChanged(!0)){if(!this.bind().success)return a;o=this.lookup?this.lookup.hsvMap:null}else o=this.lookup?this.lookup.hsvMap:null;if(!o)return a;const n=this.rasterInfo.statistics?.[0]??{min:0,max:8e3};return b(a,e,o,n),a}_isVectorFieldData(){const{bandCount:e,dataType:t}=this.rasterInfo;return 2===e&&("vector-magdir"===t||"vector-uv"===t)}_updateVectorFieldRenderer(){return this._isVectorFieldData()?{success:!0}:{success:!1,error:`Unsupported data type "${this.rasterInfo.dataType}"; VectorFieldRenderer only supports "vector-magdir" and "vector-uv".`}}_updateFlowRenderer(){return this._isVectorFieldData()?{success:!0}:{success:!1,error:`Unsupported data type "${this.rasterInfo.dataType}"; FlowRenderer only supports "vector-magdir" and "vector-uv".`}}_updateUVRenderer(e){const{bandCount:t,attributeTable:r,pixelType:s}=this.rasterInfo,a=e.field1;if(!a)return{success:!1,error:"Unsupported renderer; missing UniqueValueRenderer.field."};const o=e.defaultSymbol,n=1===t&&["u8","s8"].includes(s);if(!R(this.rasterInfo,a)&&!n)return{success:!1,error:"Unsupported data; UniqueValueRenderer is only supported on single band data with a valid raster attribute table."};const i=[];if(null!=r){const t=r.fields.find((e=>"value"===e.name.toLowerCase()));if(!t)return{success:!1,error:"Unsupported data; the data's raster attribute table does not have a value field."};r.features.forEach((r=>{const s=e.uniqueValueInfos?.find((e=>String(e.value)===String(r.attributes[a]))),n=s?.symbol?.color;n?i.push([r.attributes[t.name]].concat(n)):o&&i.push([r.attributes[t.name]].concat(o.color))}))}else{if("value"!==a.toLowerCase())return{success:!1,error:'Unsupported renderer; UniqueValueRenderer.field must be "Value" when raster attribute table is not availalbe.'};e.uniqueValueInfos?.forEach((e=>{const t=e?.symbol?.color;t?i.push([parseInt(""+e.value,10)].concat(t)):o&&i.push([parseInt(""+e.value,10)].concat(o?.color))}))}if(0===i.length)return{success:!1,error:"Invalid UniqueValueRenderer. Cannot find matching records in the raster attribute table."};const l=c({colormap:i});return this.lookup={rendererJSON:e,colormapLut:l},this.canRenderInWebGL=!0,{success:!0}}_updateColormapRenderer(e){if(!x(this.rasterInfo))return{success:!1,error:"Unsupported data; the data source does not have a colormap."};const t=e.colormapInfos.map((e=>[e.value].concat(e.color))).sort(((e,t)=>e[0]-t[0]));if(!t||0===t.length)return{success:!1,error:"Unsupported renderer; ColormapRenderer must have meaningful colormapInfos."};const r=c({colormap:t});return this.lookup={rendererJSON:e,colormapLut:r},this.canRenderInWebGL=!0,{success:!0}}_updateShadedReliefRenderer(e){if(!I(this.rasterInfo))return{success:!1,error:`Unsupported data type "${this.rasterInfo.dataType}"; ShadedReliefRenderer only supports "elevation", or single band float/s16 data.`};if(e.colorRamp){const r=k(e.colorRamp,{interpolateAlpha:!0}),s=c({colormap:r}),a=[],o=s.indexedColormap;for(let e=0;e<o.length;e+=4){const r=t({r:o[e],g:o[e+1],b:o[e+2]});a.push([r.h/60,r.s/100,255*r.v/100])}this.lookup={rendererJSON:e,colormapLut:s,hsvMap:a}}else this.lookup=null;return this.canRenderInWebGL=!0,{success:!0}}_analyzeClassBreaks(e){const{attributeTable:t,pixelType:r}=this.rasterInfo,s=null!=t?t.fields.find((e=>"value"===e.name.toLowerCase())):null,a=null!=t?t.fields.find((t=>t.name.toLowerCase()===e.field.toLowerCase())):null,o=null!=s&&null!==a;return{canUseIndexedLUT:["u8","u16","s8","s16"].includes(r)||o,tableValueField:s,tableBreakField:a}}_updateClassBreaksRenderer(e){const{attributeTable:t}=this.rasterInfo,{canUseIndexedLUT:r,tableValueField:s,tableBreakField:a}=this._analyzeClassBreaks(e),o=e.classBreakInfos;if(!o?.length)return{success:!1,error:"Unsupported renderer; missing or invalid ClassBreaksRenderer.classBreakInfos."};const n=o.sort(((e,t)=>e.classMaxValue-t.classMaxValue)),i=n[n.length-1];let l=e.minValue;if(!r){const t=[];for(let e=0;e<n.length;e++)t.push({value:n[e].classMinValue??l,mappedColor:n[e].symbol.color}),l=n[e].classMaxValue;return t.push({value:i.classMaxValue,mappedColor:i.symbol.color}),this.lookup={rendererJSON:e,remapLut:t},this.canRenderInWebGL=!1,{success:!0}}const u=[];if(null!=t&&null!=s&&null!==a&&s!==a){const r=s.name,o=a.name,i=n[n.length-1],{classMaxValue:c}=i;l=e.minValue;for(const e of t.features){const t=e.attributes[r],s=e.attributes[o],a=s===c?i:s<l?null:n.find((({classMaxValue:e})=>e>s));a&&u.push([t].concat(a.symbol.color))}}else{l=Math.floor(e.minValue);for(let e=0;e<n.length;e++){const t=n[e];for(let e=l;e<t.classMaxValue;e++)u.push([e].concat(t.symbol.color));l=Math.ceil(t.classMaxValue)}i.classMaxValue===l&&u.push([i.classMaxValue].concat(i.symbol.color))}const p=c({colormap:u,fillUnspecified:!1});return this.lookup={rendererJSON:e,colormapLut:p},this.canRenderInWebGL=!0,{success:!0}}_isHistogramRequired(e){return"percentClip"===e||"histogramEqualization"===e}_isValidRasterStatistics(e){return null!=e&&e.length>0&&null!=e[0].min&&null!=e[0].max}_updateStretchRenderer(e){let{stretchType:t,dra:r}=e;if(!("none"===t||e.statistics?.length||this._isValidRasterStatistics(this.rasterInfo.statistics)||r))return{success:!1,error:"Unsupported renderer; StretchRenderer.statistics is required when dynamic range adjustment is not used."};const s=e.histograms||this.rasterInfo.histograms;!this._isHistogramRequired(e.stretchType)||s?.length||r||(t="minMax");const{computeGamma:a,useGamma:o,colorRamp:n}=e;let{gamma:i}=e;if(o&&a&&!i?.length){const t=e.statistics?.length?e.statistics:this.rasterInfo.statistics;i=f(this.rasterInfo.pixelType,t)}const l=this.rasterInfo.pixelType,u=!r&&["u8","u16","s8","s16"].includes(l);if("histogramEqualization"===t){const t=s.map((e=>y(e)));this.lookup={rendererJSON:e,histogramLut:t}}else if(u){const t=h(e,{rasterInfo:this.rasterInfo}),r=m({pixelType:l,...t,gamma:o?i:null,rounding:"floor"});this.lookup={rendererJSON:e,stretchLut:r}}if(n){const t=k(n,{interpolateAlpha:!0});this.lookup||(this.lookup={rendererJSON:e}),this.lookup.colormapLut=c({colormap:t}),this.lookup.rendererJSON=e}return this.lookup.gamma=o&&i?.length?i:null,this.canRenderInWebGL=!0,{success:!0}}_generateStretchWebGLParams(e,t,r){let s=null,a=null;const o=this.lookup&&this.lookup.colormapLut;t.colorRamp&&o&&(s=o.indexedColormap,a=o.offset),"histogramEqualization"===t.stretchType&&(t={...t,stretchType:"minMax"});const{gamma:n}=this.lookup,i=!!(t.useGamma&&n&&n.some((e=>1!==e))),{minCutOff:l,maxCutOff:u,outMin:c,outMax:p}=h(t,{rasterInfo:this.rasterInfo,pixelBlock:e,bandIds:r});let d=0;null!=e&&(d=e.getPlaneCount(),2===d&&((e=e.clone()).statistics=[e.statistics[0]],e.pixels=[e.pixels[0]]));const{bandCount:m}=this.rasterInfo,f=Math.min(3,r?.length||d||m,m),y=new Float32Array(f),g=s||i?1:255;let b;for(b=0;b<l.length;b++)y[b]=u[b]===l[b]?0:(p-c)/(u[b]-l[b])/g;const S=new Float32Array(f);if(i&&n)for(b=0;b<f;b++)n[b]>1?n[b]>2?S[b]=6.5+(n[b]-2)**2.5:S[b]=6.5+100*(2-n[b])**4:S[b]=1;return{bandCount:f,outMin:c/g,outMax:p/g,minCutOff:l,maxCutOff:u,factor:y,useGamma:i,gamma:i?n:[1,1,1],gammaCorrection:i?S:[1,1,1],colormap:s,colormapOffset:a,stretchType:t.stretchType,type:"stretch"}}_generateShadedReliefWebGLParams(e,t=!1,r={x:0,y:0}){let s=null,a=null;const o=this.lookup&&this.lookup.colormapLut;e.colorRamp&&o&&(s=o.indexedColormap,a=o.offset);const n={...e,isGCS:t,resolution:r},i=S(n),l=this.rasterInfo.statistics?.[0];return{...i,minValue:l?.min??0,maxValue:l?.max??8e3,hillshadeType:"traditional"===e.hillshadeType?0:1,type:"hillshade",colormap:s,colormapOffset:a}}_generateVectorFieldWebGLParams(e){const{style:t,inputUnit:r,outputUnit:s,visualVariables:a,symbolTileSize:o,flowRepresentation:n}=e;let i;const l=this.rasterInfo.statistics?.[0].min??0,u=this.rasterInfo.statistics?.[0].max??50,c=a?.find((e=>"sizeInfo"===e.type))??{type:"sizeInfo",field:"Magnitude",maxDataValue:u,maxSize:.8*o,minDataValue:l,minSize:.2*o},p=c.minDataValue??l,d=c.maxDataValue??u,h=null!=c.maxSize&&null!=c.minSize?[c.minSize/o,c.maxSize/o]:[.2,.8];if("wind_speed"===t){const e=(h[0]+h[1])/2;h[0]=h[1]=e}const m=null!=p&&null!=d?[p,d]:null;if("classified_arrow"===t)if(null!=p&&null!=d&&null!=c){i=[];const e=(c.maxDataValue-c.minDataValue)/5;for(let t=0;t<6;t++)i.push(c.minDataValue+e*t)}else i=[0,1e-6,3.5,7,10.5,14];const f="flow_to"===n===("ocean_current_kn"===t||"ocean_current_m"===t)?0:Math.PI,y=a?.find((e=>"rotationInfo"===e.type));return{breakValues:i,dataRange:m,inputUnit:r,outputUnit:s,symbolTileSize:o,symbolPercentRange:h,style:t||"single_arrow",rotation:f,rotationType:this.rasterInfo.storageInfo?.tileInfo&&"vector-uv"===this.rasterInfo.dataType?"geographic":y?.rotationType||e.rotationType,type:"vectorField"}}};function C(e){return p(e)&&0!==e.validPixelCount}e([a({json:{write:!0}})],_.prototype,"rendererJSON",void 0),e([a({type:n,json:{write:!0}})],_.prototype,"rasterInfo",void 0),e([a({json:{write:!0}})],_.prototype,"lookup",void 0),e([a()],_.prototype,"canRenderInWebGL",void 0),_=e([o("esri.renderers.support.RasterSymbolizer")],_);const L=_;export{L 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 o from"../../Color.js";import{toLAB as r,toHSV as t,toLCH as l,toRGB as e}from"../../core/colorUtils.js";import{JSONMap as i}from"../../core/jsonMap.js";import{isSerializable as n}from"../../core/JSONSupport.js";const C=["random","ndvi","ndvi2","ndvi3","elevation","gray","hillshade"],m=[{id:"aspect",type:"multipart",colorRamps:[{fromColor:[190,190,190],toColor:[255,45,8]},{fromColor:[255,45,8],toColor:[255,181,61]},{fromColor:[255,181,61],toColor:[255,254,52]},{fromColor:[255,254,52],toColor:[0,251,50]},{fromColor:[0,251,50],toColor:[255,254,52]},{fromColor:[0,253,255],toColor:[0,181,255]},{fromColor:[0,181,255],toColor:[26,35,253]},{fromColor:[26,35,253],toColor:[255,57,251]},{fromColor:[255,57,251],toColor:[255,45,8]}]},{id:"black-to-white",fromColor:[0,0,0],toColor:[255,255,255]},{id:"blue-bright",fromColor:[204,204,255],toColor:[0,0,224]},{id:"blue-light-to-dark",fromColor:[211,229,232],toColor:[46,100,140]},{id:"blue-green-bright",fromColor:[203,245,234],toColor:[48,207,146]},{id:"blue-green-light-to-dark",fromColor:[216,242,237],toColor:[21,79,74]},{id:"brown-light-to-dark",fromColor:[240,236,170],toColor:[102,72,48]},{id:"brown-to-blue-green-diverging-right",type:"multipart",colorRamps:[{fromColor:[156,85,31],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[33,130,145]}]},{id:"brown-to-blue-green-diverging-dark",type:"multipart",colorRamps:[{fromColor:[110,70,45],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[48,100,102]}]},{id:"coefficient-bias",fromColor:[214,214,255],toColor:[0,57,148]},{id:"cold-to-hot-diverging",type:"multipart",colorRamps:[{fromColor:[69,117,181],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[214,47,39]}]},{id:"condition-number",type:"multipart",colorRamps:[{fromColor:[0,97,0],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,34,0]}]},{id:"cyan-to-purple",type:"multipart",colorRamps:[{fromColor:[0,245,245],toColor:[0,0,245]},{fromColor:[0,0,245],toColor:[245,0,245]}]},{id:"cyan-light-to-blue-dark",type:"multipart",colorRamps:[{fromColor:[182,237,240],toColor:[31,131,224]},{fromColor:[31,131,224],toColor:[9,9,145]}]},{id:"distance",fromColor:[255,200,0],toColor:[0,0,255]},{id:"elevation1",type:"multipart",colorRamps:[{fromColor:[175,240,233],toColor:[255,255,179]},{fromColor:[255,255,179],toColor:[0,128,64]},{fromColor:[0,128,64],toColor:[252,186,3]},{fromColor:[252,186,3],toColor:[128,0,0]},{fromColor:[120,0,0],toColor:[105,48,13]},{fromColor:[105,48,13],toColor:[171,171,171]},{fromColor:[171,171,171],toColor:[255,252,255]}]},{id:"elevation2",type:"multipart",colorRamps:[{fromColor:[118,219,211],toColor:[255,255,199]},{fromColor:[255,255,199],toColor:[255,255,128]},{fromColor:[255,255,128],toColor:[217,194,121]},{fromColor:[217,194,121],toColor:[135,96,38]},{fromColor:[135,96,38],toColor:[150,150,181]},{fromColor:[150,150,181],toColor:[181,150,181]},{fromColor:[181,150,181],toColor:[255,252,255]}]},{id:"errors",fromColor:[255,235,214],toColor:[196,10,10]},{id:"gray-light-to-dark",fromColor:[219,219,219],toColor:[69,69,69]},{id:"green-bright",fromColor:[204,255,204],toColor:[14,204,14]},{id:"green-light-to-dark",fromColor:[220,245,233],toColor:[34,102,51]},{id:"green-to-blue",type:"multipart",colorRamps:[{fromColor:[32,204,16],toColor:[0,242,242]},{fromColor:[0,242,242],toColor:[2,33,227]}]},{id:"orange-bright",fromColor:[255,235,204],toColor:[240,118,5]},{id:"orange-light-to-dark",fromColor:[250,233,212],toColor:[171,65,36]},{id:"partial-spectrum",type:"multipart",colorRamps:[{fromColor:[242,241,162],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,0,0]},{fromColor:[252,3,69],toColor:[176,7,237]},{fromColor:[176,7,237],toColor:[2,29,173]}]},{id:"partial-spectrum-1-diverging",type:"multipart",colorRamps:[{fromColor:[135,38,38],toColor:[240,149,12]},{fromColor:[240,149,12],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[74,80,181]},{fromColor:[74,80,181],toColor:[39,32,122]}]},{id:"partial-spectrum-2-diverging",type:"multipart",colorRamps:[{fromColor:[115,77,42],toColor:[201,137,52]},{fromColor:[201,137,52],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[91,63,176]},{fromColor:[91,63,176],toColor:[81,13,97]}]},{id:"pink-to-yellow-green-diverging-bright",type:"multipart",colorRamps:[{fromColor:[158,30,113],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[99,110,45]}]},{id:"pink-to-yellow-green-diverging-dark",type:"multipart",colorRamps:[{fromColor:[97,47,73],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[22,59,15]}]},{id:"precipitation",type:"multipart",colorRamps:[{fromColor:[194,82,60],toColor:[237,161,19]},{fromColor:[237,161,19],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[0,219,0]},{fromColor:[0,219,0],toColor:[32,153,143]},{fromColor:[32,153,143],toColor:[11,44,122]}]},{id:"prediction",type:"multipart",colorRamps:[{fromColor:[40,146,199],toColor:[250,250,100]},{fromColor:[250,250,100],toColor:[232,16,20]}]},{id:"purple-bright",fromColor:[255,204,255],toColor:[199,0,199]},{id:"purple-to-green-diverging-bright",type:"multipart",colorRamps:[{fromColor:[77,32,150],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[20,122,11]}]},{id:"purple-to-green-diverging-dark",type:"multipart",colorRamps:[{fromColor:[67,14,89],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[24,79,15]}]},{id:"purple-blue-bright",fromColor:[223,184,230],toColor:[112,12,242]},{id:"purple-blue-light-to-dark",fromColor:[229,213,242],toColor:[93,44,112]},{id:"purple-red-bright",fromColor:[255,204,225],toColor:[199,0,99]},{id:"purple-red-light-to-dark",fromColor:[250,215,246],toColor:[143,17,57]},{id:"red-bright",fromColor:[255,204,204],toColor:[219,0,0]},{id:"red-light-to-dark",fromColor:[255,224,224],toColor:[143,10,10]},{id:"red-to-blue-diverging-bright",type:"multipart",colorRamps:[{fromColor:[196,69,57],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[48,95,207]}]},{id:"red-to-blue-diverging-dark",type:"multipart",colorRamps:[{fromColor:[107,13,13],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[13,53,97]}]},{id:"red-to-green",type:"multipart",colorRamps:[{fromColor:[245,0,0],toColor:[245,245,0]},{fromColor:[245,245,0],toColor:[0,245,0]}]},{id:"red-to-green-diverging-bright",type:"multipart",colorRamps:[{fromColor:[186,20,20],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[54,145,33]}]},{id:"red-to-green-diverging-dark",type:"multipart",colorRamps:[{fromColor:[97,21,13],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[16,69,16]}]},{id:"slope",type:"multipart",colorRamps:[{fromColor:[56,168,0],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,0,0]}]},{id:"spectrum-full-bright",type:"multipart",colorRamps:[{fromColor:[255,0,0],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[0,255,255]},{fromColor:[0,255,255],toColor:[0,0,255]}]},{id:"spectrum-full-dark",type:"multipart",colorRamps:[{fromColor:[153,0,0],toColor:[153,153,0]},{fromColor:[153,153,0],toColor:[0,153,153]},{fromColor:[0,153,153],toColor:[0,0,153]}]},{id:"spectrum-full-light",type:"multipart",colorRamps:[{fromColor:[255,153,153],toColor:[255,255,153]},{fromColor:[255,255,153],toColor:[153,255,255]},{fromColor:[153,255,255],toColor:[153,153,255]}]},{id:"surface",type:"multipart",colorRamps:[{fromColor:[112,153,89],toColor:[242,238,162]},{fromColor:[242,238,162],toColor:[242,206,133]},{fromColor:[242,206,133],toColor:[194,140,124]},{fromColor:[194,140,124],toColor:[255,242,255]}]},{id:"temperature",type:"multipart",colorRamps:[{fromColor:[255,252,255],toColor:[255,0,255]},{fromColor:[255,0,255],toColor:[0,0,255]},{fromColor:[0,0,255],toColor:[0,255,255]},{fromColor:[0,255,255],toColor:[0,255,0]},{fromColor:[0,255,0],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,128,0]},{fromColor:[255,128,0],toColor:[128,0,0]}]},{id:"white-to-black",fromColor:[255,255,255],toColor:[0,0,0]},{id:"yellow-to-dark-red",type:"multipart",colorRamps:[{fromColor:[255,255,128],toColor:[242,167,46]},{fromColor:[242,167,46],toColor:[107,0,0]}]},{id:"yellow-to-green-to-dark-blue",type:"multipart",colorRamps:[{fromColor:[255,255,128],toColor:[56,224,9]},{fromColor:[56,224,9],toColor:[26,147,171]},{fromColor:[26,147,171],toColor:[12,16,120]}]},{id:"yellow-to-red",fromColor:[245,245,0],toColor:[255,0,0]},{id:"yellow-green-bright",fromColor:[236,252,204],toColor:[157,204,16]},{id:"yellow-green-light-to-dark",fromColor:[215,240,175],toColor:[96,107,45]}],a=new i({Aspect:"aspect","Black to White":"black-to-white","Blue Bright":"blue-bright","Blue Light to Dark":"blue-light-to-dark","Blue-Green Bright":"blue-green-bright","Blue-Green Light to Dark":"blue-green-light-to-dark","Brown Light to Dark":"brown-light-to-dark","Brown to Blue Green Diverging, Bright":"brown-to-blue-green-diverging-right","Brown to Blue Green Diverging, Dark":"brown-to-blue-green-diverging-dark","Coefficient Bias":"coefficient-bias","Cold to Hot Diverging":"cold-to-hot-diverging","Condition Number":"condition-number","Cyan to Purple":"cyan-to-purple","Cyan-Light to Blue-Dark":"cyan-light-to-blue-dark",Distance:"distance","Elevation #1":"elevation1","Elevation #2":"elevation2",Errors:"errors","Gray Light to Dark":"gray-light-to-dark","Green Bright":"green-bright","Green Light to Dark":"green-light-to-dark","Green to Blue":"green-to-blue","Orange Bright":"orange-bright","Orange Light to Dark":"orange-light-to-dark","Partial Spectrum":"partial-spectrum","Partial Spectrum 1 Diverging":"partial-spectrum-1-diverging","Partial Spectrum 2 Diverging":"partial-spectrum-2-diverging","Pink to YellowGreen Diverging, Bright":"pink-to-yellow-green-diverging-bright","Pink to YellowGreen Diverging, Dark":"pink-to-yellow-green-diverging-dark",Precipitation:"precipitation",Prediction:"prediction","Purple Bright":"purple-bright","Purple to Green Diverging, Bright":"purple-to-green-diverging-bright","Purple to Green Diverging, Dark":"purple-to-green-diverging-dark","Purple-Blue Bright":"purple-blue-bright","Purple-Blue Light to Dark":"purple-blue-light-to-dark","Purple-Red Bright":"purple-red-bright","Purple-Red Light to Dark":"purple-red-light-to-dark","Red Bright":"red-bright","Red Light to Dark":"red-light-to-dark","Red to Blue Diverging, Bright":"red-to-blue-diverging-bright","Red to Blue Diverging, Dark":"red-to-blue-diverging-dark","Red to Green":"red-to-green","Red to Green Diverging, Bright":"red-to-green-diverging-bright","Red to Green Diverging, Dark":"red-to-green-diverging-dark",Slope:"slope","Spectrum-Full Bright":"spectrum-full-bright","Spectrum-Full Dark":"spectrum-full-dark","Spectrum-Full Light":"spectrum-full-light",Surface:"surface",Temperature:"temperature","White to Black":"white-to-black","Yellow to Dark Red":"yellow-to-dark-red","Yellow to Green to Dark Blue":"yellow-to-green-to-dark-blue","Yellow to Red":"yellow-to-red","Yellow-Green Bright":"yellow-green-bright","Yellow-Green Light to Dark":"yellow-green-light-to-dark"});function p(o,r){if(!o||!r||o.length!==r.length)return!1;for(let t=0;t<o.length;t++)if(o[t]>r[t]+2||o[t]<r[t]-2)return!1;return!0}function g(o){const r=o.clone();return r.fromColor=o.toColor,r.toColor=o.fromColor,r.algorithm=o.algorithm,r}function u(o){if("multipart"===o.type){const r=o.clone();return r.colorRamps?.length?(r.colorRamps=r.colorRamps.reverse().map((o=>g(o))),r):r}return g(o)}function f(r,t){if(!r)return;const l=t??m;let e=null;return"algorithmic"===r.type?l.some((o=>{if(p(r.fromColor.toRgb(),o.fromColor)&&p(r.toColor.toRgb(),o.toColor))return e=o.id,!0})):"multipart"===r.type&&l.some((t=>{const l=r.colorRamps,i=t.colorRamps;if(l&&i&&l.length===i.length&&!i.some(((r,t)=>{if(!p(l[t].fromColor.toRgb(),new o(r.fromColor).toRgb())||!p(l[t].toColor.toRgb(),new o(r.toColor).toRgb()))return!0}))){if(e)return!0;e=t.id}})),e}function s(o,r,t=!1){if(!o)return;let l=f(o,r);return null!=l||t||(l=f(o=u(o),r)),l}function c(o,r=!1){const t="string"==typeof o?o:s(o,void 0,r);return t?a.toJSON(t):null}function d(o,r="esriCIELabAlgorithm"){const t=m.find((({id:r})=>r===o));return t?t.colorRamps?{type:"multipart",colorRamps:t.colorRamps.map((o=>({type:"algorithmic",algorithm:r,fromColor:[...o.fromColor],toColor:[...o.toColor]})))}:{type:"algorithmic",algorithm:r,fromColor:[...t.fromColor],toColor:[...t.toColor]}:null}function h(o){const r=(o=o||{}).numColors||256,t=o.distanceOffset||0,l=null!=o.isCustomInterval?o.isCustomInterval:null!==o.distanceInterval&&o.distanceInterval!==1/(r-1),e=o.distanceInterval||1/(r-1);return{...o,numColors:r,distanceOffset:t,interpolateAlpha:!!o.interpolateAlpha,distanceInterval:e,isCustomInterval:l,weights:o.weights}}function b(o,r,t){const{numColors:l,distanceOffset:e,distanceInterval:i,isCustomInterval:n}=t,C=0===o.s,m=0===r.s;let a=o.h,p=r.h;C&&!m?a=p:m&&!C&&(r={...r,h:a},p=a);let g,u=Math.abs(p-a);const f=360;u<f/2?g=(p-a)*i:(u=f-u,g=a>p?u*i:-u*i);const s=(r.s-o.s)*i,c=(r.v-o.v)*i;let{s:d,v:h}=o,b=a;if(e){const o=e/i;b=(b+o*g+f)%f,d+=o*s,h+=o*c}const v=[];for(let k=0;k<l-1;k++)v.push({h:b,s:d,v:h}),b=(b+g+f)%f,d+=s,h+=c;return v.push(n?{h:b,s:d,v:h}:r),v}function v(o,r,t){const{numColors:l,distanceOffset:e,distanceInterval:i,isCustomInterval:n}=t;let{l:C,a:m,b:a}=o;const p=(r.l-C)*i,g=(r.a-m)*i,u=(r.b-a)*i,f=[];if(e){const o=e/i;C+=o*p,m+=o*g,a+=o*u}for(let s=0;s<l-1;s++)f.push({l:C,a:m,b:a}),C+=p,m+=g,a+=u;return f.push(n?{l:C,a:m,b:a}:r),f}function k(o,r,t){const{numColors:l,distanceOffset:e,distanceInterval:i,isCustomInterval:n}=t,C=o.h,m=r.h,a=2*Math.PI;let p;if(C<=m){const o=m-C,r=m-C-a;p=Math.abs(r)<Math.abs(o)?r:o}else{const o=m+a-C,r=m-C;p=Math.abs(r)<Math.abs(o)?r:o}const g=p*i,u=(r.l-o.l)*i,f=(r.c-o.c)*i;let{l:s,c,h:d}=o;if(e){const o=e/i;s+=o*u,c+=o*f,d=(d+o*g+a)%a}const h=[];for(let b=0;b<l-1;b++)h.push({l:s,c,h:d}),s+=u,c+=f,d=(d+g+a)%a;return h.push(n?{l:s,c,h:d}:r),h}function y(o,i){let{fromColor:n,toColor:C}=o;n=[...n],C=[...C],3===n.length&&(n=n.concat([255])),3===C.length&&(C=C.concat([255]));const m=o.algorithm||"esriCIELabAlgorithm",a=h(i),{numColors:p,distanceOffset:g,isCustomInterval:u,interpolateAlpha:f}=a;if(1===p&&0===g)return[n];if(2===p&&0===g&&!u)return[n,C];const s={r:n[0],g:n[1],b:n[2]},c={r:C[0],g:C[1],b:C[2]},d="esriCIELabAlgorithm"===m?v(r(s),r(c),a):"esriHSVAlgorithm"===m?b(t(s),t(c),a):k(l(s),l(c),a),y=[],R=n[3]??255,w=((C[3]??255)-R)/(p-1);for(let r=0;r<p;r++){const{r:o,g:t,b:l}=e(d[r]),i=f?Math.round(R+w*r):255;y.push([o,t,l,i])}return y}function R(o,r){const{numColors:t,interpolateAlpha:l}=h(r);let e=r?.weights;const{colorRamps:i}=o;if(e){const o=e.reduce(((o,r)=>o+r));e=e.map((r=>r/o))}else{e=[];for(let o=0;o<i.length;o++)e[o]=1/i.length}const n=[];let C=0,m=0;const a=1/(t-1);let p=!1;for(let u=0;u<i.length;u++){let o=p?0:C*a-m,r=u===i.length-1?t-1-C:(e[u]-o)/a;if(p=Math.ceil(r)===r,r=Math.ceil(r),0===r)continue;o/=e[u];const g=y(i[u],{numColors:r,interpolateAlpha:l,distanceOffset:o,distanceInterval:a/e[u]});C+=g.length,n.push(...g),m+=e[u]}const g=[...i.at(-1).toColor];return 3===g.length&&g.push(255),n.push(g),n}function w(o,r){const t=n(o)?o.toJSON():o;return"multipart"===t.type?R(t,r):y(t,r)}function B(o,r){const t=w(o,r),l=r?.interpolateAlpha;return t.forEach(((o,r)=>{o.unshift(r),l||o.pop()})),t}function D(o){const r=t(o);return{type:"HsvColor",Hue:r.h,Saturation:r.s,Value:r.v,AlphaValue:255}}function I(o){const r=o.toJSON();return{Algorithm:r?.Algorithm||"esriHSVAlgorithm",type:"AlgorithmicColorRamp",FromColor:D(o.fromColor),ToColor:D(o.toColor)}}function G(o){const r=c(o);if(!r)return null;if("algorithmic"===o.type)return{...I(o),Name:r};if(o.colorRamps){const t=o.colorRamps.map(I);return{type:"MultiPartColorRamp",NumColorRamps:t.length,ArrayOfColorRamp:t,Name:r}}return null}function A(o){const r=o.reverse().map((o=>{const r=o.toString(16);return r.length<2?"0"+r:r}));return 4294967295&Number.parseInt(r.join(""),16)}export{m as PREDEFINED_JSON_COLOR_RAMPS,a as colorRampDict,B as convertColorRampToColormap,w as convertColorRampToColors,A as convertRGBATo32Bit,s as getColorRampId,d as getColorRampJSON,c as getColorRampName,G as getRFxArgColorRampValue,C as rasterColormapNames};
5
+ import o from"../../Color.js";import{toLAB as r,toHSV as t,toLCH as l,toRGB as e}from"../../core/colorUtils.js";import{JSONMap as i}from"../../core/jsonMap.js";import{isSerializable as n}from"../../core/JSONSupport.js";const C=["random","ndvi","ndvi2","ndvi3","elevation","gray","hillshade"],m=[{id:"aspect",type:"multipart",colorRamps:[{fromColor:[190,190,190],toColor:[255,45,8]},{fromColor:[255,45,8],toColor:[255,181,61]},{fromColor:[255,181,61],toColor:[255,254,52]},{fromColor:[255,254,52],toColor:[0,251,50]},{fromColor:[0,251,50],toColor:[255,254,52]},{fromColor:[0,253,255],toColor:[0,181,255]},{fromColor:[0,181,255],toColor:[26,35,253]},{fromColor:[26,35,253],toColor:[255,57,251]},{fromColor:[255,57,251],toColor:[255,45,8]}]},{id:"black-to-white",fromColor:[0,0,0],toColor:[255,255,255]},{id:"blue-bright",fromColor:[204,204,255],toColor:[0,0,224]},{id:"blue-light-to-dark",fromColor:[211,229,232],toColor:[46,100,140]},{id:"blue-green-bright",fromColor:[203,245,234],toColor:[48,207,146]},{id:"blue-green-light-to-dark",fromColor:[216,242,237],toColor:[21,79,74]},{id:"brown-light-to-dark",fromColor:[240,236,170],toColor:[102,72,48]},{id:"brown-to-blue-green-diverging-right",type:"multipart",colorRamps:[{fromColor:[156,85,31],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[33,130,145]}]},{id:"brown-to-blue-green-diverging-dark",type:"multipart",colorRamps:[{fromColor:[110,70,45],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[48,100,102]}]},{id:"coefficient-bias",fromColor:[214,214,255],toColor:[0,57,148]},{id:"cold-to-hot-diverging",type:"multipart",colorRamps:[{fromColor:[69,117,181],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[214,47,39]}]},{id:"condition-number",type:"multipart",colorRamps:[{fromColor:[0,97,0],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,34,0]}]},{id:"cyan-to-purple",type:"multipart",colorRamps:[{fromColor:[0,245,245],toColor:[0,0,245]},{fromColor:[0,0,245],toColor:[245,0,245]}]},{id:"cyan-light-to-blue-dark",type:"multipart",colorRamps:[{fromColor:[182,237,240],toColor:[31,131,224]},{fromColor:[31,131,224],toColor:[9,9,145]}]},{id:"distance",fromColor:[255,200,0],toColor:[0,0,255]},{id:"elevation1",type:"multipart",colorRamps:[{fromColor:[175,240,233],toColor:[255,255,179]},{fromColor:[255,255,179],toColor:[0,128,64]},{fromColor:[0,128,64],toColor:[252,186,3]},{fromColor:[252,186,3],toColor:[128,0,0]},{fromColor:[120,0,0],toColor:[105,48,13]},{fromColor:[105,48,13],toColor:[171,171,171]},{fromColor:[171,171,171],toColor:[255,252,255]}]},{id:"elevation2",type:"multipart",colorRamps:[{fromColor:[118,219,211],toColor:[255,255,199]},{fromColor:[255,255,199],toColor:[255,255,128]},{fromColor:[255,255,128],toColor:[217,194,121]},{fromColor:[217,194,121],toColor:[135,96,38]},{fromColor:[135,96,38],toColor:[150,150,181]},{fromColor:[150,150,181],toColor:[181,150,181]},{fromColor:[181,150,181],toColor:[255,252,255]}]},{id:"errors",fromColor:[255,235,214],toColor:[196,10,10]},{id:"gray-light-to-dark",fromColor:[219,219,219],toColor:[69,69,69]},{id:"green-bright",fromColor:[204,255,204],toColor:[14,204,14]},{id:"green-light-to-dark",fromColor:[220,245,233],toColor:[34,102,51]},{id:"green-to-blue",type:"multipart",colorRamps:[{fromColor:[32,204,16],toColor:[0,242,242]},{fromColor:[0,242,242],toColor:[2,33,227]}]},{id:"orange-bright",fromColor:[255,235,204],toColor:[240,118,5]},{id:"orange-light-to-dark",fromColor:[250,233,212],toColor:[171,65,36]},{id:"partial-spectrum",type:"multipart",colorRamps:[{fromColor:[242,241,162],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,0,0]},{fromColor:[252,3,69],toColor:[176,7,237]},{fromColor:[176,7,237],toColor:[2,29,173]}]},{id:"partial-spectrum-1-diverging",type:"multipart",colorRamps:[{fromColor:[135,38,38],toColor:[240,149,12]},{fromColor:[240,149,12],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[74,80,181]},{fromColor:[74,80,181],toColor:[39,32,122]}]},{id:"partial-spectrum-2-diverging",type:"multipart",colorRamps:[{fromColor:[115,77,42],toColor:[201,137,52]},{fromColor:[201,137,52],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[91,63,176]},{fromColor:[91,63,176],toColor:[81,13,97]}]},{id:"pink-to-yellow-green-diverging-bright",type:"multipart",colorRamps:[{fromColor:[158,30,113],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[99,110,45]}]},{id:"pink-to-yellow-green-diverging-dark",type:"multipart",colorRamps:[{fromColor:[97,47,73],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[22,59,15]}]},{id:"precipitation",type:"multipart",colorRamps:[{fromColor:[194,82,60],toColor:[237,161,19]},{fromColor:[237,161,19],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[0,219,0]},{fromColor:[0,219,0],toColor:[32,153,143]},{fromColor:[32,153,143],toColor:[11,44,122]}]},{id:"prediction",type:"multipart",colorRamps:[{fromColor:[40,146,199],toColor:[250,250,100]},{fromColor:[250,250,100],toColor:[232,16,20]}]},{id:"purple-bright",fromColor:[255,204,255],toColor:[199,0,199]},{id:"purple-to-green-diverging-bright",type:"multipart",colorRamps:[{fromColor:[77,32,150],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[20,122,11]}]},{id:"purple-to-green-diverging-dark",type:"multipart",colorRamps:[{fromColor:[67,14,89],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[24,79,15]}]},{id:"purple-blue-bright",fromColor:[223,184,230],toColor:[112,12,242]},{id:"purple-blue-light-to-dark",fromColor:[229,213,242],toColor:[93,44,112]},{id:"purple-red-bright",fromColor:[255,204,225],toColor:[199,0,99]},{id:"purple-red-light-to-dark",fromColor:[250,215,246],toColor:[143,17,57]},{id:"red-bright",fromColor:[255,204,204],toColor:[219,0,0]},{id:"red-light-to-dark",fromColor:[255,224,224],toColor:[143,10,10]},{id:"red-to-blue-diverging-bright",type:"multipart",colorRamps:[{fromColor:[196,69,57],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[48,95,207]}]},{id:"red-to-blue-diverging-dark",type:"multipart",colorRamps:[{fromColor:[107,13,13],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[13,53,97]}]},{id:"red-to-green",type:"multipart",colorRamps:[{fromColor:[245,0,0],toColor:[245,245,0]},{fromColor:[245,245,0],toColor:[0,245,0]}]},{id:"red-to-green-diverging-bright",type:"multipart",colorRamps:[{fromColor:[186,20,20],toColor:[255,255,191]},{fromColor:[255,255,191],toColor:[54,145,33]}]},{id:"red-to-green-diverging-dark",type:"multipart",colorRamps:[{fromColor:[97,21,13],toColor:[204,204,102]},{fromColor:[204,204,102],toColor:[16,69,16]}]},{id:"slope",type:"multipart",colorRamps:[{fromColor:[56,168,0],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,0,0]}]},{id:"spectrum-full-bright",type:"multipart",colorRamps:[{fromColor:[255,0,0],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[0,255,255]},{fromColor:[0,255,255],toColor:[0,0,255]}]},{id:"spectrum-full-dark",type:"multipart",colorRamps:[{fromColor:[153,0,0],toColor:[153,153,0]},{fromColor:[153,153,0],toColor:[0,153,153]},{fromColor:[0,153,153],toColor:[0,0,153]}]},{id:"spectrum-full-light",type:"multipart",colorRamps:[{fromColor:[255,153,153],toColor:[255,255,153]},{fromColor:[255,255,153],toColor:[153,255,255]},{fromColor:[153,255,255],toColor:[153,153,255]}]},{id:"surface",type:"multipart",colorRamps:[{fromColor:[112,153,89],toColor:[242,238,162]},{fromColor:[242,238,162],toColor:[242,206,133]},{fromColor:[242,206,133],toColor:[194,140,124]},{fromColor:[194,140,124],toColor:[255,242,255]}]},{id:"temperature",type:"multipart",colorRamps:[{fromColor:[255,252,255],toColor:[255,0,255]},{fromColor:[255,0,255],toColor:[0,0,255]},{fromColor:[0,0,255],toColor:[0,255,255]},{fromColor:[0,255,255],toColor:[0,255,0]},{fromColor:[0,255,0],toColor:[255,255,0]},{fromColor:[255,255,0],toColor:[255,128,0]},{fromColor:[255,128,0],toColor:[128,0,0]}]},{id:"white-to-black",fromColor:[255,255,255],toColor:[0,0,0]},{id:"yellow-to-dark-red",type:"multipart",colorRamps:[{fromColor:[255,255,128],toColor:[242,167,46]},{fromColor:[242,167,46],toColor:[107,0,0]}]},{id:"yellow-to-green-to-dark-blue",type:"multipart",colorRamps:[{fromColor:[255,255,128],toColor:[56,224,9]},{fromColor:[56,224,9],toColor:[26,147,171]},{fromColor:[26,147,171],toColor:[12,16,120]}]},{id:"yellow-to-red",fromColor:[245,245,0],toColor:[255,0,0]},{id:"yellow-green-bright",fromColor:[236,252,204],toColor:[157,204,16]},{id:"yellow-green-light-to-dark",fromColor:[215,240,175],toColor:[96,107,45]}],a=new i({Aspect:"aspect","Black to White":"black-to-white","Blue Bright":"blue-bright","Blue Light to Dark":"blue-light-to-dark","Blue-Green Bright":"blue-green-bright","Blue-Green Light to Dark":"blue-green-light-to-dark","Brown Light to Dark":"brown-light-to-dark","Brown to Blue Green Diverging, Bright":"brown-to-blue-green-diverging-right","Brown to Blue Green Diverging, Dark":"brown-to-blue-green-diverging-dark","Coefficient Bias":"coefficient-bias","Cold to Hot Diverging":"cold-to-hot-diverging","Condition Number":"condition-number","Cyan to Purple":"cyan-to-purple","Cyan-Light to Blue-Dark":"cyan-light-to-blue-dark",Distance:"distance","Elevation #1":"elevation1","Elevation #2":"elevation2",Errors:"errors","Gray Light to Dark":"gray-light-to-dark","Green Bright":"green-bright","Green Light to Dark":"green-light-to-dark","Green to Blue":"green-to-blue","Orange Bright":"orange-bright","Orange Light to Dark":"orange-light-to-dark","Partial Spectrum":"partial-spectrum","Partial Spectrum 1 Diverging":"partial-spectrum-1-diverging","Partial Spectrum 2 Diverging":"partial-spectrum-2-diverging","Pink to YellowGreen Diverging, Bright":"pink-to-yellow-green-diverging-bright","Pink to YellowGreen Diverging, Dark":"pink-to-yellow-green-diverging-dark",Precipitation:"precipitation",Prediction:"prediction","Purple Bright":"purple-bright","Purple to Green Diverging, Bright":"purple-to-green-diverging-bright","Purple to Green Diverging, Dark":"purple-to-green-diverging-dark","Purple-Blue Bright":"purple-blue-bright","Purple-Blue Light to Dark":"purple-blue-light-to-dark","Purple-Red Bright":"purple-red-bright","Purple-Red Light to Dark":"purple-red-light-to-dark","Red Bright":"red-bright","Red Light to Dark":"red-light-to-dark","Red to Blue Diverging, Bright":"red-to-blue-diverging-bright","Red to Blue Diverging, Dark":"red-to-blue-diverging-dark","Red to Green":"red-to-green","Red to Green Diverging, Bright":"red-to-green-diverging-bright","Red to Green Diverging, Dark":"red-to-green-diverging-dark",Slope:"slope","Spectrum-Full Bright":"spectrum-full-bright","Spectrum-Full Dark":"spectrum-full-dark","Spectrum-Full Light":"spectrum-full-light",Surface:"surface",Temperature:"temperature","White to Black":"white-to-black","Yellow to Dark Red":"yellow-to-dark-red","Yellow to Green to Dark Blue":"yellow-to-green-to-dark-blue","Yellow to Red":"yellow-to-red","Yellow-Green Bright":"yellow-green-bright","Yellow-Green Light to Dark":"yellow-green-light-to-dark"});function g(o,r){if(!o||!r||o.length!==r.length)return!1;for(let t=0;t<o.length;t++)if(o[t]>r[t]+2||o[t]<r[t]-2)return!1;return!0}function p(o){const r=o.clone();return r.fromColor=o.toColor,r.toColor=o.fromColor,r.algorithm=o.algorithm,r}function u(o){if("multipart"===o.type){const r=o.clone();return r.colorRamps?.length?(r.colorRamps=r.colorRamps.reverse().map((o=>p(o))),r):r}return p(o)}function f(r,t){if(!r)return;const l=t??m;let e=null;return"algorithmic"===r.type?l.some((o=>{if(g(r.fromColor.toRgb(),o.fromColor)&&g(r.toColor.toRgb(),o.toColor))return e=o.id,!0})):"multipart"===r.type&&l.some((t=>{const l=r.colorRamps,i=t.colorRamps;if(l&&i&&l.length===i.length&&!i.some(((r,t)=>{if(!g(l[t].fromColor.toRgb(),new o(r.fromColor).toRgb())||!g(l[t].toColor.toRgb(),new o(r.toColor).toRgb()))return!0}))){if(e)return!0;e=t.id}})),e}function s(o,r,t=!1){if(!o)return;let l=f(o,r);return null!=l||t||(l=f(o=u(o),r)),l}function c(o,r=!1){const t="string"==typeof o?o:s(o,void 0,r);return t?a.toJSON(t):null}function d(o,r="esriCIELabAlgorithm"){const t=m.find((({id:r})=>r===o));return t?t.colorRamps?{type:"multipart",colorRamps:t.colorRamps.map((o=>({type:"algorithmic",algorithm:r,fromColor:[...o.fromColor],toColor:[...o.toColor]})))}:{type:"algorithmic",algorithm:r,fromColor:[...t.fromColor],toColor:[...t.toColor]}:null}function h(o){const r=(o=o||{}).numColors||256,t=o.distanceOffset||0,l=null!=o.isCustomInterval?o.isCustomInterval:null!==o.distanceInterval&&o.distanceInterval!==1/(r-1),e=o.distanceInterval||1/(r-1);return{...o,numColors:r,distanceOffset:t,interpolateAlpha:!!o.interpolateAlpha,distanceInterval:e,isCustomInterval:l,weights:o.weights}}function b(o,r,t){const{numColors:l,distanceOffset:e,distanceInterval:i,isCustomInterval:n}=t,C=0===o.s,m=0===r.s;let a=o.h,g=r.h;C&&!m?a=g:m&&!C&&(r={...r,h:a},g=a);let p,u=Math.abs(g-a);const f=360;u<f/2?p=(g-a)*i:(u=f-u,p=a>g?u*i:-u*i);const s=(r.s-o.s)*i,c=(r.v-o.v)*i;let{s:d,v:h}=o,b=a;if(e){const o=e/i;b=(b+o*p+f)%f,d+=o*s,h+=o*c}const v=[];for(let k=0;k<l-1;k++)v.push({h:b,s:d,v:h}),b=(b+p+f)%f,d+=s,h+=c;return v.push(n?{h:b,s:d,v:h}:r),v}function v(o,r,t){const{numColors:l,distanceOffset:e,distanceInterval:i,isCustomInterval:n}=t;let{l:C,a:m,b:a}=o;const g=(r.l-C)*i,p=(r.a-m)*i,u=(r.b-a)*i,f=[];if(e){const o=e/i;C+=o*g,m+=o*p,a+=o*u}for(let s=0;s<l-1;s++)f.push({l:C,a:m,b:a}),C+=g,m+=p,a+=u;return f.push(n?{l:C,a:m,b:a}:r),f}function k(o,r,t){const{numColors:l,distanceOffset:e,distanceInterval:i,isCustomInterval:n}=t,C=o.h,m=r.h,a=2*Math.PI;let g;if(C<=m){const o=m-C,r=m-C-a;g=Math.abs(r)<Math.abs(o)?r:o}else{const o=m+a-C,r=m-C;g=Math.abs(r)<Math.abs(o)?r:o}const p=g*i,u=(r.l-o.l)*i,f=(r.c-o.c)*i;let{l:s,c,h:d}=o;if(e){const o=e/i;s+=o*u,c+=o*f,d=(d+o*p+a)%a}const h=[];for(let b=0;b<l-1;b++)h.push({l:s,c,h:d}),s+=u,c+=f,d=(d+p+a)%a;return h.push(n?{l:s,c,h:d}:r),h}function y(o,i){let{fromColor:n,toColor:C}=o;n=[...n],C=[...C],3===n.length&&(n=n.concat([255])),3===C.length&&(C=C.concat([255]));const m=o.algorithm||"esriCIELabAlgorithm",a=h(i),{numColors:g,distanceOffset:p,isCustomInterval:u,interpolateAlpha:f}=a;if(1===g&&0===p)return[n];if(2===g&&0===p&&!u)return[n,C];const s={r:n[0],g:n[1],b:n[2]},c={r:C[0],g:C[1],b:C[2]},d="esriCIELabAlgorithm"===m?v(r(s),r(c),a):"esriHSVAlgorithm"===m?b(t(s),t(c),a):k(l(s),l(c),a),y=[],R=n[3]??255,w=((C[3]??255)-R)/(g-1);for(let r=0;r<g;r++){const{r:o,g:t,b:l}=e(d[r]),i=f?Math.round(R+w*r):255;y.push([o,t,l,i])}return y}function R(o,r){const{numColors:t,interpolateAlpha:l}=h(r);let e=r?.weights;const{colorRamps:i}=o;if(e){const o=e.reduce(((o,r)=>o+r));e=e.map((r=>r/o))}else{e=[];for(let o=0;o<i.length;o++)e[o]=1/i.length}const n=[];let C=0,m=0;const a=1/(t-1);let g=!1;for(let u=0;u<i.length;u++){let o=g?0:C*a-m,r=u===i.length-1?t-1-C:(e[u]-o)/a;if(g=Math.ceil(r)===r,r=Math.ceil(r),0===r)continue;o/=e[u];const p=y(i[u],{numColors:r,interpolateAlpha:l,distanceOffset:o,distanceInterval:a/e[u]});C+=p.length,n.push(...p),m+=e[u]}const p=[...i[i.length-1].toColor];return 3===p.length&&p.push(255),n.push(p),n}function w(o,r){const t=n(o)?o.toJSON():o;return"multipart"===t.type?R(t,r):y(t,r)}function B(o,r){const t=w(o,r),l=r?.interpolateAlpha;return t.forEach(((o,r)=>{o.unshift(r),l||o.pop()})),t}function D(o){const r=t(o);return{type:"HsvColor",Hue:r.h,Saturation:r.s,Value:r.v,AlphaValue:255}}function I(o){const r=o.toJSON();return{Algorithm:r?.Algorithm||"esriHSVAlgorithm",type:"AlgorithmicColorRamp",FromColor:D(o.fromColor),ToColor:D(o.toColor)}}function G(o){const r=c(o);if(!r)return null;if("algorithmic"===o.type)return{...I(o),Name:r};if(o.colorRamps){const t=o.colorRamps.map(I);return{type:"MultiPartColorRamp",NumColorRamps:t.length,ArrayOfColorRamp:t,Name:r}}return null}function A(o){const r=o.reverse().map((o=>{const r=o.toString(16);return r.length<2?"0"+r:r}));return 4294967295&Number.parseInt(r.join(""),16)}export{m as PREDEFINED_JSON_COLOR_RAMPS,a as colorRampDict,B as convertColorRampToColormap,w as convertColorRampToColors,A as convertRGBATo32Bit,s as getColorRampId,d as getColorRampJSON,c as getColorRampName,G as getRFxArgColorRampValue,C as rasterColormapNames};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../Color.js";import a from"../../../Graphic.js";import{neverReached as n}from"../../../core/compilerUtils.js";import i from"../../../core/Logger.js";import{meterIn as r}from"../../support/lengthUtils.js";import{isSizeVariable as t,isValidNumber as s,TransformationType as l,InputValueType as o}from"./sizeVariableUtils.js";const c=i.getLogger("esri.renderers.visualVariables.support.visualVariableUtils"),u=new a,f=Math.PI,d=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i;function p(a,n,i){const r="visualVariables"in a&&a.visualVariables?a.visualVariables.find((e=>"color"===e.type)):a;if(!r)return;if("esri.renderers.visualVariables.ColorVariable"!==r.declaredClass)return void c.warn("The visualVariable should be an instance of esri.renderers.visualVariables.ColorVariable");const t="number"==typeof n,s=t?null:n,l=s&&s.attributes;let o=t?n:null;const u=r.field,{ipData:f,hasExpression:d}=r.cache;let p=r.cache.compiledFunc;if(!u&&!d){const e=r.stops;return e&&e[0]&&e[0].color}if("number"!=typeof o)if(d){if(null==i||null==i.arcade)return void c.error("Use of arcade expressions requires an arcade context");const e={viewingMode:i.viewingMode,scale:i.scale,spatialReference:i.spatialReference},a=i.arcade.arcadeUtils,n=a.getViewInfo(e),t=a.createExecContext(s,n);if(!p){const e=a.createSyntaxTree(r.valueExpression);p=a.createFunction(e),r.cache.compiledFunc=p}o=a.executeFunction(p,t)}else l&&(o=l[u]);const v=r.normalizationField,b=null!=l&&null!=v?parseFloat(l[v]):void 0;if(null!=o&&(!v||t||!isNaN(b)&&0!==b)){isNaN(b)||t||(o/=b);const a=k(o,f);if(a){const n=a[0],t=a[1],s=n===t?r.stops[n].color:e.blendColors(r.stops[n].color,r.stops[t].color,a[2],null!=i?i.color:void 0);return new e(s)}}}function v(e,a,n){const i="visualVariables"in e&&e.visualVariables?e.visualVariables.find((e=>"opacity"===e.type)):e;if(!i)return;if("esri.renderers.visualVariables.OpacityVariable"!==i.declaredClass)return void c.warn("The visualVariable should be an instance of esri.renderers.visualVariables.OpacityVariable");const r="number"==typeof a,t=r?null:a,s=t&&t.attributes;let l=r?a:null;const o=i.field,{ipData:u,hasExpression:f}=i.cache;let d=i.cache.compiledFunc;if(!o&&!f){const e=i.stops;return e&&e[0]&&e[0].opacity}if("number"!=typeof l)if(f){if(null==n||null==n.arcade)return void c.error("Use of arcade expressions requires an arcade context");const e={viewingMode:n.viewingMode,scale:n.scale,spatialReference:n.spatialReference},a=n.arcade.arcadeUtils,r=a.getViewInfo(e),s=a.createExecContext(t,r);if(!d){const e=a.createSyntaxTree(i.valueExpression);d=a.createFunction(e),i.cache.compiledFunc=d}l=a.executeFunction(d,s)}else s&&(l=s[o]);const p=i.normalizationField,v=null!=s&&null!=p?parseFloat(s[p]):void 0;if(null!=l&&(!p||r||!isNaN(v)&&0!==v)){isNaN(v)||r||(l/=v);const e=k(l,u);if(e){const a=e[0],n=e[1];if(a===n)return i.stops[a].opacity;{const r=i.stops[a].opacity;return r+(i.stops[n].opacity-r)*e[2]}}}}function b(e,a,n){const i="visualVariables"in e&&e.visualVariables?e.visualVariables.find((e=>"rotation"===e.type)):e;if(!i)return;if("esri.renderers.visualVariables.RotationVariable"!==i.declaredClass)return void c.warn("The visualVariable should be an instance of esri.renderers.visualVariables.RotationVariable");const r=i.axis||"heading",t="heading"===r&&"arithmetic"===i.rotationType?90:0,s="heading"===r&&"arithmetic"===i.rotationType?-1:1,l="number"==typeof a?null:a,o=l&&l.attributes,u=i.field,{hasExpression:f}=i.cache;let d=i.cache.compiledFunc,p=0;if(!u&&!f)return p;if(f){if(null==n||null==n.arcade)return void c.error("Use of arcade expressions requires an arcade context");const e={viewingMode:n.viewingMode,scale:n.scale,spatialReference:n.spatialReference},a=n.arcade.arcadeUtils,r=a.getViewInfo(e),t=a.createExecContext(l,r);if(!d){const e=a.createSyntaxTree(i.valueExpression);d=a.createFunction(e),i.cache.compiledFunc=d}p=a.executeFunction(d,t)}else o&&(p=o[u]||0);return p="number"!=typeof p||isNaN(p)?null:t+s*p,p}function h(e,a,n){const i="number"==typeof a,r=i?null:a,t=r&&r.attributes;let l=i?a:null;const{isScaleDriven:u}=e.cache;let f=e.cache.compiledFunc;if(u){const a=null!=n?n.scale:void 0,i=null!=n?n.view:void 0;l=null==a||"3d"===i?m(e):a}else if(!i)switch(e.inputValueType){case o.Expression:{if(null==n||null==n.arcade)return void c.error("Use of arcade expressions requires an arcade context");const a={viewingMode:n.viewingMode,scale:n.scale,spatialReference:n.spatialReference},i=n.arcade.arcadeUtils,t=i.getViewInfo(a),s=i.createExecContext(r,t);if(!f){const a=i.createSyntaxTree(e.valueExpression);f=i.createFunction(a),e.cache.compiledFunc=f}l=i.executeFunction(f,s);break}case o.Field:t&&(l=t[e.field]);break;case o.Unknown:l=null}if(!s(l))return null;if(i||!e.normalizationField)return l;const d=t?parseFloat(t[e.normalizationField]):null;return s(d)&&0!==d?l/d:null}function m(e){let a=null,n=null;const i=e.stops;return i?(a=i[0].value,n=i.at(-1).value):(a=e.minDataValue||0,n=e.maxDataValue||0),(a+n)/2}function V(e,a,n){const i="visualVariables"in e&&e.visualVariables?e.visualVariables.find((e=>"size"===e.type)):e;if(!i)return;if("esri.renderers.visualVariables.SizeVariable"!==i.declaredClass)return void c.warn("The visualVariable should be an instance of esri.renderers.visualVariables.SizeVariable");const r=C(h(i,a,n),i,a,n,i.cache.ipData);return null==r||isNaN(r)?0:r}function x(e,a,n){return null==e?null:t(e)?V(e,a,n):s(e)?e:null}function y(e,a,n){return s(n)&&e>n?n:s(a)&&e<a?a:e}function w(e,a,n,i){return e+((x(a.minSize,n,i)||a.minDataValue)??0)}function z(e,a,n){const i=e.stops;let r=i&&i.length&&i[0].size;return null==r&&(r=e.minSize),x(r,a,n)}function g(e,a,n,i){const r=(e-a.minDataValue)/(a.maxDataValue-a.minDataValue),t=x(a.minSize,n,i),s=x(a.maxSize,n,i),l=null!=i?i.shape:void 0;if(e<=a.minDataValue)return t;if(e>=a.maxDataValue)return s;if(null==t||null==s)return null;if("area"===a.scaleBy&&l){const e="circle"===l,a=e?f*(t/2)**2:t*t,n=a+r*((e?f*(s/2)**2:s*s)-a);return e?2*Math.sqrt(n/f):Math.sqrt(n)}return t+r*(s-t)}function F(e,a,n,i){const r=null!=i?i.shape:void 0,t=e/a.minDataValue,s=x(a.minSize,n,i),l=x(a.maxSize,n,i);let o=null;return o="circle"===r?2*Math.sqrt(t*(s/2)**2):"square"===r||"diamond"===r||"image"===r?Math.sqrt(t*s**2):t*s,y(o,s,l)}function S(e,a,n,i,r){const[t,s,l]=k(e,r);if(t===s)return x(a.stops?.[t].size,n,i);{const e=x(a.stops?.[t].size,n,i);return e+(x(a.stops?.[s].size,n,i)-e)*l}}function E(e,a,n,i){const t=(null!=i&&i.resolution?i.resolution:1)*r[a.valueUnit],s=x(a.minSize,n,i),l=x(a.maxSize,n,i),{valueRepresentation:o}=a;let c=null;return c="area"===o?2*Math.sqrt(e/f)/t:"radius"===o||"distance"===o?2*e/t:e/t,y(c,s,l)}function U(e){return e}function C(e,a,n,i,r){switch(a.transformationType){case l.Additive:return w(e,a,n,i);case l.Constant:return z(a,n,i);case l.ClampedLinear:return g(e,a,n,i);case l.Proportional:return F(e,a,n,i);case l.Stops:return S(e,a,n,i,r);case l.RealWorldSize:return E(e,a,n,i);case l.Identity:return U(e);case l.Unknown:return null}}function D(e,a,n){const{isScaleDriven:i}=e.cache;if(!(i&&"3d"===n||a))return null;const r={scale:a,view:n};let t=x(e.minSize,u,r),s=x(e.maxSize,u,r);if(null!=t||null!=s){if(t>s){const e=s;s=t,t=e}return{minSize:t,maxSize:s}}}function M(e,a,n){if(!e.visualVariables)return;const i=[],r=[],t=[],s=[],l=[];for(const o of e.visualVariables)switch(o.type){case"color":r.push(o);break;case"opacity":t.push(o);break;case"rotation":l.push(o);break;case"size":s.push(o)}return r.forEach((e=>{const r=p(e,a,n);i.push({variable:e,value:r})})),t.forEach((e=>{const r=v(e,a,n);i.push({variable:e,value:r})})),l.forEach((e=>{const r=b(e,a,n);i.push({variable:e,value:r})})),s.forEach((e=>{const r=V(e,a,n);i.push({variable:e,value:r})})),i.filter((e=>null!=e.value))}function k(e,a){if(!a)return;let n=0,i=a.length-1;return a.some(((a,r)=>e<a?(i=r,!0):(n=r,!1))),[n,i,(e-a[n])/(a[i]-a[n])]}function N(e,a,i){const r=["proportional","proportional","proportional"];for(const t of e){const e=t.useSymbolValue?"symbol-value":V(t,a,i);switch(t.axis){case"width":r[0]=e;break;case"depth":r[1]=e;break;case"height":r[2]=e;break;case"width-and-depth":r[0]=e,r[1]=e;break;case"all":case void 0:case null:r[0]=e,r[1]=e,r[2]=e;break;default:n(t.axis)}}return r}export{N as getAllSizes,p as getColor,v as getOpacity,b as getRotationAngle,V as getSize,C as getSizeForValue,x as getSizeFromNumberOrVariable,D as getSizeRangeAtScale,M as getVisualVariableValues,d as viewScaleRE};
5
+ import e from"../../../Color.js";import a from"../../../Graphic.js";import{neverReached as n}from"../../../core/compilerUtils.js";import i from"../../../core/Logger.js";import{meterIn as r}from"../../support/lengthUtils.js";import{isSizeVariable as t,isValidNumber as s,TransformationType as l,InputValueType as o}from"./sizeVariableUtils.js";const c=i.getLogger("esri.renderers.visualVariables.support.visualVariableUtils"),u=new a,f=Math.PI,d=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i;function p(a,n,i){const r="visualVariables"in a&&a.visualVariables?a.visualVariables.find((e=>"color"===e.type)):a;if(!r)return;if("esri.renderers.visualVariables.ColorVariable"!==r.declaredClass)return void c.warn("The visualVariable should be an instance of esri.renderers.visualVariables.ColorVariable");const t="number"==typeof n,s=t?null:n,l=s&&s.attributes;let o=t?n:null;const u=r.field,{ipData:f,hasExpression:d}=r.cache;let p=r.cache.compiledFunc;if(!u&&!d){const e=r.stops;return e&&e[0]&&e[0].color}if("number"!=typeof o)if(d){if(null==i||null==i.arcade)return void c.error("Use of arcade expressions requires an arcade context");const e={viewingMode:i.viewingMode,scale:i.scale,spatialReference:i.spatialReference},a=i.arcade.arcadeUtils,n=a.getViewInfo(e),t=a.createExecContext(s,n);if(!p){const e=a.createSyntaxTree(r.valueExpression);p=a.createFunction(e),r.cache.compiledFunc=p}o=a.executeFunction(p,t)}else l&&(o=l[u]);const v=r.normalizationField,b=null!=l&&null!=v?parseFloat(l[v]):void 0;if(null!=o&&(!v||t||!isNaN(b)&&0!==b)){isNaN(b)||t||(o/=b);const a=k(o,f);if(a){const n=a[0],t=a[1],s=n===t?r.stops[n].color:e.blendColors(r.stops[n].color,r.stops[t].color,a[2],null!=i?i.color:void 0);return new e(s)}}}function v(e,a,n){const i="visualVariables"in e&&e.visualVariables?e.visualVariables.find((e=>"opacity"===e.type)):e;if(!i)return;if("esri.renderers.visualVariables.OpacityVariable"!==i.declaredClass)return void c.warn("The visualVariable should be an instance of esri.renderers.visualVariables.OpacityVariable");const r="number"==typeof a,t=r?null:a,s=t&&t.attributes;let l=r?a:null;const o=i.field,{ipData:u,hasExpression:f}=i.cache;let d=i.cache.compiledFunc;if(!o&&!f){const e=i.stops;return e&&e[0]&&e[0].opacity}if("number"!=typeof l)if(f){if(null==n||null==n.arcade)return void c.error("Use of arcade expressions requires an arcade context");const e={viewingMode:n.viewingMode,scale:n.scale,spatialReference:n.spatialReference},a=n.arcade.arcadeUtils,r=a.getViewInfo(e),s=a.createExecContext(t,r);if(!d){const e=a.createSyntaxTree(i.valueExpression);d=a.createFunction(e),i.cache.compiledFunc=d}l=a.executeFunction(d,s)}else s&&(l=s[o]);const p=i.normalizationField,v=null!=s&&null!=p?parseFloat(s[p]):void 0;if(null!=l&&(!p||r||!isNaN(v)&&0!==v)){isNaN(v)||r||(l/=v);const e=k(l,u);if(e){const a=e[0],n=e[1];if(a===n)return i.stops[a].opacity;{const r=i.stops[a].opacity;return r+(i.stops[n].opacity-r)*e[2]}}}}function b(e,a,n){const i="visualVariables"in e&&e.visualVariables?e.visualVariables.find((e=>"rotation"===e.type)):e;if(!i)return;if("esri.renderers.visualVariables.RotationVariable"!==i.declaredClass)return void c.warn("The visualVariable should be an instance of esri.renderers.visualVariables.RotationVariable");const r=i.axis||"heading",t="heading"===r&&"arithmetic"===i.rotationType?90:0,s="heading"===r&&"arithmetic"===i.rotationType?-1:1,l="number"==typeof a?null:a,o=l&&l.attributes,u=i.field,{hasExpression:f}=i.cache;let d=i.cache.compiledFunc,p=0;if(!u&&!f)return p;if(f){if(null==n||null==n.arcade)return void c.error("Use of arcade expressions requires an arcade context");const e={viewingMode:n.viewingMode,scale:n.scale,spatialReference:n.spatialReference},a=n.arcade.arcadeUtils,r=a.getViewInfo(e),t=a.createExecContext(l,r);if(!d){const e=a.createSyntaxTree(i.valueExpression);d=a.createFunction(e),i.cache.compiledFunc=d}p=a.executeFunction(d,t)}else o&&(p=o[u]||0);return p="number"!=typeof p||isNaN(p)?null:t+s*p,p}function h(e,a,n){const i="number"==typeof a,r=i?null:a,t=r&&r.attributes;let l=i?a:null;const{isScaleDriven:u}=e.cache;let f=e.cache.compiledFunc;if(u){const a=null!=n?n.scale:void 0,i=null!=n?n.view:void 0;l=null==a||"3d"===i?m(e):a}else if(!i)switch(e.inputValueType){case o.Expression:{if(null==n||null==n.arcade)return void c.error("Use of arcade expressions requires an arcade context");const a={viewingMode:n.viewingMode,scale:n.scale,spatialReference:n.spatialReference},i=n.arcade.arcadeUtils,t=i.getViewInfo(a),s=i.createExecContext(r,t);if(!f){const a=i.createSyntaxTree(e.valueExpression);f=i.createFunction(a),e.cache.compiledFunc=f}l=i.executeFunction(f,s);break}case o.Field:t&&(l=t[e.field]);break;case o.Unknown:l=null}if(!s(l))return null;if(i||!e.normalizationField)return l;const d=t?parseFloat(t[e.normalizationField]):null;return s(d)&&0!==d?l/d:null}function m(e){let a=null,n=null;const i=e.stops;return i?(a=i[0].value,n=i[i.length-1].value):(a=e.minDataValue||0,n=e.maxDataValue||0),(a+n)/2}function V(e,a,n){const i="visualVariables"in e&&e.visualVariables?e.visualVariables.find((e=>"size"===e.type)):e;if(!i)return;if("esri.renderers.visualVariables.SizeVariable"!==i.declaredClass)return void c.warn("The visualVariable should be an instance of esri.renderers.visualVariables.SizeVariable");const r=C(h(i,a,n),i,a,n,i.cache.ipData);return null==r||isNaN(r)?0:r}function x(e,a,n){return null==e?null:t(e)?V(e,a,n):s(e)?e:null}function y(e,a,n){return s(n)&&e>n?n:s(a)&&e<a?a:e}function w(e,a,n,i){return e+((x(a.minSize,n,i)||a.minDataValue)??0)}function g(e,a,n){const i=e.stops;let r=i&&i.length&&i[0].size;return null==r&&(r=e.minSize),x(r,a,n)}function z(e,a,n,i){const r=(e-a.minDataValue)/(a.maxDataValue-a.minDataValue),t=x(a.minSize,n,i),s=x(a.maxSize,n,i),l=null!=i?i.shape:void 0;if(e<=a.minDataValue)return t;if(e>=a.maxDataValue)return s;if(null==t||null==s)return null;if("area"===a.scaleBy&&l){const e="circle"===l,a=e?f*(t/2)**2:t*t,n=a+r*((e?f*(s/2)**2:s*s)-a);return e?2*Math.sqrt(n/f):Math.sqrt(n)}return t+r*(s-t)}function F(e,a,n,i){const r=null!=i?i.shape:void 0,t=e/a.minDataValue,s=x(a.minSize,n,i),l=x(a.maxSize,n,i);let o=null;return o="circle"===r?2*Math.sqrt(t*(s/2)**2):"square"===r||"diamond"===r||"image"===r?Math.sqrt(t*s**2):t*s,y(o,s,l)}function S(e,a,n,i,r){const[t,s,l]=k(e,r);if(t===s)return x(a.stops?.[t].size,n,i);{const e=x(a.stops?.[t].size,n,i);return e+(x(a.stops?.[s].size,n,i)-e)*l}}function E(e,a,n,i){const t=(null!=i&&i.resolution?i.resolution:1)*r[a.valueUnit],s=x(a.minSize,n,i),l=x(a.maxSize,n,i),{valueRepresentation:o}=a;let c=null;return c="area"===o?2*Math.sqrt(e/f)/t:"radius"===o||"distance"===o?2*e/t:e/t,y(c,s,l)}function U(e){return e}function C(e,a,n,i,r){switch(a.transformationType){case l.Additive:return w(e,a,n,i);case l.Constant:return g(a,n,i);case l.ClampedLinear:return z(e,a,n,i);case l.Proportional:return F(e,a,n,i);case l.Stops:return S(e,a,n,i,r);case l.RealWorldSize:return E(e,a,n,i);case l.Identity:return U(e);case l.Unknown:return null}}function D(e,a,n){const{isScaleDriven:i}=e.cache;if(!(i&&"3d"===n||a))return null;const r={scale:a,view:n};let t=x(e.minSize,u,r),s=x(e.maxSize,u,r);if(null!=t||null!=s){if(t>s){const e=s;s=t,t=e}return{minSize:t,maxSize:s}}}function M(e,a,n){if(!e.visualVariables)return;const i=[],r=[],t=[],s=[],l=[];for(const o of e.visualVariables)switch(o.type){case"color":r.push(o);break;case"opacity":t.push(o);break;case"rotation":l.push(o);break;case"size":s.push(o)}return r.forEach((e=>{const r=p(e,a,n);i.push({variable:e,value:r})})),t.forEach((e=>{const r=v(e,a,n);i.push({variable:e,value:r})})),l.forEach((e=>{const r=b(e,a,n);i.push({variable:e,value:r})})),s.forEach((e=>{const r=V(e,a,n);i.push({variable:e,value:r})})),i.filter((e=>null!=e.value))}function k(e,a){if(!a)return;let n=0,i=a.length-1;return a.some(((a,r)=>e<a?(i=r,!0):(n=r,!1))),[n,i,(e-a[n])/(a[i]-a[n])]}function N(e,a,i){const r=["proportional","proportional","proportional"];for(const t of e){const e=t.useSymbolValue?"symbol-value":V(t,a,i);switch(t.axis){case"width":r[0]=e;break;case"depth":r[1]=e;break;case"height":r[2]=e;break;case"width-and-depth":r[0]=e,r[1]=e;break;case"all":case void 0:case null:r[0]=e,r[1]=e,r[2]=e;break;default:n(t.axis)}}return r}export{N as getAllSizes,p as getColor,v as getOpacity,b as getRotationAngle,V as getSize,C as getSizeForValue,x as getSizeFromNumberOrVariable,D as getSizeRangeAtScale,M as getVisualVariableValues,d as viewScaleRE};
@@ -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{neverReached as t}from"../../../core/compilerUtils.js";import{generateUID as e}from"../../../core/uid.js";import r from"../../../geometry/SpatialReference.js";import{getGeometryZScaler as s}from"../../../geometry/support/zscale.js";import{DehydratedFeatureSetClass as o,DehydratedFeatureClass as i}from"../../../layers/graphics/dehydratedFeatures.js";import{unquantizeOptimizedGeometry as n,convertToGeometry as a}from"../../../layers/graphics/featureConversionUtils.js";import h from"../../../layers/support/Field.js";function l(t,e){return e}function u(t,e,r,s){switch(r){case 0:return f(t,e+s,0);case 1:return"lowerLeft"===t.originPosition?f(t,e+s,1):y(t,e+s,1)}}function p(t,e,r,s){return 2===r?f(t,e,2):u(t,e,r,s)}function c(t,e,r,s){return 2===r?f(t,e,3):u(t,e,r,s)}function d(t,e,r,s){return 3===r?f(t,e,3):p(t,e,r,s)}function f({translate:t,scale:e},r,s){return t[s]+r*e[s]}function y({translate:t,scale:e},r,s){return t[s]-r*e[s]}class m{constructor(t){this._options=t,this.geometryTypes=["point","multipoint","polyline","polygon"],this._previousCoordinate=[0,0],this._transform=null,this._applyTransform=l,this._lengths=[],this._currentLengthIndex=0,this._toAddInCurrentPath=0,this._vertexDimension=0,this._coordinateBuffer=null,this._coordinateBufferPtr=0,this._attributesConstructor=class{}}createFeatureResult(){return new o}finishFeatureResult(t){if(this._options.applyTransform&&(t.transform=null),this._attributesConstructor=class{},this._coordinateBuffer=null,this._lengths.length=0,!t.hasZ)return;const e=s(t.geometryType,this._options.sourceSpatialReference,t.spatialReference);if(null!=e)for(const r of t.features)e(r.geometry)}createSpatialReference(){return new r}addField(t,e){t.fields.push(h.fromJSON(e));const r=t.fields.map((t=>t.name));this._attributesConstructor=function(){for(const t of r)this[t]=null}}addFeature(t,e){const r=this._options.maxStringAttributeLength??0;if(r>0)for(const s in e.attributes){const t=e.attributes[s];"string"==typeof t&&t.length>r&&(e.attributes[s]="")}t.features.push(e)}addQueryGeometry(t,e){const{queryGeometry:r,queryGeometryType:s}=e,o=n(r.clone(),r,!1,!1,this._transform),i=a(o,s,!1,!1);let h=null;switch(s){case"esriGeometryPoint":h="point";break;case"esriGeometryPolygon":h="polygon";break;case"esriGeometryPolyline":h="polyline";break;case"esriGeometryMultipoint":h="multipoint"}i.type=h,t.queryGeometryType=s,t.queryGeometry=i}prepareFeatures(e){switch(this._transform=e.transform??null,this._options.applyTransform&&e.transform&&(this._applyTransform=this._deriveApplyTransform(e)),this._vertexDimension=2,e.hasZ&&this._vertexDimension++,e.hasM&&this._vertexDimension++,e.geometryType){case"point":this.addCoordinate=(t,e,r)=>this.addCoordinatePoint(t,e,r),this.createGeometry=t=>this.createPointGeometry(t);break;case"polygon":this.addCoordinate=(t,e,r)=>this._addCoordinatePolygon(t,e,r),this.createGeometry=t=>this._createPolygonGeometry(t);break;case"polyline":this.addCoordinate=(t,e,r)=>this._addCoordinatePolyline(t,e,r),this.createGeometry=t=>this._createPolylineGeometry(t);break;case"multipoint":this.addCoordinate=(t,e,r)=>this._addCoordinateMultipoint(t,e,r),this.createGeometry=t=>this._createMultipointGeometry(t);break;case"mesh":case"extent":break;default:t(e.geometryType)}}createFeature(){return this._lengths.length=0,this._currentLengthIndex=0,this._previousCoordinate[0]=0,this._previousCoordinate[1]=0,new i(e(),null,new this._attributesConstructor)}allocateCoordinates(){const t=this._lengths.reduce(((t,e)=>t+e),0);this._coordinateBuffer=new Float64Array(t*this._vertexDimension),this._coordinateBufferPtr=0}addLength(t,e){0===this._lengths.length&&(this._toAddInCurrentPath=e),this._lengths.push(e)}createPointGeometry(t){const e={type:"point",x:0,y:0,spatialReference:t.spatialReference,hasZ:!!t.hasZ,hasM:!!t.hasM};return e.hasZ&&(e.z=0),e.hasM&&(e.m=0),e}addCoordinatePoint(t,e,r){const s=this._transform?this._applyTransform(this._transform,e,r,0):e;if(null!=s)switch(r){case 0:t.x=s;break;case 1:t.y=s;break;case 2:t.hasZ?t.z=s:t.m=s;break;case 3:t.m=s}}_transformPathLikeValue(t,e){let r=0;return e<=1&&(r=this._previousCoordinate[e],this._previousCoordinate[e]+=t),this._transform?this._applyTransform(this._transform,t,e,r):t}_addCoordinatePolyline(t,e,r){this._dehydratedAddPointsCoordinate(t.paths,e,r)}_addCoordinatePolygon(t,e,r){this._dehydratedAddPointsCoordinate(t.rings,e,r)}_addCoordinateMultipoint(t,e,r){0===r&&t.points.push([]);const s=this._transformPathLikeValue(e,r);t.points.at(-1).push(s)}_createPolygonGeometry(t){return{type:"polygon",rings:[[]],spatialReference:t.spatialReference,hasZ:!!t.hasZ,hasM:!!t.hasM}}_createPolylineGeometry(t){return{type:"polyline",paths:[[]],spatialReference:t.spatialReference,hasZ:!!t.hasZ,hasM:!!t.hasM}}_createMultipointGeometry(t){return{type:"multipoint",points:[],spatialReference:t.spatialReference,hasZ:!!t.hasZ,hasM:!!t.hasM}}_dehydratedAddPointsCoordinate(t,e,r){0===r&&0==this._toAddInCurrentPath--&&(t.push([]),this._toAddInCurrentPath=this._lengths[++this._currentLengthIndex]-1,this._previousCoordinate[0]=0,this._previousCoordinate[1]=0);const s=this._transformPathLikeValue(e,r),o=t.at(-1),i=this._coordinateBuffer;if(i){if(0===r){const t=this._coordinateBufferPtr*Float64Array.BYTES_PER_ELEMENT;o.push(new Float64Array(i.buffer,t,this._vertexDimension))}i[this._coordinateBufferPtr++]=s}}_deriveApplyTransform(t){const{hasZ:e,hasM:r}=t;return e&&r?d:e?p:r?c:u}}export{m as DehydratedFeatureSetParserContext};
5
+ import{neverReached as t}from"../../../core/compilerUtils.js";import{generateUID as e}from"../../../core/uid.js";import r from"../../../geometry/SpatialReference.js";import{getGeometryZScaler as s}from"../../../geometry/support/zscale.js";import{DehydratedFeatureSetClass as o,DehydratedFeatureClass as i}from"../../../layers/graphics/dehydratedFeatures.js";import{unquantizeOptimizedGeometry as n,convertToGeometry as a}from"../../../layers/graphics/featureConversionUtils.js";import h from"../../../layers/support/Field.js";function l(t,e){return e}function u(t,e,r,s){switch(r){case 0:return f(t,e+s,0);case 1:return"lowerLeft"===t.originPosition?f(t,e+s,1):y(t,e+s,1)}}function p(t,e,r,s){return 2===r?f(t,e,2):u(t,e,r,s)}function c(t,e,r,s){return 2===r?f(t,e,3):u(t,e,r,s)}function d(t,e,r,s){return 3===r?f(t,e,3):p(t,e,r,s)}function f({translate:t,scale:e},r,s){return t[s]+r*e[s]}function y({translate:t,scale:e},r,s){return t[s]-r*e[s]}class m{constructor(t){this._options=t,this.geometryTypes=["point","multipoint","polyline","polygon"],this._previousCoordinate=[0,0],this._transform=null,this._applyTransform=l,this._lengths=[],this._currentLengthIndex=0,this._toAddInCurrentPath=0,this._vertexDimension=0,this._coordinateBuffer=null,this._coordinateBufferPtr=0,this._attributesConstructor=class{}}createFeatureResult(){return new o}finishFeatureResult(t){if(this._options.applyTransform&&(t.transform=null),this._attributesConstructor=class{},this._coordinateBuffer=null,this._lengths.length=0,!t.hasZ)return;const e=s(t.geometryType,this._options.sourceSpatialReference,t.spatialReference);if(null!=e)for(const r of t.features)e(r.geometry)}createSpatialReference(){return new r}addField(t,e){t.fields.push(h.fromJSON(e));const r=t.fields.map((t=>t.name));this._attributesConstructor=function(){for(const t of r)this[t]=null}}addFeature(t,e){const r=this._options.maxStringAttributeLength??0;if(r>0)for(const s in e.attributes){const t=e.attributes[s];"string"==typeof t&&t.length>r&&(e.attributes[s]="")}t.features.push(e)}addQueryGeometry(t,e){const{queryGeometry:r,queryGeometryType:s}=e,o=n(r.clone(),r,!1,!1,this._transform),i=a(o,s,!1,!1);let h=null;switch(s){case"esriGeometryPoint":h="point";break;case"esriGeometryPolygon":h="polygon";break;case"esriGeometryPolyline":h="polyline";break;case"esriGeometryMultipoint":h="multipoint"}i.type=h,t.queryGeometryType=s,t.queryGeometry=i}prepareFeatures(e){switch(this._transform=e.transform??null,this._options.applyTransform&&e.transform&&(this._applyTransform=this._deriveApplyTransform(e)),this._vertexDimension=2,e.hasZ&&this._vertexDimension++,e.hasM&&this._vertexDimension++,e.geometryType){case"point":this.addCoordinate=(t,e,r)=>this.addCoordinatePoint(t,e,r),this.createGeometry=t=>this.createPointGeometry(t);break;case"polygon":this.addCoordinate=(t,e,r)=>this._addCoordinatePolygon(t,e,r),this.createGeometry=t=>this._createPolygonGeometry(t);break;case"polyline":this.addCoordinate=(t,e,r)=>this._addCoordinatePolyline(t,e,r),this.createGeometry=t=>this._createPolylineGeometry(t);break;case"multipoint":this.addCoordinate=(t,e,r)=>this._addCoordinateMultipoint(t,e,r),this.createGeometry=t=>this._createMultipointGeometry(t);break;case"mesh":case"extent":break;default:t(e.geometryType)}}createFeature(){return this._lengths.length=0,this._currentLengthIndex=0,this._previousCoordinate[0]=0,this._previousCoordinate[1]=0,new i(e(),null,new this._attributesConstructor)}allocateCoordinates(){const t=this._lengths.reduce(((t,e)=>t+e),0);this._coordinateBuffer=new Float64Array(t*this._vertexDimension),this._coordinateBufferPtr=0}addLength(t,e){0===this._lengths.length&&(this._toAddInCurrentPath=e),this._lengths.push(e)}createPointGeometry(t){const e={type:"point",x:0,y:0,spatialReference:t.spatialReference,hasZ:!!t.hasZ,hasM:!!t.hasM};return e.hasZ&&(e.z=0),e.hasM&&(e.m=0),e}addCoordinatePoint(t,e,r){const s=this._transform?this._applyTransform(this._transform,e,r,0):e;if(null!=s)switch(r){case 0:t.x=s;break;case 1:t.y=s;break;case 2:t.hasZ?t.z=s:t.m=s;break;case 3:t.m=s}}_transformPathLikeValue(t,e){let r=0;return e<=1&&(r=this._previousCoordinate[e],this._previousCoordinate[e]+=t),this._transform?this._applyTransform(this._transform,t,e,r):t}_addCoordinatePolyline(t,e,r){this._dehydratedAddPointsCoordinate(t.paths,e,r)}_addCoordinatePolygon(t,e,r){this._dehydratedAddPointsCoordinate(t.rings,e,r)}_addCoordinateMultipoint(t,e,r){0===r&&t.points.push([]);const s=this._transformPathLikeValue(e,r);t.points[t.points.length-1].push(s)}_createPolygonGeometry(t){return{type:"polygon",rings:[[]],spatialReference:t.spatialReference,hasZ:!!t.hasZ,hasM:!!t.hasM}}_createPolylineGeometry(t){return{type:"polyline",paths:[[]],spatialReference:t.spatialReference,hasZ:!!t.hasZ,hasM:!!t.hasM}}_createMultipointGeometry(t){return{type:"multipoint",points:[],spatialReference:t.spatialReference,hasZ:!!t.hasZ,hasM:!!t.hasM}}_dehydratedAddPointsCoordinate(t,e,r){0===r&&0==this._toAddInCurrentPath--&&(t.push([]),this._toAddInCurrentPath=this._lengths[++this._currentLengthIndex]-1,this._previousCoordinate[0]=0,this._previousCoordinate[1]=0);const s=this._transformPathLikeValue(e,r),o=t[t.length-1],i=this._coordinateBuffer;if(i){if(0===r){const t=this._coordinateBufferPtr*Float64Array.BYTES_PER_ELEMENT;o.push(new Float64Array(i.buffer,t,this._vertexDimension))}i[this._coordinateBufferPtr++]=s}}_deriveApplyTransform(t){const{hasZ:e,hasM:r}=t;return e&&r?d:e?p:r?c:u}}export{m as DehydratedFeatureSetParserContext};
@@ -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{assertIsSome as e}from"../../../core/maybe.js";import{getGeometryZScaler as t}from"../../../geometry/support/zscale.js";import{unquantizeOptimizedGeometry as r,convertToGeometry as s}from"../../../layers/graphics/featureConversionUtils.js";function o(e,t){return t}function i(e,t,r,s){switch(r){case 0:return u(e,t+s,0);case 1:return"lowerLeft"===e.originPosition?u(e,t+s,1):d(e,t+s,1)}}function n(e,t,r,s){return 2===r?u(e,t,2):i(e,t,r,s)}function a(e,t,r,s){return 2===r?u(e,t,3):i(e,t,r,s)}function h(e,t,r,s){return 3===r?u(e,t,3):n(e,t,r,s)}function u({translate:e,scale:t},r,s){return e[s]+r*t[s]}function d({translate:e,scale:t},r,s){return e[s]-r*t[s]}class c{constructor(e){this._options=e,this.geometryTypes=["esriGeometryPoint","esriGeometryMultipoint","esriGeometryPolyline","esriGeometryPolygon"],this._previousCoordinate=[0,0],this._transform=null,this._applyTransform=o,this._lengths=[],this._currentLengthIndex=0,this._toAddInCurrentPath=0,this._vertexDimension=0,this._coordinateBuffer=null,this._coordinateBufferPtr=0,this._attributesConstructor=class{}}createFeatureResult(){return{fields:[],features:[]}}finishFeatureResult(e){if(this._options.applyTransform&&(e.transform=null),this._attributesConstructor=class{},this._coordinateBuffer=null,this._lengths.length=0,!e.hasZ)return;const r=t(e.geometryType,this._options.sourceSpatialReference,e.spatialReference);if(null!=r)for(const t of e.features)r(t.geometry)}createSpatialReference(){return{}}addField(t,r){const s=t.fields;e(s),s.push(r);const o=s.map((e=>e.name));this._attributesConstructor=function(){for(const e of o)this[e]=null}}addFeature(e,t){e.features.push(t)}prepareFeatures(e){switch(this._transform=e.transform,this._options.applyTransform&&e.transform&&(this._applyTransform=this._deriveApplyTransform(e)),this._vertexDimension=2,e.hasZ&&this._vertexDimension++,e.hasM&&this._vertexDimension++,e.geometryType){case"esriGeometryPoint":this.addCoordinate=(e,t,r)=>this.addCoordinatePoint(e,t,r),this.createGeometry=e=>this.createPointGeometry(e);break;case"esriGeometryPolygon":this.addCoordinate=(e,t,r)=>this._addCoordinatePolygon(e,t,r),this.createGeometry=e=>this._createPolygonGeometry(e);break;case"esriGeometryPolyline":this.addCoordinate=(e,t,r)=>this._addCoordinatePolyline(e,t,r),this.createGeometry=e=>this._createPolylineGeometry(e);break;case"esriGeometryMultipoint":this.addCoordinate=(e,t,r)=>this._addCoordinateMultipoint(e,t,r),this.createGeometry=e=>this._createMultipointGeometry(e)}}createFeature(){return this._lengths.length=0,this._currentLengthIndex=0,this._previousCoordinate[0]=0,this._previousCoordinate[1]=0,this._coordinateBuffer=null,this._coordinateBufferPtr=0,{attributes:new this._attributesConstructor}}allocateCoordinates(){}addLength(e,t,r){0===this._lengths.length&&(this._toAddInCurrentPath=t),this._lengths.push(t)}addQueryGeometry(e,t){const{queryGeometry:o,queryGeometryType:i}=t,n=r(o.clone(),o,!1,!1,this._transform),a=s(n,i,!1,!1);e.queryGeometryType=i,e.queryGeometry={...a}}createPointGeometry(e){const t={x:0,y:0,spatialReference:e.spatialReference};return e.hasZ&&(t.z=0),e.hasM&&(t.m=0),t}addCoordinatePoint(e,t,r){const s=this._transform;switch(t=this._applyTransform(s,t,r,0),r){case 0:e.x=t;break;case 1:e.y=t;break;case 2:"z"in e?e.z=t:e.m=t;break;case 3:e.m=t}}_transformPathLikeValue(e,t){let r=0;t<=1&&(r=this._previousCoordinate[t],this._previousCoordinate[t]+=e);const s=this._transform;return this._applyTransform(s,e,t,r)}_addCoordinatePolyline(e,t,r){this._dehydratedAddPointsCoordinate(e.paths,t,r)}_addCoordinatePolygon(e,t,r){this._dehydratedAddPointsCoordinate(e.rings,t,r)}_addCoordinateMultipoint(e,t,r){0===r&&e.points.push([]);const s=this._transformPathLikeValue(t,r);e.points.at(-1)?.push(s)}_createPolygonGeometry(e){return{rings:[[]],spatialReference:e.spatialReference,hasZ:!!e.hasZ,hasM:!!e.hasM}}_createPolylineGeometry(e){return{paths:[[]],spatialReference:e.spatialReference,hasZ:!!e.hasZ,hasM:!!e.hasM}}_createMultipointGeometry(e){return{points:[],spatialReference:e.spatialReference,hasZ:!!e.hasZ,hasM:!!e.hasM}}_dehydratedAddPointsCoordinate(e,t,r){0===r&&0==this._toAddInCurrentPath--&&(e.push([]),this._toAddInCurrentPath=this._lengths[++this._currentLengthIndex]-1,this._previousCoordinate[0]=0,this._previousCoordinate[1]=0);const s=this._transformPathLikeValue(t,r),o=e.at(-1);0===r&&(this._coordinateBufferPtr=0,this._coordinateBuffer=new Array(this._vertexDimension),o?.push(this._coordinateBuffer)),this._coordinateBuffer[this._coordinateBufferPtr++]=s}_deriveApplyTransform(e){const{hasZ:t,hasM:r}=e;return t&&r?h:t?n:r?a:i}}export{c as JSONFeatureSetParserContext};
5
+ import{assertIsSome as e}from"../../../core/maybe.js";import{getGeometryZScaler as t}from"../../../geometry/support/zscale.js";import{unquantizeOptimizedGeometry as r,convertToGeometry as s}from"../../../layers/graphics/featureConversionUtils.js";function o(e,t){return t}function i(e,t,r,s){switch(r){case 0:return u(e,t+s,0);case 1:return"lowerLeft"===e.originPosition?u(e,t+s,1):d(e,t+s,1)}}function n(e,t,r,s){return 2===r?u(e,t,2):i(e,t,r,s)}function a(e,t,r,s){return 2===r?u(e,t,3):i(e,t,r,s)}function h(e,t,r,s){return 3===r?u(e,t,3):n(e,t,r,s)}function u({translate:e,scale:t},r,s){return e[s]+r*t[s]}function d({translate:e,scale:t},r,s){return e[s]-r*t[s]}class l{constructor(e){this._options=e,this.geometryTypes=["esriGeometryPoint","esriGeometryMultipoint","esriGeometryPolyline","esriGeometryPolygon"],this._previousCoordinate=[0,0],this._transform=null,this._applyTransform=o,this._lengths=[],this._currentLengthIndex=0,this._toAddInCurrentPath=0,this._vertexDimension=0,this._coordinateBuffer=null,this._coordinateBufferPtr=0,this._attributesConstructor=class{}}createFeatureResult(){return{fields:[],features:[]}}finishFeatureResult(e){if(this._options.applyTransform&&(e.transform=null),this._attributesConstructor=class{},this._coordinateBuffer=null,this._lengths.length=0,!e.hasZ)return;const r=t(e.geometryType,this._options.sourceSpatialReference,e.spatialReference);if(null!=r)for(const t of e.features)r(t.geometry)}createSpatialReference(){return{}}addField(t,r){const s=t.fields;e(s),s.push(r);const o=s.map((e=>e.name));this._attributesConstructor=function(){for(const e of o)this[e]=null}}addFeature(e,t){e.features.push(t)}prepareFeatures(e){switch(this._transform=e.transform,this._options.applyTransform&&e.transform&&(this._applyTransform=this._deriveApplyTransform(e)),this._vertexDimension=2,e.hasZ&&this._vertexDimension++,e.hasM&&this._vertexDimension++,e.geometryType){case"esriGeometryPoint":this.addCoordinate=(e,t,r)=>this.addCoordinatePoint(e,t,r),this.createGeometry=e=>this.createPointGeometry(e);break;case"esriGeometryPolygon":this.addCoordinate=(e,t,r)=>this._addCoordinatePolygon(e,t,r),this.createGeometry=e=>this._createPolygonGeometry(e);break;case"esriGeometryPolyline":this.addCoordinate=(e,t,r)=>this._addCoordinatePolyline(e,t,r),this.createGeometry=e=>this._createPolylineGeometry(e);break;case"esriGeometryMultipoint":this.addCoordinate=(e,t,r)=>this._addCoordinateMultipoint(e,t,r),this.createGeometry=e=>this._createMultipointGeometry(e)}}createFeature(){return this._lengths.length=0,this._currentLengthIndex=0,this._previousCoordinate[0]=0,this._previousCoordinate[1]=0,this._coordinateBuffer=null,this._coordinateBufferPtr=0,{attributes:new this._attributesConstructor}}allocateCoordinates(){}addLength(e,t,r){0===this._lengths.length&&(this._toAddInCurrentPath=t),this._lengths.push(t)}addQueryGeometry(e,t){const{queryGeometry:o,queryGeometryType:i}=t,n=r(o.clone(),o,!1,!1,this._transform),a=s(n,i,!1,!1);e.queryGeometryType=i,e.queryGeometry={...a}}createPointGeometry(e){const t={x:0,y:0,spatialReference:e.spatialReference};return e.hasZ&&(t.z=0),e.hasM&&(t.m=0),t}addCoordinatePoint(e,t,r){const s=this._transform;switch(t=this._applyTransform(s,t,r,0),r){case 0:e.x=t;break;case 1:e.y=t;break;case 2:"z"in e?e.z=t:e.m=t;break;case 3:e.m=t}}_transformPathLikeValue(e,t){let r=0;t<=1&&(r=this._previousCoordinate[t],this._previousCoordinate[t]+=e);const s=this._transform;return this._applyTransform(s,e,t,r)}_addCoordinatePolyline(e,t,r){this._dehydratedAddPointsCoordinate(e.paths,t,r)}_addCoordinatePolygon(e,t,r){this._dehydratedAddPointsCoordinate(e.rings,t,r)}_addCoordinateMultipoint(e,t,r){0===r&&e.points.push([]);const s=this._transformPathLikeValue(t,r);e.points[e.points.length-1].push(s)}_createPolygonGeometry(e){return{rings:[[]],spatialReference:e.spatialReference,hasZ:!!e.hasZ,hasM:!!e.hasM}}_createPolylineGeometry(e){return{paths:[[]],spatialReference:e.spatialReference,hasZ:!!e.hasZ,hasM:!!e.hasM}}_createMultipointGeometry(e){return{points:[],spatialReference:e.spatialReference,hasZ:!!e.hasZ,hasM:!!e.hasM}}_dehydratedAddPointsCoordinate(e,t,r){0===r&&0==this._toAddInCurrentPath--&&(e.push([]),this._toAddInCurrentPath=this._lengths[++this._currentLengthIndex]-1,this._previousCoordinate[0]=0,this._previousCoordinate[1]=0);const s=this._transformPathLikeValue(t,r),o=e[e.length-1];0===r&&(this._coordinateBufferPtr=0,this._coordinateBuffer=new Array(this._vertexDimension),o.push(this._coordinateBuffer)),this._coordinateBuffer[this._coordinateBufferPtr++]=s}_deriveApplyTransform(e){const{hasZ:t,hasM:r}=e;return t&&r?h:t?n:r?a:i}}export{l as JSONFeatureSetParserContext};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../core/Logger.js";const t=e.getLogger("esri.rest.support.generateRendererUtils");function l(e,t){return Number(e.toFixed(t))}function n(e){const t=o(e),l=[],n=t.uniqueValues.length;for(let a=0;a<n;a++){const e=t.uniqueValues[a],n=t.valueFrequency[a],u=e.toString();l.push({value:e,count:n,label:u})}return{uniqueValues:l}}function a(e){const{normalizationTotal:t}=e;return{classBreaks:u(e),normalizationTotal:t}}function u(e){const t=e.definition,{classificationMethod:n,normalizationType:a,definedInterval:u}=t,i=t.breakCount??1,c=[];let b=e.values;if(0===b.length)return[];b=b.sort(((e,t)=>e-t));const V=b[0],p=b.at(-1);if("equal-interval"===n)if(b.length>=i){const e=(p-V)/i;let t=V;for(let n=1;n<i;n++){const u=l(V+n*e,6);c.push({minValue:t,maxValue:u,label:s(t,u,a)}),t=u}c.push({minValue:t,maxValue:p,label:s(t,p,a)})}else b.forEach((e=>{c.push({minValue:e,maxValue:e,label:s(e,e,a)})}));else if("natural-breaks"===n){const t=o(b),n=e.valueFrequency||t.valueFrequency,u=r(t.uniqueValues,n,i);let f=V;for(let e=1;e<i;e++)if(t.uniqueValues.length>e){const n=l(t.uniqueValues[u[e]],6);c.push({minValue:f,maxValue:n,label:s(f,n,a)}),f=n}c.push({minValue:f,maxValue:p,label:s(f,p,a)})}else if("quantile"===n)if(b.length>=i&&V!==p){let e=V,t=Math.ceil(b.length/i),l=0;for(let n=1;n<i;n++){let u=t+l-1;u>b.length&&(u=b.length-1),u<0&&(u=0),c.push({minValue:e,maxValue:b[u],label:s(e,b[u],a)}),e=b[u],l+=t,t=Math.ceil((b.length-l)/(i-n))}c.push({minValue:e,maxValue:p,label:s(e,p,a)})}else{let e=-1;for(let t=0;t<b.length;t++){const l=b[t];l!==e&&(e=l,c.push({minValue:e,maxValue:l,label:s(e,l,a)}),e=l)}}else if("standard-deviation"===n){const e=h(b),t=m(b,e);if(0===t)c.push({minValue:b[0],maxValue:b[0],label:s(b[0],b[0],a)});else{const n=f(V,p,i,e,t)*t;let u=0,o=V;for(let t=i;t>=1;t--){const r=l(e-(t-.5)*n,6);c.push({minValue:o,maxValue:r,label:s(o,r,a)}),o=r,u++}let r=l(e+.5*n,6);c.push({minValue:o,maxValue:r,label:s(o,r,a)}),o=r,u++;for(let t=1;t<=i;t++)r=u===2*i?p:l(e+(t+.5)*n,6),c.push({minValue:o,maxValue:r,label:s(o,r,a)}),o=r,u++}}else if("defined-interval"===n){if(!u)return c;const e=b[0],t=b.at(-1),n=Math.ceil((t-e)/u);let o=e;for(let r=1;r<n;r++){const t=l(e+r*u,6);c.push({minValue:o,maxValue:t,label:s(o,t,a)}),o=t}c.push({minValue:o,maxValue:t,label:s(o,t,a)})}return c}function s(e,t,l){let n=null;return n=e===t?l&&"percent-of-total"===l?e+"%":e.toString():l&&"percent-of-total"===l?e+"% - "+t+"%":e+" - "+t,n}function o(e){const t=[],l=[];let n=Number.MIN_VALUE,a=1,u=-1;for(let s=0;s<e.length;s++){const o=e[s];o===n?(a++,l[u]=a):null!==o&&(t.push(o),n=o,a=1,l.push(a),u++)}return{uniqueValues:t,valueFrequency:l}}function r(e,t,l){const n=e.length,a=[];l>n&&(l=n);for(let s=0;s<l;s++)a.push(Math.round(s*n/l-1));a.push(n-1);let u=i(a,e,t,l);return c(u.mean,u.sdcm,a,e,t,l)&&(u=i(a,e,t,l)),a}function i(e,t,l,n){let a=[],u=[],s=[],o=0;const r=[],i=[];for(let m=0;m<n;m++){const n=b(m,e,t,l);r.push(n.sbMean),i.push(n.sbSdcm),o+=i[m]}let c,f=o,h=!0;for(;h||o<f;){h=!1,a=[];for(let t=0;t<n;t++)a.push(e[t]);for(let l=0;l<n;l++)for(let a=e[l]+1;a<=e[l+1];a++)if(c=t[a],l>0&&a!==e[l+1]&&Math.abs(c-r[l])>Math.abs(c-r[l-1]))e[l]=a;else if(l<n-1&&e[l]!==a-1&&Math.abs(c-r[l])>Math.abs(c-r[l+1])){e[l+1]=a-1;break}f=o,o=0,u=[],s=[];for(let a=0;a<n;a++){u.push(r[a]),s.push(i[a]);const n=b(a,e,t,l);r[a]=n.sbMean,i[a]=n.sbSdcm,o+=i[a]}}if(o>f){for(let t=0;t<n;t++)e[t]=a[t],r[t]=u[t],i[t]=s[t];o=f}return{mean:r,sdcm:i}}function c(e,t,l,n,a,u){let s=0,o=0,r=0,i=0,c=!0;for(let f=0;f<2&&c;f++){0===f&&(c=!1);for(let f=0;f<u-1;f++)for(;l[f+1]+1!==l[f+2];){l[f+1]=l[f+1]+1;const u=b(f,l,n,a);r=u.sbMean,s=u.sbSdcm;const h=b(f+1,l,n,a);if(i=h.sbMean,o=h.sbSdcm,!(s+o<t[f]+t[f+1])){l[f+1]=l[f+1]-1;break}t[f]=s,t[f+1]=o,e[f]=r,e[f+1]=i,c=!0}for(let f=u-1;f>0;f--)for(;l[f]!==l[f-1]+1;){l[f]=l[f]-1;const u=b(f-1,l,n,a);r=u.sbMean,s=u.sbSdcm;const h=b(f,l,n,a);if(i=h.sbMean,o=h.sbSdcm,!(s+o<t[f-1]+t[f])){l[f]=l[f]+1;break}t[f-1]=s,t[f]=o,e[f-1]=r,e[f]=i,c=!0}}return c}function f(e,t,l,n,a){let u=Math.max(n-e,t-n)/a/l;return u=u>=1?1:u>=.5?.5:.25,u}function h(e){let t=0;for(let l=0;l<e.length;l++)t+=e[l];return t/=e.length,t}function m(e,t){let l=0;for(let n=0;n<e.length;n++){const a=e[n];l+=(a-t)*(a-t)}l/=e.length;return Math.sqrt(l)}function b(e,l,n,a){let u=0,s=0;for(let t=l[e]+1;t<=l[e+1];t++){const e=a[t];u+=n[t]*e,s+=e}s<=0&&t.warn("Exception in Natural Breaks calculation");const o=u/s;let r=0;for(let t=l[e]+1;t<=l[e+1];t++)r+=a[t]*(n[t]-o)**2;return{sbMean:o,sbSdcm:r}}export{a as createGenerateRendererClassBreaks,n as createGenerateRendererUniqueValues};
5
+ import e from"../../core/Logger.js";const t=e.getLogger("esri.rest.support.generateRendererUtils");function l(e,t){return Number(e.toFixed(t))}function n(e){const t=o(e),l=[],n=t.uniqueValues.length;for(let a=0;a<n;a++){const e=t.uniqueValues[a],n=t.valueFrequency[a],u=e.toString();l.push({value:e,count:n,label:u})}return{uniqueValues:l}}function a(e){const{normalizationTotal:t}=e;return{classBreaks:u(e),normalizationTotal:t}}function u(e){const t=e.definition,{classificationMethod:n,normalizationType:a,definedInterval:u}=t,i=t.breakCount??1,c=[];let b=e.values;if(0===b.length)return[];b=b.sort(((e,t)=>e-t));const V=b[0],p=b[b.length-1];if("equal-interval"===n)if(b.length>=i){const e=(p-V)/i;let t=V;for(let n=1;n<i;n++){const u=l(V+n*e,6);c.push({minValue:t,maxValue:u,label:s(t,u,a)}),t=u}c.push({minValue:t,maxValue:p,label:s(t,p,a)})}else b.forEach((e=>{c.push({minValue:e,maxValue:e,label:s(e,e,a)})}));else if("natural-breaks"===n){const t=o(b),n=e.valueFrequency||t.valueFrequency,u=r(t.uniqueValues,n,i);let f=V;for(let e=1;e<i;e++)if(t.uniqueValues.length>e){const n=l(t.uniqueValues[u[e]],6);c.push({minValue:f,maxValue:n,label:s(f,n,a)}),f=n}c.push({minValue:f,maxValue:p,label:s(f,p,a)})}else if("quantile"===n)if(b.length>=i&&V!==p){let e=V,t=Math.ceil(b.length/i),l=0;for(let n=1;n<i;n++){let u=t+l-1;u>b.length&&(u=b.length-1),u<0&&(u=0),c.push({minValue:e,maxValue:b[u],label:s(e,b[u],a)}),e=b[u],l+=t,t=Math.ceil((b.length-l)/(i-n))}c.push({minValue:e,maxValue:p,label:s(e,p,a)})}else{let e=-1;for(let t=0;t<b.length;t++){const l=b[t];l!==e&&(e=l,c.push({minValue:e,maxValue:l,label:s(e,l,a)}),e=l)}}else if("standard-deviation"===n){const e=h(b),t=m(b,e);if(0===t)c.push({minValue:b[0],maxValue:b[0],label:s(b[0],b[0],a)});else{const n=f(V,p,i,e,t)*t;let u=0,o=V;for(let t=i;t>=1;t--){const r=l(e-(t-.5)*n,6);c.push({minValue:o,maxValue:r,label:s(o,r,a)}),o=r,u++}let r=l(e+.5*n,6);c.push({minValue:o,maxValue:r,label:s(o,r,a)}),o=r,u++;for(let t=1;t<=i;t++)r=u===2*i?p:l(e+(t+.5)*n,6),c.push({minValue:o,maxValue:r,label:s(o,r,a)}),o=r,u++}}else if("defined-interval"===n){if(!u)return c;const e=b[0],t=b[b.length-1],n=Math.ceil((t-e)/u);let o=e;for(let r=1;r<n;r++){const t=l(e+r*u,6);c.push({minValue:o,maxValue:t,label:s(o,t,a)}),o=t}c.push({minValue:o,maxValue:t,label:s(o,t,a)})}return c}function s(e,t,l){let n=null;return n=e===t?l&&"percent-of-total"===l?e+"%":e.toString():l&&"percent-of-total"===l?e+"% - "+t+"%":e+" - "+t,n}function o(e){const t=[],l=[];let n=Number.MIN_VALUE,a=1,u=-1;for(let s=0;s<e.length;s++){const o=e[s];o===n?(a++,l[u]=a):null!==o&&(t.push(o),n=o,a=1,l.push(a),u++)}return{uniqueValues:t,valueFrequency:l}}function r(e,t,l){const n=e.length,a=[];l>n&&(l=n);for(let s=0;s<l;s++)a.push(Math.round(s*n/l-1));a.push(n-1);let u=i(a,e,t,l);return c(u.mean,u.sdcm,a,e,t,l)&&(u=i(a,e,t,l)),a}function i(e,t,l,n){let a=[],u=[],s=[],o=0;const r=[],i=[];for(let m=0;m<n;m++){const n=b(m,e,t,l);r.push(n.sbMean),i.push(n.sbSdcm),o+=i[m]}let c,f=o,h=!0;for(;h||o<f;){h=!1,a=[];for(let t=0;t<n;t++)a.push(e[t]);for(let l=0;l<n;l++)for(let a=e[l]+1;a<=e[l+1];a++)if(c=t[a],l>0&&a!==e[l+1]&&Math.abs(c-r[l])>Math.abs(c-r[l-1]))e[l]=a;else if(l<n-1&&e[l]!==a-1&&Math.abs(c-r[l])>Math.abs(c-r[l+1])){e[l+1]=a-1;break}f=o,o=0,u=[],s=[];for(let a=0;a<n;a++){u.push(r[a]),s.push(i[a]);const n=b(a,e,t,l);r[a]=n.sbMean,i[a]=n.sbSdcm,o+=i[a]}}if(o>f){for(let t=0;t<n;t++)e[t]=a[t],r[t]=u[t],i[t]=s[t];o=f}return{mean:r,sdcm:i}}function c(e,t,l,n,a,u){let s=0,o=0,r=0,i=0,c=!0;for(let f=0;f<2&&c;f++){0===f&&(c=!1);for(let f=0;f<u-1;f++)for(;l[f+1]+1!==l[f+2];){l[f+1]=l[f+1]+1;const u=b(f,l,n,a);r=u.sbMean,s=u.sbSdcm;const h=b(f+1,l,n,a);if(i=h.sbMean,o=h.sbSdcm,!(s+o<t[f]+t[f+1])){l[f+1]=l[f+1]-1;break}t[f]=s,t[f+1]=o,e[f]=r,e[f+1]=i,c=!0}for(let f=u-1;f>0;f--)for(;l[f]!==l[f-1]+1;){l[f]=l[f]-1;const u=b(f-1,l,n,a);r=u.sbMean,s=u.sbSdcm;const h=b(f,l,n,a);if(i=h.sbMean,o=h.sbSdcm,!(s+o<t[f-1]+t[f])){l[f]=l[f]+1;break}t[f-1]=s,t[f]=o,e[f-1]=r,e[f]=i,c=!0}}return c}function f(e,t,l,n,a){let u=Math.max(n-e,t-n)/a/l;return u=u>=1?1:u>=.5?.5:.25,u}function h(e){let t=0;for(let l=0;l<e.length;l++)t+=e[l];return t/=e.length,t}function m(e,t){let l=0;for(let n=0;n<e.length;n++){const a=e[n];l+=(a-t)*(a-t)}l/=e.length;return Math.sqrt(l)}function b(e,l,n,a){let u=0,s=0;for(let t=l[e]+1;t<=l[e+1];t++){const e=a[t];u+=n[t]*e,s+=e}s<=0&&t.warn("Exception in Natural Breaks calculation");const o=u/s;let r=0;for(let t=l[e]+1;t<=l[e+1];t++)r+=a[t]*(n[t]-o)**2;return{sbMean:o,sbSdcm:r}}export{a as createGenerateRendererClassBreaks,n as createGenerateRendererUniqueValues};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../core/Error.js";import{formatNumber as r}from"../../../intl/number.js";import{createClassBreaksRenderer as a,getField as s}from"../../../renderers/support/rasterRendererHelper.js";import{processRasterRendererParameters as t}from"../support/utils.js";async function n(r){const a=(r=await t(r)).layer,{rasterInfo:n}=a;if(n.bandCount>1)throw new e("raster-class-breaks-renderer:not-supported","Multiband raster is not supported");const{attributeTable:o}=n;r.field||(r.field=s(o,"value")?.name??"value");if(!(null!=o&&o.fields.find((e=>e.name.toLowerCase()===r.field?.toLowerCase())))&&null==n.histograms&&(await a.updateRasterInfoWithEstimatedStats({rasterFunction:r.rasterFunction,signal:r.signal}),null==n.histograms))throw new e("raster-class-breaks-renderer:not-supported","Histograms or raster attribute table is required on the source raster. Unable to estimate histograms");const{colors:i,numClasses:l}=r;if(i&&l&&i.length!==l)throw new e("raster-class-breaks-renderer:not-supported","The size of the `colors` parameter does not match 'numClasses'");return r.classificationMethod||(r.classificationMethod="natural-breaks"),r}async function o(r){r=await n(r);const s=a(r.layer.rasterInfo,r);if(null==s)throw new e("raster-class-breaks-renderer:not-supported","Class breaks renderer is not supported on this data");const t={minValue:s.minValue,maxValue:s.classBreakInfos.at(-1).maxValue,normalizationTotal:null,classBreakInfos:s.classBreakInfos.map((e=>{const r=i(e.minValue,e.maxValue);return e.label=r,{minValue:e.minValue,maxValue:e.maxValue,label:r}}))};return{renderer:s,classBreaksResult:t}}function i(e,a){return r(e,{maximumFractionDigits:3})+" - "+r(a,{maximumFractionDigits:3})}export{o as createRenderer};
5
+ import e from"../../../core/Error.js";import{formatNumber as r}from"../../../intl/number.js";import{createClassBreaksRenderer as a,getField as s}from"../../../renderers/support/rasterRendererHelper.js";import{processRasterRendererParameters as t}from"../support/utils.js";async function n(r){const a=(r=await t(r)).layer,{rasterInfo:n}=a;if(n.bandCount>1)throw new e("raster-class-breaks-renderer:not-supported","Multiband raster is not supported");const{attributeTable:o}=n;r.field||(r.field=s(o,"value")?.name??"value");if(!(null!=o&&o.fields.find((e=>e.name.toLowerCase()===r.field?.toLowerCase())))&&null==n.histograms&&(await a.updateRasterInfoWithEstimatedStats({rasterFunction:r.rasterFunction,signal:r.signal}),null==n.histograms))throw new e("raster-class-breaks-renderer:not-supported","Histograms or raster attribute table is required on the source raster. Unable to estimate histograms");const{colors:l,numClasses:i}=r;if(l&&i&&l.length!==i)throw new e("raster-class-breaks-renderer:not-supported","The size of the `colors` parameter does not match 'numClasses'");return r.classificationMethod||(r.classificationMethod="natural-breaks"),r}async function o(r){r=await n(r);const s=a(r.layer.rasterInfo,r);if(null==s)throw new e("raster-class-breaks-renderer:not-supported","Class breaks renderer is not supported on this data");const t={minValue:s.minValue,maxValue:s.classBreakInfos[s.classBreakInfos.length-1].maxValue,normalizationTotal:null,classBreakInfos:s.classBreakInfos.map((e=>{const r=l(e.minValue,e.maxValue);return e.label=r,{minValue:e.minValue,maxValue:e.maxValue,label:r}}))};return{renderer:s,classBreaksResult:t}}function l(e,a){return r(e,{maximumFractionDigits:3})+" - "+r(a,{maximumFractionDigits:3})}export{o as createRenderer};
@@ -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"../../renderers/PointCloudClassBreaksRenderer.js";import"../../renderers/PointCloudRenderer.js";import e from"../../renderers/PointCloudRGBRenderer.js";import o from"../../renderers/PointCloudStretchRenderer.js";import"../../renderers/PointCloudUniqueValueRenderer.js";import i from"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../core/Logger.js";import r from"../../core/Error.js";import{fetchMessageBundle as a}from"../../intl/messages.js";import{substitute as n}from"../../intl/substitute.js";import l from"../../renderers/support/AuthoringInfo.js";import s from"../../renderers/support/AuthoringInfoVisualVariable.js";import{createColorStops as t,setLabelsForClassBreaks as m}from"../../renderers/support/utils.js";import d from"../../renderers/visualVariables/ColorVariable.js";import u from"../heuristics/ageUnit.js";import p from"../heuristics/outline.js";import c from"../heuristics/sizeRange.js";import{getSummaryStatistics as y,getClassBreaks as f,errorCallback as h,getPointSizeAlgorithm as b,formatDate as w,updateAgeRendererAuthoringInfoVV as v,verifyBasicFieldValidity as g,isValidPointSize as T,createColors as x,getDefaultDataRange as V,createDefaultStopValues as E,createStopValues as z,getDataRange as S,createDataValues as M,createSymbol as I,getSymbolSizeFromScheme as j,getSymbolOutlineFromScheme as q,getBasemapInfo as C}from"./support/utils.js";import{getAgeExpressions as O,verifyDates as B,supportedAgeUnits as k}from"../statistics/support/ageUtils.js";import{verifyBinningParams as U}from"../support/binningUtils.js";import{getFieldsList as F,getNormalizationType as R}from"../support/utils.js";import{binningCapableLayerTypes as P,featureCapableLayerTypes as D,createLayerAdapter as L,getLayerTypeLabels as A,LayerType as G}from"../support/adapters/support/layerUtils.js";import{cloneScheme as W,getSchemes as $,getSchemeById as H}from"../symbology/color.js";const _="date",J="high-to-low",K=2**53-1,N=5;async function Q(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new r("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new r("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&U(e,"color-visual-variable");const o={...e};if("90-10"===o.theme)throw new r("color-visual-variable:not-supported","Only 'high-to-low', 'above-and-below', 'centered-on', 'extremes', 'above', 'below' themes are supported.");const i=e.forBinning?P:D,a=L(o.layer,i,e.forBinning);if(!a)throw new r("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+A(i).join(", "));o.layer=a;const n=null!=o.signal?{signal:o.signal}:null;await a.load(n);if("mesh"!==a.geometryType&&o.worldScale&&(!o.view||"3d"!==o.view.type))throw new r("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const l=await F({field:o.field,normalizationField:o.normalizationField,valueExpression:o.valueExpression}),s=g(a,l,"color-visual-variable:invalid-parameters");if(s)throw s;return o}async function X(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new r("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new r("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&U(e,"color-continuous-renderer");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled??=!0;const i=e.forBinning?P:D,a=L(o.layer,i,e.forBinning);if(!a)throw new r("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+A(i).join(", "));o.layer=a;const n=null!=o.signal?{signal:o.signal}:null;await a.load(n);const l=a.geometryType;if(o.outlineOptimizationEnabled="polygon"===l&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===l||"multipoint"===l||"polyline"===l)&&o.sizeOptimizationEnabled,"mesh"===l)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==l)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("color-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await F({field:o.field,normalizationField:o.normalizationField,valueExpression:o.valueExpression}),t=g(a,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return o}async function Y(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new r("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new r("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&U(e,"color-class-breaks-renderer");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled??=!0,o.classificationMethod??="equal-interval",o.normalizationType=R(o);const i=e.forBinning?P:D,a=L(o.layer,i,e.forBinning);if(!a)throw new r("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+A(i).join(", "));o.layer=a;if(!(null!=o.minValue&&null!=o.maxValue)&&(null!=o.minValue||null!=o.maxValue))throw new r("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=null!=o.signal?{signal:o.signal}:null;await a.load(n);const l=a.geometryType;if(o.outlineOptimizationEnabled="polygon"===l&&o.outlineOptimizationEnabled,"mesh"===l)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==l)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("color-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await F({field:o.field,normalizationField:o.normalizationField}),t=g(a,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return o}function Z(e){const o={...e};delete o.basemap,delete o.colorScheme,delete o.legendOptions,delete o.symbolType,delete o.defaultSymbolEnabled,delete o.colorMixMode,delete o.edgesType;const i=o;return i.analyzeData=!(null!=o.minValue&&null!=o.maxValue),i}async function ee(e){if(!e||!e.layer)throw new r("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required");const o={...e,layer:e.layer},i=[G.PointCloudLayer],a=L(o.layer,i);if(!a)throw new r("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+A(i).join(", "));if(o.layer=a,o.density=o.density||25,o.size=o.size||"100%",!T(o.size))throw new r("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const n=null!=o.signal?{signal:o.signal}:null;return await a.load(n),o}async function oe(e){if(!(e&&e.layer&&e.field))throw new r("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required");const o=e.field.toLowerCase();if("intensity"!==o&&"elevation"!==o)throw new r("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'");const i={...e,layer:e.layer,field:e.field},a=[G.PointCloudLayer],n=L(i.layer,a);if(!n)throw new r("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+A(a).join(", "));if(i.layer=n,i.density=i.density||25,i.size=i.size||"100%",!T(i.size))throw new r("color-point-cloud-continuous-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const l=null!=i.signal?{signal:i.signal}:null;return await n.load(l),i}function ie(e){const o={...e},i=!!o.symbolType?.includes("3d-volumetric");delete o.symbolType,delete o.defaultSymbolEnabled,delete o.colorMixMode,delete o.edgesType;const r=o;return r.worldScale=i,r}async function re(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new r("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled??=!0;const i=L(o.layer,D);if(!i)throw new r("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+A(D).join(", "));o.layer=i;const a=null!=o.signal?{signal:o.signal}:null;await i.load(a);const n=i.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&o.sizeOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const l=B(i,o.startTime,o.endTime,"color-age-renderer:invalid-parameters");if(l)throw l;if(o.unit&&!k.includes(o.unit))throw new r("color-age-renderer:invalid-unit",`Supported units are: ${k.join(", ")}`);return o}async function ae(e,o){let i=e.colorScheme,r=null,a=null;const{view:n}=e,l=await C(e.basemap,n);if(r=null!=l.basemapId?l.basemapId:null,a=null!=l.basemapTheme?l.basemapTheme:null,i)return{scheme:W(i),basemapId:r,basemapTheme:a};const s=o||e.theme||J,t=$({theme:s,basemapTheme:a,geometryType:e.geometryType,worldScale:e.worldScale,view:n});if(t)if(r=t.basemapId,a=t.basemapTheme,e.schemeId){const o=s+"/"+r+"/"+e.schemeId;i=H({id:o,geometryType:e.geometryType})}else i=t.primaryScheme;return{scheme:i,basemapId:r,basemapTheme:a}}async function ne(e,o){const i=o.layer,a=await ae({basemap:o.basemap,colorScheme:o.colorScheme,geometryType:i.geometryType,schemeId:"elevation"===o.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),n=a.scheme;if(!n)throw new r("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const l=x(n.colors,N);if(l.length<N)throw new r("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const s=V(e,!1,!0),m=s?E(s[0],s[1],5):z(e);return{stops:t({values:m,isDate:!1,dateFormatOptions:null,colors:l,labelIndexes:[0,2,4]}),basemapId:a.basemapId,basemapTheme:a.basemapTheme,statistics:e,defaultValuesUsed:!!s,colorScheme:W(n)}}async function le(e,o,i,a,n){const{field:t,theme:m}=e,u=await ae({basemap:e.basemap,theme:e.theme,geometryType:a,colorScheme:e.colorScheme,worldScale:e.worldScale,view:e.view}),p=u.scheme;if(!p)throw new r("color-visual-variable:insufficient-info","Unable to find color scheme");const c=x(p.colors,N);if(c.length<N)throw new r("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const y=p.id.includes("seq-"),f=S(o,i,m,n,"90-10"!==m),h=M(f,o,m,y),b=x(c,N),w=new d({field:t,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationField:e.normalizationField,stops:h.map(((e,o)=>({value:e,color:b[o]}))),legendOptions:e.legendOptions}),v=new s({type:"color",minSliderValue:null!=e.minValue?e.minValue:o.min,maxSliderValue:null!=e.maxValue?e.maxValue:o.max,theme:p.theme}),g=new l({visualVariables:[v]});return{basemapId:u.basemapId,basemapTheme:u.basemapTheme,visualVariable:w,statistics:o,defaultValuesUsed:f.defaultValuesUsed,colorScheme:W(p),authoringInfo:g}}async function se(e,o,r,n,l,s,t){const m=await a("esri/smartMapping/t9n/smartMapping"),{field:d,defaultSymbolEnabled:u}=t,p=W(e.colorScheme),c=o&&o.opacity,y=[e.visualVariable.clone()];o&&o.visualVariables&&o.visualVariables.length&&y.push(...o.visualVariables.map((e=>e.clone()))),r&&r.minSize&&y.push(r.minSize);return{renderer:new i({classBreakInfos:[{minValue:-K,maxValue:K,symbol:I(s,{type:t.symbolType,color:p.noDataColor,size:j(p,s),outline:q(p,s,c),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:u?m.other:null,defaultSymbol:u?I(s,{type:t.symbolType,color:p.noDataColor,size:j(p,s),outline:q(p,s,c),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}):null,field:d,normalizationType:n,normalizationField:l,valueExpression:t.valueExpression,valueExpressionTitle:t.valueExpressionTitle,visualVariables:y,authoringInfo:e.authoringInfo&&e.authoringInfo.clone()}),visualVariable:e.visualVariable.clone(),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,colorScheme:W(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function te(e){const o=await Q(e),{view:i,field:r,valueExpression:a,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:m,statistics:d}=o,u=t?"field":void 0,[p,c]=await Promise.all([d??y({layer:s,field:r,valueExpression:a,sqlExpression:o.sqlExpression,sqlWhere:o.sqlWhere,normalizationType:u,normalizationField:t,minValue:n,maxValue:l,view:i,signal:m}),"90-10"===o.theme?f({layer:s,field:r,normalizationField:t,valueExpression:a,classificationMethod:"quantile",minValue:n,maxValue:l,view:i,numClasses:10,signal:m}):null]),h=s,b=r&&"function"!=typeof r?h.getField(r):null,w=b&&b.type===_;return le(o,p,c?.result,h.geometryType,!!w)}function me(e,o){const i=e.colorsForClassBreaks;let r;if(i&&i.length>0&&(i.some((e=>(e.numClasses===o&&(r=e.colors),!!r))),!r)){const e=i.at(-1),a=o-e.numClasses;if(a>0){const o=e.colors[e.numClasses-1];r=e.colors.splice(0);for(let e=1;e<=a;e++)r.push(o)}}return r&&(r=x(r,r.length)),r}async function de(e,o){const n=await a("esri/smartMapping/t9n/smartMapping"),s=e.layer,t=e.defaultSymbolEnabled,d=s.geometryType,u=e.classificationMethod,p="standard-deviation"===u,c=await ae({basemap:e.basemap,geometryType:d,theme:p?"above-and-below":null,colorScheme:e.colorScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view}),y=c.scheme,{result:f,outlineResult:h}=o,b=f.classBreakInfos,w=e.normalizationType;if(!y)throw new r("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const v=me(y,b.length);if(!v||v.length!==b.length)throw new r("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=h&&h.opacity,T=new i({classBreakInfos:b.map(((o,i)=>({minValue:o.minValue,maxValue:o.maxValue,symbol:I(d,{type:e.symbolType,color:v[i],size:j(y,d),outline:q(y,d,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:o.label}))),defaultLabel:t?n.other:null,defaultSymbol:t?I(d,{type:e.symbolType,color:y.noDataColor,size:j(y,d),outline:q(y,d,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?f.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new l({type:"class-breaks-color",classificationMethod:u,standardDeviationInterval:e.standardDeviationInterval})});return p||m({classBreakInfos:T.classBreakInfos,classificationMethod:u,normalizationType:w,round:!0}),h&&h.visualVariables&&h.visualVariables.length&&(T.visualVariables=h.visualVariables.map((e=>e.clone()))),{renderer:T,colorScheme:W(y),classBreaksResult:f,defaultValuesUsed:o.defaultValuesUsed,basemapId:c.basemapId,basemapTheme:c.basemapTheme}}async function ue(e){const o=await X(e),{layer:i,view:r,signal:a}=o,[n,l,s]=await Promise.all([te(ie(o)),o.outlineOptimizationEnabled?p({layer:i,view:r,signal:a}).catch(h):null,o.sizeOptimizationEnabled?c({layer:i,view:r,signal:a}).catch(h):null]),t=o.normalizationField;return se(n,l,s,t?"field":void 0,t,i.geometryType,o)}async function pe(e){const o=await Y(e);return de(o,await f(Z(o),o.outlineOptimizationEnabled))}function ce(o){return ee(o).then((o=>({renderer:new e({field:"RGB",pointsPerInch:o.density,pointSizeAlgorithm:b(o.size)})})))}async function ye(e){const i=await oe(e),r=i.statistics??await y({layer:i.layer,field:i.field,signal:i.signal}),a=await ne(r,i);return{renderer:new o({field:i.field,pointsPerInch:i.density,pointSizeAlgorithm:b(i.size),stops:a.stops}),basemapId:a.basemapId,basemapTheme:a.basemapTheme,statistics:a.statistics,defaultValuesUsed:a.defaultValuesUsed,colorScheme:a.colorScheme}}async function fe(e){const o=await a("esri/smartMapping/t9n/smartMapping"),i=await re(e),{defaultSymbolEnabled:r,view:l,startTime:s,endTime:t,symbolType:m,colorMixMode:d,edgesType:y,minValue:f,maxValue:b,signal:g}=i,T=i.layer,[x,V,E]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:u({view:l,layer:T,startTime:s,endTime:t,minValue:f,maxValue:b,signal:g}),i.outlineOptimizationEnabled?p({layer:T,view:l,signal:g}).catch(h):null,i.sizeOptimizationEnabled?c({layer:T,view:l,signal:g}).catch(h):null]),{unit:z,statistics:S}=x,M=O({layer:T,startTime:s,endTime:t,unit:z}).valueExpression,I=n(o[`ageInfo_${z}`],{unit:z,startTime:w(s,z,T),endTime:w(t,z,T)}),j=await te(ie({layer:T,basemap:i.basemap,valueExpression:M,symbolType:m,statistics:S,legendOptions:{title:I},colorScheme:i.colorScheme,theme:i.theme,view:l,minValue:i.minValue,maxValue:i.maxValue,signal:g})),q={layer:T,valueExpression:M,defaultSymbolEnabled:r,symbolType:m,colorMixMode:d,edgesType:y},C=await se(j,V,E,null,null,T.geometryType,q),B=C.renderer.authoringInfo?.visualVariables;return B?.forEach((e=>v(e,s,t,z))),{...C,unit:z}}export{fe as createAgeRenderer,pe as createClassBreaksRenderer,ue as createContinuousRenderer,ye as createPCContinuousRenderer,ce as createPCTrueColorRenderer,te as createVisualVariable};
5
+ import"../../renderers/PointCloudClassBreaksRenderer.js";import"../../renderers/PointCloudRenderer.js";import e from"../../renderers/PointCloudRGBRenderer.js";import o from"../../renderers/PointCloudStretchRenderer.js";import"../../renderers/PointCloudUniqueValueRenderer.js";import i from"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import"../../core/Logger.js";import r from"../../core/Error.js";import{fetchMessageBundle as a}from"../../intl/messages.js";import{substitute as n}from"../../intl/substitute.js";import l from"../../renderers/support/AuthoringInfo.js";import s from"../../renderers/support/AuthoringInfoVisualVariable.js";import{createColorStops as t,setLabelsForClassBreaks as m}from"../../renderers/support/utils.js";import d from"../../renderers/visualVariables/ColorVariable.js";import u from"../heuristics/ageUnit.js";import p from"../heuristics/outline.js";import c from"../heuristics/sizeRange.js";import{getSummaryStatistics as y,getClassBreaks as f,errorCallback as h,getPointSizeAlgorithm as b,formatDate as w,updateAgeRendererAuthoringInfoVV as v,verifyBasicFieldValidity as g,isValidPointSize as T,createColors as x,getDefaultDataRange as V,createDefaultStopValues as E,createStopValues as z,getDataRange as S,createDataValues as M,createSymbol as I,getSymbolSizeFromScheme as j,getSymbolOutlineFromScheme as q,getBasemapInfo as C}from"./support/utils.js";import{getAgeExpressions as O,verifyDates as B,supportedAgeUnits as k}from"../statistics/support/ageUtils.js";import{verifyBinningParams as U}from"../support/binningUtils.js";import{getFieldsList as F,getNormalizationType as R}from"../support/utils.js";import{binningCapableLayerTypes as P,featureCapableLayerTypes as D,createLayerAdapter as L,getLayerTypeLabels as A,LayerType as G}from"../support/adapters/support/layerUtils.js";import{cloneScheme as W,getSchemes as $,getSchemeById as H}from"../symbology/color.js";const _="date",J="high-to-low",K=2**53-1,N=5;async function Q(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new r("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new r("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&U(e,"color-visual-variable");const o={...e};if("90-10"===o.theme)throw new r("color-visual-variable:not-supported","Only 'high-to-low', 'above-and-below', 'centered-on', 'extremes', 'above', 'below' themes are supported.");const i=e.forBinning?P:D,a=L(o.layer,i,e.forBinning);if(!a)throw new r("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+A(i).join(", "));o.layer=a;const n=null!=o.signal?{signal:o.signal}:null;await a.load(n);if("mesh"!==a.geometryType&&o.worldScale&&(!o.view||"3d"!==o.view.type))throw new r("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const l=await F({field:o.field,normalizationField:o.normalizationField,valueExpression:o.valueExpression}),s=g(a,l,"color-visual-variable:invalid-parameters");if(s)throw s;return o}async function X(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new r("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new r("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&U(e,"color-continuous-renderer");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled??=!0;const i=e.forBinning?P:D,a=L(o.layer,i,e.forBinning);if(!a)throw new r("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+A(i).join(", "));o.layer=a;const n=null!=o.signal?{signal:o.signal}:null;await a.load(n);const l=a.geometryType;if(o.outlineOptimizationEnabled="polygon"===l&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===l||"multipoint"===l||"polyline"===l)&&o.sizeOptimizationEnabled,"mesh"===l)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==l)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("color-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await F({field:o.field,normalizationField:o.normalizationField,valueExpression:o.valueExpression}),t=g(a,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return o}async function Y(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new r("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new r("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&U(e,"color-class-breaks-renderer");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled??=!0,o.classificationMethod??="equal-interval",o.normalizationType=R(o);const i=e.forBinning?P:D,a=L(o.layer,i,e.forBinning);if(!a)throw new r("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+A(i).join(", "));o.layer=a;if(!(null!=o.minValue&&null!=o.maxValue)&&(null!=o.minValue||null!=o.maxValue))throw new r("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=null!=o.signal?{signal:o.signal}:null;await a.load(n);const l=a.geometryType;if(o.outlineOptimizationEnabled="polygon"===l&&o.outlineOptimizationEnabled,"mesh"===l)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==l)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("color-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await F({field:o.field,normalizationField:o.normalizationField}),t=g(a,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return o}function Z(e){const o={...e};delete o.basemap,delete o.colorScheme,delete o.legendOptions,delete o.symbolType,delete o.defaultSymbolEnabled,delete o.colorMixMode,delete o.edgesType;const i=o;return i.analyzeData=!(null!=o.minValue&&null!=o.maxValue),i}async function ee(e){if(!e||!e.layer)throw new r("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required");const o={...e,layer:e.layer},i=[G.PointCloudLayer],a=L(o.layer,i);if(!a)throw new r("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+A(i).join(", "));if(o.layer=a,o.density=o.density||25,o.size=o.size||"100%",!T(o.size))throw new r("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const n=null!=o.signal?{signal:o.signal}:null;return await a.load(n),o}async function oe(e){if(!(e&&e.layer&&e.field))throw new r("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required");const o=e.field.toLowerCase();if("intensity"!==o&&"elevation"!==o)throw new r("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'");const i={...e,layer:e.layer,field:e.field},a=[G.PointCloudLayer],n=L(i.layer,a);if(!n)throw new r("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+A(a).join(", "));if(i.layer=n,i.density=i.density||25,i.size=i.size||"100%",!T(i.size))throw new r("color-point-cloud-continuous-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const l=null!=i.signal?{signal:i.signal}:null;return await n.load(l),i}function ie(e){const o={...e},i=!!o.symbolType?.includes("3d-volumetric");delete o.symbolType,delete o.defaultSymbolEnabled,delete o.colorMixMode,delete o.edgesType;const r=o;return r.worldScale=i,r}async function re(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new r("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled??=!0;const i=L(o.layer,D);if(!i)throw new r("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+A(D).join(", "));o.layer=i;const a=null!=o.signal?{signal:o.signal}:null;await i.load(a);const n=i.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&o.sizeOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const l=B(i,o.startTime,o.endTime,"color-age-renderer:invalid-parameters");if(l)throw l;if(o.unit&&!k.includes(o.unit))throw new r("color-age-renderer:invalid-unit",`Supported units are: ${k.join(", ")}`);return o}async function ae(e,o){let i=e.colorScheme,r=null,a=null;const{view:n}=e,l=await C(e.basemap,n);if(r=null!=l.basemapId?l.basemapId:null,a=null!=l.basemapTheme?l.basemapTheme:null,i)return{scheme:W(i),basemapId:r,basemapTheme:a};const s=o||e.theme||J,t=$({theme:s,basemapTheme:a,geometryType:e.geometryType,worldScale:e.worldScale,view:n});if(t)if(r=t.basemapId,a=t.basemapTheme,e.schemeId){const o=s+"/"+r+"/"+e.schemeId;i=H({id:o,geometryType:e.geometryType})}else i=t.primaryScheme;return{scheme:i,basemapId:r,basemapTheme:a}}async function ne(e,o){const i=o.layer,a=await ae({basemap:o.basemap,colorScheme:o.colorScheme,geometryType:i.geometryType,schemeId:"elevation"===o.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),n=a.scheme;if(!n)throw new r("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const l=x(n.colors,N);if(l.length<N)throw new r("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const s=V(e,!1,!0),m=s?E(s[0],s[1],5):z(e);return{stops:t({values:m,isDate:!1,dateFormatOptions:null,colors:l,labelIndexes:[0,2,4]}),basemapId:a.basemapId,basemapTheme:a.basemapTheme,statistics:e,defaultValuesUsed:!!s,colorScheme:W(n)}}async function le(e,o,i,a,n){const{field:t,theme:m}=e,u=await ae({basemap:e.basemap,theme:e.theme,geometryType:a,colorScheme:e.colorScheme,worldScale:e.worldScale,view:e.view}),p=u.scheme;if(!p)throw new r("color-visual-variable:insufficient-info","Unable to find color scheme");const c=x(p.colors,N);if(c.length<N)throw new r("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const y=p.id.includes("seq-"),f=S(o,i,m,n,"90-10"!==m),h=M(f,o,m,y),b=x(c,N),w=new d({field:t,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationField:e.normalizationField,stops:h.map(((e,o)=>({value:e,color:b[o]}))),legendOptions:e.legendOptions}),v=new s({type:"color",minSliderValue:null!=e.minValue?e.minValue:o.min,maxSliderValue:null!=e.maxValue?e.maxValue:o.max,theme:p.theme}),g=new l({visualVariables:[v]});return{basemapId:u.basemapId,basemapTheme:u.basemapTheme,visualVariable:w,statistics:o,defaultValuesUsed:f.defaultValuesUsed,colorScheme:W(p),authoringInfo:g}}async function se(e,o,r,n,l,s,t){const m=await a("esri/smartMapping/t9n/smartMapping"),{field:d,defaultSymbolEnabled:u}=t,p=W(e.colorScheme),c=o&&o.opacity,y=[e.visualVariable.clone()];o&&o.visualVariables&&o.visualVariables.length&&y.push(...o.visualVariables.map((e=>e.clone()))),r&&r.minSize&&y.push(r.minSize);return{renderer:new i({classBreakInfos:[{minValue:-K,maxValue:K,symbol:I(s,{type:t.symbolType,color:p.noDataColor,size:j(p,s),outline:q(p,s,c),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:u?m.other:null,defaultSymbol:u?I(s,{type:t.symbolType,color:p.noDataColor,size:j(p,s),outline:q(p,s,c),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}):null,field:d,normalizationType:n,normalizationField:l,valueExpression:t.valueExpression,valueExpressionTitle:t.valueExpressionTitle,visualVariables:y,authoringInfo:e.authoringInfo&&e.authoringInfo.clone()}),visualVariable:e.visualVariable.clone(),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,colorScheme:W(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function te(e){const o=await Q(e),{view:i,field:r,valueExpression:a,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:m,statistics:d}=o,u=t?"field":void 0,[p,c]=await Promise.all([d??y({layer:s,field:r,valueExpression:a,sqlExpression:o.sqlExpression,sqlWhere:o.sqlWhere,normalizationType:u,normalizationField:t,minValue:n,maxValue:l,view:i,signal:m}),"90-10"===o.theme?f({layer:s,field:r,normalizationField:t,valueExpression:a,classificationMethod:"quantile",minValue:n,maxValue:l,view:i,numClasses:10,signal:m}):null]),h=s,b=r&&"function"!=typeof r?h.getField(r):null,w=b&&b.type===_;return le(o,p,c?.result,h.geometryType,!!w)}function me(e,o){const i=e.colorsForClassBreaks;let r;if(i&&i.length>0&&(i.some((e=>(e.numClasses===o&&(r=e.colors),!!r))),!r)){const e=i[i.length-1],a=o-e.numClasses;if(a>0){const o=e.colors[e.numClasses-1];r=e.colors.splice(0);for(let e=1;e<=a;e++)r.push(o)}}return r&&(r=x(r,r.length)),r}async function de(e,o){const n=await a("esri/smartMapping/t9n/smartMapping"),s=e.layer,t=e.defaultSymbolEnabled,d=s.geometryType,u=e.classificationMethod,p="standard-deviation"===u,c=await ae({basemap:e.basemap,geometryType:d,theme:p?"above-and-below":null,colorScheme:e.colorScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view}),y=c.scheme,{result:f,outlineResult:h}=o,b=f.classBreakInfos,w=e.normalizationType;if(!y)throw new r("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const v=me(y,b.length);if(!v||v.length!==b.length)throw new r("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=h&&h.opacity,T=new i({classBreakInfos:b.map(((o,i)=>({minValue:o.minValue,maxValue:o.maxValue,symbol:I(d,{type:e.symbolType,color:v[i],size:j(y,d),outline:q(y,d,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:o.label}))),defaultLabel:t?n.other:null,defaultSymbol:t?I(d,{type:e.symbolType,color:y.noDataColor,size:j(y,d),outline:q(y,d,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?f.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new l({type:"class-breaks-color",classificationMethod:u,standardDeviationInterval:e.standardDeviationInterval})});return p||m({classBreakInfos:T.classBreakInfos,classificationMethod:u,normalizationType:w,round:!0}),h&&h.visualVariables&&h.visualVariables.length&&(T.visualVariables=h.visualVariables.map((e=>e.clone()))),{renderer:T,colorScheme:W(y),classBreaksResult:f,defaultValuesUsed:o.defaultValuesUsed,basemapId:c.basemapId,basemapTheme:c.basemapTheme}}async function ue(e){const o=await X(e),{layer:i,view:r,signal:a}=o,[n,l,s]=await Promise.all([te(ie(o)),o.outlineOptimizationEnabled?p({layer:i,view:r,signal:a}).catch(h):null,o.sizeOptimizationEnabled?c({layer:i,view:r,signal:a}).catch(h):null]),t=o.normalizationField;return se(n,l,s,t?"field":void 0,t,i.geometryType,o)}async function pe(e){const o=await Y(e);return de(o,await f(Z(o),o.outlineOptimizationEnabled))}function ce(o){return ee(o).then((o=>({renderer:new e({field:"RGB",pointsPerInch:o.density,pointSizeAlgorithm:b(o.size)})})))}async function ye(e){const i=await oe(e),r=i.statistics??await y({layer:i.layer,field:i.field,signal:i.signal}),a=await ne(r,i);return{renderer:new o({field:i.field,pointsPerInch:i.density,pointSizeAlgorithm:b(i.size),stops:a.stops}),basemapId:a.basemapId,basemapTheme:a.basemapTheme,statistics:a.statistics,defaultValuesUsed:a.defaultValuesUsed,colorScheme:a.colorScheme}}async function fe(e){const o=await a("esri/smartMapping/t9n/smartMapping"),i=await re(e),{defaultSymbolEnabled:r,view:l,startTime:s,endTime:t,symbolType:m,colorMixMode:d,edgesType:y,minValue:f,maxValue:b,signal:g}=i,T=i.layer,[x,V,E]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:u({view:l,layer:T,startTime:s,endTime:t,minValue:f,maxValue:b,signal:g}),i.outlineOptimizationEnabled?p({layer:T,view:l,signal:g}).catch(h):null,i.sizeOptimizationEnabled?c({layer:T,view:l,signal:g}).catch(h):null]),{unit:z,statistics:S}=x,M=O({layer:T,startTime:s,endTime:t,unit:z}).valueExpression,I=n(o[`ageInfo_${z}`],{unit:z,startTime:w(s,z,T),endTime:w(t,z,T)}),j=await te(ie({layer:T,basemap:i.basemap,valueExpression:M,symbolType:m,statistics:S,legendOptions:{title:I},colorScheme:i.colorScheme,theme:i.theme,view:l,minValue:i.minValue,maxValue:i.maxValue,signal:g})),q={layer:T,valueExpression:M,defaultSymbolEnabled:r,symbolType:m,colorMixMode:d,edgesType:y},C=await se(j,V,E,null,null,T.geometryType,q),B=C.renderer.authoringInfo?.visualVariables;return B?.forEach((e=>v(e,s,t,z))),{...C,unit:z}}export{fe as createAgeRenderer,pe as createClassBreaksRenderer,ue as createContinuousRenderer,ye as createPCContinuousRenderer,ce as createPCTrueColorRenderer,te as createVisualVariable};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../Color.js";import"../../../symbols.js";import"../../../core/has.js";import t from"../../../core/Error.js";import{formatDate as n,convertDateFormatToIntlOptions as o}from"../../../intl/date.js";import{round as l}from"../../../renderers/support/numberUtils.js";import i from"../../../renderers/support/pointCloud/PointSizeSplatAlgorithm.js";import s from"../../heuristics/outline.js";import r from"../../statistics/classBreaks.js";import a from"../../statistics/summaryStatistics.js";import{defaultBasemapGroups as u,getBasemapId as m,getBasemapGroup as c}from"../../support/utils.js";import f from"../../../symbols/edges/SketchEdges3D.js";import d from"../../../symbols/edges/SolidEdges3D.js";import{getBackgroundColorTheme as p}from"../../../views/support/colorUtils.js";import y from"../../../symbols/MeshSymbol3D.js";import h from"../../../symbols/FillSymbol3DLayer.js";import b from"../../../symbols/SimpleFillSymbol.js";import w from"../../../symbols/PolygonSymbol3D.js";import g from"../../../symbols/ExtrudeSymbol3DLayer.js";import D from"../../../symbols/SimpleLineSymbol.js";import j from"../../../symbols/LineSymbol3D.js";import S from"../../../symbols/LineSymbol3DLayer.js";import v from"../../../symbols/PathSymbol3DLayer.js";import x from"../../../symbols/SimpleMarkerSymbol.js";import z from"../../../symbols/PointSymbol3D.js";import V from"../../../symbols/IconSymbol3DLayer.js";import L from"../../../symbols/ObjectSymbol3DLayer.js";const U=/^(\d+(\.\d+)?)\s*(%)$/i,k=[0,0,0,.4],T=["hours","minutes","seconds"],F=[...u.light,...u.dark];function I(e,t,l){if("string"==typeof e){const t=l.getField(e);if(t&&"date"===t.type)return t.alias||t.name}else if("number"==typeof e||e instanceof Date){const l=null!=t&&T.includes(t)?"short-date-short-time":"short-date";return n(e,o(l))}return e}function B(e,t,n){return e+t>0&&0>e-t&&n<0?0:e}function M(e,t,n,o,l){const i="90-10"===n&&t?{min:t.classBreakInfos[0].maxValue,max:t.classBreakInfos.at(-1).minValue,avg:null,stddev:null}:e,{avg:s,stddev:r,min:a,max:u}=i,m=C(i,!!o,l??!0);let c=m?m[0]:a,f=m?m[1]:u;return m?{minDataValue:c,maxDataValue:f,defaultValuesUsed:!0}:("above"===n?c=B(s,r,a):"below"===n&&(f=B(s,r,a)),{minDataValue:c,maxDataValue:f,defaultValuesUsed:!1})}function C(e,t,n){let o,l;const i=P({statistics:e,isDate:t});return i.defaultValuesUsed?(o=i.min,l=i.max):!n||null!=e.avg&&e.stddev||(o=e.min,l=e.max),null!=o&&null!=l?[o,l]:null}function P(e){let t,n,o=e&&e.statistics;if(o||(o={}),null==o.min)if(e.isDate){const e=E();t=e[0],n=e[1]}else t=0,n=100;else if(o.min===o.max)if(e.isDate){const e=E(o.min);t=e[0],n=e[1]}else o.min<0?(t=2*o.min,n=0):o.min>0?(t=0,n=2*o.min):(t=0,n=100);return{min:null!=t?t:o.min,max:null!=n?n:o.max,defaultValuesUsed:null!=t||null!=n}}function E(e){const t=("number"==typeof e?new Date(e):new Date).getUTCFullYear();let n=Date.UTC(t,0,1,12,0,0,0),o=Date.UTC(t,11,31,12,0,0,0);return"number"==typeof e&&(e<n&&(n=e),e>o&&(o=e)),[n,o]}function A(t,n){const o=[],l=t.length;for(let i=0;i<n;i++)o.push(new e(t[i%l]));return o}function R({minDataValue:e,maxDataValue:t,defaultValuesUsed:n},o,l,i=!0){return n||"above"===l||"below"===l||"90-10"===l?q(e,t,5):N(o,i)}function Y(e,t){const{avg:n,stddev:o}=e,i=e.min,s=e.max;if(null==n||null==o){const[n,o]=C(e,t,!0);return q(n,o,5)}const r=B(n,o,i),a=s-r,u=r-i,m=Math.max(a,u);return l([r-m,r-m/2,r,m/2+r,r+m],{strictBounds:!0})}function W(e,t){const{min:n,max:o}=t,[i,s,r,a,u]=e,m=null!=n&&i<n,c=null!=o&&u>o;if(null==n||null==o||!m&&!c)return e;const f=m?n:i,d=c?o:u;return l([f,m?f+(r-f)/2:s,r,c?r+(d-r)/2:a,d],{strictBounds:!0})}function q(e,t,n){const o=(t-e)/(n-1),i=[e];for(let l=1;l<=n-2;l++)i.push(e+l*o);return i.push(t),l(i,{strictBounds:!0})}function N({min:e,max:t,avg:n,stddev:o},i=!0){if(null==e||null==t||null==n||null==o)return[];let s=n-o,r=n+o;s<e&&(s=e),r>t&&(r=t),i&&(n=s+(r-s)/2);let a=l([s,r],{strictBounds:!0});return s=a[0],r=a[1],a=[s,s+(n-s)/2,n,n+(r-n)/2,r],l(a,{strictBounds:!0})}function O(e,t,n){switch(t){case"point":case"multipoint":return n?"noDataSize"in e?e.noDataSize:null:"size"in e?e.size:null;case"polyline":return n?"noDataWidth"in e?e.noDataWidth:null:"width"in e?e.width:null;case"polygon":return"size"in e?e.size:null;default:return}}function $(e,t,n){switch(t){case"point":case"multipoint":case"polygon":{if(!("outline"in e))return null;const t={color:e.outline.color,width:e.outline.width};if(null!=n&&t.color){const e=t.color.clone();e.a=n,t.color=e}return t}default:return}}function G(e,t){const{type:n,size:o,color:l,outline:i}=t;let s;switch(e){case"point":case"multipoint":if("2d"===n)s=new x({color:l,size:o,outline:{color:i.color,width:i.width}});else if("3d-flat"===n)s=new z({symbolLayers:[new V({size:o,resource:{primitive:"circle"},material:{color:l},outline:{color:i.color,size:i.width}})]});else if(n?.includes("3d-volumetric")){const e="3d-volumetric-uniform"===n,i=new L({height:o,resource:{primitive:e?"sphere":"cylinder"},material:{color:l}});e||(i.width=t.widthAndDepth,i.depth=t.widthAndDepth),s=new z({symbolLayers:[i]})}break;case"polyline":"2d"===n?s=new D({color:l,width:o}):"3d-flat"===n?s=new j({symbolLayers:[new S({size:o,material:{color:l}})]}):"3d-volumetric"===n&&(s=new j({symbolLayers:[new v({width:"number"==typeof o?o:parseFloat(o),height:"number"==typeof o?o:parseFloat(o),material:{color:l}})]}));break;case"polygon":"2d"===n?s=new b({color:l,outline:{color:i.color,width:i.width}}):"3d-flat"===n?s=new w({symbolLayers:[new h({material:{color:l},outline:{color:i.color,size:i.width}})]}):"3d-volumetric"===n&&(s=new w({symbolLayers:[new g({size:o,material:{color:l}})]}));break;case"mesh":{const e=t.meshInfo?.colorMixMode,n=t.meshInfo?.edgesType;s=new y({symbolLayers:[new h({material:{color:l,colorMixMode:e||null},edges:"solid"===n?new d({color:k}):"sketch"===n?new f({color:k}):null})]});break}}return s}function H(e,n,o){const l=J({layer:e,fields:n});if(l.length)return new t(o,"Unknown fields: "+l.join(", ")+". You can only use fields defined in the layer schema");const i=K({layer:e,fields:n});return i.length?new t(o,"Unsupported fields: "+i.join(", ")+". You can only use fields that are accessible to the renderer i.e. FieldUsageInfo.supportsRenderer must be true"):void 0}function J(e){const t=e.layer;return e.fields.filter((e=>!t.getField(e)))}function K(e){const t=e.layer;return e.fields.filter((e=>{const n=t.getFieldUsageInfo(e);return!n||!n.supportsRenderer}))}async function Q(e,t){const n={layer:e.layer,view:e.view,signal:e.signal},[o,l]=await Promise.all([r(e).catch(oe),t?s(n).catch(oe):null]),i=C({min:o?.minValue,max:o?.maxValue,avg:null,stddev:null},!1,!1);return{result:i?await r({...e,classificationMethod:"equal-interval",numClasses:1,analyzeData:!1,minValue:i[0],maxValue:i[1],normalizationTotal:i[0]+i[1]}):o,defaultValuesUsed:!!i,outlineResult:l}}function X(e){return a(e)}function Z(e,t){let{minSize:n,maxSize:o}=e;if("height"===t){n=((o-n)/2+n)/(2*2.3),o*=2}return{minSize:n,maxSize:o}}function _(e){return U.test(e)}function ee(e){if(null==e)return;const t=e.match(U),n=Number(t[1]);return"%"===t[3]?new i({scaleFactor:n/100}):void 0}function te(e,t,n,o){e.startTime=t instanceof Date?t.getTime():t,e.endTime=n instanceof Date?n.getTime():n,e.units=o,e.field="string"==typeof t?t:"string"==typeof n?n:null}async function ne(e,t){let n=null,o=null;if(!e&&!t)return{basemapId:n,basemapTheme:o};if(t&&(o=await p(t),e||(e=t.map?.basemap)),e&&(n=m(e,F,!1),n&&!o)){const e=c(n);null!=e&&(o=e)}return!n&&o&&(n="dark"===o?"dark-gray":"gray"),{basemapId:n,basemapTheme:o}}function oe(e){const t=e.name?.toLowerCase();if(!t||t?.includes(":insufficient-info")||t?.includes(":insufficient-data"))return null;throw e}export{W as clampAboveAndBelowStopValues,A as createColors,R as createDataValues,q as createDefaultStopValues,N as createStopValues,Y as createStopValuesForAboveBelow,G as createSymbol,oe as errorCallback,I as formatDate,B as getBaseValueForAboveBelow,ne as getBasemapInfo,Q as getClassBreaks,M as getDataRange,C as getDefaultDataRange,ee as getPointSizeAlgorithm,Z as getSizeRangeForAxis,X as getSummaryStatistics,$ as getSymbolOutlineFromScheme,O as getSymbolSizeFromScheme,_ as isValidPointSize,te as updateAgeRendererAuthoringInfoVV,H as verifyBasicFieldValidity};
5
+ import e from"../../../Color.js";import"../../../symbols.js";import"../../../core/has.js";import t from"../../../core/Error.js";import{formatDate as n,convertDateFormatToIntlOptions as o}from"../../../intl/date.js";import{round as l}from"../../../renderers/support/numberUtils.js";import i from"../../../renderers/support/pointCloud/PointSizeSplatAlgorithm.js";import s from"../../heuristics/outline.js";import r from"../../statistics/classBreaks.js";import a from"../../statistics/summaryStatistics.js";import{defaultBasemapGroups as u,getBasemapId as m,getBasemapGroup as c}from"../../support/utils.js";import f from"../../../symbols/edges/SketchEdges3D.js";import d from"../../../symbols/edges/SolidEdges3D.js";import{getBackgroundColorTheme as p}from"../../../views/support/colorUtils.js";import y from"../../../symbols/MeshSymbol3D.js";import h from"../../../symbols/FillSymbol3DLayer.js";import b from"../../../symbols/SimpleFillSymbol.js";import w from"../../../symbols/PolygonSymbol3D.js";import g from"../../../symbols/ExtrudeSymbol3DLayer.js";import D from"../../../symbols/SimpleLineSymbol.js";import j from"../../../symbols/LineSymbol3D.js";import S from"../../../symbols/LineSymbol3DLayer.js";import v from"../../../symbols/PathSymbol3DLayer.js";import x from"../../../symbols/SimpleMarkerSymbol.js";import z from"../../../symbols/PointSymbol3D.js";import V from"../../../symbols/IconSymbol3DLayer.js";import L from"../../../symbols/ObjectSymbol3DLayer.js";const k=/^(\d+(\.\d+)?)\s*(%)$/i,U=[0,0,0,.4],T=["hours","minutes","seconds"],F=[...u.light,...u.dark];function I(e,t,l){if("string"==typeof e){const t=l.getField(e);if(t&&"date"===t.type)return t.alias||t.name}else if("number"==typeof e||e instanceof Date){const l=null!=t&&T.includes(t)?"short-date-short-time":"short-date";return n(e,o(l))}return e}function B(e,t,n){return e+t>0&&0>e-t&&n<0?0:e}function M(e,t,n,o,l){const i="90-10"===n&&t?{min:t.classBreakInfos[0].maxValue,max:t.classBreakInfos[t.classBreakInfos.length-1].minValue,avg:null,stddev:null}:e,{avg:s,stddev:r,min:a,max:u}=i,m=C(i,!!o,l??!0);let c=m?m[0]:a,f=m?m[1]:u;return m?{minDataValue:c,maxDataValue:f,defaultValuesUsed:!0}:("above"===n?c=B(s,r,a):"below"===n&&(f=B(s,r,a)),{minDataValue:c,maxDataValue:f,defaultValuesUsed:!1})}function C(e,t,n){let o,l;const i=P({statistics:e,isDate:t});return i.defaultValuesUsed?(o=i.min,l=i.max):!n||null!=e.avg&&e.stddev||(o=e.min,l=e.max),null!=o&&null!=l?[o,l]:null}function P(e){let t,n,o=e&&e.statistics;if(o||(o={}),null==o.min)if(e.isDate){const e=E();t=e[0],n=e[1]}else t=0,n=100;else if(o.min===o.max)if(e.isDate){const e=E(o.min);t=e[0],n=e[1]}else o.min<0?(t=2*o.min,n=0):o.min>0?(t=0,n=2*o.min):(t=0,n=100);return{min:null!=t?t:o.min,max:null!=n?n:o.max,defaultValuesUsed:null!=t||null!=n}}function E(e){const t=("number"==typeof e?new Date(e):new Date).getUTCFullYear();let n=Date.UTC(t,0,1,12,0,0,0),o=Date.UTC(t,11,31,12,0,0,0);return"number"==typeof e&&(e<n&&(n=e),e>o&&(o=e)),[n,o]}function A(t,n){const o=[],l=t.length;for(let i=0;i<n;i++)o.push(new e(t[i%l]));return o}function R({minDataValue:e,maxDataValue:t,defaultValuesUsed:n},o,l,i=!0){return n||"above"===l||"below"===l||"90-10"===l?q(e,t,5):N(o,i)}function Y(e,t){const{avg:n,stddev:o}=e,i=e.min,s=e.max;if(null==n||null==o){const[n,o]=C(e,t,!0);return q(n,o,5)}const r=B(n,o,i),a=s-r,u=r-i,m=Math.max(a,u);return l([r-m,r-m/2,r,m/2+r,r+m],{strictBounds:!0})}function W(e,t){const{min:n,max:o}=t,[i,s,r,a,u]=e,m=null!=n&&i<n,c=null!=o&&u>o;if(null==n||null==o||!m&&!c)return e;const f=m?n:i,d=c?o:u;return l([f,m?f+(r-f)/2:s,r,c?r+(d-r)/2:a,d],{strictBounds:!0})}function q(e,t,n){const o=(t-e)/(n-1),i=[e];for(let l=1;l<=n-2;l++)i.push(e+l*o);return i.push(t),l(i,{strictBounds:!0})}function N({min:e,max:t,avg:n,stddev:o},i=!0){if(null==e||null==t||null==n||null==o)return[];let s=n-o,r=n+o;s<e&&(s=e),r>t&&(r=t),i&&(n=s+(r-s)/2);let a=l([s,r],{strictBounds:!0});return s=a[0],r=a[1],a=[s,s+(n-s)/2,n,n+(r-n)/2,r],l(a,{strictBounds:!0})}function O(e,t,n){switch(t){case"point":case"multipoint":return n?"noDataSize"in e?e.noDataSize:null:"size"in e?e.size:null;case"polyline":return n?"noDataWidth"in e?e.noDataWidth:null:"width"in e?e.width:null;case"polygon":return"size"in e?e.size:null;default:return}}function $(e,t,n){switch(t){case"point":case"multipoint":case"polygon":{if(!("outline"in e))return null;const t={color:e.outline.color,width:e.outline.width};if(null!=n&&t.color){const e=t.color.clone();e.a=n,t.color=e}return t}default:return}}function G(e,t){const{type:n,size:o,color:l,outline:i}=t;let s;switch(e){case"point":case"multipoint":if("2d"===n)s=new x({color:l,size:o,outline:{color:i.color,width:i.width}});else if("3d-flat"===n)s=new z({symbolLayers:[new V({size:o,resource:{primitive:"circle"},material:{color:l},outline:{color:i.color,size:i.width}})]});else if(n?.includes("3d-volumetric")){const e="3d-volumetric-uniform"===n,i=new L({height:o,resource:{primitive:e?"sphere":"cylinder"},material:{color:l}});e||(i.width=t.widthAndDepth,i.depth=t.widthAndDepth),s=new z({symbolLayers:[i]})}break;case"polyline":"2d"===n?s=new D({color:l,width:o}):"3d-flat"===n?s=new j({symbolLayers:[new S({size:o,material:{color:l}})]}):"3d-volumetric"===n&&(s=new j({symbolLayers:[new v({width:"number"==typeof o?o:parseFloat(o),height:"number"==typeof o?o:parseFloat(o),material:{color:l}})]}));break;case"polygon":"2d"===n?s=new b({color:l,outline:{color:i.color,width:i.width}}):"3d-flat"===n?s=new w({symbolLayers:[new h({material:{color:l},outline:{color:i.color,size:i.width}})]}):"3d-volumetric"===n&&(s=new w({symbolLayers:[new g({size:o,material:{color:l}})]}));break;case"mesh":{const e=t.meshInfo?.colorMixMode,n=t.meshInfo?.edgesType;s=new y({symbolLayers:[new h({material:{color:l,colorMixMode:e||null},edges:"solid"===n?new d({color:U}):"sketch"===n?new f({color:U}):null})]});break}}return s}function H(e,n,o){const l=J({layer:e,fields:n});if(l.length)return new t(o,"Unknown fields: "+l.join(", ")+". You can only use fields defined in the layer schema");const i=K({layer:e,fields:n});return i.length?new t(o,"Unsupported fields: "+i.join(", ")+". You can only use fields that are accessible to the renderer i.e. FieldUsageInfo.supportsRenderer must be true"):void 0}function J(e){const t=e.layer;return e.fields.filter((e=>!t.getField(e)))}function K(e){const t=e.layer;return e.fields.filter((e=>{const n=t.getFieldUsageInfo(e);return!n||!n.supportsRenderer}))}async function Q(e,t){const n={layer:e.layer,view:e.view,signal:e.signal},[o,l]=await Promise.all([r(e).catch(oe),t?s(n).catch(oe):null]),i=C({min:o?.minValue,max:o?.maxValue,avg:null,stddev:null},!1,!1);return{result:i?await r({...e,classificationMethod:"equal-interval",numClasses:1,analyzeData:!1,minValue:i[0],maxValue:i[1],normalizationTotal:i[0]+i[1]}):o,defaultValuesUsed:!!i,outlineResult:l}}function X(e){return a(e)}function Z(e,t){let{minSize:n,maxSize:o}=e;if("height"===t){n=((o-n)/2+n)/(2*2.3),o*=2}return{minSize:n,maxSize:o}}function _(e){return k.test(e)}function ee(e){if(null==e)return;const t=e.match(k),n=Number(t[1]);return"%"===t[3]?new i({scaleFactor:n/100}):void 0}function te(e,t,n,o){e.startTime=t instanceof Date?t.getTime():t,e.endTime=n instanceof Date?n.getTime():n,e.units=o,e.field="string"==typeof t?t:"string"==typeof n?n:null}async function ne(e,t){let n=null,o=null;if(!e&&!t)return{basemapId:n,basemapTheme:o};if(t&&(o=await p(t),e||(e=t.map?.basemap)),e&&(n=m(e,F,!1),n&&!o)){const e=c(n);null!=e&&(o=e)}return!n&&o&&(n="dark"===o?"dark-gray":"gray"),{basemapId:n,basemapTheme:o}}function oe(e){const t=e.name?.toLowerCase();if(!t||t?.includes(":insufficient-info")||t?.includes(":insufficient-data"))return null;throw e}export{W as clampAboveAndBelowStopValues,A as createColors,R as createDataValues,q as createDefaultStopValues,N as createStopValues,Y as createStopValuesForAboveBelow,G as createSymbol,oe as errorCallback,I as formatDate,B as getBaseValueForAboveBelow,ne as getBasemapInfo,Q as getClassBreaks,M as getDataRange,C as getDefaultDataRange,ee as getPointSizeAlgorithm,Z as getSizeRangeForAxis,X as getSummaryStatistics,$ as getSymbolOutlineFromScheme,O as getSymbolSizeFromScheme,_ as isValidPointSize,te as updateAgeRendererAuthoringInfoVV,H as verifyBasicFieldValidity};