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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/Graphic.js +1 -1
  2. package/PopupTemplate.js +1 -1
  3. package/TimeExtent.js +1 -1
  4. package/arcade/ArcadeDate.js +1 -1
  5. package/arcade/Feature.js +1 -1
  6. package/arcade/featureSetUtils.js +1 -1
  7. package/arcade/featureset/actions/Adapted.js +1 -1
  8. package/arcade/featureset/actions/GroupBy.js +1 -1
  9. package/arcade/featureset/support/FeatureSet.js +1 -1
  10. package/arcade/featureset/support/FeatureSetIterator.js +1 -1
  11. package/arcade/featureset/support/StatsField.js +1 -1
  12. package/arcade/featureset/support/sqlUtils.js +1 -1
  13. package/arcade/functions/convertdirection.js +1 -1
  14. package/arcade/functions/date.js +1 -1
  15. package/arcade/functions/featuresetbase.js +1 -1
  16. package/arcade/functions/featuresetstats.js +1 -1
  17. package/arcade/treeAnalysis.js +1 -1
  18. package/arcade.js +1 -1
  19. package/assets/esri/core/workers/RemoteClient.js +1 -1
  20. package/assets/esri/core/workers/chunks/02156fd04279f4d0fd3f.js +1 -0
  21. package/assets/esri/core/workers/chunks/07f6175b52366b2c28bd.js +1 -0
  22. package/assets/esri/core/workers/chunks/098073c3b2849f56dad8.js +1 -0
  23. package/assets/esri/core/workers/chunks/1186ba1947bd0c32f148.js +1 -0
  24. package/assets/esri/core/workers/chunks/186445b9fbedd261f684.js +1 -0
  25. package/assets/esri/core/workers/chunks/{580039dd491854ca325c.js → 21fc02f0d5716c4a7acd.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{dff1c3c38dda2bd1a9d6.js → 246a954347fe9318190e.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{c9dfb145f0c1d93e0fbd.js → 250bb6ae6f1992b5b4f9.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{314c307e30f308a40a28.js → 25b09e9c0511c8e1cf8a.js} +1 -1
  29. package/assets/esri/core/workers/chunks/2a0b3b52ecd787a613bc.js +1 -0
  30. package/assets/esri/core/workers/chunks/2bc9b55e655968229ef4.js +1 -0
  31. package/assets/esri/core/workers/chunks/2f0924e7aa89e689da4a.js +1 -0
  32. package/assets/esri/core/workers/chunks/3f218d65ec451b2a1027.js +1 -0
  33. package/assets/esri/core/workers/chunks/425b5733bb88e6efe242.js +1 -0
  34. package/assets/esri/core/workers/chunks/45d6b942cdccca2ce44a.js +1 -0
  35. package/assets/esri/core/workers/chunks/4bf1a7e82a68ccee0ee1.js +1 -0
  36. package/assets/esri/core/workers/chunks/4c110c7f4f940ec58010.js +1 -0
  37. package/assets/esri/core/workers/chunks/{bde89b2684b6185992ef.js → 4ed77097e69fa3096ce4.js} +1 -1
  38. package/assets/esri/core/workers/chunks/4fe5bac782a742d5b1c0.js +1 -0
  39. package/assets/esri/core/workers/chunks/{1cbaba30f55f00f7498b.js → 51324d042f469f3b8914.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{3f4e9b1663ec521bfe00.js → 542ce10e1872399790b4.js} +1 -1
  41. package/assets/esri/core/workers/chunks/54d2b7e2ac4ba883bee8.js +1 -0
  42. package/assets/esri/core/workers/chunks/54ecb6cae310818d1aa2.js +1 -0
  43. package/assets/esri/core/workers/chunks/57c932e289d89d97da4b.js +1 -0
  44. package/assets/esri/core/workers/chunks/{6403de6fc067cf8f7436.js → 592c1fb531f2be928e8a.js} +1 -1
  45. package/assets/esri/core/workers/chunks/59a807220d6f0dd18776.js +1 -0
  46. package/assets/esri/core/workers/chunks/59dff10d7ad2b1bf469e.js +1 -0
  47. package/assets/esri/core/workers/chunks/609a475ab395f2ce63e2.js +1 -0
  48. package/assets/esri/core/workers/chunks/612c485c5aad1548d708.js +1 -0
  49. package/assets/esri/core/workers/chunks/{2bb69d76a13564e8e455.js → 645ba2d5c10184632d23.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{332689bf60d246485993.js → 65186e168dd112ac6221.js} +1 -1
  51. package/assets/esri/core/workers/chunks/6b9248fb2d6aadbce7bb.js +1 -0
  52. package/assets/esri/core/workers/chunks/709465832d306e02df52.js +1 -0
  53. package/assets/esri/core/workers/chunks/72c5bd6f7b8541b8d69e.js +1 -0
  54. package/assets/esri/core/workers/chunks/{bbc0dcd316c5598bc9ad.js → 74368a5213def6c200a2.js} +1 -1
  55. package/assets/esri/core/workers/chunks/{94188fe381239d48a975.js → 76483c9a8848f3106126.js} +1 -1
  56. package/assets/esri/core/workers/chunks/7aa58c96798447ce5907.js +1 -0
  57. package/assets/esri/core/workers/chunks/7d078b8b9997b5300c0a.js +1 -0
  58. package/assets/esri/core/workers/chunks/7fe641cf1467496e670a.js +1 -0
  59. package/assets/esri/core/workers/chunks/{df8f62beb36fb9d2ac81.js → 810c8d6ff19976fd1366.js} +1 -1
  60. package/assets/esri/core/workers/chunks/8458ed96f3e72814cef2.js +1 -0
  61. package/assets/esri/core/workers/chunks/{243a4eed107d363dfad8.js → 887652bbdb3b71d0a089.js} +1 -1
  62. package/assets/esri/core/workers/chunks/896bfda379cf620b63ec.js +1 -0
  63. package/assets/esri/core/workers/chunks/91c9f0d59eaed7a735ce.js +1 -0
  64. package/assets/esri/core/workers/chunks/{1f7e041140088f8ac489.js → 97073a60f0ea2a397165.js} +1 -1
  65. package/assets/esri/core/workers/chunks/97658ac749664a07c92d.js +1 -0
  66. package/assets/esri/core/workers/chunks/{1da74a306aa5b4eacaae.js → 9866bbaeaf885c2dcca9.js} +1 -1
  67. package/assets/esri/core/workers/chunks/a39ae87298ac674f129d.js +1 -0
  68. package/assets/esri/core/workers/chunks/a7b3048c19348540e004.js +1 -0
  69. package/assets/esri/core/workers/chunks/a8ca4b116909e47722f9.js +1 -0
  70. package/assets/esri/core/workers/chunks/{101f776316a85b708927.js → a99070ec4c06c435b744.js} +1 -1
  71. package/assets/esri/core/workers/chunks/ab145d13932d87dd7bf9.js +1 -0
  72. package/assets/esri/core/workers/chunks/{77c15b1c2729c780f75a.js → aeeeb386134b341d7ad2.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{3ca759f72d3bb29e9ea9.js → af54b233f6d6ad70b4a3.js} +2 -2
  74. package/assets/esri/core/workers/chunks/b9146daae8457224fd08.js +1 -0
  75. package/assets/esri/core/workers/chunks/bcdd2e8841abcb4df6da.js +1 -0
  76. package/assets/esri/core/workers/chunks/be05cc0cdabd5e051045.js +1 -0
  77. package/assets/esri/core/workers/chunks/c5f5f37bef11c6fbdc40.js +1 -0
  78. package/assets/esri/core/workers/chunks/d414dba3179bcf75bc6b.js +1 -0
  79. package/assets/esri/core/workers/chunks/{b449d6bd5851187d419f.js → d6e5408f9fa6b4bcd118.js} +1 -1
  80. package/assets/esri/core/workers/chunks/d9fb500cbd0f04d219a3.js +1 -0
  81. package/assets/esri/core/workers/chunks/e0dd6789fb797e9b7206.js +1 -0
  82. package/assets/esri/core/workers/chunks/{6f271249e042086d5a16.js → e4e49deae8da74f629db.js} +1 -1
  83. package/assets/esri/core/workers/chunks/e5dcff7a4fa84ba09670.js +1 -0
  84. package/assets/esri/core/workers/chunks/{f508ccfde6425dabe9ac.js → ee0bf611d191103a7046.js} +1 -1
  85. package/assets/esri/core/workers/chunks/{ed1fbc1bc8d50453e2f5.js → f793cd41fcd022baeea2.js} +1 -1
  86. package/assets/esri/core/workers/chunks/fad6a7bb82a0a2df726f.js +1 -0
  87. package/assets/esri/themes/base/widgets/_FeatureForm.scss +2 -84
  88. package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +2 -0
  89. package/assets/esri/themes/dark/main.css +1 -1
  90. package/assets/esri/themes/light/main.css +1 -1
  91. package/assets/esri/themes/light/view.css +1 -1
  92. package/chunks/arcade.js +1 -1
  93. package/config.js +1 -1
  94. package/core/Accessor.js +1 -1
  95. package/core/accessorSupport/diffUtils.js +1 -1
  96. package/core/has.js +1 -1
  97. package/core/number.js +1 -1
  98. package/core/reactiveUtils.js +1 -1
  99. package/core/sql/DateOnly.js +1 -1
  100. package/core/sql/WhereClause.js +1 -1
  101. package/core/sql.js +1 -1
  102. package/core/timeUtils.js +1 -1
  103. package/identity/IdentityForm.js +1 -1
  104. package/identity/IdentityModal.js +1 -1
  105. package/interfaces.d.ts +48 -203
  106. package/layers/LinkChartLayer.js +1 -1
  107. package/layers/OrientedImageryLayer.js +1 -1
  108. package/layers/SceneLayer.js +1 -1
  109. package/layers/graphics/applyEditsUtils.js +5 -0
  110. package/layers/graphics/editingSupport.js +1 -1
  111. package/layers/graphics/sources/FeatureLayerSource.js +1 -1
  112. package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
  113. package/layers/mixins/ArcGISImageService.js +1 -1
  114. package/layers/mixins/EditBusLayer.js +1 -1
  115. package/layers/orientedImagery/core/CameraOrientationLTP.js +1 -1
  116. package/layers/orientedImagery/core/ElevationSourceDefinitions.js +5 -0
  117. package/layers/orientedImagery/core/ExposurePoint.js +1 -1
  118. package/layers/orientedImagery/core/cameraOrientationFactory.js +1 -1
  119. package/layers/orientedImagery/core/utils.js +5 -0
  120. package/layers/orientedImagery/transformations/groundToImageUtils.js +1 -1
  121. package/layers/support/fieldProperties.js +1 -1
  122. package/layers/support/fieldUtils.js +1 -1
  123. package/layers/support/imageryRendererUtils.js +1 -1
  124. package/layers/support/kmlUtils.js +1 -1
  125. package/layers/support/rasterFunctions/BaseRasterFunction.js +1 -1
  126. package/layers/support/rasterFunctions/creators/createDataManagementFunctions.js +1 -1
  127. package/networks/Network.js +1 -1
  128. package/package.json +1 -1
  129. package/request.js +1 -1
  130. package/rest/featureService/FeatureService.js +1 -1
  131. package/rest/support/DirectionsFeatureSet.js +1 -1
  132. package/smartMapping/renderers/pieChart.js +1 -1
  133. package/smartMapping/renderers/relationship.js +1 -1
  134. package/smartMapping/renderers/support/utils.js +1 -1
  135. package/smartMapping/statistics/support/ageUtils.js +1 -1
  136. package/smartMapping/support/adapters/support/utils.js +1 -1
  137. package/smartMapping/support/utils.js +1 -1
  138. package/support/apiKeyUtils.js +1 -1
  139. package/support/arcadeUtils.js +1 -1
  140. package/support/revision.js +1 -1
  141. package/symbols/cim/cimAnalyzer.js +1 -1
  142. package/symbols/support/svgUtils.js +1 -1
  143. package/time/TimeReference.js +1 -1
  144. package/time/timeReferenceUtils.js +1 -1
  145. package/versionManagement/VersionManagementService.js +1 -1
  146. package/versionManagement/support/EditMomentStack.js +5 -0
  147. package/versionManagement/support/versionManagementUtils.js +1 -1
  148. package/views/2d/engine/Container.js +1 -1
  149. package/views/2d/engine/DisplayObject.js +1 -1
  150. package/views/2d/engine/ManagedCanvas.js +5 -0
  151. package/views/2d/engine/Stage.js +1 -1
  152. package/views/2d/engine/webgl/GroupContainer.js +1 -1
  153. package/views/2d/engine/webgl/Painter.js +1 -1
  154. package/views/2d/engine/webgl/WGLContainer.js +1 -1
  155. package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
  156. package/views/2d/engine/webgl/effects/FeatureEffect.js +1 -1
  157. package/views/2d/engine/webgl/effects/HighlightEffect.js +1 -1
  158. package/views/2d/engine/webgl/effects/HittestEffectVTL.js +1 -1
  159. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  160. package/views/2d/interactive/editingTools/TransformTool.js +1 -1
  161. package/views/2d/layers/GeoRSSLayerView2D.js +1 -1
  162. package/views/2d/layers/MediaLayerView2D.js +1 -1
  163. package/views/2d/layers/TileLayerView2D.js +1 -1
  164. package/views/2d/layers/WMTSLayerView2D.js +1 -1
  165. package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
  166. package/views/2d/layers/features/tileRenderers/support/WGLFeatureView.js +1 -1
  167. package/views/2d/layers/graphics/BaseGraphicContainer.js +1 -1
  168. package/views/2d/layers/graphics/GraphicContainer.js +1 -1
  169. package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
  170. package/views/2d/layers/graphics/HighlightGraphicContainer.js +1 -1
  171. package/views/2d/layers/imagery/VectorFieldView2D.js +1 -1
  172. package/views/2d/layers/support/DisplayGL.js +1 -1
  173. package/views/2d/webglDeps.js +1 -1
  174. package/views/3d/glTF/loader.js +1 -1
  175. package/views/3d/interactive/editingTools/manipulations/MoveManipulation.js +1 -1
  176. package/views/3d/interactive/editingTools/transformGraphic/isSupportedGraphic.js +1 -1
  177. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  178. package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
  179. package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
  180. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  181. package/views/3d/layers/SceneLayerView3D.js +1 -1
  182. package/views/3d/layers/graphics/ElevationAligners.js +1 -1
  183. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  184. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  185. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  186. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  187. package/views/3d/layers/graphics/Labeler.js +1 -1
  188. package/views/3d/layers/graphics/graphicUtils.js +1 -1
  189. package/views/3d/layers/i3s/featureEditing.js +1 -1
  190. package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
  191. package/views/3d/state/ViewStateManager.js +1 -1
  192. package/views/3d/support/buffer/glUtil.js +1 -1
  193. package/views/3d/support/engineContent/line.js +1 -1
  194. package/views/3d/support/viewpointUtils.js +1 -1
  195. package/views/3d/webgl-engine/Stage.js +1 -1
  196. package/views/3d/webgl-engine/effects/RenderPluginInput.js +1 -1
  197. package/views/3d/webgl-engine/effects/blit/Blit.js +5 -0
  198. package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
  199. package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
  200. package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
  201. package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
  202. package/views/3d/webgl-engine/lib/Geometry.js +1 -1
  203. package/views/3d/webgl-engine/lib/ModelDirtySet.js +1 -1
  204. package/views/3d/webgl-engine/lib/Object3D.js +1 -1
  205. package/views/3d/webgl-engine/lib/RenderSlot.js +1 -1
  206. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  207. package/views/3d/webgl-engine/lib/TextRenderer.js +1 -1
  208. package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
  209. package/views/3d/webgl-engine/lib/TextTextureFactory.js +1 -1
  210. package/views/3d/webgl-engine/lib/VertexAttribute.js +1 -1
  211. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  212. package/views/3d/webgl-engine/lib/edgeRendering/bufferLayouts.js +1 -1
  213. package/views/3d/webgl-engine/lib/edgeRendering/edgeProcessing.js +1 -1
  214. package/views/View.js +1 -1
  215. package/views/interactive/tooltip/TooltipContentWithHelpMessage.js +1 -1
  216. package/views/interactive/tooltip/TooltipEditableField.js +1 -1
  217. package/views/interactive/tooltip/constraintUtils.js +1 -1
  218. package/views/interactive/tooltip/content/Fields.js +1 -1
  219. package/views/interactive/tooltip/content/TooltipContentDrawCircle.js +1 -1
  220. package/views/interactive/tooltip/content/TooltipContentDrawMesh.js +1 -1
  221. package/views/interactive/tooltip/content/TooltipContentDrawPoint.js +1 -1
  222. package/views/interactive/tooltip/content/TooltipContentDrawPolygon.js +1 -1
  223. package/views/interactive/tooltip/content/TooltipContentDrawPolyline.js +1 -1
  224. package/views/interactive/tooltip/content/TooltipContentDrawRectangle.js +1 -1
  225. package/views/interactive/tooltip/content/TooltipContentExtentRotate.js +1 -1
  226. package/views/interactive/tooltip/content/TooltipContentExtentScale.js +1 -1
  227. package/views/interactive/tooltip/content/TooltipContentReshapeEdgeOffset.js +1 -1
  228. package/views/interactive/tooltip/content/TooltipContentTransformAbsolute.js +1 -1
  229. package/views/interactive/tooltip/content/TooltipContentTransformRotate.js +1 -1
  230. package/views/interactive/tooltip/content/TooltipContentTransformScale.js +1 -1
  231. package/views/interactive/tooltip/content/TooltipContentTranslateGraphic.js +1 -1
  232. package/views/interactive/tooltip/content/TooltipContentTranslateGraphicXY.js +1 -1
  233. package/views/interactive/tooltip/content/TooltipContentTranslateGraphicZ.js +1 -1
  234. package/views/interactive/tooltip/content/TooltipContentTranslateVertex.js +1 -1
  235. package/views/interactive/tooltip/content/TooltipContentTranslateVertexXY.js +1 -1
  236. package/views/interactive/tooltip/content/TooltipContentTranslateVertexZ.js +1 -1
  237. package/views/support/angularMeasurementUtils.js +1 -1
  238. package/views/ui/UI.js +1 -1
  239. package/views/webgl/ShaderTranspiler.js +1 -1
  240. package/views/webgl/Texture.js +1 -1
  241. package/views/webgl/contextUtils.js +1 -1
  242. package/webmap/InitialViewProperties.js +1 -1
  243. package/widgets/AreaMeasurement2D.js +1 -1
  244. package/widgets/AreaMeasurement3D.js +1 -1
  245. package/widgets/Attachments/AttachmentsViewModel.js +1 -1
  246. package/widgets/Attachments.js +1 -1
  247. package/widgets/Attribution.js +1 -1
  248. package/widgets/BasemapGallery.js +1 -1
  249. package/widgets/BasemapLayerList.js +1 -1
  250. package/widgets/BasemapToggle.js +1 -1
  251. package/widgets/Bookmarks.js +1 -1
  252. package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesNode.js +1 -1
  253. package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesTree.js +1 -1
  254. package/widgets/BuildingExplorer/BuildingLevelPicker/BuildingLevelPicker.js +1 -1
  255. package/widgets/BuildingExplorer/BuildingLevelPicker/Label.js +1 -1
  256. package/widgets/BuildingExplorer/BuildingLevelPicker/LevelItem.js +1 -1
  257. package/widgets/BuildingExplorer/BuildingPhasePicker/BuildingPhasePicker.js +1 -1
  258. package/widgets/BuildingExplorer.js +1 -1
  259. package/widgets/Compass.js +1 -1
  260. package/widgets/CoordinateConversion.js +1 -1
  261. package/widgets/Daylight/support/SliderWithDropdown.js +1 -1
  262. package/widgets/Daylight.js +1 -1
  263. package/widgets/DirectLineMeasurement3D.js +1 -1
  264. package/widgets/DirectionalPad.js +1 -1
  265. package/widgets/Directions/components/SaveLayer.js +1 -1
  266. package/widgets/Directions.js +1 -1
  267. package/widgets/DistanceMeasurement2D.js +1 -1
  268. package/widgets/Editor/components/FooterActions.js +1 -1
  269. package/widgets/Editor/components/Notices.js +1 -1
  270. package/widgets/Editor/components/PanelContent.js +1 -1
  271. package/widgets/Editor/components/PanelToolbar.js +1 -1
  272. package/widgets/Editor/components/Prompt.js +1 -1
  273. package/widgets/Editor/components/Settings.js +1 -1
  274. package/widgets/Editor/components/UpdateFeaturePanelContent.js +1 -1
  275. package/widgets/Editor/components/UploadDetails.js +1 -1
  276. package/widgets/Editor.js +1 -1
  277. package/widgets/ElevationProfile/components/LegendItem.js +1 -1
  278. package/widgets/ElevationProfile/components/SettingsButton.js +1 -1
  279. package/widgets/ElevationProfile/components/Statistics.js +1 -1
  280. package/widgets/ElevationProfile.js +1 -1
  281. package/widgets/Expand.js +1 -1
  282. package/widgets/Feature/FeatureContent.js +1 -1
  283. package/widgets/Feature/FeatureExpression.js +1 -1
  284. package/widgets/Feature/FeatureFields.js +1 -1
  285. package/widgets/Feature/FeatureMedia.js +1 -1
  286. package/widgets/Feature/FeatureRelationship.js +1 -1
  287. package/widgets/Feature/FeatureViewModel.js +1 -1
  288. package/widgets/Feature/support/FeatureContentMixin.js +1 -1
  289. package/widgets/Feature/support/FeatureElementInfo.js +1 -1
  290. package/widgets/Feature.js +1 -1
  291. package/widgets/FeatureForm/FeatureFormViewModel.js +1 -1
  292. package/widgets/FeatureForm/GroupInput.js +1 -1
  293. package/widgets/FeatureForm/css.js +1 -1
  294. package/widgets/FeatureForm.js +1 -1
  295. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  296. package/widgets/FeatureTable/Grid/Grid.js +1 -1
  297. package/widgets/FeatureTable/Grid/support/ButtonMenu.js +1 -1
  298. package/widgets/FeatureTable.js +1 -1
  299. package/widgets/FeatureTemplates/ItemList.js +1 -1
  300. package/widgets/FeatureTemplates.js +1 -1
  301. package/widgets/Features/FeaturesRelatedRecords.js +1 -1
  302. package/widgets/Features.js +1 -1
  303. package/widgets/FloorFilter/FloorFilterViewModel.js +1 -1
  304. package/widgets/FloorFilter.js +1 -1
  305. package/widgets/Fullscreen.js +1 -1
  306. package/widgets/Histogram.js +1 -1
  307. package/widgets/HistogramRangeSlider.js +1 -1
  308. package/widgets/Home.js +1 -1
  309. package/widgets/LayerList/ListItemPanel.js +1 -1
  310. package/widgets/LayerList.js +1 -1
  311. package/widgets/Legend/LegendViewModel.js +1 -1
  312. package/widgets/Legend/styles/Card.js +1 -1
  313. package/widgets/Legend/styles/Classic.js +1 -1
  314. package/widgets/Legend/styles/support/relationshipUtils.js +1 -1
  315. package/widgets/Legend/styles/support/univariateUtils.js +1 -1
  316. package/widgets/LineOfSight.js +1 -1
  317. package/widgets/Locate.js +1 -1
  318. package/widgets/NavigationToggle.js +1 -1
  319. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  320. package/widgets/OrientedImageryViewer.js +1 -1
  321. package/widgets/Popup.js +1 -1
  322. package/widgets/Print.js +1 -1
  323. package/widgets/ScaleRangeSlider/scalePreviewUtils.js +1 -1
  324. package/widgets/ScaleRangeSlider.js +1 -1
  325. package/widgets/Search/SearchResultRenderer.js +1 -1
  326. package/widgets/Search.js +1 -1
  327. package/widgets/ShadowCast/components/DiscreteConfigurator.js +1 -1
  328. package/widgets/ShadowCast/components/DurationConfigurator.js +1 -1
  329. package/widgets/ShadowCast/components/ShadowTooltipContent.js +1 -1
  330. package/widgets/ShadowCast/components/ThresholdConfigurator.js +1 -1
  331. package/widgets/ShadowCast.js +1 -1
  332. package/widgets/Sketch.js +1 -1
  333. package/widgets/Slice.js +1 -1
  334. package/widgets/Slider.js +1 -1
  335. package/widgets/Swipe.js +1 -1
  336. package/widgets/TableList.js +1 -1
  337. package/widgets/TimeSlider.js +1 -1
  338. package/widgets/Track.js +1 -1
  339. package/widgets/UtilityNetworkAssociations/UtilityNetworkAssociationsLineSymbolPicker.js +1 -1
  340. package/widgets/UtilityNetworkAssociations.js +1 -1
  341. package/widgets/UtilityNetworkTrace.js +1 -1
  342. package/widgets/UtilityNetworkValidateTopology.js +1 -1
  343. package/widgets/ValuePicker.js +1 -1
  344. package/widgets/VideoPlayer/components/PlayerControlsGroup.js +1 -1
  345. package/widgets/VideoPlayer/components/SettingsButton.js +1 -1
  346. package/widgets/VideoPlayer.js +1 -1
  347. package/widgets/Weather/LabeledSlider.js +1 -1
  348. package/widgets/Weather.js +1 -1
  349. package/widgets/Zoom/IconButton.js +1 -1
  350. package/widgets/smartMapping/BinaryColorSizeSlider.js +1 -1
  351. package/widgets/smartMapping/ClassedColorSlider.js +1 -1
  352. package/widgets/smartMapping/ClassedSizeSlider.js +1 -1
  353. package/widgets/smartMapping/ColorSizeSlider.js +1 -1
  354. package/widgets/smartMapping/ColorSlider.js +1 -1
  355. package/widgets/smartMapping/HeatmapSlider.js +1 -1
  356. package/widgets/smartMapping/OpacitySlider.js +1 -1
  357. package/widgets/smartMapping/SizeSlider.js +1 -1
  358. package/widgets/smartMapping/SmartMappingSliderBase.js +1 -1
  359. package/widgets/support/ColorPicker.js +1 -1
  360. package/widgets/support/DatePicker.js +1 -1
  361. package/widgets/support/Heading.js +1 -1
  362. package/widgets/support/LabeledSwitch.js +1 -1
  363. package/widgets/support/MeasurementWidgetContent.js +1 -1
  364. package/widgets/support/Popover.js +1 -1
  365. package/widgets/support/SelectionToolbar.js +1 -1
  366. package/widgets/support/SketchTooltipControls.js +1 -1
  367. package/widgets/support/SnappingControls.js +1 -1
  368. package/widgets/support/TimePicker.js +1 -1
  369. package/widgets/support/TimezonePicker.js +1 -1
  370. package/widgets/support/UnitSelect.js +1 -1
  371. package/widgets/support/dateUtils.js +1 -1
  372. package/assets/esri/core/workers/chunks/072b4e041b8630c513a0.js +0 -1
  373. package/assets/esri/core/workers/chunks/092920c25cac89c038ee.js +0 -1
  374. package/assets/esri/core/workers/chunks/114269dda1d296893908.js +0 -1
  375. package/assets/esri/core/workers/chunks/126df6237fc80608344e.js +0 -1
  376. package/assets/esri/core/workers/chunks/1b3655f5bf5d90fa8730.js +0 -1
  377. package/assets/esri/core/workers/chunks/1c83f47d446f2bca1721.js +0 -1
  378. package/assets/esri/core/workers/chunks/1cf7bb514e7eefc3e9c6.js +0 -1
  379. package/assets/esri/core/workers/chunks/21a9c8aa2a9e9990df41.js +0 -1
  380. package/assets/esri/core/workers/chunks/24629402c647ef6b5f6b.js +0 -1
  381. package/assets/esri/core/workers/chunks/2a1c1be9c202462cf54d.js +0 -1
  382. package/assets/esri/core/workers/chunks/2cb36f9686693234991a.js +0 -1
  383. package/assets/esri/core/workers/chunks/2d0d03cbea83c868edba.js +0 -1
  384. package/assets/esri/core/workers/chunks/2e130cb2f1038055c07b.js +0 -1
  385. package/assets/esri/core/workers/chunks/3619e04cbb6691549014.js +0 -1
  386. package/assets/esri/core/workers/chunks/3dbfb4f370a874393822.js +0 -1
  387. package/assets/esri/core/workers/chunks/406db5c90271a3a203d4.js +0 -1
  388. package/assets/esri/core/workers/chunks/4369a6c1e0a82ab4db6a.js +0 -1
  389. package/assets/esri/core/workers/chunks/4f4a424d1747d04501df.js +0 -1
  390. package/assets/esri/core/workers/chunks/59c00d6fba0fd1c03d01.js +0 -1
  391. package/assets/esri/core/workers/chunks/5a5720caa64a46daadf9.js +0 -1
  392. package/assets/esri/core/workers/chunks/5edb99b58549cd66b394.js +0 -1
  393. package/assets/esri/core/workers/chunks/6203ddf6caad3d356327.js +0 -1
  394. package/assets/esri/core/workers/chunks/650a317b6dc245a7060f.js +0 -1
  395. package/assets/esri/core/workers/chunks/7a358b1fd0c0cce59e9b.js +0 -1
  396. package/assets/esri/core/workers/chunks/83d1a1b3d371c991cc4c.js +0 -1
  397. package/assets/esri/core/workers/chunks/846b7a81b870c8b238a1.js +0 -1
  398. package/assets/esri/core/workers/chunks/8ab832468300cc4feb5a.js +0 -1
  399. package/assets/esri/core/workers/chunks/bc1dc6383e60e7e61d50.js +0 -1
  400. package/assets/esri/core/workers/chunks/bc6323bdc98013da6fe5.js +0 -1
  401. package/assets/esri/core/workers/chunks/c4bb67150ccd01ea6014.js +0 -1
  402. package/assets/esri/core/workers/chunks/c60cf62f374e71e562fc.js +0 -1
  403. package/assets/esri/core/workers/chunks/c6ea5aac232d1eca04dd.js +0 -1
  404. package/assets/esri/core/workers/chunks/c8438c2d9ac48afe4033.js +0 -1
  405. package/assets/esri/core/workers/chunks/c8f239c25fe864f0e47a.js +0 -1
  406. package/assets/esri/core/workers/chunks/cad260881653567bc8f9.js +0 -1
  407. package/assets/esri/core/workers/chunks/d824f4b405a72cd2fa74.js +0 -1
  408. package/assets/esri/core/workers/chunks/dd7508d4016715371e0c.js +0 -1
  409. package/assets/esri/core/workers/chunks/e55f7fc7eff0074ce0fc.js +0 -1
  410. package/assets/esri/core/workers/chunks/eef27d305023034084a4.js +0 -1
  411. package/assets/esri/core/workers/chunks/f38c54ada9e7012a2960.js +0 -1
  412. package/assets/esri/core/workers/chunks/f5e0ff5292b9fd18fc92.js +0 -1
  413. package/assets/esri/core/workers/chunks/f5eb8b5021620be7538e.js +0 -1
  414. package/core/watchUtils.d.ts +0 -4
  415. package/core/watchUtils.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.28/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import r from"../../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"../../symbols.js";import{isSome as a}from"../../core/arrayUtils.js";import t from"../../core/Error.js";import{toPt as i}from"../../core/screenUtils.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../layers/support/AggregateField.js";import o from"../../layers/support/ExpressionInfo.js";import l from"../../renderers/support/AttributeColorInfo.js";import{OthersCategory as u}from"../../renderers/support/OthersCategory.js";import p from"../heuristics/outline.js";import m from"../heuristics/sizeRange.js";import{createVisualVariables as c}from"./size.js";import{errorCallback as d,createColors as f,createSymbol as h,getSymbolOutlineFromScheme as b,verifyBasicFieldValidity as y,getBasemapInfo as w}from"./support/utils.js";import g from"../statistics/predominantCategories.js";import{getSumOfAttributesExpr as v}from"../statistics/support/utils.js";import{verifyBinningParams as z}from"../support/binningUtils.js";import{getFieldsList as S}from"../support/utils.js";import{LayerType as E,binningCapableLayerTypes as j,createLayerAdapter as C,getLayerTypeLabels as x,getLayerTypes as V}from"../support/adapters/support/layerUtils.js";import{cloneScheme as $,getSchemes as T}from"../symbology/pieChart.js";import{getCIMSymbolColor as I}from"../../symbols/support/cimSymbolUtils.js";import k from"../../symbols/SimpleLineSymbol.js";const q=[E.CSVLayer,E.FeatureLayer,E.OGCFeatureLayer,E.GeoJSONLayer,E.StreamLayer,E.WFSLayer];async function O(e){if(!(e&&e.layer&&e.view&&e.attributes?.length))throw new t("pie-chart-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>10)throw new t("pie-chart-renderer:invalid-parameters","PieChart renderer does not support more than 10 attributes");e.forBinning&&z(e,"pie-chart-renderer");const r={...e,layer:e.layer,view:e.view,attributes:e.attributes};r.shape=r.shape||"pie",r.othersCategoryEnabled??=!0,r.includeSizeVariable=e.includeSizeVariable||!1;const a=e.forBinning?j:q,i=C(r.layer,a,e.forBinning);if(!i)throw new t("pie-chart-renderer:invalid-parameters","'layer' must be one of these types: "+x(a).join(", "));r.layer=i;const n=null!=r.signal?{signal:r.signal}:null;await Promise.all([e.view.when(),i.load(n)]);const s=i.geometryType,o="polygon"===s,l="point"===s||"multipoint"===s||o;if(r.outlineOptimizationEnabled=!!o&&r.outlineOptimizationEnabled,r.sizeOptimizationEnabled=!!l&&r.sizeOptimizationEnabled,!l)throw new t("pie-chart-renderer:not-supported","PieChart renderer is only supported for point and polygon layers");const u=[],p=r.attributes;for(const t of p){const e=await S({field:t.field,valueExpression:t.valueExpression});u.push(...e)}const m=y(i,u.filter(Boolean),"pie-chart-renderer:invalid-parameters");if(m)throw m;return r}async function B(e){let r=e.pieChartScheme,a=null,t=null;const i=await w(e.basemap,e.view);if(a=null!=i.basemapId?i.basemapId:null,t=null!=i.basemapTheme?i.basemapTheme:null,r)return{scheme:$(r),basemapId:a,basemapTheme:t};const n=T({numColors:e.attributes.length,geometryType:e.layer.geometryType,basemapTheme:t});return n&&(r=n.primaryScheme,a=n.basemapId,t=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:t}}async function L(e,r){const{valueExpression:a,sqlExpression:t,sqlWhere:i}=v(e.attributes),s=await n("esri/smartMapping/t9n/smartMapping");return c({layer:e.layer,basemap:e.basemap,valueExpression:a,sqlExpression:t,sqlWhere:i,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,legendOptions:{title:s.sumOfCategories},view:e.view,signal:e.signal})}async function R(e){const[s,o]=await Promise.all([O(e),n("esri/smartMapping/t9n/smartMapping")]),c=await B(s),y=c?.scheme;if(!y)throw new t("pie-chart-renderer:insufficient-info","Unable to find pie-chart scheme");const w=s.layer,{includeSizeVariable:v,sizeOptimizationEnabled:z,outlineOptimizationEnabled:S,view:E,signal:j}=s,C=y.sizeScheme,x=s.attributes,V=x.map((e=>e.field)).filter(a),[T,I,q,R]=await Promise.all([V.length>1?g({layer:w,fields:V,view:E,signal:j}):null,v?L(s,C):null,!v&&z?m({layer:w,view:E,signal:j}).catch(d):null,S?p({layer:w,view:E,signal:j}).catch(d):null]),P=T&&T.predominantCategoryInfos?{uniqueValueInfos:T.predominantCategoryInfos}:{uniqueValueInfos:V.map((e=>({value:e,count:0})))},U=f(y.colors,x.length),F=x.map(((e,r)=>new l({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:U[r]}))),M=w.geometryType,N=null!=C&&"background"in C&&C.background,_=new r({attributes:F,othersCategory:new u({label:o.other,color:s.othersCategoryEnabled?y.colorForOthersCategory:null,threshold:.04}),holePercentage:"donut"===s.shape?.45:0,backgroundFillSymbol:N?h(M,{type:"2d",color:N.color,outline:b(N,M,R?.opacity)}):null,size:i(y.size),outline:new k(b(y,"point",R?.opacity)),legendOptions:s.legendOptions});if(I&&(z||I.visualVariables.forEach((e=>{"number"==typeof e.minSize&&"number"==typeof e.maxSize&&(e.minSize*=2.5,e.maxSize*=1.8)})),z&&"point"===M&&I.visualVariables.forEach((e=>{e?.minSize&&"object"==typeof e.minSize&&e.minSize?.stops?.forEach((e=>{e.size*=1.8}))})),_.authoringInfo=I.authoringInfo.clone(),_.visualVariables=I.visualVariables?.map((e=>e.clone()))),R?.visualVariables?.length){const e=R.visualVariables.map((e=>e.clone()));_.visualVariables?_.visualVariables.push(...e):_.visualVariables=e}return q?.minSize&&("point"===M&&q.minSize.stops?.forEach((e=>{e.size*=2.5})),"polygon"===M&&q.minSize.stops?.forEach((e=>{e.size*=1.8})),_.visualVariables?_.visualVariables.push(q.minSize):_.visualVariables=[q.minSize]),{renderer:_,pieChartScheme:$(y),size:I,basemapId:c.basemapId,basemapTheme:c.basemapTheme,statistics:P}}const P=["unique-value","class-breaks"],U=new e("#aaaaaa"),F=new e("#5c5c5c"),M=[new e("#e60049"),new e("#0bb4ff"),new e("#50e991"),new e("#e6d800"),new e("#9b19f5"),new e("#ffa300"),new e("#dc0ab4"),new e("#b3d4ff"),new e("#00bfa0"),new e("#f0cccc")];async function N(e){if(!e||!e.layer)throw new t("pie-chart-cluster-renderer:missing-parameters","'layer' parameter is required");const r={...e};r.shape=r.shape||"pie",r.defaultSymbolEnabled??=!0;const a=e.layer;if(!V(q).includes(a.type))throw new t("pie-chart-cluster-renderer:invalid-parameters","'layer' must be one of these types: "+x(q).join(", "));const i=null!=r.signal?{signal:r.signal}:null;await a.load(i);if(!("point"===a.geometryType))throw new t("pie-chart-cluster-renderer:invalid-parameters","Cluster renderers are only supported for point layers");const{renderer:n}=a;if(!n)throw new t("pie-chart-cluster-renderer:invalid-parameters","input layer does not have a renderer.");if(!P.includes(n.type))throw new t("pie-chart-cluster-renderer:invalid-parameters",`Cannot create a pie chart renderer for clusters based on a ${n.type} renderer.`);if("valueExpression"in n&&n.valueExpression)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer whose renderer contains a valueExpression.");if("unique-value"===n.type){if(n.field2)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a UniqueValueRenderer using more than one field.");if(null!=n.uniqueValueInfos&&n.uniqueValueInfos.length>10)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer cannot be created from a UniqueValueRenderer with more than 10 unique value infos.")}if("class-breaks"===n.type){if(n.classBreakInfos.length<2)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer renderer with a continuous color or size gradient.");if(n.classBreakInfos.length>10)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with more than 10 class break infos.");if("class-breaks-size"===n?.authoringInfo?.type)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with breaks varied by size instead of color.")}return r}async function _(e){const a=await N(e),{layer:t,shape:i,defaultSymbolEnabled:s,legendOptions:o}=a,{renderer:u}=t,p=(await n("esri/smartMapping/t9n/smartMapping")).other;let m=[];"unique-value"===u?.type&&(m=A({renderer:u,defaultSymbolEnabled:s,defaultLabelBackup:p})),"class-breaks"===u?.type&&(m=D({renderer:u,defaultSymbolEnabled:s,defaultLabelBackup:p}));const c=[],d=[];for(const r of m){const{field:e,color:a}=r;c.push(e),d.push(new l({color:a,field:e.name,label:e.alias}))}return{fields:c,renderer:new r({attributes:d,legendOptions:o,holePercentage:"donut"===i?.45:0,outline:null,size:18,othersCategory:null})}}function A(e){const{renderer:r,defaultSymbolEnabled:a,defaultLabelBackup:t}=e,{field:i,defaultSymbol:n,defaultLabel:l}=r,u=r.uniqueValueInfos??[],p=n&&a,m=p?9:10,c=f(M,m),d=u.slice(0,m).map(((e,r)=>{const a=e.label,t=c[r];return{field:new s({name:W(e.value?.toString()),alias:a,onStatisticExpression:new o({title:`Field definition - ${a}`,expression:H(i,e),returnType:"number"}),statisticType:"sum"}),color:G(e.symbol,t)}}))??[];if(p){const e="cluster_default",r=l||t;d.push({field:new s({name:W(e),alias:r,onStatisticExpression:new o({title:`Field definition - ${r}`,expression:J(i,u),returnType:"number"}),statisticType:"sum"}),color:G(n,F)})}return d}function D(e){const{renderer:r,defaultSymbolEnabled:a,defaultLabelBackup:t}=e,{field:i,classBreakInfos:n,defaultSymbol:l,defaultLabel:u}=r,p=l&&a,m=p?9:10,c=f(M,m),d=n.slice(0,m).map(((e,r)=>{const a=e.label||`${e.minValue} - ${e.maxValue}`,t=c[r];return{field:new s({name:W(a),alias:a,onStatisticExpression:new o({title:`Field definition - ${a}`,expression:Z(i,e),returnType:"number"}),statisticType:"sum"}),color:G(e.symbol,t)}}));if(p){const e="cluster_default",r=u||t;d.push({field:new s({name:W(e),alias:r,onStatisticExpression:new o({title:`Field definition - ${r}`,expression:K(i,n),returnType:"number"}),statisticType:"sum"}),color:G(l,F)})}return d}function W(e){return"SUM_"+(e+"").replaceAll(/[^a-zA-Z0-9_]/g,"_")}function G(e,r){if("simple-marker"===e?.type&&e.color)return e.color.clone();if("cim"===e?.type){const r=I(e);if(r)return r.clone()}return r?r.clone():U.clone()}function H(e,r){return`Number(Text($feature["${e}"]) == "${r.value+""}")`}function J(e,r){return`Number(!(${r.map((r=>`(Text($feature["${e}"]) == "${r.value+""}")`)).join(" || ")}))`}function Z(e,r){return`Number($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`}function K(e,r){return`Number(!(${r.map((r=>`($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`)).join(" || ")}))`}export{R as createRenderer,_ as createRendererForClustering};
5
+ import e from"../../Color.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import r from"../../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"../../symbols.js";import{isSome as a}from"../../core/arrayUtils.js";import t from"../../core/Error.js";import{toPt as n}from"../../core/screenUtils.js";import{fetchMessageBundle as i}from"../../intl/messages.js";import s from"../../layers/support/AggregateField.js";import o from"../../layers/support/ExpressionInfo.js";import l from"../../renderers/support/AttributeColorInfo.js";import{OthersCategory as u}from"../../renderers/support/OthersCategory.js";import p from"../heuristics/outline.js";import m from"../heuristics/sizeRange.js";import{createVisualVariables as c}from"./size.js";import{errorCallback as d,createColors as f,createSymbol as h,getSymbolOutlineFromScheme as b,verifyBasicFieldValidity as y,getBasemapInfo as w}from"./support/utils.js";import g from"../statistics/predominantCategories.js";import{getSumOfAttributesExpr as v}from"../statistics/support/utils.js";import{verifyBinningParams as S}from"../support/binningUtils.js";import{getFieldsList as z}from"../support/utils.js";import{LayerType as E,binningCapableLayerTypes as j,createLayerAdapter as C,getLayerTypeLabels as x,getLayerTypes as V}from"../support/adapters/support/layerUtils.js";import{cloneScheme as $,getSchemes as T}from"../symbology/pieChart.js";import{getCIMSymbolColor as I}from"../../symbols/support/cimSymbolUtils.js";import k from"../../symbols/SimpleLineSymbol.js";const q=[E.CSVLayer,E.FeatureLayer,E.OGCFeatureLayer,E.GeoJSONLayer,E.StreamLayer,E.WFSLayer];async function O(e){if(!(e&&e.layer&&e.view&&e.attributes?.length))throw new t("pie-chart-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>10)throw new t("pie-chart-renderer:invalid-parameters","PieChart renderer does not support more than 10 attributes");e.forBinning&&S(e,"pie-chart-renderer");const r={...e,layer:e.layer,view:e.view,attributes:e.attributes};r.shape=r.shape||"pie",r.othersCategoryEnabled??=!0,r.includeSizeVariable=e.includeSizeVariable||!1;const a=e.forBinning?j:q,n=C(r.layer,a,e.forBinning);if(!n)throw new t("pie-chart-renderer:invalid-parameters","'layer' must be one of these types: "+x(a).join(", "));r.layer=n;const i=null!=r.signal?{signal:r.signal}:null;await Promise.all([e.view.when(),n.load(i)]);const s=n.geometryType,o="polygon"===s,l="point"===s||"multipoint"===s||o;if(r.outlineOptimizationEnabled=!!o&&r.outlineOptimizationEnabled,r.sizeOptimizationEnabled=!!l&&r.sizeOptimizationEnabled,!l)throw new t("pie-chart-renderer:not-supported","PieChart renderer is only supported for point and polygon layers");const u=[],p=r.attributes;for(const t of p){const e=await z({field:t.field,valueExpression:t.valueExpression});u.push(...e)}const m=y(n,u.filter(Boolean),"pie-chart-renderer:invalid-parameters");if(m)throw m;return r}async function B(e){let r=e.pieChartScheme,a=null,t=null;const n=await w(e.basemap,e.view);if(a=null!=n.basemapId?n.basemapId:null,t=null!=n.basemapTheme?n.basemapTheme:null,r)return{scheme:$(r),basemapId:a,basemapTheme:t};const i=T({numColors:e.attributes.length,geometryType:e.layer.geometryType,basemapTheme:t});return i&&(r=i.primaryScheme,a=i.basemapId,t=i.basemapTheme),{scheme:r,basemapId:a,basemapTheme:t}}async function L(e,r){const{valueExpression:a,sqlExpression:t,sqlWhere:n}=v(e.attributes),s=await i("esri/smartMapping/t9n/smartMapping");return c({layer:e.layer,basemap:e.basemap,valueExpression:a,sqlExpression:t,sqlWhere:n,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,legendOptions:{title:s.sumOfCategories},view:e.view,signal:e.signal})}async function R(e){const[s,o]=await Promise.all([O(e),i("esri/smartMapping/t9n/smartMapping")]),c=await B(s),y=c?.scheme;if(!y)throw new t("pie-chart-renderer:insufficient-info","Unable to find pie-chart scheme");const w=s.layer,{includeSizeVariable:v,sizeOptimizationEnabled:S,outlineOptimizationEnabled:z,view:E,signal:j}=s,C=y.sizeScheme,x=s.attributes,V=x.map((e=>e.field)).filter(a),[T,I,q,R]=await Promise.all([V.length>1?g({layer:w,fields:V,view:E,signal:j}):null,v?L(s,C):null,!v&&S?m({layer:w,view:E,signal:j}).catch(d):null,z?p({layer:w,view:E,signal:j}).catch(d):null]),P=T&&T.predominantCategoryInfos?{uniqueValueInfos:T.predominantCategoryInfos}:{uniqueValueInfos:V.map((e=>({value:e,count:0})))},U=f(y.colors,x.length),F=x.map(((e,r)=>new l({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:U[r]}))),M=w.geometryType,N=null!=C&&"background"in C&&C.background,_=new r({attributes:F,othersCategory:new u({label:o.other,color:s.othersCategoryEnabled?y.colorForOthersCategory:null,threshold:.04}),holePercentage:"donut"===s.shape?.45:0,backgroundFillSymbol:N?h(M,{type:"2d",color:N.color,outline:b(N,M,R?.opacity)}):null,size:n(y.size),outline:new k(b(y,"point",R?.opacity)),legendOptions:s.legendOptions});if(I&&(S||I.visualVariables.forEach((e=>{"number"==typeof e.minSize&&"number"==typeof e.maxSize&&(e.minSize*=2.5,e.maxSize*=1.8)})),S&&"point"===M&&I.visualVariables.forEach((e=>{e?.minSize&&"object"==typeof e.minSize&&e.minSize?.stops?.forEach((e=>{e.size*=1.8}))})),_.authoringInfo=I.authoringInfo.clone(),_.visualVariables=I.visualVariables?.map((e=>e.clone()))),R?.visualVariables?.length){const e=R.visualVariables.map((e=>e.clone()));_.visualVariables?_.visualVariables.push(...e):_.visualVariables=e}return q?.minSize&&("point"===M&&q.minSize.stops?.forEach((e=>{e.size*=2.5})),"polygon"===M&&q.minSize.stops?.forEach((e=>{e.size*=1.8})),_.visualVariables?_.visualVariables.push(q.minSize):_.visualVariables=[q.minSize]),{renderer:_,pieChartScheme:$(y),size:I,basemapId:c.basemapId,basemapTheme:c.basemapTheme,statistics:P}}const P=new Set(["unique-value","class-breaks"]),U=new e("#aaaaaa"),F=new e("#5c5c5c"),M=[new e("#e60049"),new e("#0bb4ff"),new e("#50e991"),new e("#e6d800"),new e("#9b19f5"),new e("#ffa300"),new e("#dc0ab4"),new e("#b3d4ff"),new e("#00bfa0"),new e("#f0cccc")];async function N(e){if(!e||!e.layer)throw new t("pie-chart-cluster-renderer:missing-parameters","'layer' parameter is required");const r={...e};r.shape=r.shape||"pie",r.defaultSymbolEnabled??=!0;const a=e.layer;if(!V(q).includes(a.type))throw new t("pie-chart-cluster-renderer:invalid-parameters","'layer' must be one of these types: "+x(q).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await a.load(n);if(!("point"===a.geometryType))throw new t("pie-chart-cluster-renderer:invalid-parameters","Cluster renderers are only supported for point layers");const{renderer:i}=a;if(!i)throw new t("pie-chart-cluster-renderer:invalid-parameters","input layer does not have a renderer.");if(!P.has(i.type))throw new t("pie-chart-cluster-renderer:invalid-parameters",`Cannot create a pie chart renderer for clusters based on a ${i.type} renderer.`);if("valueExpression"in i&&i.valueExpression)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer whose renderer contains a valueExpression.");if("unique-value"===i.type){if(i.field2)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a UniqueValueRenderer using more than one field.");if(null!=i.uniqueValueInfos&&i.uniqueValueInfos.length>10)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer cannot be created from a UniqueValueRenderer with more than 10 unique value infos.")}if("class-breaks"===i.type){if(i.classBreakInfos.length<2)throw new t("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer renderer with a continuous color or size gradient.");if(i.classBreakInfos.length>10)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with more than 10 class break infos.");if("class-breaks-size"===i?.authoringInfo?.type)throw new t("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with breaks varied by size instead of color.")}return r}async function _(e){const a=await N(e),{layer:t,shape:n,defaultSymbolEnabled:s,legendOptions:o}=a,{renderer:u}=t,p=(await i("esri/smartMapping/t9n/smartMapping")).other;let m=[];"unique-value"===u?.type&&(m=A({renderer:u,defaultSymbolEnabled:s,defaultLabelBackup:p})),"class-breaks"===u?.type&&(m=D({renderer:u,defaultSymbolEnabled:s,defaultLabelBackup:p}));const c=[],d=[];for(const r of m){const{field:e,color:a}=r;c.push(e),d.push(new l({color:a,field:e.name,label:e.alias}))}return{fields:c,renderer:new r({attributes:d,legendOptions:o,holePercentage:"donut"===n?.45:0,outline:null,size:18,othersCategory:null})}}function A(e){const{renderer:r,defaultSymbolEnabled:a,defaultLabelBackup:t}=e,{field:n,defaultSymbol:i,defaultLabel:l}=r,u=r.uniqueValueInfos??[],p=i&&a,m=p?9:10,c=f(M,m),d=u.slice(0,m).map(((e,r)=>{const a=e.label,t=c[r];return{field:new s({name:W(e.value?.toString()),alias:a,onStatisticExpression:new o({title:`Field definition - ${a}`,expression:H(n,e),returnType:"number"}),statisticType:"sum"}),color:G(e.symbol,t)}}))??[];if(p){const e="cluster_default",r=l||t;d.push({field:new s({name:W(e),alias:r,onStatisticExpression:new o({title:`Field definition - ${r}`,expression:J(n,u),returnType:"number"}),statisticType:"sum"}),color:G(i,F)})}return d}function D(e){const{renderer:r,defaultSymbolEnabled:a,defaultLabelBackup:t}=e,{field:n,classBreakInfos:i,defaultSymbol:l,defaultLabel:u}=r,p=l&&a,m=p?9:10,c=f(M,m),d=i.slice(0,m).map(((e,r)=>{const a=e.label||`${e.minValue} - ${e.maxValue}`,t=c[r];return{field:new s({name:W(a),alias:a,onStatisticExpression:new o({title:`Field definition - ${a}`,expression:Z(n,e),returnType:"number"}),statisticType:"sum"}),color:G(e.symbol,t)}}));if(p){const e="cluster_default",r=u||t;d.push({field:new s({name:W(e),alias:r,onStatisticExpression:new o({title:`Field definition - ${r}`,expression:K(n,i),returnType:"number"}),statisticType:"sum"}),color:G(l,F)})}return d}function W(e){return"SUM_"+(e+"").replaceAll(/[^a-zA-Z0-9_]/g,"_")}function G(e,r){if("simple-marker"===e?.type&&e.color)return e.color.clone();if("cim"===e?.type){const r=I(e);if(r)return r.clone()}return r?r.clone():U.clone()}function H(e,r){return`Number(Text($feature["${e}"]) == "${r.value+""}")`}function J(e,r){return`Number(!(${r.map((r=>`(Text($feature["${e}"]) == "${r.value+""}")`)).join(" || ")}))`}function Z(e,r){return`Number($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`}function K(e,r){return`Number(!(${r.map((r=>`($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`)).join(" || ")}))`}export{R as createRenderer,_ as createRendererForClustering};
@@ -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{clone as n}from"../../core/lang.js";import{fetchMessageBundle as a}from"../../intl/messages.js";import i from"../../renderers/support/AuthoringInfo.js";import{AuthoringInfoClassBreakInfo as l}from"../../renderers/support/AuthoringInfoClassBreakInfo.js";import{AuthoringInfoFieldInfo as r}from"../../renderers/support/AuthoringInfoFieldInfo.js";import{createRenderer as s}from"./type.js";import{createColors as o,getClassBreaks as t,verifyBasicFieldValidity as d,getBasemapInfo as m}from"./support/utils.js";import{verifyBinningParams as u}from"../support/binningUtils.js";import{binningCapableLayerTypes as f,featureCapableLayerTypes as p,createLayerAdapter as c,getLayerTypeLabels as h}from"../support/adapters/support/layerUtils.js";import{getColors as y,cloneScheme as b,getSchemes as w,flatten2DArray as v}from"../symbology/relationship.js";import{applyColorToSymbol as g}from"../../symbols/support/utils.js";const I=["equal-interval","natural-breaks","quantile"],M=["HH","HL","LH","LL"],z={2:[["HL","HH"],["LL","LH"]],3:[["HL","HM","HH"],["ML","MM","MH"],["LL","LM","LH"]],4:[["HL","HM1","HM2","HH"],["M2L","M2M1","M2M2","M2H"],["M1L","M1M1","M1M2","M1H"],["LL","LM1","LM2","LH"]]},F={2:["L","H"],3:["L","M","H"],4:["L","M1","M2","H"]},T=e=>({minValue:e.minValue,maxValue:e.maxValue});async function H(n){if(!(n?.layer&&n.view&&n.field1&&n.field2))throw new e("relationship-renderer:missing-parameters","'layer', 'view', 'field1' and 'field2' parameters are required");n.forBinning&&u(n,"relationship-renderer");const a={...n,layer:n.layer,field1:n.field1,field2:n.field2};if(a.symbolType??="2d",a.defaultSymbolEnabled??=!0,a.classificationMethod??="quantile",a.numClasses??=3,a.focus??=null,!I.includes(a.classificationMethod))throw new e("relationship-renderer:invalid-parameters",`classification method ${a.classificationMethod} is not supported`);if(a.numClasses<2||a.numClasses>4)throw new e("relationship-renderer:invalid-parameters","'numClasses' must be 2, 3 or 4");if(n.focus&&!M.includes(n.focus))throw new e("relationship-renderer:invalid-parameters","'focus' must be 'HH', 'HL', 'LH', 'LL' or null");const i=n.forBinning?f:p,l=c(a.layer,i,n.forBinning);if(!l)throw new e("relationship-renderer:invalid-parameters","'layer' must be one of these types: "+h(i).join(", "));a.layer=l;const r=null!=a.signal?{signal:a.signal}:null;await l.load(r);const s=l.geometryType,o=a.symbolType.includes("3d");if(a.outlineOptimizationEnabled="polygon"===s&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=("point"===s||"multipoint"===s||"polyline"===s)&&a.sizeOptimizationEnabled,"mesh"===s)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==s)throw new e("relationship-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o&&"polygon"===s)throw new e("relationship-renderer:not-supported","3d symbols are not supported for polygon layers");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new e("relationship-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const{field1:t,field2:m}=a,y=[t.field,m.field];t.normalizationField&&y.push(t.normalizationField),m.normalizationField&&y.push(m.normalizationField);const b=d(l,y,"relationship-renderer:invalid-parameters");if(b)throw b;return a}async function L(n){if(!n?.renderer||!n.numClasses)throw new e("update-relationship-renderer:missing-parameters","'renderer' and 'numClasses' parameters are required");const{field1:a,field2:i,renderer:l,numClasses:r,colors:s}=n,o=r**2;if((a||i)&&!(a&&i&&a.field&&i.field))throw new e("update-relationship-renderer:missing-parameters","'field1' and 'field2' parameters are required");if(a&&!a.classBreakInfos||i&&!i.classBreakInfos)throw new e("update-relationship-renderer:missing-parameters","'field1.classBreakInfos' and 'field2.classBreakInfos' are required");if(!l.authoringInfo)throw new e("update-relationship-renderer:missing-parameters","'renderer.authoringInfo' is required");if(l.uniqueValueInfos?.length!==o)throw new e("update-relationship-renderer:invalid-parameters",`Renderer must have ${o} unique value infos to support ${r} classes`);if(s&&s.length!==o)throw new e("update-relationship-renderer:invalid-parameters",`The scheme must have ${o} colors`);return n}async function V(e){let n=e.relationshipScheme,a=null,i=null;const l=await m(e.basemap,e.view);if(a=null!=l.basemapId?l.basemapId:null,i=null!=l.basemapTheme?l.basemapTheme:null,n)return{scheme:b(n),basemapId:a,basemapTheme:i};const r=w({basemapTheme:i,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return r&&(n=r.primaryScheme,a=r.basemapId,i=r.basemapTheme),{scheme:n,basemapId:a,basemapTheme:i}}function k(e,a){const i=n(z[e]);return v(i,a)}function C(e,n){return k(e,n).map((e=>({value:e,count:0})))}function E(e,n,a,i){const{field:l,normalizationField:r}=e,{field:s,normalizationField:o}=n,t=a.map((e=>[e.minValue,e.maxValue])),d=i.map((e=>[e.minValue,e.maxValue])),m=t.length,u=F[m];return`\n var field1 = $feature['${l}'];\n var field2 = $feature['${s}'];\n var hasNormField1 = ${r?"true":"false"};\n var hasNormField2 = ${o?"true":"false"};\n var normField1 = ${r?`$feature['${r}']`:"null"};\n var normField2 = ${o?`$feature['${o}']`:"null"};\n\n if (\n IsEmpty(field1) ||\n IsEmpty(field2) ||\n (hasNormField1 && (IsEmpty(normField1) || normField1 == 0)) ||\n (hasNormField2 && (IsEmpty(normField2) || normField2 == 0))\n ) {\n return null;\n }\n\n var value1 = IIf(hasNormField1, (field1 / normField1), field1);\n var value2 = IIf(hasNormField2, (field2 / normField2), field2);\n\n var breaks1 = ${JSON.stringify(t)};\n var breaks2 = ${JSON.stringify(d)};\n var classCodes = ${JSON.stringify(u)};\n\n function getClassCode(value, breaks) {\n var code = null;\n\n for (var i in breaks) {\n var info = breaks[i];\n if (value >= info[0] && value <= info[1]) {\n code = classCodes[i];\n break;\n }\n }\n\n return code;\n }\n\n var code1 = getClassCode(value1, breaks1);\n var code2 = getClassCode(value2, breaks2);\n\n var classValue = IIf(IsEmpty(code1) || IsEmpty(code2), null, code1 + code2);\n return classValue;\n `}async function x(n,l,r){const o=await a("esri/smartMapping/t9n/smartMapping"),{basemap:t,classificationMethod:d,field1:m,field2:u,focus:f,numClasses:p,signal:c}=n,h=n.layer,b=l.classBreakInfos,w=r.classBreakInfos;if(p!==b.length||b.length!==w.length)throw new e("relationship-renderer:error","incompatible class breaks");const v=C(p,f),g=E(n.field1,n.field2,b,w),I=(await V({basemap:t,geometryType:h.geometryType,theme:"default",relationshipScheme:n.relationshipScheme,worldScale:!!n.symbolType?.includes("3d-volumetric"),view:n.view})).scheme,M=await s({layer:h,basemap:t,valueExpression:g,valueExpressionTitle:o.relationship.legendTitle,numTypes:-1,sortEnabled:!1,defaultSymbolEnabled:n.defaultSymbolEnabled,typeScheme:{colors:y(I,p,f),...I},statistics:{uniqueValueInfos:v},legendOptions:n.legendOptions,outlineOptimizationEnabled:n.outlineOptimizationEnabled,sizeOptimizationEnabled:n.sizeOptimizationEnabled,symbolType:n.symbolType,colorMixMode:n.colorMixMode,edgesType:n.edgesType,view:n.view,signal:c}),z=M.renderer,F=z.uniqueValueInfos,H=o.relationship;for(const e of F??[])e.label=H[e.value];const L=new i({type:"relationship",classificationMethod:d,numClasses:p,focus:f,field1:{field:m.field,normalizationField:m.normalizationField,label:m.label,classBreakInfos:b.map(T)},field2:{field:u.field,normalizationField:u.normalizationField,label:u.label,classBreakInfos:w.map(T)}});return z.authoringInfo=L,{renderer:z,classBreaks:{field1:l,field2:r},uniqueValueInfos:M.uniqueValueInfos,relationshipScheme:I,basemapId:M.basemapId,basemapTheme:M.basemapTheme}}function B(e,n,a){const i=k(n,a);e.sort(((e,n)=>{const a=i.indexOf(e.value),l=i.indexOf(n.value);let r=0;return a<l?r=-1:a>l&&(r=1),r}))}function $(e,n){const a=e.authoringInfo;a.numClasses=n.numClasses,a.focus=n.focus||null,a.focus||delete a.focus;const{field1:i,field2:s}=n;a.field1=new r({field:i.field,normalizationField:i.normalizationField,label:i.label,classBreakInfos:i.classBreakInfos.map((e=>new l(T(e))))}),a.field2=new r({field:s.field,normalizationField:s.normalizationField,label:s.label,classBreakInfos:s.classBreakInfos.map((e=>new l(T(e))))}),e.authoringInfo=a}async function S(e){const n=await L(e),{field1:a,field2:i,renderer:l,numClasses:r,focus:s,colors:t}=n,d=l.clone();d.valueExpression=E(a,i,a.classBreakInfos,i.classBreakInfos);const m=d.uniqueValueInfos??[];if(B(m,r,s),t){const e=o(t,t.length);m.forEach(((n,a)=>g(n.symbol,e[a])))}return $(d,n),d}async function q(n){const a=await H(n),{layer:i,classificationMethod:l,field1:r,field2:s,numClasses:o,view:d,signal:m}=a,u={layer:i,classificationMethod:l,field:r.field,normalizationField:r.normalizationField,normalizationType:r.normalizationField?"field":null,minValue:r.minValue,maxValue:r.maxValue,analyzeData:!(null!=r.minValue&&null!=r.maxValue),numClasses:o,view:d,signal:m},f={layer:i,classificationMethod:l,field:s.field,normalizationField:s.normalizationField,normalizationType:s.normalizationField?"field":null,minValue:s.minValue,maxValue:s.maxValue,analyzeData:!(null!=s.minValue&&null!=s.maxValue),numClasses:o,view:d,signal:m},[p,c]=await Promise.all([t(u),t(f)]);if(!p||!c)throw new e("relationship-renderer:error","error when calculating class breaks");return x(a,p.result,c.result)}export{q as createRenderer,S as updateRenderer};
5
+ import e from"../../core/Error.js";import{clone as n}from"../../core/lang.js";import{fetchMessageBundle as a}from"../../intl/messages.js";import i from"../../renderers/support/AuthoringInfo.js";import{AuthoringInfoClassBreakInfo as l}from"../../renderers/support/AuthoringInfoClassBreakInfo.js";import{AuthoringInfoFieldInfo as r}from"../../renderers/support/AuthoringInfoFieldInfo.js";import{createRenderer as s}from"./type.js";import{createColors as o,getClassBreaks as t,verifyBasicFieldValidity as d,getBasemapInfo as m}from"./support/utils.js";import{verifyBinningParams as u}from"../support/binningUtils.js";import{binningCapableLayerTypes as f,featureCapableLayerTypes as p,createLayerAdapter as c,getLayerTypeLabels as h}from"../support/adapters/support/layerUtils.js";import{getColors as y,cloneScheme as b,getSchemes as w,flatten2DArray as v}from"../symbology/relationship.js";import{applyColorToSymbol as g}from"../../symbols/support/utils.js";const I=new Set(["equal-interval","natural-breaks","quantile"]),M=new Set(["HH","HL","LH","LL"]),z={2:[["HL","HH"],["LL","LH"]],3:[["HL","HM","HH"],["ML","MM","MH"],["LL","LM","LH"]],4:[["HL","HM1","HM2","HH"],["M2L","M2M1","M2M2","M2H"],["M1L","M1M1","M1M2","M1H"],["LL","LM1","LM2","LH"]]},F={2:["L","H"],3:["L","M","H"],4:["L","M1","M2","H"]},T=e=>({minValue:e.minValue,maxValue:e.maxValue});async function H(n){if(!(n?.layer&&n.view&&n.field1&&n.field2))throw new e("relationship-renderer:missing-parameters","'layer', 'view', 'field1' and 'field2' parameters are required");n.forBinning&&u(n,"relationship-renderer");const a={...n,layer:n.layer,field1:n.field1,field2:n.field2};if(a.symbolType??="2d",a.defaultSymbolEnabled??=!0,a.classificationMethod??="quantile",a.numClasses??=3,a.focus??=null,!I.has(a.classificationMethod))throw new e("relationship-renderer:invalid-parameters",`classification method ${a.classificationMethod} is not supported`);if(a.numClasses<2||a.numClasses>4)throw new e("relationship-renderer:invalid-parameters","'numClasses' must be 2, 3 or 4");if(n.focus&&!M.has(n.focus))throw new e("relationship-renderer:invalid-parameters","'focus' must be 'HH', 'HL', 'LH', 'LL' or null");const i=n.forBinning?f:p,l=c(a.layer,i,n.forBinning);if(!l)throw new e("relationship-renderer:invalid-parameters","'layer' must be one of these types: "+h(i).join(", "));a.layer=l;const r=null!=a.signal?{signal:a.signal}:null;await l.load(r);const s=l.geometryType,o=a.symbolType.includes("3d");if(a.outlineOptimizationEnabled="polygon"===s&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=("point"===s||"multipoint"===s||"polyline"===s)&&a.sizeOptimizationEnabled,"mesh"===s)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==s)throw new e("relationship-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o&&"polygon"===s)throw new e("relationship-renderer:not-supported","3d symbols are not supported for polygon layers");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new e("relationship-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const{field1:t,field2:m}=a,y=[t.field,m.field];t.normalizationField&&y.push(t.normalizationField),m.normalizationField&&y.push(m.normalizationField);const b=d(l,y,"relationship-renderer:invalid-parameters");if(b)throw b;return a}async function L(n){if(!n?.renderer||!n.numClasses)throw new e("update-relationship-renderer:missing-parameters","'renderer' and 'numClasses' parameters are required");const{field1:a,field2:i,renderer:l,numClasses:r,colors:s}=n,o=r**2;if((a||i)&&!(a&&i&&a.field&&i.field))throw new e("update-relationship-renderer:missing-parameters","'field1' and 'field2' parameters are required");if(a&&!a.classBreakInfos||i&&!i.classBreakInfos)throw new e("update-relationship-renderer:missing-parameters","'field1.classBreakInfos' and 'field2.classBreakInfos' are required");if(!l.authoringInfo)throw new e("update-relationship-renderer:missing-parameters","'renderer.authoringInfo' is required");if(l.uniqueValueInfos?.length!==o)throw new e("update-relationship-renderer:invalid-parameters",`Renderer must have ${o} unique value infos to support ${r} classes`);if(s&&s.length!==o)throw new e("update-relationship-renderer:invalid-parameters",`The scheme must have ${o} colors`);return n}async function V(e){let n=e.relationshipScheme,a=null,i=null;const l=await m(e.basemap,e.view);if(a=null!=l.basemapId?l.basemapId:null,i=null!=l.basemapTheme?l.basemapTheme:null,n)return{scheme:b(n),basemapId:a,basemapTheme:i};const r=w({basemapTheme:i,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return r&&(n=r.primaryScheme,a=r.basemapId,i=r.basemapTheme),{scheme:n,basemapId:a,basemapTheme:i}}function k(e,a){const i=n(z[e]);return v(i,a)}function C(e,n){return k(e,n).map((e=>({value:e,count:0})))}function E(e,n,a,i){const{field:l,normalizationField:r}=e,{field:s,normalizationField:o}=n,t=a.map((e=>[e.minValue,e.maxValue])),d=i.map((e=>[e.minValue,e.maxValue])),m=t.length,u=F[m];return`\n var field1 = $feature['${l}'];\n var field2 = $feature['${s}'];\n var hasNormField1 = ${r?"true":"false"};\n var hasNormField2 = ${o?"true":"false"};\n var normField1 = ${r?`$feature['${r}']`:"null"};\n var normField2 = ${o?`$feature['${o}']`:"null"};\n\n if (\n IsEmpty(field1) ||\n IsEmpty(field2) ||\n (hasNormField1 && (IsEmpty(normField1) || normField1 == 0)) ||\n (hasNormField2 && (IsEmpty(normField2) || normField2 == 0))\n ) {\n return null;\n }\n\n var value1 = IIf(hasNormField1, (field1 / normField1), field1);\n var value2 = IIf(hasNormField2, (field2 / normField2), field2);\n\n var breaks1 = ${JSON.stringify(t)};\n var breaks2 = ${JSON.stringify(d)};\n var classCodes = ${JSON.stringify(u)};\n\n function getClassCode(value, breaks) {\n var code = null;\n\n for (var i in breaks) {\n var info = breaks[i];\n if (value >= info[0] && value <= info[1]) {\n code = classCodes[i];\n break;\n }\n }\n\n return code;\n }\n\n var code1 = getClassCode(value1, breaks1);\n var code2 = getClassCode(value2, breaks2);\n\n var classValue = IIf(IsEmpty(code1) || IsEmpty(code2), null, code1 + code2);\n return classValue;\n `}async function x(n,l,r){const o=await a("esri/smartMapping/t9n/smartMapping"),{basemap:t,classificationMethod:d,field1:m,field2:u,focus:f,numClasses:p,signal:c}=n,h=n.layer,b=l.classBreakInfos,w=r.classBreakInfos;if(p!==b.length||b.length!==w.length)throw new e("relationship-renderer:error","incompatible class breaks");const v=C(p,f),g=E(n.field1,n.field2,b,w),I=(await V({basemap:t,geometryType:h.geometryType,theme:"default",relationshipScheme:n.relationshipScheme,worldScale:!!n.symbolType?.includes("3d-volumetric"),view:n.view})).scheme,M=await s({layer:h,basemap:t,valueExpression:g,valueExpressionTitle:o.relationship.legendTitle,numTypes:-1,sortEnabled:!1,defaultSymbolEnabled:n.defaultSymbolEnabled,typeScheme:{colors:y(I,p,f),...I},statistics:{uniqueValueInfos:v},legendOptions:n.legendOptions,outlineOptimizationEnabled:n.outlineOptimizationEnabled,sizeOptimizationEnabled:n.sizeOptimizationEnabled,symbolType:n.symbolType,colorMixMode:n.colorMixMode,edgesType:n.edgesType,view:n.view,signal:c}),z=M.renderer,F=z.uniqueValueInfos,H=o.relationship;for(const e of F??[])e.label=H[e.value];const L=new i({type:"relationship",classificationMethod:d,numClasses:p,focus:f,field1:{field:m.field,normalizationField:m.normalizationField,label:m.label,classBreakInfos:b.map(T)},field2:{field:u.field,normalizationField:u.normalizationField,label:u.label,classBreakInfos:w.map(T)}});return z.authoringInfo=L,{renderer:z,classBreaks:{field1:l,field2:r},uniqueValueInfos:M.uniqueValueInfos,relationshipScheme:I,basemapId:M.basemapId,basemapTheme:M.basemapTheme}}function B(e,n,a){const i=k(n,a);e.sort(((e,n)=>{const a=i.indexOf(e.value),l=i.indexOf(n.value);let r=0;return a<l?r=-1:a>l&&(r=1),r}))}function $(e,n){const a=e.authoringInfo;a.numClasses=n.numClasses,a.focus=n.focus||null,a.focus||delete a.focus;const{field1:i,field2:s}=n;a.field1=new r({field:i.field,normalizationField:i.normalizationField,label:i.label,classBreakInfos:i.classBreakInfos.map((e=>new l(T(e))))}),a.field2=new r({field:s.field,normalizationField:s.normalizationField,label:s.label,classBreakInfos:s.classBreakInfos.map((e=>new l(T(e))))}),e.authoringInfo=a}async function S(e){const n=await L(e),{field1:a,field2:i,renderer:l,numClasses:r,focus:s,colors:t}=n,d=l.clone();d.valueExpression=E(a,i,a.classBreakInfos,i.classBreakInfos);const m=d.uniqueValueInfos??[];if(B(m,r,s),t){const e=o(t,t.length);m.forEach(((n,a)=>g(n.symbol,e[a])))}return $(d,n),d}async function q(n){const a=await H(n),{layer:i,classificationMethod:l,field1:r,field2:s,numClasses:o,view:d,signal:m}=a,u={layer:i,classificationMethod:l,field:r.field,normalizationField:r.normalizationField,normalizationType:r.normalizationField?"field":null,minValue:r.minValue,maxValue:r.maxValue,analyzeData:!(null!=r.minValue&&null!=r.maxValue),numClasses:o,view:d,signal:m},f={layer:i,classificationMethod:l,field:s.field,normalizationField:s.normalizationField,normalizationType:s.normalizationField?"field":null,minValue:s.minValue,maxValue:s.maxValue,analyzeData:!(null!=s.minValue&&null!=s.maxValue),numClasses:o,view:d,signal:m},[p,c]=await Promise.all([t(u),t(f)]);if(!p||!c)throw new e("relationship-renderer:error","error when calculating class breaks");return x(a,p.result,c.result)}export{q as createRenderer,S as updateRenderer};
@@ -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{isDateField as l}from"../../../layers/support/fieldUtils.js";import{round as i}from"../../../renderers/support/numberUtils.js";import s from"../../../renderers/support/pointCloud/PointSizeSplatAlgorithm.js";import r from"../../heuristics/outline.js";import a from"../../statistics/classBreaks.js";import u from"../../statistics/summaryStatistics.js";import{defaultBasemapGroups as m,getBasemapId as c,getBasemapGroup as f}from"../../support/utils.js";import d from"../../../symbols/edges/SketchEdges3D.js";import p from"../../../symbols/edges/SolidEdges3D.js";import{getBackgroundColorTheme as y}from"../../../views/support/colorUtils.js";import h from"../../../symbols/MeshSymbol3D.js";import b from"../../../symbols/FillSymbol3DLayer.js";import w from"../../../symbols/SimpleFillSymbol.js";import g from"../../../symbols/PolygonSymbol3D.js";import D from"../../../symbols/ExtrudeSymbol3DLayer.js";import j from"../../../symbols/SimpleLineSymbol.js";import S from"../../../symbols/LineSymbol3D.js";import v from"../../../symbols/LineSymbol3DLayer.js";import x from"../../../symbols/PathSymbol3DLayer.js";import z from"../../../symbols/SimpleMarkerSymbol.js";import V from"../../../symbols/PointSymbol3D.js";import L from"../../../symbols/IconSymbol3DLayer.js";import U from"../../../symbols/ObjectSymbol3DLayer.js";const k=/^(\d+(\.\d+)?)\s*(%)$/i,T=[0,0,0,.4],F=["hours","minutes","seconds"],I=[...m.light,...m.dark];function B(e,t,i){if("string"==typeof e){const t=i.getField(e);if(t&&l(t))return t.alias||t.name}else if("number"==typeof e||e instanceof Date){const l=null!=t&&F.includes(t)?"short-date-short-time":"short-date";return n(e,o(l))}return e}function M(e,t,n){return e+t>0&&0>e-t&&n<0?0:e}function C(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=P(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=M(s,r,a):"below"===n&&(f=M(s,r,a)),{minDataValue:c,maxDataValue:f,defaultValuesUsed:!1})}function P(e,t,n){let o,l;const i=E({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 E(e){let t,n,o=e&&e.statistics;if(o||(o={}),null==o.min)if(e.isDate){const e=A();t=e[0],n=e[1]}else t=0,n=100;else if(o.min===o.max)if(e.isDate){const e=A(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 A(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 R(t,n){const o=[],l=t.length;for(let i=0;i<n;i++)o.push(new e(t[i%l]));return o}function Y({minDataValue:e,maxDataValue:t,defaultValuesUsed:n},o,l,i=!0){return n||"above"===l||"below"===l||"90-10"===l?N(e,t,5):O(o,i)}function W(e,t){const{avg:n,stddev:o}=e,l=e.min,s=e.max;if(null==n||null==o){const[n,o]=P(e,t,!0);return N(n,o,5)}const r=M(n,o,l),a=s-r,u=r-l,m=Math.max(a,u);return i([r-m,r-m/2,r,m/2+r,r+m],{strictBounds:!0})}function q(e,t){const{min:n,max:o}=t,[l,s,r,a,u]=e,m=null!=n&&l<n,c=null!=o&&u>o;if(null==n||null==o||!m&&!c)return e;const f=m?n:l,d=c?o:u;return i([f,m?f+(r-f)/2:s,r,c?r+(d-r)/2:a,d],{strictBounds:!0})}function N(e,t,n){const o=(t-e)/(n-1),l=[e];for(let i=1;i<=n-2;i++)l.push(e+i*o);return l.push(t),i(l,{strictBounds:!0})}function O({min:e,max:t,avg:n,stddev:o},l=!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),l&&(n=s+(r-s)/2);let a=i([s,r],{strictBounds:!0});return s=a[0],r=a[1],a=[s,s+(n-s)/2,n,n+(r-n)/2,r],i(a,{strictBounds:!0})}function $(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 G(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 H(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 z({color:l,size:o,outline:{color:i.color,width:i.width}});else if("3d-flat"===n)s=new V({symbolLayers:[new L({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 U({height:o,resource:{primitive:e?"sphere":"cylinder"},material:{color:l}});e||(i.width=t.widthAndDepth,i.depth=t.widthAndDepth),s=new V({symbolLayers:[i]})}break;case"polyline":"2d"===n?s=new j({color:l,width:o}):"3d-flat"===n?s=new S({symbolLayers:[new v({size:o,material:{color:l}})]}):"3d-volumetric"===n&&(s=new S({symbolLayers:[new x({width:"number"==typeof o?o:parseFloat(o),height:"number"==typeof o?o:parseFloat(o),material:{color:l}})]}));break;case"polygon":"2d"===n?s=new w({color:l,outline:{color:i.color,width:i.width}}):"3d-flat"===n?s=new g({symbolLayers:[new b({material:{color:l},outline:{color:i.color,size:i.width}})]}):"3d-volumetric"===n&&(s=new g({symbolLayers:[new D({size:o,material:{color:l}})]}));break;case"mesh":{const e=t.meshInfo?.colorMixMode,n=t.meshInfo?.edgesType;s=new h({symbolLayers:[new b({material:{color:l,colorMixMode:e||null},edges:"solid"===n?new p({color:T}):"sketch"===n?new d({color:T}):null})]});break}}return s}function J(e,n,o){const l=K({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=Q({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 K(e){const t=e.layer;return e.fields.filter((e=>!t.getField(e)))}function Q(e){const t=e.layer;return e.fields.filter((e=>{const n=t.getFieldUsageInfo(e);return!n||!n.supportsRenderer}))}async function X(e,t){const n={layer:e.layer,view:e.view,signal:e.signal},[o,l]=await Promise.all([a(e).catch(le),t?r(n).catch(le):null]),i=P({min:o?.minValue,max:o?.maxValue,avg:null,stddev:null},!1,!1);return{result:i?await a({...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 Z(e){return u(e)}function _(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 ee(e){return k.test(e)}function te(e){if(null==e)return;const t=e.match(k),n=Number(t[1]);return"%"===t[3]?new s({scaleFactor:n/100}):void 0}function ne(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 oe(e,t){let n=null,o=null;if(!e&&!t)return{basemapId:n,basemapTheme:o};if(t&&(o=await y(t),e||(e=t.map?.basemap)),e&&(n=c(e,I,!1),n&&!o)){const e=f(n);null!=e&&(o=e)}return!n&&o&&(n="dark"===o?"dark-gray":"gray"),{basemapId:n,basemapTheme:o}}function le(e){const t=e.name?.toLowerCase();if(!t||t?.includes(":insufficient-info")||t?.includes(":insufficient-data"))return null;throw e}export{q as clampAboveAndBelowStopValues,R as createColors,Y as createDataValues,N as createDefaultStopValues,O as createStopValues,W as createStopValuesForAboveBelow,H as createSymbol,le as errorCallback,B as formatDate,M as getBaseValueForAboveBelow,oe as getBasemapInfo,X as getClassBreaks,C as getDataRange,P as getDefaultDataRange,te as getPointSizeAlgorithm,_ as getSizeRangeForAxis,Z as getSummaryStatistics,G as getSymbolOutlineFromScheme,$ as getSymbolSizeFromScheme,ee as isValidPointSize,ne as updateAgeRendererAuthoringInfoVV,J 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{isDateField as l}from"../../../layers/support/fieldUtils.js";import{round as i}from"../../../renderers/support/numberUtils.js";import s from"../../../renderers/support/pointCloud/PointSizeSplatAlgorithm.js";import r from"../../heuristics/outline.js";import a from"../../statistics/classBreaks.js";import u from"../../statistics/summaryStatistics.js";import{defaultBasemapGroups as m,getBasemapId as c,getBasemapGroup as f}from"../../support/utils.js";import d from"../../../symbols/edges/SketchEdges3D.js";import p from"../../../symbols/edges/SolidEdges3D.js";import{getBackgroundColorTheme as y}from"../../../views/support/colorUtils.js";import h from"../../../symbols/MeshSymbol3D.js";import b from"../../../symbols/FillSymbol3DLayer.js";import w from"../../../symbols/SimpleFillSymbol.js";import g from"../../../symbols/PolygonSymbol3D.js";import D from"../../../symbols/ExtrudeSymbol3DLayer.js";import j from"../../../symbols/SimpleLineSymbol.js";import S from"../../../symbols/LineSymbol3D.js";import v from"../../../symbols/LineSymbol3DLayer.js";import x from"../../../symbols/PathSymbol3DLayer.js";import z from"../../../symbols/SimpleMarkerSymbol.js";import V from"../../../symbols/PointSymbol3D.js";import L from"../../../symbols/IconSymbol3DLayer.js";import U from"../../../symbols/ObjectSymbol3DLayer.js";const k=/^(\d+(\.\d+)?)\s*(%)$/i,T=[0,0,0,.4],F=new Set(["hours","minutes","seconds"]),I=[...m.light,...m.dark];function B(e,t,i){if("string"==typeof e){const t=i.getField(e);if(t&&l(t))return t.alias||t.name}else if("number"==typeof e||e instanceof Date){const l=null!=t&&F.has(t)?"short-date-short-time":"short-date";return n(e,o(l))}return e}function M(e,t,n){return e+t>0&&0>e-t&&n<0?0:e}function C(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=P(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=M(s,r,a):"below"===n&&(f=M(s,r,a)),{minDataValue:c,maxDataValue:f,defaultValuesUsed:!1})}function P(e,t,n){let o,l;const i=E({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 E(e){let t,n,o=e&&e.statistics;if(o||(o={}),null==o.min)if(e.isDate){const e=A();t=e[0],n=e[1]}else t=0,n=100;else if(o.min===o.max)if(e.isDate){const e=A(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 A(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 R(t,n){const o=[],l=t.length;for(let i=0;i<n;i++)o.push(new e(t[i%l]));return o}function Y({minDataValue:e,maxDataValue:t,defaultValuesUsed:n},o,l,i=!0){return n||"above"===l||"below"===l||"90-10"===l?N(e,t,5):O(o,i)}function W(e,t){const{avg:n,stddev:o}=e,l=e.min,s=e.max;if(null==n||null==o){const[n,o]=P(e,t,!0);return N(n,o,5)}const r=M(n,o,l),a=s-r,u=r-l,m=Math.max(a,u);return i([r-m,r-m/2,r,m/2+r,r+m],{strictBounds:!0})}function q(e,t){const{min:n,max:o}=t,[l,s,r,a,u]=e,m=null!=n&&l<n,c=null!=o&&u>o;if(null==n||null==o||!m&&!c)return e;const f=m?n:l,d=c?o:u;return i([f,m?f+(r-f)/2:s,r,c?r+(d-r)/2:a,d],{strictBounds:!0})}function N(e,t,n){const o=(t-e)/(n-1),l=[e];for(let i=1;i<=n-2;i++)l.push(e+i*o);return l.push(t),i(l,{strictBounds:!0})}function O({min:e,max:t,avg:n,stddev:o},l=!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),l&&(n=s+(r-s)/2);let a=i([s,r],{strictBounds:!0});return s=a[0],r=a[1],a=[s,s+(n-s)/2,n,n+(r-n)/2,r],i(a,{strictBounds:!0})}function $(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 G(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 H(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 z({color:l,size:o,outline:{color:i.color,width:i.width}});else if("3d-flat"===n)s=new V({symbolLayers:[new L({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 U({height:o,resource:{primitive:e?"sphere":"cylinder"},material:{color:l}});e||(i.width=t.widthAndDepth,i.depth=t.widthAndDepth),s=new V({symbolLayers:[i]})}break;case"polyline":"2d"===n?s=new j({color:l,width:o}):"3d-flat"===n?s=new S({symbolLayers:[new v({size:o,material:{color:l}})]}):"3d-volumetric"===n&&(s=new S({symbolLayers:[new x({width:"number"==typeof o?o:parseFloat(o),height:"number"==typeof o?o:parseFloat(o),material:{color:l}})]}));break;case"polygon":"2d"===n?s=new w({color:l,outline:{color:i.color,width:i.width}}):"3d-flat"===n?s=new g({symbolLayers:[new b({material:{color:l},outline:{color:i.color,size:i.width}})]}):"3d-volumetric"===n&&(s=new g({symbolLayers:[new D({size:o,material:{color:l}})]}));break;case"mesh":{const e=t.meshInfo?.colorMixMode,n=t.meshInfo?.edgesType;s=new h({symbolLayers:[new b({material:{color:l,colorMixMode:e||null},edges:"solid"===n?new p({color:T}):"sketch"===n?new d({color:T}):null})]});break}}return s}function J(e,n,o){const l=K({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=Q({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 K(e){const t=e.layer;return e.fields.filter((e=>!t.getField(e)))}function Q(e){const t=e.layer;return e.fields.filter((e=>{const n=t.getFieldUsageInfo(e);return!n||!n.supportsRenderer}))}async function X(e,t){const n={layer:e.layer,view:e.view,signal:e.signal},[o,l]=await Promise.all([a(e).catch(le),t?r(n).catch(le):null]),i=P({min:o?.minValue,max:o?.maxValue,avg:null,stddev:null},!1,!1);return{result:i?await a({...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 Z(e){return u(e)}function _(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 ee(e){return k.test(e)}function te(e){if(null==e)return;const t=e.match(k),n=Number(t[1]);return"%"===t[3]?new s({scaleFactor:n/100}):void 0}function ne(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 oe(e,t){let n=null,o=null;if(!e&&!t)return{basemapId:n,basemapTheme:o};if(t&&(o=await y(t),e||(e=t.map?.basemap)),e&&(n=c(e,I,!1),n&&!o)){const e=f(n);null!=e&&(o=e)}return!n&&o&&(n="dark"===o?"dark-gray":"gray"),{basemapId:n,basemapTheme:o}}function le(e){const t=e.name?.toLowerCase();if(!t||t?.includes(":insufficient-info")||t?.includes(":insufficient-data"))return null;throw e}export{q as clampAboveAndBelowStopValues,R as createColors,Y as createDataValues,N as createDefaultStopValues,O as createStopValues,W as createStopValuesForAboveBelow,H as createSymbol,le as errorCallback,B as formatDate,M as getBaseValueForAboveBelow,oe as getBasemapInfo,X as getClassBreaks,C as getDataRange,P as getDefaultDataRange,te as getPointSizeAlgorithm,_ as getSizeRangeForAxis,Z as getSummaryStatistics,G as getSymbolOutlineFromScheme,$ as getSymbolSizeFromScheme,ee as isValidPointSize,ne as updateAgeRendererAuthoringInfoVV,J as verifyBasicFieldValidity};
@@ -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{getDateType as t,getDateDiffSQL as n}from"../../support/utils.js";import{createLayerAdapter as r}from"../../support/adapters/support/layerUtils.js";const a=["date","number"],i=["years","months","days","hours","minutes","seconds"];function s(n,r,i,s){const o=[];let m=null;return[r,i].every((e=>{const r=t(n,e);return r&&o.push(r),!!r}))?o[0]===o[1]?"field"===o[0]?r===i&&(m=new e(s,"'startTime' and 'endTime' parameters cannot be identical")):m=new e(s,"Invalid combination of 'startTime' and 'endTime' parameters"):a.includes(o[0])&&a.includes(o[1])&&(m=new e(s,"Invalid combination of 'startTime' and 'endTime' parameters")):m=new e(s,"'startTime' and 'endTime' parameters must be one of these values: a date object, unix epoch time, name of a valid date field or <now>"),m}function o(e){const t=e.map((e=>`$feature["${e}"];`));return t.length?t.join("\n")+"\n":""}function m(e,t,n){let r;return r="number"===t?e:"date"===t?e.getTime():'$feature["'+e+'"]',"var "+n+" = "+r+";"}function u(e,n,r,a){const i=t(e,n),s=t(e,r),u=[m(n,i,"startTime"),m(r,s,"endTime"),`var retVal = null;\n\n if (startTime != null && endTime != null) {\n startTime = Date(startTime);\n endTime = Date(endTime);\n retVal = DateDiff(endTime, startTime, "${a}");\n }\n\n return retVal;`],d=[];return"field"===i&&d.push(n),"field"===s&&d.push(r),o(d)+u.join("\n")}function d(e){const{layer:t,startTime:a,endTime:i}=e,s=r(t),o=e.unit||"days",m=n(s,a,i,o);return{valueExpression:u(s,a,i,o),statisticsQuery:m,histogramQuery:m}}export{d as getAgeExpressions,i as supportedAgeUnits,s as verifyDates};
5
+ import e from"../../../core/Error.js";import{getDateType as t,getDateDiffSQL as n}from"../../support/utils.js";import{createLayerAdapter as r}from"../../support/adapters/support/layerUtils.js";const a=new Set(["date","number"]),i=["years","months","days","hours","minutes","seconds"];function s(n,r,i,s){const o=[];let m=null;return[r,i].every((e=>{const r=t(n,e);return r&&o.push(r),!!r}))?o[0]===o[1]?"field"===o[0]?r===i&&(m=new e(s,"'startTime' and 'endTime' parameters cannot be identical")):m=new e(s,"Invalid combination of 'startTime' and 'endTime' parameters"):a.has(o[0])&&a.has(o[1])&&(m=new e(s,"Invalid combination of 'startTime' and 'endTime' parameters")):m=new e(s,"'startTime' and 'endTime' parameters must be one of these values: a date object, unix epoch time, name of a valid date field or <now>"),m}function o(e){const t=e.map((e=>`$feature["${e}"];`));return t.length?t.join("\n")+"\n":""}function m(e,t,n){let r;return r="number"===t?e:"date"===t?e.getTime():'$feature["'+e+'"]',"var "+n+" = "+r+";"}function u(e,n,r,a){const i=t(e,n),s=t(e,r),u=[m(n,i,"startTime"),m(r,s,"endTime"),`var retVal = null;\n\n if (startTime != null && endTime != null) {\n startTime = Date(startTime);\n endTime = Date(endTime);\n retVal = DateDiff(endTime, startTime, "${a}");\n }\n\n return retVal;`],d=[];return"field"===i&&d.push(n),"field"===s&&d.push(r),o(d)+u.join("\n")}function d(e){const{layer:t,startTime:a,endTime:i}=e,s=r(t),o=e.unit||"days",m=n(s,a,i,o);return{valueExpression:u(s,a,i,o),statisticsQuery:m,histogramQuery:m}}export{d as getAgeExpressions,i as supportedAgeUnits,s as verifyDates};
@@ -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{isSome as e}from"../../../../core/arrayUtils.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import"../../../../core/has.js";import n from"../../../../layers/support/CodedValueDomain.js";import"../../../../layers/support/Domain.js";import"../../../../layers/support/InheritedDomain.js";import"../../../../layers/support/RangeDomain.js";import l from"../../../../layers/support/Field.js";import{isStringField as i}from"../../../../layers/support/fieldUtils.js";import o from"../../../../rest/support/StatisticDefinition.js";import{noDominantCategoryField as a}from"../../../statistics/support/predominanceUtils.js";import{getRangeExpr as r,getSQLFilterForNormalization as s,mergeWhereClauses as u}from"../../../statistics/support/utils.js";import{isIntegerField as c,getDateDiffSQL as m,castIntegerFieldToFloat as f}from"../../utils.js";import{getEqualIntervalBins as p,isNullCountSupported as d,statisticTypes as y,processNullValue as g}from"../../../../statistics/utils.js";const v=/_value$/i,x=Math.LOG10E,h=10;function F(e){return e.map((e=>e.toJSON()))}function w(e,t){const n=[],l=e.layer,i="featureReduction"in l?l.featureReduction:null,o="binning"===i?.type,a=null!=i&&"fields"in i?i.fields?.map((e=>e.name?.toLowerCase())).filter(Boolean):[];if(!o||!t)return n;for(const r of t)a.includes(r.toLowerCase())||n.push(r);return n}function E(e,t,n){const l=[];if(t)for(const i of t){const t=e.getField(i);t&&n&&"availableFields"in n&&!n.availableFields?.includes(t.name)&&l.push(t.name)}return l}function S(e,t){const n=e&&e.features;if(0===n?.length)return{avg:null,count:0,max:null,median:null,min:null,nullcount:0,stddev:null,sum:null,variance:null};const l=n?.[0]?.attributes,i={};for(const o in l)i[o.replace(v,"").toLowerCase()]=l[o];return null!=i.totalcount&&i.totalcount>=i.count&&(i.nullcount=i.totalcount-i.count),delete i.totalcount,i.min===i.max&&null!=i.min&&null==i.stddev&&(i.stddev=i.variance=0),t&&(["min","max","avg","stddev","sum","variance"].forEach((e=>{null!=i[e]&&(i[e]=Math.ceil(i[e]))})),i.min===i.max&&null!=i.min&&(i.avg=i.min,i.stddev=i.variance=0)),i}function V(e){const t=[],n=e.classBreaks,l=n[0].minValue,i=n[n.length-1].maxValue;n.forEach((e=>{t.push([e.minValue,e.maxValue])}));const o={field:e.field,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,layer:e.layer};return{min:l,max:i,intervals:t,sqlExpr:z(o),excludeZerosExpr:e.where,normTotal:e.normalizationTotal}}function z(e){const{field:t,normalizationType:n,normalizationField:l,normalizationTotal:i,layer:o}=e,a=c(o,t);let r=t;return"percent-of-total"===n?r=`((${a?f(t):t} / ${i}) * 100)`:"log"===n?r=`(log(${t}) * ${x})`:"field"===n?r=`(${a?f(t):t} / ${l})`:"natural-log"===n?r=`(log(${a?f(t):t}))`:"square-root"===n&&(r=`(power(${a?f(t):t}, 0.5))`),r}function T(e,t){let n;if(t=t.toLowerCase(),e)for(const l in e)if(l.toLowerCase()!==t){n=e[l];break}return n}function q(e,t){let n;if(t=t.toLowerCase(),e)for(const l in e)if(l.toLowerCase()===t){n=e[l];break}return n}function $(e,t,n,l,i){const o={},a="countOFExpr";e&&e.features&&e.features.forEach((e=>{const t=e.attributes,n=T(t,a),l=q(t,a);null!=n&&null!=l&&0!==n&&(o[n]=l)}));const r=[];return p(t,n,l).forEach(((e,t)=>{const n=(t+1).toString();r.push({minValue:e[0],maxValue:e[1],count:o.hasOwnProperty(n)?o[n]:0})})),{bins:r,minValue:t,maxValue:n,normalizationTotal:i}}function b(e,n){const l=e&&e.features,{field:i,field2:o,field3:a,fieldDelimiter:r,layer:s,view:u,signal:c,labels:m}=n,f=`countOF${!(!i||!o)?"Expr":i||"Expr"}`,p={};let d=!1;if(l.forEach((e=>{const t=e.attributes,n=q(t,f);let l=i?q(t,i):T(t,f),s=o?q(t,o):null,u=a?q(t,a):null;null===l&&0===n&&(d=!0),(null==l||"string"==typeof l&&""===l.trim())&&(l=null),o&&(null==s||"string"==typeof s&&""===s.trim())&&(s=null),a&&(null==u||"string"==typeof u&&""===u.trim())&&(u=null);let c=l;o&&(c=`${g(c)}${r}${g(s)}`,a&&(c=`${c}${r}${g(u)}`)),null==p[c]?p[c]={count:n,data:c}:p[c].count=p[c].count+n})),i&&d){const e=i+" is NULL";return s.queryFeatureCount({whereClause:e,view:u,signal:c}).then((e=>(e=e||0,p.null.count=p.null.count+e,j(p,m)))).catch((()=>(t(c),j(p,m))))}return Promise.resolve(j(p,m))}function j(e,t){if(t)for(const n in e)e[n].label=t[n];return{count:e}}async function C(e,t,l){const i=e?l.getField(e):null,o=i?l.getFieldDomain(i.name):null;if(o)return o;const{uniqueValueInfos:a}=await l.uniqueValues({field:e,sqlWhere:t.sqlWhere,features:t.features,useFeaturesInView:t.useFeaturesInView,view:t.view,signal:t.signal}),r=a.map((e=>({code:e.value})));return new n({codedValues:r})}async function L(e,t){if(!e.returnAllCodedValues)return[];const{field:n,field2:l,field3:i}=e;if(n&&!l){const e=n?t.getField(n):null,l=e?t.getFieldDomain(e.name):null;return l?[l]:[]}const o=[];return n&&(o.push(C(n,e,t)),l&&(o.push(C(l,e,t)),i&&o.push(C(i,e,t)))),Promise.all(o)}function D(e,t){return m(e,new Date(0),t,"milliseconds").sqlExpression}function O(e){return{viewingMode:"2d"===e.type?"map":e.viewingMode,scale:e.scale,spatialReference:e.spatialReference?.toJSON()}}function R(e,t){const n=e.map((e=>e.value)),l=t.filter((e=>!n.includes(e)));for(const i of l)e.push({value:i,count:0});e.sort(((e,n)=>t.indexOf(e.value)-t.indexOf(n.value)));for(const i of e)i.value===a&&(i.value=null);return{predominantCategoryInfos:e}}function I(t){const n="featureReduction"in t?t.featureReduction:null;return((null!=n&&"fields"in n?n.fields:null)??[]).map((e=>{const n=B(e,t.fieldsIndex);return n?new l({type:n,name:e.name,alias:e.alias}):null})).filter(e)}function B(e,t){switch(e.statisticType){case"avg":case"avg_angle":return"double";case"count":return"integer";case"min":case"max":case"sum":return e.onStatisticField?t.get(e.onStatisticField)?.type??null:e.onStatisticExpression?"string"===e.onStatisticExpression.returnType?null:"double":null;case"mode":return e.onStatisticField?t.get(e.onStatisticField)?.type??null:e.onStatisticExpression?"string"===e.onStatisticExpression.returnType?"string":"double":null;default:return null}}function N(e,t,n){const{field:l,normalizationType:a,normalizationField:c,normalizationTotal:m,minValue:f,maxValue:p,filter:g}=t,v=e.supportsSQLExpression&&n?D(e,l):t.sqlExpression,x=z({field:l,normalizationType:a,normalizationField:c,normalizationTotal:m,layer:e}),h=v||x,F=h?r(h,f,p):null,w=s({field:l,normalizationField:c,normalizationType:a}),E=u(t.sqlWhere,w),S=u(E,F),V=d({normalizationField:c,normalizationType:a,sqlExpression:v,supportsSQLExpression:e.supportsSQLExpression,minValue:f,maxValue:p}),T=i(e.getField(l??void 0)),q=y.filter((e=>"nullcount"===e?V:!T||"count"===e)),$=e.createQuery();return $.where=u($.where,S),$.sqlFormat=v?"standard":null,$.outStatistics=q.map((t=>{const n=new o;let l=null,i=null,a=`${t}_value`;return"variance"===t?(l="var",i=h):"nullcount"===t?(l="count",i=e.objectIdField,a="totalcount_value"):"median"===t?(l="percentile-continuous",i=h,n.statisticParameters={value:.5}):(l=t,i=h),n.statisticType=l,n.onStatisticField=i,n.outStatisticFieldName=a,n})),P($,g),$}function P(e,t){t&&(e.geometry=t.geometry,e.spatialRelationship=t.spatialRelationship)}function Q(e,t){const{field:n,field2:l,field3:i,sqlExpression:o}=t,a=!(!n||!l),r=e.createQuery();return r.where=u(r.where,t.sqlWhere),r.sqlFormat=o?"standard":null,r.outStatistics=[U(a?null:n,a?"1":o)].filter(Boolean),r.groupByFieldsForStatistics=[n||o,l,i].filter(Boolean),P(r,t.filter),r}function U(e,t){const n="countOF"+(e||"Expr"),l=new o;return l.statisticType="count",l.onStatisticField=t?"1":e,l.outStatisticFieldName=n,l}function M(e,t,n,l=h,i,o,a){const{min:r,max:s,normTotal:u,excludeZerosExpr:c}=t,m=t.intervals||p(r,s,l),f=t.sqlExpr||n;return W(e,m,f,c,i,o,a).then((e=>({bins:e.map(((e,t)=>({minValue:m[t][0],maxValue:m[t][1],count:"fulfilled"===e.status?e.value:0}))),minValue:r,maxValue:s,normalizationTotal:u})))}function W(e,t,n,l,i,o,a){const r=[],s=t.length;for(let c=0;c<s;c++){const e=u(l,u(n+" >= "+t[c][0],null!==t[c][1]?n+(c===s-1?" <= ":" < ")+t[c][1]:""));r.push(e)}return Promise.allSettled(r.map((t=>e.queryFeatureCount({whereClause:t,view:i,filter:o,signal:a}))))}export{h as defaultNumBins,F as ensureFeaturesJSON,V as generateBinParams,B as getAggregateFieldType,M as getBins,L as getDomainsForFields,I as getFeatureReductionFields,z as getFieldExpr,$ as getHistogramFromFeatureSet,E as getMissingFields,w as getMissingFieldsForBinning,R as getPredominantCategoriesFromUVInfos,S as getSummaryStatisticsFromFeatureSet,N as getSummaryStatsQuery,Q as getUVQuery,b as getUniqueValuesFromFeatureSet,O as getViewInfoParams,D as msSinceUnixEpochSQL,P as updateQueryWithFeatureFilter};
5
+ import{isSome as e}from"../../../../core/arrayUtils.js";import{throwIfAborted as t}from"../../../../core/promiseUtils.js";import"../../../../core/has.js";import n from"../../../../layers/support/CodedValueDomain.js";import"../../../../layers/support/Domain.js";import"../../../../layers/support/InheritedDomain.js";import"../../../../layers/support/RangeDomain.js";import l from"../../../../layers/support/Field.js";import{isStringField as i}from"../../../../layers/support/fieldUtils.js";import o from"../../../../rest/support/StatisticDefinition.js";import{noDominantCategoryField as a}from"../../../statistics/support/predominanceUtils.js";import{getRangeExpr as r,getSQLFilterForNormalization as s,mergeWhereClauses as u}from"../../../statistics/support/utils.js";import{isIntegerField as c,getDateDiffSQL as m,castIntegerFieldToFloat as f}from"../../utils.js";import{getEqualIntervalBins as p,isNullCountSupported as d,statisticTypes as y,processNullValue as g}from"../../../../statistics/utils.js";const v=/_value$/i,h=Math.LOG10E,x=10;function F(e){return e.map((e=>e.toJSON()))}function w(e,t){const n=[],l=e.layer,i="featureReduction"in l?l.featureReduction:null,o="binning"===i?.type,a=null!=i&&"fields"in i?i.fields?.map((e=>e.name?.toLowerCase())).filter(Boolean):[];if(!o||!t)return n;for(const r of t)a.includes(r.toLowerCase())||n.push(r);return n}function E(e,t,n){const l=[];if(t)for(const i of t){const t=e.getField(i);t&&n&&"availableFields"in n&&!n.availableFields?.includes(t.name)&&l.push(t.name)}return l}function S(e,t){const n=e&&e.features;if(0===n?.length)return{avg:null,count:0,max:null,median:null,min:null,nullcount:0,stddev:null,sum:null,variance:null};const l=n?.[0]?.attributes,i={};for(const o in l)i[o.replace(v,"").toLowerCase()]=l[o];return null!=i.totalcount&&i.totalcount>=i.count&&(i.nullcount=i.totalcount-i.count),delete i.totalcount,i.min===i.max&&null!=i.min&&null==i.stddev&&(i.stddev=i.variance=0),t&&(["min","max","avg","stddev","sum","variance"].forEach((e=>{null!=i[e]&&(i[e]=Math.ceil(i[e]))})),i.min===i.max&&null!=i.min&&(i.avg=i.min,i.stddev=i.variance=0)),i}function V(e){const t=[],n=e.classBreaks,l=n[0].minValue,i=n[n.length-1].maxValue;n.forEach((e=>{t.push([e.minValue,e.maxValue])}));const o={field:e.field,normalizationType:e.normalizationType,normalizationField:e.normalizationField,normalizationTotal:e.normalizationTotal,layer:e.layer};return{min:l,max:i,intervals:t,sqlExpr:z(o),excludeZerosExpr:e.where,normTotal:e.normalizationTotal}}function z(e){const{field:t,normalizationType:n,normalizationField:l,normalizationTotal:i,layer:o}=e,a=c(o,t);let r=t;return"percent-of-total"===n?r=`((${a?f(t):t} / ${i}) * 100)`:"log"===n?r=`(log(${t}) * ${h})`:"field"===n?r=`(${a?f(t):t} / ${l})`:"natural-log"===n?r=`(log(${a?f(t):t}))`:"square-root"===n&&(r=`(power(${a?f(t):t}, 0.5))`),r}function T(e,t){let n;if(t=t.toLowerCase(),e)for(const l in e)if(l.toLowerCase()!==t){n=e[l];break}return n}function q(e,t){let n;if(t=t.toLowerCase(),e)for(const l in e)if(l.toLowerCase()===t){n=e[l];break}return n}function $(e,t,n,l,i){const o={},a="countOFExpr";e&&e.features&&e.features.forEach((e=>{const t=e.attributes,n=T(t,a),l=q(t,a);null!=n&&null!=l&&0!==n&&(o[n]=l)}));const r=[];return p(t,n,l).forEach(((e,t)=>{const n=(t+1).toString();r.push({minValue:e[0],maxValue:e[1],count:o.hasOwnProperty(n)?o[n]:0})})),{bins:r,minValue:t,maxValue:n,normalizationTotal:i}}function b(e,n){const l=e&&e.features,{field:i,field2:o,field3:a,fieldDelimiter:r,layer:s,view:u,signal:c,labels:m}=n,f=`countOF${!(!i||!o)?"Expr":i||"Expr"}`,p={};let d=!1;if(l.forEach((e=>{const t=e.attributes,n=q(t,f);let l=i?q(t,i):T(t,f),s=o?q(t,o):null,u=a?q(t,a):null;null===l&&0===n&&(d=!0),(null==l||"string"==typeof l&&""===l.trim())&&(l=null),o&&(null==s||"string"==typeof s&&""===s.trim())&&(s=null),a&&(null==u||"string"==typeof u&&""===u.trim())&&(u=null);let c=l;o&&(c=`${g(c)}${r}${g(s)}`,a&&(c=`${c}${r}${g(u)}`)),null==p[c]?p[c]={count:n,data:c}:p[c].count=p[c].count+n})),i&&d){const e=i+" is NULL";return s.queryFeatureCount({whereClause:e,view:u,signal:c}).then((e=>(e=e||0,p.null.count=p.null.count+e,j(p,m)))).catch((()=>(t(c),j(p,m))))}return Promise.resolve(j(p,m))}function j(e,t){if(t)for(const n in e)e[n].label=t[n];return{count:e}}async function C(e,t,l){const i=e?l.getField(e):null,o=i?l.getFieldDomain(i.name):null;if(o)return o;const{uniqueValueInfos:a}=await l.uniqueValues({field:e,sqlWhere:t.sqlWhere,features:t.features,useFeaturesInView:t.useFeaturesInView,view:t.view,signal:t.signal}),r=a.map((e=>({code:e.value})));return new n({codedValues:r})}async function L(e,t){if(!e.returnAllCodedValues)return[];const{field:n,field2:l,field3:i}=e;if(n&&!l){const e=n?t.getField(n):null,l=e?t.getFieldDomain(e.name):null;return l?[l]:[]}const o=[];return n&&(o.push(C(n,e,t)),l&&(o.push(C(l,e,t)),i&&o.push(C(i,e,t)))),Promise.all(o)}function D(e,t){return m(e,new Date(0),t,"milliseconds").sqlExpression}function O(e){return{viewingMode:"2d"===e.type?"map":e.viewingMode,scale:e.scale,spatialReference:e.spatialReference?.toJSON()}}function R(e,t){const n=new Set(e.map((e=>e.value))),l=t.filter((e=>!n.has(e)));for(const i of l)e.push({value:i,count:0});e.sort(((e,n)=>t.indexOf(e.value)-t.indexOf(n.value)));for(const i of e)i.value===a&&(i.value=null);return{predominantCategoryInfos:e}}function I(t){const n="featureReduction"in t?t.featureReduction:null;return((null!=n&&"fields"in n?n.fields:null)??[]).map((e=>{const n=B(e,t.fieldsIndex);return n?new l({type:n,name:e.name,alias:e.alias}):null})).filter(e)}function B(e,t){switch(e.statisticType){case"avg":case"avg_angle":return"double";case"count":return"integer";case"min":case"max":case"sum":return e.onStatisticField?t.get(e.onStatisticField)?.type??null:e.onStatisticExpression?"string"===e.onStatisticExpression.returnType?null:"double":null;case"mode":return e.onStatisticField?t.get(e.onStatisticField)?.type??null:e.onStatisticExpression?"string"===e.onStatisticExpression.returnType?"string":"double":null;default:return null}}function N(e,t,n){const{field:l,normalizationType:a,normalizationField:c,normalizationTotal:m,minValue:f,maxValue:p,filter:g}=t,v=e.supportsSQLExpression&&n?D(e,l):t.sqlExpression,h=z({field:l,normalizationType:a,normalizationField:c,normalizationTotal:m,layer:e}),x=v||h,F=x?r(x,f,p):null,w=s({field:l,normalizationField:c,normalizationType:a}),E=u(t.sqlWhere,w),S=u(E,F),V=d({normalizationField:c,normalizationType:a,sqlExpression:v,supportsSQLExpression:e.supportsSQLExpression,minValue:f,maxValue:p}),T=i(e.getField(l??void 0)),q=y.filter((e=>"nullcount"===e?V:!T||"count"===e)),$=e.createQuery();return $.where=u($.where,S),$.sqlFormat=v?"standard":null,$.outStatistics=q.map((t=>{const n=new o;let l=null,i=null,a=`${t}_value`;return"variance"===t?(l="var",i=x):"nullcount"===t?(l="count",i=e.objectIdField,a="totalcount_value"):"median"===t?(l="percentile-continuous",i=x,n.statisticParameters={value:.5}):(l=t,i=x),n.statisticType=l,n.onStatisticField=i,n.outStatisticFieldName=a,n})),P($,g),$}function P(e,t){t&&(e.geometry=t.geometry,e.spatialRelationship=t.spatialRelationship)}function Q(e,t){const{field:n,field2:l,field3:i,sqlExpression:o}=t,a=!(!n||!l),r=e.createQuery();return r.where=u(r.where,t.sqlWhere),r.sqlFormat=o?"standard":null,r.outStatistics=[U(a?null:n,a?"1":o)].filter(Boolean),r.groupByFieldsForStatistics=[n||o,l,i].filter(Boolean),P(r,t.filter),r}function U(e,t){const n="countOF"+(e||"Expr"),l=new o;return l.statisticType="count",l.onStatisticField=t?"1":e,l.outStatisticFieldName=n,l}function M(e,t,n,l=x,i,o,a){const{min:r,max:s,normTotal:u,excludeZerosExpr:c}=t,m=t.intervals||p(r,s,l),f=t.sqlExpr||n;return W(e,m,f,c,i,o,a).then((e=>({bins:e.map(((e,t)=>({minValue:m[t][0],maxValue:m[t][1],count:"fulfilled"===e.status?e.value:0}))),minValue:r,maxValue:s,normalizationTotal:u})))}function W(e,t,n,l,i,o,a){const r=[],s=t.length;for(let c=0;c<s;c++){const e=u(l,u(n+" >= "+t[c][0],null!==t[c][1]?n+(c===s-1?" <= ":" < ")+t[c][1]:""));r.push(e)}return Promise.allSettled(r.map((t=>e.queryFeatureCount({whereClause:t,view:i,filter:o,signal:a}))))}export{x as defaultNumBins,F as ensureFeaturesJSON,V as generateBinParams,B as getAggregateFieldType,M as getBins,L as getDomainsForFields,I as getFeatureReductionFields,z as getFieldExpr,$ as getHistogramFromFeatureSet,E as getMissingFields,w as getMissingFieldsForBinning,R as getPredominantCategoriesFromUVInfos,S as getSummaryStatisticsFromFeatureSet,N as getSummaryStatsQuery,Q as getUVQuery,b as getUniqueValuesFromFeatureSet,O as getViewInfoParams,D as msSinceUnixEpochSQL,P as updateQueryWithFeatureFilter};
@@ -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{loadArcade as e}from"../../support/arcadeOnDemand.js";import{getWellKnownBasemapId as t}from"../../support/basemapUtils.js";const r=",",i={light:["streets","gray","topo","terrain","oceans","osm","gray-vector","streets-vector","topo-vector","streets-relief-vector","streets-navigation-vector","topo-3d","arcgis-light-gray","arcgis-navigation","arcgis-streets","arcgis-streets-relief","arcgis-topographic","arcgis-oceans","osm-standard","osm-standard-relief","osm-streets","osm-streets-relief","osm-light-gray","arcgis-terrain","arcgis-charted-territory","arcgis-community","arcgis-colored-pencil","arcgis-modern-antique","arcgis-midcentury","arcgis-newspaper","arcgis-hillshade-light"],dark:["satellite","hybrid","dark-gray","dark-gray-vector","streets-night-vector","arcgis-imagery","arcgis-imagery-standard","arcgis-dark-gray","arcgis-navigation-night","arcgis-streets-night","osm-dark-gray","arcgis-nova","arcgis-hillshade-dark"]},n="percent-of-total",s="field",a={years:365,months:30,days:1,hours:1/24,minutes:1/1440,seconds:1/86400,milliseconds:1/864e5},o=["integer","small-integer"];let c=null;async function l(t){const{field:r,field2:i,field3:n,normalizationField:s,valueExpression:a}=t;let o=[];if(a){if(!c){const{arcadeUtils:t}=await e();c=t}o=c.extractFieldNames(a)}return r&&o.push(r),i&&o.push(i),n&&o.push(n),s&&o.push(s),o}function g(e){let t=e.normalizationType;return t||(e.normalizationField?t=s:null!=e.normalizationTotal&&(t=n)),t??void 0}function u(e){return String(e).padStart(2,"0")}function d(e,t,r){let i;if("date"===t||"number"===t){"number"===t&&(e=new Date(e));i=`TIMESTAMP'${r?e.getFullYear():e.getUTCFullYear()}-${u((r?e.getMonth():e.getUTCMonth())+1)}-${u(r?e.getDate():e.getUTCDate())} ${u(r?e.getHours():e.getUTCHours())}:${u(r?e.getMinutes():e.getUTCMinutes())}:${u(r?e.getSeconds():e.getUTCSeconds())}'`}else i=e;return i}function f(e,t,r,i){const{hasQueryEngine:n}=e,s=`(${d(r,m(e,r),n)} - ${d(t,m(e,t),n)})`;let o=a[i],c="/";o<1&&(o=1/o,c="*");return{sqlExpression:1===o?s:`(${s} ${c} ${o})`,sqlWhere:null}}function m(e,t){if(t instanceof Date)return"date";if("number"==typeof t)return"number";if("string"==typeof t){const r=e.getField(t);if("<now>"===t.toLowerCase())return;if(r&&"date"===r.type)return"field"}}function p(e,t=i){for(const r in t)if(t[r].includes(e))return r}function y(e,r,i=!0){let n=null;return e&&("string"==typeof e?r.includes(e)&&(n=e):n=t(e)),i?n||"gray":n}function h(e,t){const r=t&&e.getField(t);return!!r&&o.includes(r.type)}function v(e){return`cast(${e} as float)`}export{v as castIntegerFieldToFloat,i as defaultBasemapGroups,r as fieldDelimiter,p as getBasemapGroup,y as getBasemapId,f as getDateDiffSQL,m as getDateType,l as getFieldsList,g as getNormalizationType,h as isIntegerField,a as unitValueInDays};
5
+ import{loadArcade as e}from"../../support/arcadeOnDemand.js";import{getWellKnownBasemapId as t}from"../../support/basemapUtils.js";const r=",",i={light:["streets","gray","topo","terrain","oceans","osm","gray-vector","streets-vector","topo-vector","streets-relief-vector","streets-navigation-vector","topo-3d","arcgis-light-gray","arcgis-navigation","arcgis-streets","arcgis-streets-relief","arcgis-topographic","arcgis-oceans","osm-standard","osm-standard-relief","osm-streets","osm-streets-relief","osm-light-gray","arcgis-terrain","arcgis-charted-territory","arcgis-community","arcgis-colored-pencil","arcgis-modern-antique","arcgis-midcentury","arcgis-newspaper","arcgis-hillshade-light"],dark:["satellite","hybrid","dark-gray","dark-gray-vector","streets-night-vector","arcgis-imagery","arcgis-imagery-standard","arcgis-dark-gray","arcgis-navigation-night","arcgis-streets-night","osm-dark-gray","arcgis-nova","arcgis-hillshade-dark"]},n="percent-of-total",s="field",a={years:365,months:30,days:1,hours:1/24,minutes:1/1440,seconds:1/86400,milliseconds:1/864e5},o=new Set(["integer","small-integer"]);let c=null;async function g(t){const{field:r,field2:i,field3:n,normalizationField:s,valueExpression:a}=t;let o=[];if(a){if(!c){const{arcadeUtils:t}=await e();c=t}o=c.extractFieldNames(a)}return r&&o.push(r),i&&o.push(i),n&&o.push(n),s&&o.push(s),o}function l(e){let t=e.normalizationType;return t||(e.normalizationField?t=s:null!=e.normalizationTotal&&(t=n)),t??void 0}function u(e){return String(e).padStart(2,"0")}function d(e,t,r){let i;if("date"===t||"number"===t){"number"===t&&(e=new Date(e));i=`TIMESTAMP'${r?e.getFullYear():e.getUTCFullYear()}-${u((r?e.getMonth():e.getUTCMonth())+1)}-${u(r?e.getDate():e.getUTCDate())} ${u(r?e.getHours():e.getUTCHours())}:${u(r?e.getMinutes():e.getUTCMinutes())}:${u(r?e.getSeconds():e.getUTCSeconds())}'`}else i=e;return i}function f(e,t,r,i){const{hasQueryEngine:n}=e,s=`(${d(r,m(e,r),n)} - ${d(t,m(e,t),n)})`;let o=a[i],c="/";o<1&&(o=1/o,c="*");return{sqlExpression:1===o?s:`(${s} ${c} ${o})`,sqlWhere:null}}function m(e,t){if(t instanceof Date)return"date";if("number"==typeof t)return"number";if("string"==typeof t){const r=e.getField(t);if("<now>"===t.toLowerCase())return;if(r&&"date"===r.type)return"field"}}function p(e,t=i){for(const r in t)if(t[r].includes(e))return r}function h(e,r,i=!0){let n=null;return e&&("string"==typeof e?r.includes(e)&&(n=e):n=t(e)),i?n||"gray":n}function y(e,t){const r=t&&e.getField(t);return!!r&&o.has(r.type)}function v(e){return`cast(${e} as float)`}export{v as castIntegerFieldToFloat,i as defaultBasemapGroups,r as fieldDelimiter,p as getBasemapGroup,h as getBasemapId,f as getDateDiffSQL,m as getDateType,g as getFieldsList,l as getNormalizationType,y as isIntegerField,a as unitValueInDays};
@@ -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{getOrigin as s}from"../core/urlUtils.js";const t=["elevation3d.arcgis.com","js.arcgis.com","jsdev.arcgis.com","jsqa.arcgis.com","static.arcgis.com"];function c(s){return!!s&&s.length>4&&s.startsWith("AAPK")}function r(c){const r=s(c,!0);return!!r&&(r.endsWith(".arcgis.com")&&!t.includes(r)&&!c.endsWith("/sharing/rest/generateToken"))}export{c as isApiKey,r as supportsApiKey};
5
+ import{getOrigin as s}from"../core/urlUtils.js";const t=new Set(["elevation3d.arcgis.com","js.arcgis.com","jsdev.arcgis.com","jsqa.arcgis.com","static.arcgis.com"]);function r(s){return!!s&&s.length>4&&s.startsWith("AAPK")}function c(r){const c=s(r,!0);return!!c&&(c.endsWith(".arcgis.com")&&!t.has(c)&&!r.endsWith("/sharing/rest/generateToken"))}export{r as isApiKey,c as supportsApiKey};
@@ -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"../geometry.js";import{p as e,c as r,e as n,a as t,r as o,l as s,b as i,d as a,f as u,s as l,g as c}from"../chunks/arcade.js";export{h as arcade}from"../chunks/arcade.js";import f from"../arcade/Dictionary.js";import p from"../arcade/Feature.js";import{o as m,q as y,k as d,c as v,a as g,b as x,r as j,u as w,s as b}from"../chunks/languageUtils.js";import{clone as E}from"../core/lang.js";import S from"../geometry/Point.js";import F from"../geometry/Polygon.js";import $ from"../geometry/Polyline.js";import R from"../geometry/Multipoint.js";import C from"../geometry/Extent.js";const k=/^\$(feature|aggregatedFeatures)\./i,z={vars:{$feature:"any",$view:"any"},spatialReference:null};function M(e){return e.replaceAll(/[|\\{}()[\]^$+*?.]/g,"\\$&")}function P(e){return null==e?null:m(e)||y(e)?"array":d(e)?"date":v(e)?"text":g(e)?"boolean":x(e)?"number":e instanceof f?"dictionary":j(e)?"feature":e instanceof S?"point":e instanceof F?"polygon":e instanceof $?"polyline":e instanceof R?"multipoint":e instanceof C?"extent":w(e)?"featureSet":b(e)?"featureSetCollection":null}function A(r){if(!r)return null;try{return e(r)}catch(n){}return null}function I(e,n){const t="string"==typeof e?A(e):e;if(!t)return null;try{return n=n||E(z),r(t,n)}catch(o){}return null}function G(e,r){return{vars:{$feature:null==e?new p:p.createFromGraphic(e,null),$view:r&&r.view},spatialReference:r&&r.sr}}function V(e,r,n){return p.createFromGraphicLikeObject(r,e,n,null)}function q(e,r){null!=e.vars&&(e.vars.$feature=r)}function L(e,r){let t;try{t=n(e,r)}catch(o){t=null}return t}function T(e,r){let n;try{n=e?e(r):null}catch(t){n=null}return n}function D(e,r){try{return e?e(r):Promise.resolve(null)}catch(n){return Promise.resolve(null)}}function J(e,r){if(!e)return[];const n="string"==typeof e?A(e):e;if(!n)return[];const o=t(n);let s=new Array;o.forEach((e=>{k.test(e)&&(e=e.replace(k,""),s.push(e))}));const i=s.filter((e=>e.includes("*")));return s=s.filter((e=>!i.includes(e))),r&&i.forEach((e=>{const n=new RegExp(`^${e.split(/\*+/).map(M).join(".*")}$`,"i");r.forEach((e=>n.test(e)?s.push(e):null))})),[...new Set(s.sort())]}function O(e){return o(e,"$view")}function U(e,r){return!!e&&o(e,r)}function B(e){if(!e||null==e.spatialReference&&(null==e.scale||null==e.viewingMode))return;return{view:e.viewingMode&&null!=e.scale?new f({viewingMode:e.viewingMode,scale:e.scale}):null,sr:e.spatialReference}}function H({url:e,spatialReference:r,lrucache:n,interceptor:t}){const o=u();return o?o.createFeatureSetCollectionFromService(e,r,n,t):null}function K({layer:e,spatialReference:r,outFields:n,returnGeometry:t,lrucache:o,interceptor:s}){if(null===e)return null;const i=u();return i?i.constructFeatureSet(e,r,n,t??!0,o,s):null}function N(e){if(null===e?.map)return null;const r=u();return r?r.createFeatureSetCollectionFromMap(e.map,e.spatialReference,e.lrucache,e.interceptor):null}function Q(e,r){return f.convertJsonToArcade(e,r)}function W(e,r,n=[]){return s(e,r,n)}function X(){return i()}function Y(){return a()}function Z(e){return"simple"===e.type||"class-breaks"===e.type||"unique-value"===e.type||"dot-density"===e.type||"dictionary"===e.type||"pie-chart"===e.type}function _(e){return"esri.layers.support.LabelClass"===e.declaredClass}function ee(e){return"esri.PopupTemplate"===e.declaredClass}function re(e,r){if(!e)return!1;if("string"==typeof e)return r(e);const n=e;if(Z(n)){if("dot-density"===n.type){const e=n.attributes?.some((e=>r(e.valueExpression)));if(e)return e}const e=n.visualVariables,t=!!e&&e.some((e=>{let n=r(e.valueExpression);return"size"===e.type&&(ie(e.minSize)&&(n=n||r(e.minSize.valueExpression)),ie(e.maxSize)&&(n=n||r(e.maxSize.valueExpression))),n}));return!(!("valueExpression"in n)||!r(n.valueExpression))||t}if(_(n)){const e=n.labelExpressionInfo&&n.labelExpressionInfo.expression;return!(!e||!r(e))||!1}return!!ee(n)&&(!!n.expressionInfos&&n.expressionInfos.some((e=>r(e.expression)))||Array.isArray(n.content)&&n.content.some((e=>"expression"===e.type&&r(e.expressionInfo?.expression))))}function ne(e){const r=A(e);return!!r&&l(r)}function te(e){return re(e,ne)}function oe(e){const r=A(e);return!!r&&c(r)}function se(e){return re(e,oe)}function ie(e){return e&&"esri.renderers.visualVariables.SizeVariable"===e.declaredClass}export{f as Dictionary,p as arcadeFeature,K as convertFeatureLayerToFeatureSet,Q as convertJsonToArcade,N as convertMapToFeatureSetCollection,H as convertServiceUrlToWorkspace,G as createExecContext,V as createFeature,I as createFunction,A as createSyntaxTree,O as dependsOnView,Y as enableFeatureSetOperations,X as enableGeometryOperations,L as evalSyntaxTree,D as executeAsyncFunction,T as executeFunction,J as extractFieldNames,P as getArcadeType,B as getViewInfo,te as hasGeometryFunctions,se as hasGeometryOperations,U as hasVariable,W as loadScriptDependencies,q as updateExecContext};
5
+ import"../geometry.js";import{p as e,c as n,e as r,a as t,r as o,l as s,b as i,d as a,f as u,s as l,g as c}from"../chunks/arcade.js";export{h as arcade}from"../chunks/arcade.js";import f from"../arcade/Dictionary.js";import p from"../arcade/Feature.js";import{o as m,q as y,k as d,c as v,a as g,b as x,r as j,u as w,s as b}from"../chunks/languageUtils.js";import{clone as E}from"../core/lang.js";import{DateOnly as S}from"../core/sql/DateOnly.js";import{TimeOnly as F}from"../core/sql/TimeOnly.js";import $ from"../geometry/Point.js";import R from"../geometry/Polygon.js";import C from"../geometry/Polyline.js";import k from"../geometry/Multipoint.js";import z from"../geometry/Extent.js";const M=/^\$(feature|aggregatedFeatures)\./i,P={vars:{$feature:"any",$view:"any"},spatialReference:null};function A(e){return e.replaceAll(/[|\\{}()[\]^$+*?.]/g,"\\$&")}function I(e){return null==e?null:m(e)||y(e)?"array":d(e)?"date":v(e)?"text":g(e)?"boolean":x(e)?"number":e instanceof f?"dictionary":j(e)?"feature":e instanceof $?"point":e instanceof R?"polygon":e instanceof C?"polyline":e instanceof k?"multipoint":e instanceof z?"extent":e instanceof S?"dateOnly":e instanceof F?"time":w(e)?"featureSet":b(e)?"featureSetCollection":null}function q(n){if(!n)return null;try{return e(n)}catch(r){}return null}function O(e,r){const t="string"==typeof e?q(e):e;if(!t)return null;try{return r=r||E(P),n(t,r)}catch(o){}return null}function G(e,n){return{vars:{$feature:null==e?new p:p.createFromGraphic(e,null),$view:n&&n.view},spatialReference:n&&n.sr}}function T(e,n,r){return p.createFromGraphicLikeObject(n,e,r,null)}function V(e,n){null!=e.vars&&(e.vars.$feature=n)}function D(e,n){let t;try{t=r(e,n)}catch(o){t=null}return t}function L(e,n){let r;try{r=e?e(n):null}catch(t){r=null}return r}function J(e,n){try{return e?e(n):Promise.resolve(null)}catch(r){return Promise.resolve(null)}}function U(e,n){if(!e)return[];const r="string"==typeof e?q(e):e;if(!r)return[];const o=t(r);let s=new Array;o.forEach((e=>{M.test(e)&&(e=e.replace(M,""),s.push(e))}));const i=s.filter((e=>e.includes("*")));return s=s.filter((e=>!i.includes(e))),n&&i.forEach((e=>{const r=new RegExp(`^${e.split(/\*+/).map(A).join(".*")}$`,"i");n.forEach((e=>r.test(e)?s.push(e):null))})),[...new Set(s.sort())]}function B(e){return o(e,"$view")}function H(e,n){return!!e&&o(e,n)}function K(e){if(!e||null==e.spatialReference&&(null==e.scale||null==e.viewingMode))return;return{view:e.viewingMode&&null!=e.scale?new f({viewingMode:e.viewingMode,scale:e.scale}):null,sr:e.spatialReference}}function N({url:e,spatialReference:n,lrucache:r,interceptor:t}){const o=u();return o?o.createFeatureSetCollectionFromService(e,n,r,t):null}function Q({layer:e,spatialReference:n,outFields:r,returnGeometry:t,lrucache:o,interceptor:s}){if(null===e)return null;const i=u();return i?i.constructFeatureSet(e,n,r,t??!0,o,s):null}function W(e){if(null===e?.map)return null;const n=u();return n?n.createFeatureSetCollectionFromMap(e.map,e.spatialReference,e.lrucache,e.interceptor):null}function X(e,n){return f.convertJsonToArcade(e,n)}function Y(e,n,r=[]){return s(e,n,r)}function Z(){return i()}function _(){return a()}function ee(e){return"simple"===e.type||"class-breaks"===e.type||"unique-value"===e.type||"dot-density"===e.type||"dictionary"===e.type||"pie-chart"===e.type}function ne(e){return"esri.layers.support.LabelClass"===e.declaredClass}function re(e){return"esri.PopupTemplate"===e.declaredClass}function te(e,n){if(!e)return!1;if("string"==typeof e)return n(e);const r=e;if(ee(r)){if("dot-density"===r.type){const e=r.attributes?.some((e=>n(e.valueExpression)));if(e)return e}const e=r.visualVariables,t=!!e&&e.some((e=>{let r=n(e.valueExpression);return"size"===e.type&&(ue(e.minSize)&&(r=r||n(e.minSize.valueExpression)),ue(e.maxSize)&&(r=r||n(e.maxSize.valueExpression))),r}));return!(!("valueExpression"in r)||!n(r.valueExpression))||t}if(ne(r)){const e=r.labelExpressionInfo&&r.labelExpressionInfo.expression;return!(!e||!n(e))||!1}return!!re(r)&&(!!r.expressionInfos&&r.expressionInfos.some((e=>n(e.expression)))||Array.isArray(r.content)&&r.content.some((e=>"expression"===e.type&&n(e.expressionInfo?.expression))))}function oe(e){const n=q(e);return!!n&&l(n)}function se(e){return te(e,oe)}function ie(e){const n=q(e);return!!n&&c(n)}function ae(e){return te(e,ie)}function ue(e){return e&&"esri.renderers.visualVariables.SizeVariable"===e.declaredClass}export{f as Dictionary,p as arcadeFeature,Q as convertFeatureLayerToFeatureSet,X as convertJsonToArcade,W as convertMapToFeatureSetCollection,N as convertServiceUrlToWorkspace,G as createExecContext,T as createFeature,O as createFunction,q as createSyntaxTree,B as dependsOnView,_ as enableFeatureSetOperations,Z as enableGeometryOperations,D as evalSyntaxTree,J as executeAsyncFunction,L as executeFunction,U as extractFieldNames,I as getArcadeType,K as getViewInfo,se as hasGeometryFunctions,ae as hasGeometryOperations,H as hasVariable,Y as loadScriptDependencies,V as updateExecContext};
@@ -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
- const a="20230921",d="d9f3da58fd43aadf146b8395e9407a3920b99a3e";export{a as buildDate,d as commitHash};
5
+ const c="20230923",a="8c4f2ebf9b43765d48a05cf5da3e72c63a7689b7";export{c as buildDate,a as commitHash};
@@ -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{getFontFamily as t}from"../../core/fontUtils.js";import{clone as i}from"../../core/lang.js";import r from"../../core/Logger.js";import{pt2px as o,px2pt as n}from"../../core/screenUtils.js";import{numericHash as a}from"../../core/string.js";import{createRendererExpression as s,ArcadeExpression as l}from"../../support/arcadeOnDemand.js";import{defaultPictureFillHeight as c,defaultHatchFillSeparation as m,defaultStrokeWidth as f,defaultMarkerSize as h,defaultTextHeight as u}from"./CIMSymbolDrawHelper.js";import{CIMSymbolHelper as p,OverrideHelper as y}from"./CIMSymbolHelper.js";import{Alignment as d,CapType as v,JoinType as _}from"./enums.js";import{quantizeIfNeeded as O}from"./quantizeTime.js";import{getExtent as S,getSDFMetrics as g}from"./SDFHelper.js";import{fromCIMColor as M,getTintColor as k,getValue as b,getFillColor as N,getStrokeColor as P,getStrokeWidth as z,isFeatureValueFn as L,fromCIMFontDecoration as C,fromCIMFontStyle as F,adjustTextCase as I,createLabelOverrideFunction as w,evaluateValueOrFunction as x,fromCIMHorizontalAlignment as A,fromCIMVerticalAlignment as R}from"./utils.js";import{CIMEffectHelper as X}from"./effects/CIMEffectHelper.js";import H from"../../views/2d/arcade/callExpressionWithFeature.js";import{randomInsidePolygonTextureSize as J}from"../../views/2d/engine/webgl/definitions.js";import{getMaterialGroup as Y}from"../../views/2d/engine/webgl/grouping.js";const E=r.getLogger("esri.symbols.cim.cimAnalyzer");function T(e){switch(e){case"Butt":return v.BUTT;case"Square":return v.SQUARE;default:return v.ROUND}}function $(e){switch(e){case"Bevel":return _.BEVEL;case"Miter":return _.MITER;default:return _.ROUND}}function j(e){const t=e.markerPlacement;return t&&t.angleToLine?d.MAP:d.SCREEN}class G{constructor(e,t){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._resourceManager=e,this._info=t}async analyzeSymbolReference(e,t,i){if(this._cimLayers=i??[],!e)return this._cimLayers;if(e.primitiveOverrides){this._primitiveOverrides=e.primitiveOverrides,this._poMap={};const t=[],i=this._info;for(const e of this._primitiveOverrides){const r=e.valueExpressionInfo;if(r&&i){const o=r.expression,n=s(o,i.spatialReference,i.fields).then((t=>{null!=t&&this._setPoMap(e.primitiveName,e.propertyName,t)}));t.push(n)}else null!=e.value&&this._setPoMap(e.primitiveName,e.propertyName,e.value);t.length>0&&await Promise.all(t)}}const r=e.symbol,o=[];return p.fetchResources(r,this._resourceManager,o),o.length>0&&await Promise.all(o),this._analyzeSymbol(r,t),this._cimLayers}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t,1,0,0,0)}}_analyzeMultiLayerSymbol(e,t,i,r,o,n){const a=e?.symbolLayers;if(!a)return;const s=e.effects;let l=d.SCREEN;const c=p.getSize(e)??0;"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(l=d.MAP);const m="CIMPolygonSymbol"===e.type;let f=a.length;for(;f--;){const h=a[f];if(!h||!1===h.enable)continue;let u;s&&s.length&&(u=[...s]);const p=h.effects;p&&p.length&&(s?u.push(...p):u=[...p]);const d=[];let v;y.findEffectOverrides(u,this._primitiveOverrides,d),v=d.length>0?this._createEffectsOverrideFunction(u,d):u;const _=[];switch(y.findApplicableOverrides(h,this._primitiveOverrides,_),h.type){case"CIMSolidFill":this._analyzeSolidFill(h,v);break;case"CIMPictureFill":this._analyzePictureFill(h,v);break;case"CIMHatchFill":this._analyzeHatchFill(h,v);break;case"CIMGradientFill":this._analyzeGradientFill(h,v);break;case"CIMSolidStroke":this._analyzeSolidStroke(h,v,m,c);break;case"CIMPictureStroke":this._analyzePictureStroke(h,v,m,c);break;case"CIMGradientStroke":this._analyzeGradientStroke(h,v,m,c);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"===e.type&&(l=j(h));const a=[],s=h.primitiveName;s&&a.push(s),this._analyzeMarker(h,v,null,a,l,c,1,t,i,r,o,n);break}default:E.error("Cannot analyze CIM layer",h.type)}}}_analyzeSolidFill(e,t){const i=e.primitiveName,r=M(e.color),[o,n]=this._analyzePrimitiveOverrides(i,t,null,null),s=a(JSON.stringify(e)+n).toString();this._cimLayers.push({type:"fill",templateHash:s,materialHash:o?()=>s:s,cim:e,materialOverrides:null,colorLocked:!!e.colorLocked,color:this._createOverrideFunction(i,"Color",r,U),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0})}_analyzePictureFill(e,t){const i=e.primitiveName,r=k(e),[o,n]=this._analyzePrimitiveOverrides(i,t,null,null),s=a(JSON.stringify(e)+n).toString(),l=a(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),m=b(e.height,c);let f=b(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let i=1;const r=this._resourceManager.getResource(e.url);null!=r&&(i=r.width/r.height),f/=i*(m/t)}this._cimLayers.push({type:"fill",templateHash:s,materialHash:o?()=>l:l,cim:e,materialOverrides:null,colorLocked:!!e.colorLocked,effects:t,color:this._createOverrideFunction(i,"TintColor",r,U),height:this._createOverrideFunction(i,"Height",m),scaleX:this._createOverrideFunction(i,"ScaleX",f),angle:this._createOverrideFunction(i,"Rotation",b(e.rotation)),offsetX:this._createOverrideFunction(i,"OffsetX",b(e.offsetX)),offsetY:this._createOverrideFunction(i,"OffsetY",b(e.offsetY)),url:e.url,applyRandomOffset:!1,sampleAlphaOnly:!1})}_analyzeHatchFill(e,t){const i=e.primitiveName,r=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]);let[o,n]=this._analyzePrimitiveOverrides(i,t,null,null);const s=a(JSON.stringify(e)+n).toString(),l=a(`${e.separation}${JSON.stringify(e.lineSymbol)}`).toString();let c={r:255,g:255,b:255,a:1},f=!1;const h=e.lineSymbol?.symbolLayers?.find((e=>"CIMSolidStroke"===e.type&&null!=this._poMap[e.primitiveName]?.Color));if(h){c=M(h.color),c=this._createOverrideFunction(h.primitiveName,"Color",c,U);const e="function"==typeof c;o=o||e,f=null!=h.color||e}this._cimLayers.push({type:"fill",templateHash:s,materialHash:o&&r?this._createMaterialHashFunction(l,r):l,cim:e,materialOverrides:r,colorLocked:!!e.colorLocked,effects:t,color:c,height:this._createOverrideFunction(i,"Separation",b(e.separation,m)),scaleX:1,angle:this._createOverrideFunction(i,"Rotation",b(e.rotation)),offsetX:this._createOverrideFunction(i,"OffsetX",b(e.offsetX)),offsetY:this._createOverrideFunction(i,"OffsetY",b(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!f})}_analyzeGradientFill(e,t){const i=e.primitiveName,[r,o]=this._analyzePrimitiveOverrides(i,t,null,null),n=a(JSON.stringify(e)+o).toString();this._cimLayers.push({type:"fill",templateHash:n,materialHash:r?()=>n:n,cim:e,materialOverrides:null,colorLocked:!!e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,applyRandomOffset:!1,sampleAlphaOnly:!1})}_analyzeSolidStroke(e,t,i,r){const o=e.primitiveName,n=M(e.color),s=b(e.width,f),l=T(e.capStyle),c=$(e.joinStyle),m=e.miterLimit,[h,u]=this._analyzePrimitiveOverrides(o,t,null,null),p=a(JSON.stringify(e)+u).toString();let y,d;if(t&&t instanceof Array&&t.length>0){const e=t[t.length-1];if("CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&null===e.offsetAlongLine){const e=(t=[...t]).pop();y=e.dashTemplate,d=e.scaleDash}}this._cimLayers.push({type:"line",templateHash:p,materialHash:h?()=>p:p,cim:e,materialOverrides:null,isOutline:i,colorLocked:!!e.colorLocked,effects:t,color:this._createOverrideFunction(o,"Color",n,U),width:this._createOverrideFunction(o,"Width",s),cap:this._createOverrideFunction(o,"CapStyle",l),join:this._createOverrideFunction(o,"JoinStyle",c),miterLimit:m&&this._createOverrideFunction(o,"MiterLimit",m),referenceWidth:r,zOrder:D(e.name),dashTemplate:y,scaleDash:d,sampleAlphaOnly:!0})}_analyzePictureStroke(e,t,i,r){const o=a(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),n=e.primitiveName,s=k(e),l=b(e.width,f),c=T(e.capStyle),m=$(e.joinStyle),h=e.miterLimit,[u,p]=this._analyzePrimitiveOverrides(n,t,null,null),y=a(JSON.stringify(e)+p).toString();this._cimLayers.push({type:"line",templateHash:y,materialHash:u?()=>o:o,cim:e,materialOverrides:null,isOutline:i,colorLocked:!!e.colorLocked,effects:t,color:this._createOverrideFunction(n,"TintColor",s,U),width:this._createOverrideFunction(n,"Width",l),cap:this._createOverrideFunction(n,"CapStyle",c),join:this._createOverrideFunction(n,"JoinStyle",m),miterLimit:h&&this._createOverrideFunction(n,"MiterLimit",h),referenceWidth:r,zOrder:D(e.name),dashTemplate:null,scaleDash:!1,url:e.url,sampleAlphaOnly:!1})}_analyzeGradientStroke(e,t,i,r){const o=e.primitiveName,n=b(e.width,f),s=T(e.capStyle),l=$(e.joinStyle),c=e.miterLimit,[m,h]=this._analyzePrimitiveOverrides(o,t,null,null),u=a(JSON.stringify(e)+h).toString();this._cimLayers.push({type:"line",templateHash:u,materialHash:m?()=>u:u,cim:e,materialOverrides:null,isOutline:i,colorLocked:!!e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},width:this._createOverrideFunction(o,"Width",n),cap:this._createOverrideFunction(o,"CapStyle",s),join:this._createOverrideFunction(o,"JoinStyle",l),miterLimit:c&&this._createOverrideFunction(o,"MiterLimit",c),referenceWidth:r,zOrder:D(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1})}_analyzeMarker(e,t,i,r,o,n,a,s,l,c,m,f,u=!1){if(this._analyzeMarkerInsidePolygon(e,t))return;const p=b(e.size,h),y=b(e.rotation),d=b(e.offsetX),v=b(e.offsetY);let _=this._createOverrideFunction(e.primitiveName,"Size",p),O=this._createOverrideFunction(e.primitiveName,"Rotation",y),S=this._createOverrideFunction(e.primitiveName,"OffsetX",d),g=this._createOverrideFunction(e.primitiveName,"OffsetY",v);_=this._transformSize(_,a),O=this._transformRotation(O,!!e.rotateClockwise,c);const M=this._transformOffsetX(S,g,c,a,m),k=this._transformOffsetY(S,g,c,a,f);switch(S=M,g=k,e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,i,r,o,n,_,O,S,g,e.colorLocked||u);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,i,r,o,n,a,s,_,O,S,g,e.colorLocked||u)}}_analyzeMarkerInsidePolygon(e,t){const{markerPlacement:i,type:r}=e;if(!i||"CIMMarkerPlacementInsidePolygon"!==i.type)return!1;if("CIMVectorMarker"===r||"CIMPictureMarker"===r){const o=e.primitiveName;if(o){const[e,i]=this._analyzePrimitiveOverrides([o],t,null,null);if(e)return!1}const n=i.primitiveName;if(n){const[e,i]=this._analyzePrimitiveOverrides([n],t,null,null);if(e)return!1}if("CIMVectorMarker"===r){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const o=i,s=Math.abs(o.stepX),l=Math.abs(o.stepY);if(0===s||0===l)return!0;const c=["Rotation","OffsetX","OffsetY"],m=this._primitiveOverrides.filter((t=>t.primitiveName!==e.primitiveName||!c.includes(t.propertyName))),f="url"in e&&"string"==typeof e.url?e.url:void 0,h=a(JSON.stringify(e)).toString();let u,p,y=null;if("Random"===i.gridType){const e=n(J),t=Math.max(Math.floor(e/s),1),i=Math.max(Math.floor(e/l),1);u=l*i,y=e=>e?e*i:0;p=t*s/u}else i.shiftOddRows?(u=2*l,y=e=>e?2*e:0,p=s/l*.5):(u=l,y=null,p=s/l);const d=k(e);return this._cimLayers.push({type:"fill",templateHash:h,materialHash:h,cim:e,materialOverrides:m,colorLocked:!!e.colorLocked,effects:t,color:d,height:this._createOverrideFunction(o.primitiveName,"StepY",u,y),scaleX:p,angle:o.gridAngle,offsetX:b(o.offsetX),offsetY:b(o.offsetY),url:f,applyRandomOffset:"Random"===i.gridType,sampleAlphaOnly:!f,hasUnresolvedReplacementColor:!0}),!0}_analyzePictureMarker(e,t,i,r,o,n,s,l,c,m,f){let h=b(e.scaleX,1);const u=k(e),p=a(`${e.url}${JSON.stringify(e.colorSubstitutions)}${JSON.stringify(e.animatedSymbolProperties)}`).toString();i||(i=this._createMarkerPlacementOverrideFunction(e.markerPlacement));const y=this._createAnimatedSymbolPropertiesOverrideFunction(e.animatedSymbolProperties),[d,v]=this._analyzePrimitiveOverrides(r,t,i,y),_=a(JSON.stringify(e)+v).toString(),O=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let i=1;const r=this._resourceManager.getResource(e.url);null!=r&&(i=r.width/r.height);h/=i*(b(e.size)/t)}function S(e,t){return null!=y?x(y,e,t):null}const g=e.animatedSymbolProperties&&!0===e.animatedSymbolProperties.randomizeStartTime?(e,t,i,r)=>{const o=Y(r??0),n=S(e,t);return p+`-MATERIALGROUP(${o})`+`-ASP(${JSON.stringify(n)})`}:d?(e,t)=>{const i=S(e,t);return p+`-ASP(${JSON.stringify(i)})`}:p;this._cimLayers.push({type:"marker",templateHash:_,materialHash:g,cim:e,materialOverrides:null,colorLocked:!!e.colorLocked||!!f,effects:t,scaleSymbolsProportionally:!1,alignment:o,size:s,scaleX:this._createOverrideFunction(e.primitiveName,"ScaleX",h),rotation:l,offsetX:c,offsetY:m,color:this._createOverrideFunction(e.primitiveName,"TintColor",u,U),anchorPoint:{x:O.x,y:O.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,frameHeight:0,rotateClockwise:!1,referenceSize:n,sizeRatio:1,markerPlacement:i,url:e.url,animatedSymbolProperties:y})}_analyzeVectorMarker(e,t,i,r,o,n,a,s,l,c,m,f,h){const u=e.markerGraphics;if(!u)return;const p=e.frame;let y=0,d=1;e.scaleSymbolsProportionally&&p&&(y=p.ymax-p.ymin,d=this._transformSize(l,1/y)),d=this._transformSize(d,a),i||(i=this._createMarkerPlacementOverrideFunction(e.markerPlacement));for(const v of u)if(v){const a=v.symbol;if(!a)continue;const u=v.primitiveName;u&&r.push(u);let _=m,O=f;if(("CIMPointSymbol"===a.type||"CIMTextSymbol"===a.type)&&p){let t=0,i=0;const r=v.geometry;"x"in r&&"y"in r&&(t+=r.x-.5*(p.xmin+p.xmax),i+=r.y-.5*(p.ymin+p.ymax));const o=e.anchorPoint;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,i-=o.y):p&&(t-=(p.xmax-p.xmin)*o.x,i-=(p.ymax-p.ymin)*o.y)),_=this._transformOffsetX(t,i,c,d,m),O=this._transformOffsetY(t,i,c,d,f)}switch(a.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":s?this._analyzeMultiLayerGraphicNonSDF(e,t,i,null,v,r,o,n,y,!!h||!!e.colorLocked):this._analyzeMultiLayerGraphic(e,t,i,null,v,r,o,n,y,d,l,c,_,O,!!h||!!e.colorLocked);break;case"CIMTextSymbol":this._analyzeTextGraphic(e,t,i,v,r,o,n,y,d,l,c,_,O,!!h||!!e.colorLocked)}u&&r.pop()}}_analyzeMultiLayerGraphic(e,t,i,r,o,n,s,l,c,m,f,h,u,p,y){const d=o.symbol,v=d.symbolLayers;if(!v)return;let _=v.length;if(B(v))return void this._analyzeCompositeMarkerGraphic(e,t,i,r,o,v,n,s,l,c,f,h,u,p,!!y||!!e.colorLocked);const O=this._resourceManager.geometryEngine,k=X.applyEffects(d.effects,o.geometry,O);if(k)for(;_--;){const d=v[_];if(!d||!1===d.enable)continue;const b=d.primitiveName;switch(b&&n.push(b),d.type){case"CIMSolidFill":case"CIMSolidStroke":{const m=X.applyEffects(d.effects,k,O),v=S(m);if(!v)continue;const _="Relative"!==e.anchorPointUnits,[C,F,I]=g(v,e.frame,e.size,e.anchorPoint,_),w="CIMSolidFill"===d.type,x={type:"sdf",geom:m,asFill:w},A=d.path,R=w?M(N(d)):null==A?M(P(d)):{r:0,g:0,b:0,a:0},H=w?{r:0,g:0,b:0,a:0}:M(P(d)),J=z(d)??0;if(!w&&!J)break;const Y=o.primitiveName;let E=null;w&&!d.colorLocked&&(E=this._createOverrideFunction(Y,"FillColor",R,U));let T=null;w||d.colorLocked||(T=this._createOverrideFunction(Y,"StrokeColor",H,U));const $=this._createOverrideFunction(Y,"StrokeWidth",J);let j=!1,G="";for(const e of this._primitiveOverrides)n.includes(e.primitiveName)&&(null!=e.value?G+=`-${e.primitiveName}-${e.propertyName}-${JSON.stringify(e.value)}`:e.valueExpressionInfo&&(j=!0));(null!=t&&"function"==typeof t||null!=i&&"function"==typeof i)&&(j=!0),(L(f)||L(h)||L(u)||L(p))&&(j=!0);const D=JSON.stringify({...e,markerGraphics:null}),W=a(JSON.stringify(x)+A).toString(),V=a(JSON.stringify(o)+JSON.stringify(d)+D+G).toString();this._cimLayers.push({type:"marker",templateHash:V,materialHash:j?()=>W:W,cim:x,materialOverrides:null,colorLocked:!!d.colorLocked||!!y,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:F,y:I},isAbsoluteAnchorPoint:_,size:f,rotation:h,offsetX:u,offsetY:p,scaleX:1,frameHeight:c,rotateClockwise:!1,referenceSize:l,sizeRatio:C,color:L(E)?E:this._createOverrideFunction(b,"Color",R,U),outlineColor:L(T)?T:this._createOverrideFunction(b,"Color",H,U),outlineWidth:L($)?$:this._createOverrideFunction(b,"Width",J),markerPlacement:i,animatedSymbolProperties:r,path:A});break}case"CIMVectorMarker":d.markerPlacement?this._analyzeMultiLayerGraphicNonSDF(e,t,i,r,o,n,s,l,c,!!y||!!d.colorLocked):this._analyzeMarker(d,t,i,n,s,l,m,!1,f,h,u,p,!!y||!!e.colorLocked);break;default:this._analyzeMultiLayerGraphicNonSDF(e,t,i,r,o,n,s,l,c,!!y||!!e.colorLocked)}b&&n.pop()}}_analyzeTextGraphic(e,i,r,o,n,s,l,c,m,h,p,d,v,_){const O=[];y.findApplicableOverrides(o,this._primitiveOverrides,O);const S=o.geometry;if(!("x"in S)||!("y"in S))return;const g=o.symbol,k=C(g),X=F(g.fontStyleName),H=t(g.fontFamilyName);g.font={family:H,decoration:k,...X};let J=b(g.height,u),Y=b(g.angle),E=b(g.offsetX),T=b(g.offsetY);J=this._transformSize(J,m),Y=this._transformRotation(Y,!1,p);const $=this._transformOffsetX(E,T,p,m,d),j=this._transformOffsetY(E,T,p,m,v);E=$,T=j;const G=M(N(g));let D=M(P(g)),W=z(g)??0;W||(D=M(N(g.haloSymbol)),W=b(g.haloSize)),W=this._transformSize(W,m);let V=!1;if(g.symbol?.symbolLayers)for(const t of g.symbol.symbolLayers){null!=N(t)&&(V=!!t.colorLocked)}const B=o.primitiveName;let q=null;V||(q=this._createOverrideFunction(B,"Color",G,U));let K=null,Q=null,Z=0;if(g.callout&&"CIMBackgroundCallout"===g.callout.type){const e=g.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?K=M(e.color):"CIMSolidStroke"===e.type&&(Q=M(e.color),Z=b(e.width,f))}}const[ee,te]=this._analyzePrimitiveOverrides(n,i,r,null),ie=JSON.stringify(e.effects)+Number(e.colorLocked||_).toString()+JSON.stringify(e.anchorPoint)+e.anchorPointUnits+JSON.stringify(e.markerPlacement)+e.size.toString(),re=a(JSON.stringify(o)+ie+te).toString();let oe=this._createOverrideFunction(o.primitiveName,"TextString",o.textString??"",I,g.textCase);if(null==oe)return;const{fontStyleName:ne}=g,ae=H+(ne?"-"+ne.toLowerCase():"-regular"),se=ae;"string"==typeof oe&&oe.includes("[")&&g.fieldMap&&(oe=w(g.fieldMap,oe,g.textCase)),this._cimLayers.push({type:"text",templateHash:re,materialHash:ee||"function"==typeof oe||/\[(.*?)\]/.test(oe)?(e,t,i)=>se+"-"+x(oe,e,t,i):se+"-"+a(oe),cim:g,materialOverrides:null,colorLocked:!!_||!!V,effects:i,alignment:s,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,fontName:ae,decoration:k,weight:X.weight,style:X.style,size:J,angle:Y,offsetX:E,offsetY:T,horizontalAlignment:A(g.horizontalAlignment),verticalAlignment:R(g.verticalAlignment),text:oe,color:L(q)?q:G,outlineColor:D,outlineSize:W,backgroundColor:K,borderLineColor:Q,borderLineWidth:Z,lineWidth:null,referenceSize:l,sizeRatio:1,markerPlacement:r})}_analyzeMultiLayerGraphicNonSDF(e,t,i,r,n,s,l,c,m,f){const u=this._buildSimpleMarker(e,n),y=e.primitiveName,d=this._analyzeMaterialOverrides(y,["Rotation","OffsetX","OffsetY"]),[v,_]=this._analyzePrimitiveOverrides(s,null,null,null),[O,S,g]=p.getTextureAnchor(u,this._resourceManager),M=b(e.rotation),k=b(e.offsetX),N=b(e.offsetY),P=a(JSON.stringify(u)+_).toString(),z=d&&d.length>0||null!=t&&"function"==typeof t;this._cimLayers.push({type:"marker",templateHash:P,materialHash:z&&d?this._createMaterialHashFunction(P,d):P,cim:u,materialOverrides:d,colorLocked:!!e.colorLocked||!!f,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:l,anchorPoint:{x:O,y:S},isAbsoluteAnchorPoint:!1,size:b(e.size,h),rotation:this._createOverrideFunction(y,"Rotation",M),offsetX:this._createOverrideFunction(y,"OffsetX",k),offsetY:this._createOverrideFunction(y,"OffsetY",N),color:{r:255,g:255,b:255,a:1},outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,scaleX:1,frameHeight:m,rotateClockwise:!!e.rotateClockwise,referenceSize:c,sizeRatio:g/o(e.size),markerPlacement:i,animatedSymbolProperties:r,avoidSDFRasterization:!0})}_buildSimpleMarker(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}_analyzeCompositeMarkerGraphic(e,t,i,r,o,n,s,l,c,m,h,u,p,y,d){const v=o.geometry,_=n[0],O=n[1],k=S(v);if(!k)return;const N="Relative"!==e.anchorPointUnits,[P,z,C]=g(k,e.frame,e.size,e.anchorPoint,N),F={type:"sdf",geom:v,asFill:!0},I=O.path,w=O.primitiveName,x=_.primitiveName,A=M(O.color),R=M(_.color),X=b(_.width,f),H=o.primitiveName;let J=null;O.colorLocked||d||(J=this._createOverrideFunction(H,"FillColor",A,U));let Y=null;_.colorLocked||d||(Y=this._createOverrideFunction(H,"StrokeColor",R,U));const E=this._createOverrideFunction(H,"StrokeWidth",X);let T=!1,$="";for(const a of this._primitiveOverrides)(a.primitiveName===w||a.primitiveName===x||s.includes(a.primitiveName))&&(null!=a.value?$+=`-${a.primitiveName}-${a.propertyName}-${JSON.stringify(a.value)}`:a.valueExpressionInfo&&(T=!0));null!=i&&"function"==typeof i&&(T=!0),(L(h)||L(u)||L(p)||L(y))&&(T=!0);const j=JSON.stringify({...e,markerGraphics:null}),G=a(JSON.stringify(F)+I).toString(),D=a(JSON.stringify(o)+JSON.stringify(O)+JSON.stringify(_)+j+$).toString();this._cimLayers.push({type:"marker",templateHash:D,materialHash:T?()=>G:G,cim:F,materialOverrides:null,colorLocked:!!d,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:l,anchorPoint:{x:z,y:C},isAbsoluteAnchorPoint:N,size:h,rotation:u,offsetX:p,offsetY:y,scaleX:1,frameHeight:m,rotateClockwise:!1,referenceSize:c,sizeRatio:P,color:L(J)?J:this._createOverrideFunction(w,"Color",A,U),outlineColor:L(Y)?Y:this._createOverrideFunction(x,"Color",R,U),outlineWidth:L(E)?E:this._createOverrideFunction(x,"Width",X),markerPlacement:i,path:I,animatedSymbolProperties:r})}_createMaterialHashFunction(e,t){const i=this._info?.geometryType;if(i){const e=this._poMap;for(const r of t){if(r.valueExpressionInfo){const t=e[r.primitiveName]&&e[r.primitiveName][r.propertyName];t instanceof l&&(r.fn=(e,r,o)=>H(t,e,{$view:o},i,r))}}}return(i,r,o)=>{for(const e of t)e.fn&&(e.value=e.fn(i,r,o));return a(e+y.buildOverrideKey(t)).toString()}}_setPoMap(e,t,i){let r;this._poMap[e]?r=this._poMap[e]:(r={},this._poMap[e]=r),r[t]=i}_createOverrideFunction(e,t,i,r,o){if(null==e)return i;const n=this._poMap[e];if(null==n)return i;const a=n[t];if("string"==typeof a||"number"==typeof a||a instanceof Array)return r?r.call(null,a,o):a;const s=this._info?.geometryType;return null!=a&&a instanceof l&&null!=s?(e,t,n)=>{let l=H(a,e,{$view:n},s,t);return null!==l&&r&&(l=r.call(null,l,o)),null!==l?l:i}:i}_createEffectsOverrideFunction(e,t){const r=this._poMap,o=this._info?.geometryType;for(const i of t){if(i.valueExpressionInfo&&o){const e=r[i.primitiveName]&&r[i.primitiveName][i.propertyName];e instanceof l&&(i.fn=(t,i,r)=>H(e,t,{$view:r},o,i))}}return(r,o,n)=>{for(const e of t)e.fn&&(e.value=e.fn(r,o,n));const a=[];for(let s of e){const e=s?.primitiveName;if(e){let r=!1;for(const o of t)if(o.primitiveName===e){const e=W(o.propertyName);null!=o.value&&o.value!==s[e]&&(r||(s=i(s),r=!0),s[e]=o.value)}}a.push(s)}return a}}_createMarkerPlacementOverrideFunction(e){const t=[];if(y.findApplicableOverrides(e,this._primitiveOverrides,t),null==e||0===t.length)return e;const r=this._poMap,o=this._info?.geometryType;for(const i of t){if(i.valueExpressionInfo&&o){const e=r[i.primitiveName]&&r[i.primitiveName][i.propertyName];e instanceof l&&(i.fn=(t,i,r)=>H(e,t,{$view:r},o,i))}}return(r,o,n)=>{for(const e of t)e.fn&&(e.value=e.fn(r,o,n));const a=i(e),s=e.primitiveName;for(const e of t)if(e.primitiveName===s){const t=W(e.propertyName);null!=e.value&&e.value!==a[t]&&(a[t]=e.value)}return a}}_createAnimatedSymbolPropertiesOverrideFunction(e){const t=[];if(y.findApplicableOverrides(e,this._primitiveOverrides,t),null==e||0===t.length)return e;const r=this._info?.geometryType;if(r){const e=this._poMap;for(const i of t){if(i.valueExpressionInfo){const t=e[i.primitiveName]&&e[i.primitiveName][i.propertyName];t instanceof l&&(i.fn=(e,i,o)=>H(t,e,{$view:o},r,i))}}}return(r,o,n)=>{for(const e of t)e.fn&&(e.value=e.fn(r,o,n));const a=i(e),s=e.primitiveName;for(const e of t)if(e.primitiveName===s){const t=W(e.propertyName);if(null!=e.value){const i=O(e.value,e.propertyName);i!==a[t]&&(a[t]=i)}}return a}}_analyzePrimitiveOverrides(e,t,i,r){let o=!1,n="";"string"==typeof e&&(e=[e]);for(const a of this._primitiveOverrides)e?.includes(a.primitiveName)&&(null!=a.value?n+=`-${a.primitiveName}-${a.propertyName}-${JSON.stringify(a.value)}`:a.valueExpressionInfo&&(o=!0));return null!=t&&"function"==typeof t&&(o=!0),null!=i&&"function"==typeof i&&(o=!0),null!=r&&"function"==typeof r&&(o=!0),[o,n]}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter((i=>i.primitiveName!==e||!t.includes(i.propertyName)))}_transformSize(e,t){return L(e)||L(t)?(i,r,o)=>(L(e)?e(i,r,o):e)*(L(t)?t(i,r,o):t):e*t}_transformRotation(e,t,i){return L(e)||L(i)?(r,o,n)=>{const a=L(e)?e(r,o,n):e,s=L(i)?i(r,o,n):i;return t?s-a:s+a}:t?i-e:i+e}_transformOffsetX(e,t,i,r,o){if(!(L(e)||L(t)||L(i)||L(r)||L(o))){const n=i*Math.PI/180;if(n){const i=Math.cos(n),a=Math.sin(n);return(i*e-a*t)*r+o}return e*r+o}return(n,a,s)=>{let l=L(i)?i(n,a,s):i;const c=L(r)?r(n,a,s):r,m=L(e)?e(n,a,s):e,f=L(o)?o(n,a,s):o;if(l){l*=Math.PI/180;return(Math.cos(l)*m-Math.sin(l)*(L(t)?t(n,a,s):t))*c+f}return m*c+f}}_transformOffsetY(e,t,i,r,o){if(!(L(e)||L(t)||L(i)||L(r)||L(o))){const n=i*Math.PI/180;if(n){const i=Math.cos(n);return(Math.sin(n)*e+i*t)*r+o}return t*r+o}return(n,a,s)=>{let l=L(i)?i(n,a,s):i;const c=L(r)?r(n,a,s):r,m=L(t)?t(n,a,s):t,f=L(o)?o(n,a,s):o;if(l){l*=Math.PI/180;const t=Math.cos(l);return(Math.sin(l)*(L(e)?e(n,a,s):e)+t*m)*c+f}return m*c+f}}}function D(e){if(e&&0===e.indexOf("Level_")){const t=parseInt(e.substr(6),10);if(!isNaN(t))return t}return 0}function U(t){if(!t||0===t.length)return null;const i=new e(t).toRgba();return{r:i[0],g:i[1],b:i[2],a:i[3]}}function W(e){return e?e.charAt(0).toLowerCase()+e.substr(1):e}function V(e,t){if(!t||0===t.length)return e;const r=i(e);return y.applyOverrides(r,t),r}const B=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects;export{G as CIMAnalyzer,V as analyzeCIMResource};
5
+ import e from"../../Color.js";import{getFontFamily as t}from"../../core/fontUtils.js";import{clone as i}from"../../core/lang.js";import r from"../../core/Logger.js";import{pt2px as o,px2pt as n}from"../../core/screenUtils.js";import{numericHash as a}from"../../core/string.js";import{createRendererExpression as s,ArcadeExpression as l}from"../../support/arcadeOnDemand.js";import{defaultPictureFillHeight as c,defaultHatchFillSeparation as m,defaultStrokeWidth as f,defaultMarkerSize as h,defaultTextHeight as u}from"./CIMSymbolDrawHelper.js";import{CIMSymbolHelper as p,OverrideHelper as y}from"./CIMSymbolHelper.js";import{Alignment as d,CapType as v,JoinType as _}from"./enums.js";import{quantizeIfNeeded as O}from"./quantizeTime.js";import{getExtent as S,getSDFMetrics as g}from"./SDFHelper.js";import{fromCIMColor as M,getTintColor as k,getValue as b,getFillColor as N,getStrokeColor as P,getStrokeWidth as z,isFeatureValueFn as L,fromCIMFontDecoration as C,fromCIMFontStyle as F,adjustTextCase as I,createLabelOverrideFunction as w,evaluateValueOrFunction as x,fromCIMHorizontalAlignment as A,fromCIMVerticalAlignment as R}from"./utils.js";import{CIMEffectHelper as X}from"./effects/CIMEffectHelper.js";import H from"../../views/2d/arcade/callExpressionWithFeature.js";import{randomInsidePolygonTextureSize as J}from"../../views/2d/engine/webgl/definitions.js";import{getMaterialGroup as Y}from"../../views/2d/engine/webgl/grouping.js";const E=r.getLogger("esri.symbols.cim.cimAnalyzer");function T(e){switch(e){case"Butt":return v.BUTT;case"Square":return v.SQUARE;default:return v.ROUND}}function $(e){switch(e){case"Bevel":return _.BEVEL;case"Miter":return _.MITER;default:return _.ROUND}}function j(e){const t=e.markerPlacement;return t&&t.angleToLine?d.MAP:d.SCREEN}class G{constructor(e,t){this._cimLayers=[],this._poMap={},this._primitiveOverrides=[],this._resourceManager=e,this._info=t}async analyzeSymbolReference(e,t,i){if(this._cimLayers=i??[],!e)return this._cimLayers;if(e.primitiveOverrides){this._primitiveOverrides=e.primitiveOverrides,this._poMap={};const t=[],i=this._info;for(const e of this._primitiveOverrides){const r=e.valueExpressionInfo;if(r&&i){const o=r.expression,n=s(o,i.spatialReference,i.fields).then((t=>{null!=t&&this._setPoMap(e.primitiveName,e.propertyName,t)}));t.push(n)}else null!=e.value&&this._setPoMap(e.primitiveName,e.propertyName,e.value);t.length>0&&await Promise.all(t)}}const r=e.symbol,o=[];return p.fetchResources(r,this._resourceManager,o),o.length>0&&await Promise.all(o),this._analyzeSymbol(r,t),this._cimLayers}_analyzeSymbol(e,t){switch(e?.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":this._analyzeMultiLayerSymbol(e,t,1,0,0,0)}}_analyzeMultiLayerSymbol(e,t,i,r,o,n){const a=e?.symbolLayers;if(!a)return;const s=e.effects;let l=d.SCREEN;const c=p.getSize(e)??0;"CIMPointSymbol"===e.type&&"Map"===e.angleAlignment&&(l=d.MAP);const m="CIMPolygonSymbol"===e.type;let f=a.length;for(;f--;){const h=a[f];if(!h||!1===h.enable)continue;let u;s&&s.length&&(u=[...s]);const p=h.effects;p&&p.length&&(s?u.push(...p):u=[...p]);const d=[];let v;y.findEffectOverrides(u,this._primitiveOverrides,d),v=d.length>0?this._createEffectsOverrideFunction(u,d):u;const _=[];switch(y.findApplicableOverrides(h,this._primitiveOverrides,_),h.type){case"CIMSolidFill":this._analyzeSolidFill(h,v);break;case"CIMPictureFill":this._analyzePictureFill(h,v);break;case"CIMHatchFill":this._analyzeHatchFill(h,v);break;case"CIMGradientFill":this._analyzeGradientFill(h,v);break;case"CIMSolidStroke":this._analyzeSolidStroke(h,v,m,c);break;case"CIMPictureStroke":this._analyzePictureStroke(h,v,m,c);break;case"CIMGradientStroke":this._analyzeGradientStroke(h,v,m,c);break;case"CIMCharacterMarker":case"CIMPictureMarker":case"CIMVectorMarker":{"CIMLineSymbol"===e.type&&(l=j(h));const a=[],s=h.primitiveName;s&&a.push(s),this._analyzeMarker(h,v,null,a,l,c,1,t,i,r,o,n);break}default:E.error("Cannot analyze CIM layer",h.type)}}}_analyzeSolidFill(e,t){const i=e.primitiveName,r=M(e.color),[o,n]=this._analyzePrimitiveOverrides(i,t,null,null),s=a(JSON.stringify(e)+n).toString();this._cimLayers.push({type:"fill",templateHash:s,materialHash:o?()=>s:s,cim:e,materialOverrides:null,colorLocked:!!e.colorLocked,color:this._createOverrideFunction(i,"Color",r,U),height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,effects:t,applyRandomOffset:!1,sampleAlphaOnly:!0})}_analyzePictureFill(e,t){const i=e.primitiveName,r=k(e),[o,n]=this._analyzePrimitiveOverrides(i,t,null,null),s=a(JSON.stringify(e)+n).toString(),l=a(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),m=b(e.height,c);let f=b(e.scaleX,1);if("width"in e&&"number"==typeof e.width){const t=e.width;let i=1;const r=this._resourceManager.getResource(e.url);null!=r&&(i=r.width/r.height),f/=i*(m/t)}this._cimLayers.push({type:"fill",templateHash:s,materialHash:o?()=>l:l,cim:e,materialOverrides:null,colorLocked:!!e.colorLocked,effects:t,color:this._createOverrideFunction(i,"TintColor",r,U),height:this._createOverrideFunction(i,"Height",m),scaleX:this._createOverrideFunction(i,"ScaleX",f),angle:this._createOverrideFunction(i,"Rotation",b(e.rotation)),offsetX:this._createOverrideFunction(i,"OffsetX",b(e.offsetX)),offsetY:this._createOverrideFunction(i,"OffsetY",b(e.offsetY)),url:e.url,applyRandomOffset:!1,sampleAlphaOnly:!1})}_analyzeHatchFill(e,t){const i=e.primitiveName,r=this._analyzeMaterialOverrides(i,["Rotation","OffsetX","OffsetY"]);let[o,n]=this._analyzePrimitiveOverrides(i,t,null,null);const s=a(JSON.stringify(e)+n).toString(),l=a(`${e.separation}${JSON.stringify(e.lineSymbol)}`).toString();let c={r:255,g:255,b:255,a:1},f=!1;const h=e.lineSymbol?.symbolLayers?.find((e=>"CIMSolidStroke"===e.type&&null!=this._poMap[e.primitiveName]?.Color));if(h){c=M(h.color),c=this._createOverrideFunction(h.primitiveName,"Color",c,U);const e="function"==typeof c;o=o||e,f=null!=h.color||e}this._cimLayers.push({type:"fill",templateHash:s,materialHash:o&&r?this._createMaterialHashFunction(l,r):l,cim:e,materialOverrides:r,colorLocked:!!e.colorLocked,effects:t,color:c,height:this._createOverrideFunction(i,"Separation",b(e.separation,m)),scaleX:1,angle:this._createOverrideFunction(i,"Rotation",b(e.rotation)),offsetX:this._createOverrideFunction(i,"OffsetX",b(e.offsetX)),offsetY:this._createOverrideFunction(i,"OffsetY",b(e.offsetY)),applyRandomOffset:!1,sampleAlphaOnly:!0,hasUnresolvedReplacementColor:!f})}_analyzeGradientFill(e,t){const i=e.primitiveName,[r,o]=this._analyzePrimitiveOverrides(i,t,null,null),n=a(JSON.stringify(e)+o).toString();this._cimLayers.push({type:"fill",templateHash:n,materialHash:r?()=>n:n,cim:e,materialOverrides:null,colorLocked:!!e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},height:0,angle:0,offsetX:0,offsetY:0,scaleX:1,applyRandomOffset:!1,sampleAlphaOnly:!1})}_analyzeSolidStroke(e,t,i,r){const o=e.primitiveName,n=M(e.color),s=b(e.width,f),l=T(e.capStyle),c=$(e.joinStyle),m=e.miterLimit,[h,u]=this._analyzePrimitiveOverrides(o,t,null,null),p=a(JSON.stringify(e)+u).toString();let y,d;if(t&&t instanceof Array&&t.length>0){const e=t[t.length-1];if("CIMGeometricEffectDashes"===e.type&&"NoConstraint"===e.lineDashEnding&&null===e.offsetAlongLine){const e=(t=[...t]).pop();y=e.dashTemplate,d=e.scaleDash}}this._cimLayers.push({type:"line",templateHash:p,materialHash:h?()=>p:p,cim:e,materialOverrides:null,isOutline:i,colorLocked:!!e.colorLocked,effects:t,color:this._createOverrideFunction(o,"Color",n,U),width:this._createOverrideFunction(o,"Width",s),cap:this._createOverrideFunction(o,"CapStyle",l),join:this._createOverrideFunction(o,"JoinStyle",c),miterLimit:m&&this._createOverrideFunction(o,"MiterLimit",m),referenceWidth:r,zOrder:D(e.name),dashTemplate:y,scaleDash:d,sampleAlphaOnly:!0})}_analyzePictureStroke(e,t,i,r){const o=a(`${e.url}${JSON.stringify(e.colorSubstitutions)}`).toString(),n=e.primitiveName,s=k(e),l=b(e.width,f),c=T(e.capStyle),m=$(e.joinStyle),h=e.miterLimit,[u,p]=this._analyzePrimitiveOverrides(n,t,null,null),y=a(JSON.stringify(e)+p).toString();this._cimLayers.push({type:"line",templateHash:y,materialHash:u?()=>o:o,cim:e,materialOverrides:null,isOutline:i,colorLocked:!!e.colorLocked,effects:t,color:this._createOverrideFunction(n,"TintColor",s,U),width:this._createOverrideFunction(n,"Width",l),cap:this._createOverrideFunction(n,"CapStyle",c),join:this._createOverrideFunction(n,"JoinStyle",m),miterLimit:h&&this._createOverrideFunction(n,"MiterLimit",h),referenceWidth:r,zOrder:D(e.name),dashTemplate:null,scaleDash:!1,url:e.url,sampleAlphaOnly:!1})}_analyzeGradientStroke(e,t,i,r){const o=e.primitiveName,n=b(e.width,f),s=T(e.capStyle),l=$(e.joinStyle),c=e.miterLimit,[m,h]=this._analyzePrimitiveOverrides(o,t,null,null),u=a(JSON.stringify(e)+h).toString();this._cimLayers.push({type:"line",templateHash:u,materialHash:m?()=>u:u,cim:e,materialOverrides:null,isOutline:i,colorLocked:!!e.colorLocked,effects:t,color:{r:128,g:128,b:128,a:1},width:this._createOverrideFunction(o,"Width",n),cap:this._createOverrideFunction(o,"CapStyle",s),join:this._createOverrideFunction(o,"JoinStyle",l),miterLimit:c&&this._createOverrideFunction(o,"MiterLimit",c),referenceWidth:r,zOrder:D(e.name),dashTemplate:null,scaleDash:!1,sampleAlphaOnly:!1})}_analyzeMarker(e,t,i,r,o,n,a,s,l,c,m,f,u=!1){if(this._analyzeMarkerInsidePolygon(e,t))return;const p=b(e.size,h),y=b(e.rotation),d=b(e.offsetX),v=b(e.offsetY);let _=this._createOverrideFunction(e.primitiveName,"Size",p),O=this._createOverrideFunction(e.primitiveName,"Rotation",y),S=this._createOverrideFunction(e.primitiveName,"OffsetX",d),g=this._createOverrideFunction(e.primitiveName,"OffsetY",v);_=this._transformSize(_,a),O=this._transformRotation(O,!!e.rotateClockwise,c);const M=this._transformOffsetX(S,g,c,a,m),k=this._transformOffsetY(S,g,c,a,f);switch(S=M,g=k,e.type){case"CIMPictureMarker":this._analyzePictureMarker(e,t,i,r,o,n,_,O,S,g,e.colorLocked||u);break;case"CIMVectorMarker":this._analyzeVectorMarker(e,t,i,r,o,n,a,s,_,O,S,g,e.colorLocked||u)}}_analyzeMarkerInsidePolygon(e,t){const{markerPlacement:i,type:r}=e;if(!i||"CIMMarkerPlacementInsidePolygon"!==i.type)return!1;if("CIMVectorMarker"===r||"CIMPictureMarker"===r){const o=e.primitiveName;if(o){const[e,i]=this._analyzePrimitiveOverrides([o],t,null,null);if(e)return!1}const n=i.primitiveName;if(n){const[e,i]=this._analyzePrimitiveOverrides([n],t,null,null);if(e)return!1}if("CIMVectorMarker"===r){const{markerGraphics:t}=e;if(t)for(const e of t){const{symbol:t}=e;if("CIMPolygonSymbol"===t?.type&&t.symbolLayers){const{symbolLayers:e}=t;for(const t of e)if("CIMSolidStroke"===t.type)return!1}}}else{const{animatedSymbolProperties:t}=e;if(t)return!1}}const o=i,s=Math.abs(o.stepX),l=Math.abs(o.stepY);if(0===s||0===l)return!0;const c=new Set(["Rotation","OffsetX","OffsetY"]),m=this._primitiveOverrides.filter((t=>t.primitiveName!==e.primitiveName||!c.has(t.propertyName))),f="url"in e&&"string"==typeof e.url?e.url:void 0,h=a(JSON.stringify(e)).toString();let u,p,y=null;if("Random"===i.gridType){const e=n(J),t=Math.max(Math.floor(e/s),1),i=Math.max(Math.floor(e/l),1);u=l*i,y=e=>e?e*i:0;p=t*s/u}else i.shiftOddRows?(u=2*l,y=e=>e?2*e:0,p=s/l*.5):(u=l,y=null,p=s/l);const d=k(e);return this._cimLayers.push({type:"fill",templateHash:h,materialHash:h,cim:e,materialOverrides:m,colorLocked:!!e.colorLocked,effects:t,color:d,height:this._createOverrideFunction(o.primitiveName,"StepY",u,y),scaleX:p,angle:o.gridAngle,offsetX:b(o.offsetX),offsetY:b(o.offsetY),url:f,applyRandomOffset:"Random"===i.gridType,sampleAlphaOnly:!f,hasUnresolvedReplacementColor:!0}),!0}_analyzePictureMarker(e,t,i,r,o,n,s,l,c,m,f){let h=b(e.scaleX,1);const u=k(e),p=a(`${e.url}${JSON.stringify(e.colorSubstitutions)}${JSON.stringify(e.animatedSymbolProperties)}`).toString();i||(i=this._createMarkerPlacementOverrideFunction(e.markerPlacement));const y=this._createAnimatedSymbolPropertiesOverrideFunction(e.animatedSymbolProperties),[d,v]=this._analyzePrimitiveOverrides(r,t,i,y),_=a(JSON.stringify(e)+v).toString(),O=e.anchorPoint??{x:0,y:0};if("width"in e&&"number"==typeof e.width){const t=e.width;let i=1;const r=this._resourceManager.getResource(e.url);null!=r&&(i=r.width/r.height);h/=i*(b(e.size)/t)}function S(e,t){return null!=y?x(y,e,t):null}const g=e.animatedSymbolProperties&&!0===e.animatedSymbolProperties.randomizeStartTime?(e,t,i,r)=>{const o=Y(r??0),n=S(e,t);return p+`-MATERIALGROUP(${o})`+`-ASP(${JSON.stringify(n)})`}:d?(e,t)=>{const i=S(e,t);return p+`-ASP(${JSON.stringify(i)})`}:p;this._cimLayers.push({type:"marker",templateHash:_,materialHash:g,cim:e,materialOverrides:null,colorLocked:!!e.colorLocked||!!f,effects:t,scaleSymbolsProportionally:!1,alignment:o,size:s,scaleX:this._createOverrideFunction(e.primitiveName,"ScaleX",h),rotation:l,offsetX:c,offsetY:m,color:this._createOverrideFunction(e.primitiveName,"TintColor",u,U),anchorPoint:{x:O.x,y:O.y},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,frameHeight:0,rotateClockwise:!1,referenceSize:n,sizeRatio:1,markerPlacement:i,url:e.url,animatedSymbolProperties:y})}_analyzeVectorMarker(e,t,i,r,o,n,a,s,l,c,m,f,h){const u=e.markerGraphics;if(!u)return;const p=e.frame;let y=0,d=1;e.scaleSymbolsProportionally&&p&&(y=p.ymax-p.ymin,d=this._transformSize(l,1/y)),d=this._transformSize(d,a),i||(i=this._createMarkerPlacementOverrideFunction(e.markerPlacement));for(const v of u)if(v){const a=v.symbol;if(!a)continue;const u=v.primitiveName;u&&r.push(u);let _=m,O=f;if(("CIMPointSymbol"===a.type||"CIMTextSymbol"===a.type)&&p){let t=0,i=0;const r=v.geometry;"x"in r&&"y"in r&&(t+=r.x-.5*(p.xmin+p.xmax),i+=r.y-.5*(p.ymin+p.ymax));const o=e.anchorPoint;o&&("Absolute"===e.anchorPointUnits?(t-=o.x,i-=o.y):p&&(t-=(p.xmax-p.xmin)*o.x,i-=(p.ymax-p.ymin)*o.y)),_=this._transformOffsetX(t,i,c,d,m),O=this._transformOffsetY(t,i,c,d,f)}switch(a.type){case"CIMPointSymbol":case"CIMLineSymbol":case"CIMPolygonSymbol":s?this._analyzeMultiLayerGraphicNonSDF(e,t,i,null,v,r,o,n,y,!!h||!!e.colorLocked):this._analyzeMultiLayerGraphic(e,t,i,null,v,r,o,n,y,d,l,c,_,O,!!h||!!e.colorLocked);break;case"CIMTextSymbol":this._analyzeTextGraphic(e,t,i,v,r,o,n,y,d,l,c,_,O,!!h||!!e.colorLocked)}u&&r.pop()}}_analyzeMultiLayerGraphic(e,t,i,r,o,n,s,l,c,m,f,h,u,p,y){const d=o.symbol,v=d.symbolLayers;if(!v)return;let _=v.length;if(B(v))return void this._analyzeCompositeMarkerGraphic(e,t,i,r,o,v,n,s,l,c,f,h,u,p,!!y||!!e.colorLocked);const O=this._resourceManager.geometryEngine,k=X.applyEffects(d.effects,o.geometry,O);if(k)for(;_--;){const d=v[_];if(!d||!1===d.enable)continue;const b=d.primitiveName;switch(b&&n.push(b),d.type){case"CIMSolidFill":case"CIMSolidStroke":{const m=X.applyEffects(d.effects,k,O),v=S(m);if(!v)continue;const _="Relative"!==e.anchorPointUnits,[C,F,I]=g(v,e.frame,e.size,e.anchorPoint,_),w="CIMSolidFill"===d.type,x={type:"sdf",geom:m,asFill:w},A=d.path,R=w?M(N(d)):null==A?M(P(d)):{r:0,g:0,b:0,a:0},H=w?{r:0,g:0,b:0,a:0}:M(P(d)),J=z(d)??0;if(!w&&!J)break;const Y=o.primitiveName;let E=null;w&&!d.colorLocked&&(E=this._createOverrideFunction(Y,"FillColor",R,U));let T=null;w||d.colorLocked||(T=this._createOverrideFunction(Y,"StrokeColor",H,U));const $=this._createOverrideFunction(Y,"StrokeWidth",J);let j=!1,G="";for(const e of this._primitiveOverrides)n.includes(e.primitiveName)&&(null!=e.value?G+=`-${e.primitiveName}-${e.propertyName}-${JSON.stringify(e.value)}`:e.valueExpressionInfo&&(j=!0));(null!=t&&"function"==typeof t||null!=i&&"function"==typeof i)&&(j=!0),(L(f)||L(h)||L(u)||L(p))&&(j=!0);const D=JSON.stringify({...e,markerGraphics:null}),W=a(JSON.stringify(x)+A).toString(),V=a(JSON.stringify(o)+JSON.stringify(d)+D+G).toString();this._cimLayers.push({type:"marker",templateHash:V,materialHash:j?()=>W:W,cim:x,materialOverrides:null,colorLocked:!!d.colorLocked||!!y,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:s,anchorPoint:{x:F,y:I},isAbsoluteAnchorPoint:_,size:f,rotation:h,offsetX:u,offsetY:p,scaleX:1,frameHeight:c,rotateClockwise:!1,referenceSize:l,sizeRatio:C,color:L(E)?E:this._createOverrideFunction(b,"Color",R,U),outlineColor:L(T)?T:this._createOverrideFunction(b,"Color",H,U),outlineWidth:L($)?$:this._createOverrideFunction(b,"Width",J),markerPlacement:i,animatedSymbolProperties:r,path:A});break}case"CIMVectorMarker":d.markerPlacement?this._analyzeMultiLayerGraphicNonSDF(e,t,i,r,o,n,s,l,c,!!y||!!d.colorLocked):this._analyzeMarker(d,t,i,n,s,l,m,!1,f,h,u,p,!!y||!!e.colorLocked);break;default:this._analyzeMultiLayerGraphicNonSDF(e,t,i,r,o,n,s,l,c,!!y||!!e.colorLocked)}b&&n.pop()}}_analyzeTextGraphic(e,i,r,o,n,s,l,c,m,h,p,d,v,_){const O=[];y.findApplicableOverrides(o,this._primitiveOverrides,O);const S=o.geometry;if(!("x"in S)||!("y"in S))return;const g=o.symbol,k=C(g),X=F(g.fontStyleName),H=t(g.fontFamilyName);g.font={family:H,decoration:k,...X};let J=b(g.height,u),Y=b(g.angle),E=b(g.offsetX),T=b(g.offsetY);J=this._transformSize(J,m),Y=this._transformRotation(Y,!1,p);const $=this._transformOffsetX(E,T,p,m,d),j=this._transformOffsetY(E,T,p,m,v);E=$,T=j;const G=M(N(g));let D=M(P(g)),W=z(g)??0;W||(D=M(N(g.haloSymbol)),W=b(g.haloSize)),W=this._transformSize(W,m);let V=!1;if(g.symbol?.symbolLayers)for(const t of g.symbol.symbolLayers){null!=N(t)&&(V=!!t.colorLocked)}const B=o.primitiveName;let q=null;V||(q=this._createOverrideFunction(B,"Color",G,U));let K=null,Q=null,Z=0;if(g.callout&&"CIMBackgroundCallout"===g.callout.type){const e=g.callout;if(e.backgroundSymbol){const t=e.backgroundSymbol.symbolLayers;if(t)for(const e of t)"CIMSolidFill"===e.type?K=M(e.color):"CIMSolidStroke"===e.type&&(Q=M(e.color),Z=b(e.width,f))}}const[ee,te]=this._analyzePrimitiveOverrides(n,i,r,null),ie=JSON.stringify(e.effects)+Number(e.colorLocked||_).toString()+JSON.stringify(e.anchorPoint)+e.anchorPointUnits+JSON.stringify(e.markerPlacement)+e.size.toString(),re=a(JSON.stringify(o)+ie+te).toString();let oe=this._createOverrideFunction(o.primitiveName,"TextString",o.textString??"",I,g.textCase);if(null==oe)return;const{fontStyleName:ne}=g,ae=H+(ne?"-"+ne.toLowerCase():"-regular"),se=ae;"string"==typeof oe&&oe.includes("[")&&g.fieldMap&&(oe=w(g.fieldMap,oe,g.textCase)),this._cimLayers.push({type:"text",templateHash:re,materialHash:ee||"function"==typeof oe||/\[(.*?)\]/.test(oe)?(e,t,i)=>se+"-"+x(oe,e,t,i):se+"-"+a(oe),cim:g,materialOverrides:null,colorLocked:!!_||!!V,effects:i,alignment:s,anchorPoint:{x:0,y:0},isAbsoluteAnchorPoint:"Relative"!==e.anchorPointUnits,fontName:ae,decoration:k,weight:X.weight,style:X.style,size:J,angle:Y,offsetX:E,offsetY:T,horizontalAlignment:A(g.horizontalAlignment),verticalAlignment:R(g.verticalAlignment),text:oe,color:L(q)?q:G,outlineColor:D,outlineSize:W,backgroundColor:K,borderLineColor:Q,borderLineWidth:Z,lineWidth:null,referenceSize:l,sizeRatio:1,markerPlacement:r})}_analyzeMultiLayerGraphicNonSDF(e,t,i,r,n,s,l,c,m,f){const u=this._buildSimpleMarker(e,n),y=e.primitiveName,d=this._analyzeMaterialOverrides(y,["Rotation","OffsetX","OffsetY"]),[v,_]=this._analyzePrimitiveOverrides(s,null,null,null),[O,S,g]=p.getTextureAnchor(u,this._resourceManager),M=b(e.rotation),k=b(e.offsetX),N=b(e.offsetY),P=a(JSON.stringify(u)+_).toString(),z=d&&d.length>0||null!=t&&"function"==typeof t;this._cimLayers.push({type:"marker",templateHash:P,materialHash:z&&d?this._createMaterialHashFunction(P,d):P,cim:u,materialOverrides:d,colorLocked:!!e.colorLocked||!!f,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:l,anchorPoint:{x:O,y:S},isAbsoluteAnchorPoint:!1,size:b(e.size,h),rotation:this._createOverrideFunction(y,"Rotation",M),offsetX:this._createOverrideFunction(y,"OffsetX",k),offsetY:this._createOverrideFunction(y,"OffsetY",N),color:{r:255,g:255,b:255,a:1},outlineColor:{r:0,g:0,b:0,a:0},outlineWidth:0,scaleX:1,frameHeight:m,rotateClockwise:!!e.rotateClockwise,referenceSize:c,sizeRatio:g/o(e.size),markerPlacement:i,animatedSymbolProperties:r,avoidSDFRasterization:!0})}_buildSimpleMarker(e,t){return{type:e.type,enable:!0,name:e.name,colorLocked:e.colorLocked,primitiveName:e.primitiveName,anchorPoint:e.anchorPoint,anchorPointUnits:e.anchorPointUnits,offsetX:0,offsetY:0,rotateClockwise:e.rotateClockwise,rotation:0,size:e.size,billboardMode3D:e.billboardMode3D,depth3D:e.depth3D,frame:e.frame,markerGraphics:[t],scaleSymbolsProportionally:e.scaleSymbolsProportionally,respectFrame:e.respectFrame,clippingPath:e.clippingPath}}_analyzeCompositeMarkerGraphic(e,t,i,r,o,n,s,l,c,m,h,u,p,y,d){const v=o.geometry,_=n[0],O=n[1],k=S(v);if(!k)return;const N="Relative"!==e.anchorPointUnits,[P,z,C]=g(k,e.frame,e.size,e.anchorPoint,N),F={type:"sdf",geom:v,asFill:!0},I=O.path,w=O.primitiveName,x=_.primitiveName,A=M(O.color),R=M(_.color),X=b(_.width,f),H=o.primitiveName;let J=null;O.colorLocked||d||(J=this._createOverrideFunction(H,"FillColor",A,U));let Y=null;_.colorLocked||d||(Y=this._createOverrideFunction(H,"StrokeColor",R,U));const E=this._createOverrideFunction(H,"StrokeWidth",X);let T=!1,$="";for(const a of this._primitiveOverrides)(a.primitiveName===w||a.primitiveName===x||s.includes(a.primitiveName))&&(null!=a.value?$+=`-${a.primitiveName}-${a.propertyName}-${JSON.stringify(a.value)}`:a.valueExpressionInfo&&(T=!0));null!=i&&"function"==typeof i&&(T=!0),(L(h)||L(u)||L(p)||L(y))&&(T=!0);const j=JSON.stringify({...e,markerGraphics:null}),G=a(JSON.stringify(F)+I).toString(),D=a(JSON.stringify(o)+JSON.stringify(O)+JSON.stringify(_)+j+$).toString();this._cimLayers.push({type:"marker",templateHash:D,materialHash:T?()=>G:G,cim:F,materialOverrides:null,colorLocked:!!d,effects:t,scaleSymbolsProportionally:!!e.scaleSymbolsProportionally,alignment:l,anchorPoint:{x:z,y:C},isAbsoluteAnchorPoint:N,size:h,rotation:u,offsetX:p,offsetY:y,scaleX:1,frameHeight:m,rotateClockwise:!1,referenceSize:c,sizeRatio:P,color:L(J)?J:this._createOverrideFunction(w,"Color",A,U),outlineColor:L(Y)?Y:this._createOverrideFunction(x,"Color",R,U),outlineWidth:L(E)?E:this._createOverrideFunction(x,"Width",X),markerPlacement:i,path:I,animatedSymbolProperties:r})}_createMaterialHashFunction(e,t){const i=this._info?.geometryType;if(i){const e=this._poMap;for(const r of t){if(r.valueExpressionInfo){const t=e[r.primitiveName]&&e[r.primitiveName][r.propertyName];t instanceof l&&(r.fn=(e,r,o)=>H(t,e,{$view:o},i,r))}}}return(i,r,o)=>{for(const e of t)e.fn&&(e.value=e.fn(i,r,o));return a(e+y.buildOverrideKey(t)).toString()}}_setPoMap(e,t,i){let r;this._poMap[e]?r=this._poMap[e]:(r={},this._poMap[e]=r),r[t]=i}_createOverrideFunction(e,t,i,r,o){if(null==e)return i;const n=this._poMap[e];if(null==n)return i;const a=n[t];if("string"==typeof a||"number"==typeof a||a instanceof Array)return r?r.call(null,a,o):a;const s=this._info?.geometryType;return null!=a&&a instanceof l&&null!=s?(e,t,n)=>{let l=H(a,e,{$view:n},s,t);return null!==l&&r&&(l=r.call(null,l,o)),null!==l?l:i}:i}_createEffectsOverrideFunction(e,t){const r=this._poMap,o=this._info?.geometryType;for(const i of t){if(i.valueExpressionInfo&&o){const e=r[i.primitiveName]&&r[i.primitiveName][i.propertyName];e instanceof l&&(i.fn=(t,i,r)=>H(e,t,{$view:r},o,i))}}return(r,o,n)=>{for(const e of t)e.fn&&(e.value=e.fn(r,o,n));const a=[];for(let s of e){const e=s?.primitiveName;if(e){let r=!1;for(const o of t)if(o.primitiveName===e){const e=W(o.propertyName);null!=o.value&&o.value!==s[e]&&(r||(s=i(s),r=!0),s[e]=o.value)}}a.push(s)}return a}}_createMarkerPlacementOverrideFunction(e){const t=[];if(y.findApplicableOverrides(e,this._primitiveOverrides,t),null==e||0===t.length)return e;const r=this._poMap,o=this._info?.geometryType;for(const i of t){if(i.valueExpressionInfo&&o){const e=r[i.primitiveName]&&r[i.primitiveName][i.propertyName];e instanceof l&&(i.fn=(t,i,r)=>H(e,t,{$view:r},o,i))}}return(r,o,n)=>{for(const e of t)e.fn&&(e.value=e.fn(r,o,n));const a=i(e),s=e.primitiveName;for(const e of t)if(e.primitiveName===s){const t=W(e.propertyName);null!=e.value&&e.value!==a[t]&&(a[t]=e.value)}return a}}_createAnimatedSymbolPropertiesOverrideFunction(e){const t=[];if(y.findApplicableOverrides(e,this._primitiveOverrides,t),null==e||0===t.length)return e;const r=this._info?.geometryType;if(r){const e=this._poMap;for(const i of t){if(i.valueExpressionInfo){const t=e[i.primitiveName]&&e[i.primitiveName][i.propertyName];t instanceof l&&(i.fn=(e,i,o)=>H(t,e,{$view:o},r,i))}}}return(r,o,n)=>{for(const e of t)e.fn&&(e.value=e.fn(r,o,n));const a=i(e),s=e.primitiveName;for(const e of t)if(e.primitiveName===s){const t=W(e.propertyName);if(null!=e.value){const i=O(e.value,e.propertyName);i!==a[t]&&(a[t]=i)}}return a}}_analyzePrimitiveOverrides(e,t,i,r){let o=!1,n="";"string"==typeof e&&(e=[e]);for(const a of this._primitiveOverrides)e?.includes(a.primitiveName)&&(null!=a.value?n+=`-${a.primitiveName}-${a.propertyName}-${JSON.stringify(a.value)}`:a.valueExpressionInfo&&(o=!0));return null!=t&&"function"==typeof t&&(o=!0),null!=i&&"function"==typeof i&&(o=!0),null!=r&&"function"==typeof r&&(o=!0),[o,n]}_analyzeMaterialOverrides(e,t){return this._primitiveOverrides.filter((i=>i.primitiveName!==e||!t.includes(i.propertyName)))}_transformSize(e,t){return L(e)||L(t)?(i,r,o)=>(L(e)?e(i,r,o):e)*(L(t)?t(i,r,o):t):e*t}_transformRotation(e,t,i){return L(e)||L(i)?(r,o,n)=>{const a=L(e)?e(r,o,n):e,s=L(i)?i(r,o,n):i;return t?s-a:s+a}:t?i-e:i+e}_transformOffsetX(e,t,i,r,o){if(!(L(e)||L(t)||L(i)||L(r)||L(o))){const n=i*Math.PI/180;if(n){const i=Math.cos(n),a=Math.sin(n);return(i*e-a*t)*r+o}return e*r+o}return(n,a,s)=>{let l=L(i)?i(n,a,s):i;const c=L(r)?r(n,a,s):r,m=L(e)?e(n,a,s):e,f=L(o)?o(n,a,s):o;if(l){l*=Math.PI/180;return(Math.cos(l)*m-Math.sin(l)*(L(t)?t(n,a,s):t))*c+f}return m*c+f}}_transformOffsetY(e,t,i,r,o){if(!(L(e)||L(t)||L(i)||L(r)||L(o))){const n=i*Math.PI/180;if(n){const i=Math.cos(n);return(Math.sin(n)*e+i*t)*r+o}return t*r+o}return(n,a,s)=>{let l=L(i)?i(n,a,s):i;const c=L(r)?r(n,a,s):r,m=L(t)?t(n,a,s):t,f=L(o)?o(n,a,s):o;if(l){l*=Math.PI/180;const t=Math.cos(l);return(Math.sin(l)*(L(e)?e(n,a,s):e)+t*m)*c+f}return m*c+f}}}function D(e){if(e&&0===e.indexOf("Level_")){const t=parseInt(e.substr(6),10);if(!isNaN(t))return t}return 0}function U(t){if(!t||0===t.length)return null;const i=new e(t).toRgba();return{r:i[0],g:i[1],b:i[2],a:i[3]}}function W(e){return e?e.charAt(0).toLowerCase()+e.substr(1):e}function V(e,t){if(!t||0===t.length)return e;const r=i(e);return y.applyOverrides(r,t),r}const B=e=>e&&2===e.length&&e[0].enable&&e[1].enable&&"CIMSolidStroke"===e[0].type&&"CIMSolidFill"===e[1].type&&null==e[0].path&&null==e[1].path&&!e[0].effects&&!e[1].effects;export{G as CIMAnalyzer,V as analyzeCIMResource};
@@ -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 t from"../../Color.js";import has from"../../core/has.js";import{assertIsSome as e}from"../../core/maybe.js";import{c as i}from"../../chunks/mat2df32.js";import{m as n,t as r,c as o,s,r as a}from"../../chunks/mat2d.js";import"../../widgets/support/widgetUtils.js";import{tsx as l}from"../../widgets/support/jsxFactory.js";const h="http://www.w3.org/2000/svg";let f=0,c=0;const d=has("android"),u=has("chrome")||d&&d>=4?"auto":"optimizeLegibility",y={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7,z:0},p=/([A-DF-Za-df-z])|([-+]?\d*[.]?\d+(?:[eE][-+]?\d+)?)/g;let g={},m={};const x={solid:"none",shortdash:[4,1],shortdot:[1,1],shortdashdot:[4,1,1,1],shortdashdotdot:[4,1,1,1,1,1],dot:[1,3],dash:[4,3],longdash:[8,3],dashdot:[4,3,1,3],longdashdot:[8,3,1,3],longdashdotdot:[8,3,1,3,1,3]},w=Math.PI;let k=1;function b(t,e){const i=t*(w/180);return Math.abs(e*Math.sin(i))+Math.abs(e*Math.cos(i))}function j(t){return t.map((t=>`${t.command} ${t.values.join(" ")}`)).join(" ").trim()}function v(t,i,n,r){if(t){if("circle"===t.type)return l("circle",{fill:i,"fill-rule":"evenodd",stroke:n.color,"stroke-width":n.width,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-dasharray":n.dashArray,"stroke-dashoffset":n.dashOffset,"stroke-miterlimit":"4",cx:t.cx,cy:t.cy,r:t.r});if("ellipse"===t.type)return l("ellipse",{fill:i,"fill-rule":"evenodd",stroke:n.color,"stroke-width":n.width,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-dasharray":n.dashArray,"stroke-miterlimit":"4",cx:t.cx,cy:t.cy,rx:t.rx,ry:t.ry});if("rect"===t.type)return l("rect",{fill:i,"fill-rule":"evenodd",stroke:n.color,"stroke-width":n.width,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-dasharray":n.dashArray,"stroke-miterlimit":"4",x:t.x,y:t.y,width:t.width,height:t.height});if("image"===t.type)return l("image",{href:t.src,x:t.x,y:t.y,width:t.width,height:t.height,preserveAspectRatio:"none"});if("path"===t.type){const e="string"!=typeof t.path?j(t.path):t.path;return l("path",{fill:i,"fill-rule":"evenodd",stroke:n.color,"stroke-width":n.width,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-dasharray":n.dashArray,"stroke-miterlimit":"4",d:e})}if("text"===t.type)return e(r),l("text",{"dominant-baseline":r.dominantBaseline,fill:i,"fill-rule":"evenodd",stroke:n.color,"stroke-width":n.width,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-dasharray":n.dashArray,"stroke-miterlimit":"4","text-anchor":r.align,"text-decoration":r.decoration,kerning:r.kerning,rotate:r.rotate,"text-rendering":u,"font-style":r.font.style,"font-variant":r.font.variant,"font-weight":r.font.weight,"font-size":r.font.size,"font-family":r.font.family,x:t.x,y:t.y},t.text)}return null}function M(e){const i={fill:"none",pattern:null,linearGradient:null};if(e)if("type"in e&&"pattern"===e.type){const t="patternId-"+ ++f;i.fill=`url(#${t})`,i.pattern={id:t,x:e.x,y:e.y,width:e.width,height:e.height,image:{x:0,y:0,width:e.width,height:e.height,href:e.src}}}else if("type"in e&&"linear"===e.type){const n="linearGradientId-"+ ++c;i.fill=`url(#${n})`,i.linearGradient={id:n,x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stops:e.colors.map((e=>({offset:e.offset,color:e.color&&new t(e.color).toString()})))}}else if(e){const n=new t(e);i.fill=n.toString()}return i}function A(e){const i={color:"none",width:1,cap:"butt",join:"4",dashArray:"none",dashOffset:"0"};if(e&&(null!=e.width&&(i.width=e.width),e.cap&&(i.cap=e.cap),e.join&&(i.join=e.join.toString()),e.color&&(i.color=new t(e.color).toString()),e.dashArray&&(i.dashArray=e.dashArray),e.dashArray&&(i.dashOffset=e.dashoffset),e.style)){let t=null;if(e.style in x&&(t=x[e.style]),Array.isArray(t)){t=t.slice(0);const i=e.width??0;for(let e=0;e<t.length;++e)t[e]*=i;if("butt"!==e.cap){for(let e=0;e<t.length;e+=2)t[e]-=i,t[e]<1&&(t[e]=1);for(let e=1;e<t.length;e+=2)t[e]+=i}t=t.join(",")}i.dashArray=t}return i}function S(t,i){const n={align:null,decoration:null,kerning:null,rotate:null,font:{style:null,variant:null,weight:null,size:null,family:null}};if(t){const r=t.alignBaseline,o="baseline"===r?"auto":"top"===r?"text-top":"bottom"===r?"hanging":r;n.align=t.align,n.dominantBaseline=o,n.decoration=t.decoration,n.kerning=t.kerning?"auto":"0",n.rotate=t.rotated?"90":"0",e(i),n.font.style=i.style||"normal",n.font.variant=i.variant||"normal",n.font.weight=i.weight||"normal",n.font.size=i.size&&i.size.toString()||"10pt",n.font.family=i.family||"serif"}return n}function $(t){const{pattern:e,linearGradient:i}=t;if(e)return l("pattern",{id:e.id,patternUnits:"userSpaceOnUse",x:e.x,y:e.y,width:e.width,height:e.height},l("image",{x:e.image.x,y:e.image.y,width:e.image.width,height:e.image.height,href:e.image.href}));if(i){const t=i.stops.map(((t,e)=>l("stop",{key:`${e}-stop`,offset:t.offset,"stop-color":t.color})));return l("linearGradient",{id:i.id,gradientUnits:"userSpaceOnUse",x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2},t)}return null}function N(t,e){if(!t||0===t.length)return null;const i=[];for(const n of t){const{shape:t,fill:e,stroke:r,font:o}=n,s=M(e),a=A(r),l="text"===t.type?S(t,o):null,h=v(t,s.fill,a,l);h&&i.push(h)}return l("mask",{id:e,maskUnits:"userSpaceOnUse"},l("g",null,i))}function G(t,e,i){return r(t,o(t),[e,i])}function I(t,e,i,n,r){return s(t,o(t),[e,i]),t[4]=t[4]*e-n*e+n,t[5]=t[5]*i-r*i+r,t}function z(t,e,i,n){const r=e%360*Math.PI/180;a(t,o(t),r);const s=Math.cos(r),l=Math.sin(r),h=t[4],f=t[5];return t[4]=h*s-f*l+n*l-i*s+i,t[5]=f*s+h*l-i*l-n*s+n,t}function B(t,e){g&&"left"in g?(null!=g.left&&g.left>t&&(g.left=t),(null==g.right||g.right<t)&&(g.right=t),(null==g.top||g.top>e)&&(g.top=e),(null==g.bottom||g.bottom<e)&&(g.bottom=e)):g={left:t,bottom:e,right:t,top:e}}function U(t){const e=t.args,i=e.length;let n;switch(t.action){case"M":case"L":case"C":case"S":case"Q":case"T":for(n=0;n<i;n+=2)B(e[n],e[n+1]);m.x=e[i-2],m.y=e[i-1];break;case"H":for(n=0;n<i;++n)B(e[n],m.y);m.x=e[i-1];break;case"V":for(n=0;n<i;++n)B(m.x,e[n]);m.y=e[i-1];break;case"m":{let t=0;"x"in m||(B(m.x=e[0],m.y=e[1]),t=2);for(n=t;n<i;n+=2)B(m.x+=e[n],m.y+=e[n+1]);break}case"l":case"t":for(n=0;n<i;n+=2)B(m.x+=e[n],m.y+=e[n+1]);break;case"h":for(n=0;n<i;++n)B(m.x+=e[n],m.y);break;case"v":for(n=0;n<i;++n)B(m.x,m.y+=e[n]);break;case"c":for(n=0;n<i;n+=6)B(m.x+e[n],m.y+e[n+1]),B(m.x+e[n+2],m.y+e[n+3]),B(m.x+=e[n+4],m.y+=e[n+5]);break;case"s":case"q":for(n=0;n<i;n+=4)B(m.x+e[n],m.y+e[n+1]),B(m.x+=e[n+2],m.y+=e[n+3]);break;case"A":for(n=0;n<i;n+=7)B(e[n+5],e[n+6]);m.x=e[i-2],m.y=e[i-1];break;case"a":for(n=0;n<i;n+=7)B(m.x+=e[n+5],m.y+=e[n+6])}}function F(t,e,i){const n=y[t.toLowerCase()];let r;"number"==typeof n&&(n?e.length>=n&&(r={action:t,args:e.slice(0,e.length-e.length%n)},i.push(r),U(r)):(r={action:t,args:[]},i.push(r),U(r)))}function O(t){const e=("string"!=typeof t.path?j(t.path):t.path).match(p),i=[];if(g={},m={},!e)return null;let n="",r=[];const o=e.length;for(let a=0;a<o;++a){const t=e[a],o=parseFloat(t);isNaN(o)?(n&&F(n,r,i),r=[],n=t):r.push(o)}F(n,r,i);const s={x:0,y:0,width:0,height:0};return g&&"left"in g&&(s.x=g.left,s.y=g.top,s.width=g.right-g.left,s.height=g.bottom-g.top),s}function T(t){const e={x:0,y:0,width:0,height:0};if("circle"===t.type)e.x=t.cx-t.r,e.y=t.cy-t.r,e.width=2*t.r,e.height=2*t.r;else if("ellipse"===t.type)e.x=t.cx-t.rx,e.y=t.cy-t.ry,e.width=2*t.rx,e.height=2*t.ry;else if("image"===t.type||"rect"===t.type)e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height;else if("path"===t.type){const i=O(t);e.x=i.x,e.y=i.y,e.width=i.width,e.height=i.height}return e}function E(t){const e={x:0,y:0,width:0,height:0};let i=null,n=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const o of t)i?(i.x=Math.min(i.x,o.x),i.y=Math.min(i.y,o.y),n=Math.max(n,o.x+o.width),r=Math.max(r,o.y+o.height)):(i=e,i.x=o.x,i.y=o.y,n=o.x+o.width,r=o.y+o.height);return i&&(i.width=n-i.x,i.height=r-i.y),i}function V(t,e,r,o,s,a,l,h,f){let c=(l&&a?b(a,e):e)/2,d=(l&&a?b(a,r):r)/2;if(f){const t=f[0],e=f[1];c=(l&&a?b(a,t):t)/2,d=(l&&a?b(a,e):e)/2}const u=t.width+o,y=t.height+o,p=i(),g=i();let m=!1;if(s&&0!==u&&0!==y){const t=e!==r?e/r:u/y,i=e>r?e:r;let o=1,s=1;isNaN(i)||(t>1?(o=i/u,s=i/t/y):(s=i/y,o=i*t/u)),n(g,g,I(p,o,s,c,d)),m=!0}const x=t.x+(u-o)/2,w=t.y+(y-o)/2;if(n(g,g,G(p,c-x,d-w)),!m&&(u>e||y>r)){const t=u/e>y/r,i=(t?e:r)/(t?u:y);n(g,g,I(p,i,i,x,w))}return a&&n(g,g,z(p,a,x,w)),h&&n(g,g,G(p,h[0],h[1])),`matrix(${g[0]},${g[1]},${g[2]},${g[3]},${g[4]},${g[5]})`}function C(t,e,i){const n=t?.effects.find((t=>"bloom"===t.type));if(!n)return null;const{strength:r,radius:o}=n,s=r>0?o:0,a=(r+s)*e,h=4*r+1;return l("filter",{id:`bloom${i}`,x:"-100%",y:"-100%",width:"300%",height:"300%",filterUnits:"userSpaceOnUse"},l("feMorphology",{operator:"dilate",radius:(r+.5*s)*(5**(e/100)*(.4+e/100)),in:"SourceGraphic",result:"dilate"}),l("feGaussianBlur",{in:"dilate",stdDeviation:a/25,result:"blur"}),l("feGaussianBlur",{in:"blur",stdDeviation:a/50,result:"intensityBlur"}),l("feComponentTransfer",{in:"SourceGraphic",result:"intensityBrightness"},l("feFuncR",{type:"linear",slope:h}),l("feFuncG",{type:"linear",slope:h}),l("feFuncB",{type:"linear",slope:h})),l("feMerge",null,l("feMergeNode",{in:"intensityBlur"}),l("feMergeNode",{in:"intensityBrightness"}),l("feGaussianBlur",{stdDeviation:r/10})))}function D(t,i,n,r={}){const o=[],s=[],a=++k,f=C(r.effectView,i,a);let c=null;if(f){const t=r.effectView?.effects.find((t=>"bloom"===t.type)),e=(t.strength?t.strength+t.radius/2:0)/3,o=i+i*e,s=n+n*e;c=[Math.max(o,10),Math.max(s,10)]}for(let e=0;e<t.length;e++){const a=t[e],h=[],f=[];let d=0,u=0,y=0;for(const t of a){const{shape:e,fill:i,stroke:n,font:s,offset:a}=t;r.ignoreStrokeWidth||"text"===e.type||(d+=n&&n.width||0);const l=M(i),c=A(n),p="text"===e.type?S(e,s):null;o.push($(l)),h.push(v(e,l.fill,c,p)),f.push(T(e)),a&&(u+=a[0],y+=a[1])}const p=V(E(f),i,n,d,r.scale??!1,r.rotation,r.useRotationSize??!1,[u,y],c);let g=null;if(r.masking){const t=`mask-${e}`,i=r.masking[e];o.push(N(i,t)),g=`url(#${t})`}s.push(g?l("g",{mask:g},l("g",{transform:p},h)):l("g",{transform:p},h))}r.useRotationSize&&r.rotation&&(i=b(r.rotation,i),n=b(r.rotation,n)),f&&(e(c),i=c[0],n=c[1]);return l("svg",{xmlns:h,width:i,height:n,style:"display: block;","aria-labelledby":r.ariaLabel,role:"img",focusable:!1},f,l("defs",null,o),f?l("g",{filter:`url(#bloom${a})`},s):s)}export{E as computeBBox,M as generateFillAttributes,A as generateStrokeAttributes,S as generateTextAttributes,T as getBoundingBox,V as getTransformMatrix,$ as renderDef,D as renderSVG,v as renderShape};
5
+ import t from"../../Color.js";import has from"../../core/has.js";import{assertIsSome as e}from"../../core/maybe.js";import{c as i}from"../../chunks/mat2df32.js";import{m as n,t as r,c as o,s,r as a}from"../../chunks/mat2d.js";import"../../widgets/support/widgetUtils.js";import{tsx as l}from"../../widgets/support/jsxFactory.js";const h="http://www.w3.org/2000/svg";let f=0,c=0;const d=has("android"),u=has("chrome")||d&&d>=4?"auto":"optimizeLegibility",y={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7,z:0},p=/([A-DF-Za-df-z])|([-+]?\d*[.]?\d+(?:[eE][-+]?\d+)?)/g;let g={},m={};const x={solid:"none",shortdash:[4,1],shortdot:[1,1],shortdashdot:[4,1,1,1],shortdashdotdot:[4,1,1,1,1,1],dot:[1,3],dash:[4,3],longdash:[8,3],dashdot:[4,3,1,3],longdashdot:[8,3,1,3],longdashdotdot:[8,3,1,3,1,3]},w=Math.PI;let k=1;function b(t,e){const i=t*(w/180);return Math.abs(e*Math.sin(i))+Math.abs(e*Math.cos(i))}function j(t){return t.map((t=>`${t.command} ${t.values.join(" ")}`)).join(" ").trim()}function v(t,i,n,r){if(t){if("circle"===t.type)return l("circle",{cx:t.cx,cy:t.cy,fill:i,"fill-rule":"evenodd",r:t.r,stroke:n.color,"stroke-dasharray":n.dashArray,"stroke-dashoffset":n.dashOffset,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-miterlimit":"4","stroke-width":n.width});if("ellipse"===t.type)return l("ellipse",{cx:t.cx,cy:t.cy,fill:i,"fill-rule":"evenodd",rx:t.rx,ry:t.ry,stroke:n.color,"stroke-dasharray":n.dashArray,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-miterlimit":"4","stroke-width":n.width});if("rect"===t.type)return l("rect",{fill:i,"fill-rule":"evenodd",height:t.height,stroke:n.color,"stroke-dasharray":n.dashArray,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-miterlimit":"4","stroke-width":n.width,width:t.width,x:t.x,y:t.y});if("image"===t.type)return l("image",{height:t.height,href:t.src,preserveAspectRatio:"none",width:t.width,x:t.x,y:t.y});if("path"===t.type){const e="string"!=typeof t.path?j(t.path):t.path;return l("path",{d:e,fill:i,"fill-rule":"evenodd",stroke:n.color,"stroke-dasharray":n.dashArray,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-miterlimit":"4","stroke-width":n.width})}if("text"===t.type)return e(r),l("text",{"dominant-baseline":r.dominantBaseline,fill:i,"fill-rule":"evenodd","font-family":r.font.family,"font-size":r.font.size,"font-style":r.font.style,"font-variant":r.font.variant,"font-weight":r.font.weight,kerning:r.kerning,rotate:r.rotate,stroke:n.color,"stroke-dasharray":n.dashArray,"stroke-linecap":n.cap,"stroke-linejoin":n.join,"stroke-miterlimit":"4","stroke-width":n.width,"text-anchor":r.align,"text-decoration":r.decoration,"text-rendering":u,x:t.x,y:t.y},t.text)}return null}function M(e){const i={fill:"none",pattern:null,linearGradient:null};if(e)if("type"in e&&"pattern"===e.type){const t="patternId-"+ ++f;i.fill=`url(#${t})`,i.pattern={id:t,x:e.x,y:e.y,width:e.width,height:e.height,image:{x:0,y:0,width:e.width,height:e.height,href:e.src}}}else if("type"in e&&"linear"===e.type){const n="linearGradientId-"+ ++c;i.fill=`url(#${n})`,i.linearGradient={id:n,x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stops:e.colors.map((e=>({offset:e.offset,color:e.color&&new t(e.color).toString()})))}}else if(e){const n=new t(e);i.fill=n.toString()}return i}function A(e){const i={color:"none",width:1,cap:"butt",join:"4",dashArray:"none",dashOffset:"0"};if(e&&(null!=e.width&&(i.width=e.width),e.cap&&(i.cap=e.cap),e.join&&(i.join=e.join.toString()),e.color&&(i.color=new t(e.color).toString()),e.dashArray&&(i.dashArray=e.dashArray),e.dashArray&&(i.dashOffset=e.dashoffset),e.style)){let t=null;if(e.style in x&&(t=x[e.style]),Array.isArray(t)){t=t.slice(0);const i=e.width??0;for(let e=0;e<t.length;++e)t[e]*=i;if("butt"!==e.cap){for(let e=0;e<t.length;e+=2)t[e]-=i,t[e]<1&&(t[e]=1);for(let e=1;e<t.length;e+=2)t[e]+=i}t=t.join(",")}i.dashArray=t}return i}function S(t,i){const n={align:null,decoration:null,kerning:null,rotate:null,font:{style:null,variant:null,weight:null,size:null,family:null}};if(t){const r=t.alignBaseline,o="baseline"===r?"auto":"top"===r?"text-top":"bottom"===r?"hanging":r;n.align=t.align,n.dominantBaseline=o,n.decoration=t.decoration,n.kerning=t.kerning?"auto":"0",n.rotate=t.rotated?"90":"0",e(i),n.font.style=i.style||"normal",n.font.variant=i.variant||"normal",n.font.weight=i.weight||"normal",n.font.size=i.size&&i.size.toString()||"10pt",n.font.family=i.family||"serif"}return n}function $(t){const{pattern:e,linearGradient:i}=t;if(e)return l("pattern",{height:e.height,id:e.id,patternUnits:"userSpaceOnUse",width:e.width,x:e.x,y:e.y},l("image",{height:e.image.height,href:e.image.href,width:e.image.width,x:e.image.x,y:e.image.y}));if(i){const t=i.stops.map(((t,e)=>l("stop",{key:`${e}-stop`,offset:t.offset,"stop-color":t.color})));return l("linearGradient",{gradientUnits:"userSpaceOnUse",id:i.id,x1:i.x1,x2:i.x2,y1:i.y1,y2:i.y2},t)}return null}function N(t,e){if(!t||0===t.length)return null;const i=[];for(const n of t){const{shape:t,fill:e,stroke:r,font:o}=n,s=M(e),a=A(r),l="text"===t.type?S(t,o):null,h=v(t,s.fill,a,l);h&&i.push(h)}return l("mask",{id:e,maskUnits:"userSpaceOnUse"},l("g",null,i))}function G(t,e,i){return r(t,o(t),[e,i])}function I(t,e,i,n,r){return s(t,o(t),[e,i]),t[4]=t[4]*e-n*e+n,t[5]=t[5]*i-r*i+r,t}function z(t,e,i,n){const r=e%360*Math.PI/180;a(t,o(t),r);const s=Math.cos(r),l=Math.sin(r),h=t[4],f=t[5];return t[4]=h*s-f*l+n*l-i*s+i,t[5]=f*s+h*l-i*l-n*s+n,t}function B(t,e){g&&"left"in g?(null!=g.left&&g.left>t&&(g.left=t),(null==g.right||g.right<t)&&(g.right=t),(null==g.top||g.top>e)&&(g.top=e),(null==g.bottom||g.bottom<e)&&(g.bottom=e)):g={left:t,bottom:e,right:t,top:e}}function U(t){const e=t.args,i=e.length;let n;switch(t.action){case"M":case"L":case"C":case"S":case"Q":case"T":for(n=0;n<i;n+=2)B(e[n],e[n+1]);m.x=e[i-2],m.y=e[i-1];break;case"H":for(n=0;n<i;++n)B(e[n],m.y);m.x=e[i-1];break;case"V":for(n=0;n<i;++n)B(m.x,e[n]);m.y=e[i-1];break;case"m":{let t=0;"x"in m||(B(m.x=e[0],m.y=e[1]),t=2);for(n=t;n<i;n+=2)B(m.x+=e[n],m.y+=e[n+1]);break}case"l":case"t":for(n=0;n<i;n+=2)B(m.x+=e[n],m.y+=e[n+1]);break;case"h":for(n=0;n<i;++n)B(m.x+=e[n],m.y);break;case"v":for(n=0;n<i;++n)B(m.x,m.y+=e[n]);break;case"c":for(n=0;n<i;n+=6)B(m.x+e[n],m.y+e[n+1]),B(m.x+e[n+2],m.y+e[n+3]),B(m.x+=e[n+4],m.y+=e[n+5]);break;case"s":case"q":for(n=0;n<i;n+=4)B(m.x+e[n],m.y+e[n+1]),B(m.x+=e[n+2],m.y+=e[n+3]);break;case"A":for(n=0;n<i;n+=7)B(e[n+5],e[n+6]);m.x=e[i-2],m.y=e[i-1];break;case"a":for(n=0;n<i;n+=7)B(m.x+=e[n+5],m.y+=e[n+6])}}function F(t,e,i){const n=y[t.toLowerCase()];let r;"number"==typeof n&&(n?e.length>=n&&(r={action:t,args:e.slice(0,e.length-e.length%n)},i.push(r),U(r)):(r={action:t,args:[]},i.push(r),U(r)))}function O(t){const e=("string"!=typeof t.path?j(t.path):t.path).match(p),i=[];if(g={},m={},!e)return null;let n="",r=[];const o=e.length;for(let a=0;a<o;++a){const t=e[a],o=parseFloat(t);isNaN(o)?(n&&F(n,r,i),r=[],n=t):r.push(o)}F(n,r,i);const s={x:0,y:0,width:0,height:0};return g&&"left"in g&&(s.x=g.left,s.y=g.top,s.width=g.right-g.left,s.height=g.bottom-g.top),s}function T(t){const e={x:0,y:0,width:0,height:0};if("circle"===t.type)e.x=t.cx-t.r,e.y=t.cy-t.r,e.width=2*t.r,e.height=2*t.r;else if("ellipse"===t.type)e.x=t.cx-t.rx,e.y=t.cy-t.ry,e.width=2*t.rx,e.height=2*t.ry;else if("image"===t.type||"rect"===t.type)e.x=t.x,e.y=t.y,e.width=t.width,e.height=t.height;else if("path"===t.type){const i=O(t);e.x=i.x,e.y=i.y,e.width=i.width,e.height=i.height}return e}function E(t){const e={x:0,y:0,width:0,height:0};let i=null,n=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY;for(const o of t)i?(i.x=Math.min(i.x,o.x),i.y=Math.min(i.y,o.y),n=Math.max(n,o.x+o.width),r=Math.max(r,o.y+o.height)):(i=e,i.x=o.x,i.y=o.y,n=o.x+o.width,r=o.y+o.height);return i&&(i.width=n-i.x,i.height=r-i.y),i}function V(t,e,r,o,s,a,l,h,f){let c=(l&&a?b(a,e):e)/2,d=(l&&a?b(a,r):r)/2;if(f){const t=f[0],e=f[1];c=(l&&a?b(a,t):t)/2,d=(l&&a?b(a,e):e)/2}const u=t.width+o,y=t.height+o,p=i(),g=i();let m=!1;if(s&&0!==u&&0!==y){const t=e!==r?e/r:u/y,i=e>r?e:r;let o=1,s=1;isNaN(i)||(t>1?(o=i/u,s=i/t/y):(s=i/y,o=i*t/u)),n(g,g,I(p,o,s,c,d)),m=!0}const x=t.x+(u-o)/2,w=t.y+(y-o)/2;if(n(g,g,G(p,c-x,d-w)),!m&&(u>e||y>r)){const t=u/e>y/r,i=(t?e:r)/(t?u:y);n(g,g,I(p,i,i,x,w))}return a&&n(g,g,z(p,a,x,w)),h&&n(g,g,G(p,h[0],h[1])),`matrix(${g[0]},${g[1]},${g[2]},${g[3]},${g[4]},${g[5]})`}function C(t,e,i){const n=t?.effects.find((t=>"bloom"===t.type));if(!n)return null;const{strength:r,radius:o}=n,s=r>0?o:0,a=(r+s)*e,h=4*r+1;return l("filter",{filterUnits:"userSpaceOnUse",height:"300%",id:`bloom${i}`,width:"300%",x:"-100%",y:"-100%"},l("feMorphology",{in:"SourceGraphic",operator:"dilate",radius:(r+.5*s)*(5**(e/100)*(.4+e/100)),result:"dilate"}),l("feGaussianBlur",{in:"dilate",result:"blur",stdDeviation:a/25}),l("feGaussianBlur",{in:"blur",result:"intensityBlur",stdDeviation:a/50}),l("feComponentTransfer",{in:"SourceGraphic",result:"intensityBrightness"},l("feFuncR",{slope:h,type:"linear"}),l("feFuncG",{slope:h,type:"linear"}),l("feFuncB",{slope:h,type:"linear"})),l("feMerge",null,l("feMergeNode",{in:"intensityBlur"}),l("feMergeNode",{in:"intensityBrightness"}),l("feGaussianBlur",{stdDeviation:r/10})))}function D(t,i,n,r={}){const o=[],s=[],a=++k,f=C(r.effectView,i,a);let c=null;if(f){const t=r.effectView?.effects.find((t=>"bloom"===t.type)),e=(t.strength?t.strength+t.radius/2:0)/3,o=i+i*e,s=n+n*e;c=[Math.max(o,10),Math.max(s,10)]}for(let e=0;e<t.length;e++){const a=t[e],h=[],f=[];let d=0,u=0,y=0;for(const t of a){const{shape:e,fill:i,stroke:n,font:s,offset:a}=t;r.ignoreStrokeWidth||"text"===e.type||(d+=n&&n.width||0);const l=M(i),c=A(n),p="text"===e.type?S(e,s):null;o.push($(l)),h.push(v(e,l.fill,c,p)),f.push(T(e)),a&&(u+=a[0],y+=a[1])}const p=V(E(f),i,n,d,r.scale??!1,r.rotation,r.useRotationSize??!1,[u,y],c);let g=null;if(r.masking){const t=`mask-${e}`,i=r.masking[e];o.push(N(i,t)),g=`url(#${t})`}s.push(g?l("g",{mask:g},l("g",{transform:p},h)):l("g",{transform:p},h))}r.useRotationSize&&r.rotation&&(i=b(r.rotation,i),n=b(r.rotation,n)),f&&(e(c),i=c[0],n=c[1]);const d="display: block;";return l("svg",{"aria-labelledby":r.ariaLabel,focusable:!1,height:n,role:"img",style:d,width:i,xmlns:h},f,l("defs",null,o),f?l("g",{filter:`url(#bloom${a})`},s):s)}export{E as computeBBox,M as generateFillAttributes,A as generateStrokeAttributes,S as generateTextAttributes,T as getBoundingBox,V as getTransformMatrix,$ as renderDef,D as renderSVG,v as renderShape};
@@ -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{ClonableMixin as o}from"../core/Clonable.js";import{JSONSupport as r}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{reader as s}from"../core/accessorSupport/decorators/reader.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import{writer as n}from"../core/accessorSupport/decorators/writer.js";import{convertLegacyTimeZone as m}from"./timeReferenceUtils.js";let p=class extends(o(r)){constructor(e){super(e),this.legacy=null,this.timeZone="system"}readLegacy(e,o){const{timeZone:r,respectsDaylightSaving:t}=o;return{timeZone:r,respectsDaylightSaving:t}}readTimeZone(e,o){return"timeZoneIANA"in o?o.timeZoneIANA:m(o)}writeTimeZone(e,o){o.timeZoneIANA=e}equals(e){return null!=e&&null!=this.timeZone&&null!=e.timeZone&&this.timeZone===e.timeZone}};e([t()],p.prototype,"legacy",void 0),e([s("legacy",["timeZone"])],p.prototype,"readLegacy",null),e([t({type:String,nonNullable:!0})],p.prototype,"timeZone",void 0),e([s("timeZone",["timeZone","timeZoneIANA","respectsDaylightSaving"])],p.prototype,"readTimeZone",null),e([n("timeZone")],p.prototype,"writeTimeZone",null),p=e([i("esri.time.TimeReference")],p);const c=p;export{c as default};
5
+ import{_ as e}from"../chunks/tslib.es6.js";import{ClonableMixin as o}from"../core/Clonable.js";import{JSONSupport as r}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{reader as i}from"../core/accessorSupport/decorators/reader.js";import{subclass as s}from"../core/accessorSupport/decorators/subclass.js";import{writer as n}from"../core/accessorSupport/decorators/writer.js";import{convertLegacyTimeZone as m}from"./timeReferenceUtils.js";import{system as p}from"./timeZoneUtils.js";let c=class extends(o(r)){constructor(e){super(e),this.legacy=null,this.timeZone=p}readLegacy(e,o){const{timeZone:r,respectsDaylightSaving:t}=o;return{timeZone:r,respectsDaylightSaving:t}}readTimeZone(e,o){return"timeZoneIANA"in o?o.timeZoneIANA:m(o)}writeTimeZone(e,o){o.timeZoneIANA=e}equals(e){return null!=e&&null!=this.timeZone&&null!=e.timeZone&&this.timeZone===e.timeZone}};e([t()],c.prototype,"legacy",void 0),e([i("legacy",["timeZone"])],c.prototype,"readLegacy",null),e([t({type:String,nonNullable:!0})],c.prototype,"timeZone",void 0),e([i("timeZone",["timeZone","timeZoneIANA","respectsDaylightSaving"])],c.prototype,"readTimeZone",null),e([n("timeZone")],c.prototype,"writeTimeZone",null),c=e([s("esri.time.TimeReference")],c);const a=c;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{legacyTimeZoneMap as t}from"./legacyTimeZoneMap.js";import{DateTime as e,FixedOffsetZone as n}from"luxon";function o(e,n="system"){if(!e||!t.has(e.timeZone))return n;const o=t.get(e.timeZone);return s(e.timeZone)||e.respectsDaylightSaving?o:r(o)}function r(t){const o=e.local().setZone(t),r=Math.min(o.set({month:1,day:1}).offset,o.set({month:5}).offset);if(0===r)return"Etc/UTC";return`Etc/GMT${n.instance(-r).formatOffset(0,"narrow")}`}function s(t){return t.startsWith("UTC")}export{o as convertLegacyTimeZone};
5
+ import{legacyTimeZoneMap as t}from"./legacyTimeZoneMap.js";import{system as e}from"./timeZoneUtils.js";import{DateTime as n,FixedOffsetZone as o}from"luxon";function r(n,o=e){if(!n||!t.has(n.timeZone))return o;const r=t.get(n.timeZone);return s(n.timeZone)||n.respectsDaylightSaving?r:i(r)}function i(t){const e=n.local().setZone(t),r=Math.min(e.set({month:1,day:1}).offset,e.set({month:5}).offset);if(0===r)return"Etc/UTC";return`Etc/GMT${o.instance(-r).formatOffset(0,"narrow")}`}function s(t){return t.startsWith("UTC")}export{r as convertLegacyTimeZone};