@arcgis/core 4.34.0-next.1 → 4.34.0-next.2

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 (177) hide show
  1. package/Map.js +1 -1
  2. package/WebScene.js +1 -1
  3. package/analysis/DimensionAnalysis.js +1 -1
  4. package/analysis/LineOfSightAnalysis.js +1 -1
  5. package/analysis/ViewshedAnalysis.js +1 -1
  6. package/arcade/Voxel.js +1 -1
  7. package/arcade/functions/knowledgegraph.js +1 -1
  8. package/assets/esri/core/workers/RemoteClient.js +1 -1
  9. package/assets/esri/core/workers/chunks/{253bcc3cc7bc4c2dc6ea.js → 03db109e9b695528c35d.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{fa63b0f7fa799cb2f81d.js → 07e58dff44fcbb3b3539.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{fc61d02286b6ff5447cc.js → 09da6b3085fc84cd69d5.js} +1 -1
  12. package/assets/esri/core/workers/chunks/0fd826e7f64a37aaaa1e.js +1 -0
  13. package/assets/esri/core/workers/chunks/{1c86aa3802d9ae0230ae.js → 28e31ac00dc95a1318e9.js} +1 -1
  14. package/assets/esri/core/workers/chunks/{0d23610475c85385fbff.js → 355e6bcdb401ada71f39.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{bba6d7615d8f3862fe70.js → 36f0046ff6b46adce7b7.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{42d9989b2aad3ac28d4d.js → 397b15d46f22718c9f38.js} +1 -1
  17. package/assets/esri/core/workers/chunks/{b0522dffa5600345c07e.js → 3e85e63148b5e93d3074.js} +1 -1
  18. package/assets/esri/core/workers/chunks/{d2ebb72a43d995ed368a.js → 42bb9bb6fe44a47d9b81.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{6ee41e9c92ed8ba4c763.js → 4dd0a5f327fa5fc7249d.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{36b0d6b4089a96475201.js → 51ba7345c31e6eb79060.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{66e79aa02b3aa12b3778.js → 5200be8bce60fa831026.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{6b23ca6570357f9fb724.js → 52a57106a41b8c9483d7.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{585c7b485c42555ec554.js → 61f9747c960d959b571b.js} +2 -2
  24. package/assets/esri/core/workers/chunks/{9fc35ec8185beba96715.js → 632d1a1287dde980479e.js} +1 -1
  25. package/assets/esri/core/workers/chunks/{1d043965dcdc11b3aeaa.js → 63852887b3f07d50f7c9.js} +1 -1
  26. package/assets/esri/core/workers/chunks/{c16e0da7a19310c71e8b.js → 677af0281e4fc9f3bd98.js} +1 -1
  27. package/assets/esri/core/workers/chunks/{6ecc3a3737ae8622dfa4.js → 7b12607633bbdc318936.js} +1 -1
  28. package/assets/esri/core/workers/chunks/{d839a237d5edc243d645.js → 8aa8f9986b966ccb64e2.js} +1 -1
  29. package/assets/esri/core/workers/chunks/{67338948e470c1251d8a.js → 8d14e957219364a81d5f.js} +3 -3
  30. package/assets/esri/core/workers/chunks/92a5dccb328229a9336b.js +1 -0
  31. package/assets/esri/core/workers/chunks/{631205dc4d73d49ec9ed.js → 95507ff0a243e451b99e.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{1051a5a57b2fb843a555.js → 9cd55043f3d789f41815.js} +1 -1
  33. package/assets/esri/core/workers/chunks/{2b1486a466760d2152f5.js → a0f2df8ca7cd14bfa013.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{06eb4832b6c86744e52e.js → aba19485b6cdcb70dac6.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{9a06476b834584d00d5c.js → b160dcbea6256e0cf689.js} +1 -1
  36. package/assets/esri/core/workers/chunks/b2a6afa0cd537805b4b8.js +1 -0
  37. package/assets/esri/core/workers/chunks/{571252c9822d73cf7b01.js → b845586219f284a215b2.js} +1 -1
  38. package/assets/esri/core/workers/chunks/{97c148adf0347c69a79c.js → c9604f8df909ec4fad46.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{b87fec1753f164c845c5.js → ca76950d81ab4ebb65e1.js} +1 -1
  40. package/assets/esri/core/workers/chunks/{faa40ef04604c7cce706.js → cb63ea6a53d3c2fc3179.js} +1 -1
  41. package/assets/esri/core/workers/chunks/{55f087bca75c3f2a4515.js → d3c0d7799c92c6f0e7d3.js} +1 -1
  42. package/assets/esri/core/workers/chunks/{ca60b34c3e1ed2ff5934.js → dd2b316baae02bbdddac.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{80b596496800e8d60eb8.js → ed75e0962358523f4439.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{0cf979a093e9744d1e80.js → ef7955a2509be0f03ca2.js} +1 -1
  45. package/assets/esri/core/workers/chunks/{b5d68d8460b7c15001dd.js → f1c6df5cf2ccb6ac47a1.js} +1 -1
  46. package/assets/esri/core/workers/chunks/{523046e04679e301797d.js → f3d97a4c4f433adbdab5.js} +1 -1
  47. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable.json +1 -1
  48. package/assets/esri/widgets/FeatureTable/t9n/FeatureTable_en.json +1 -1
  49. package/chunks/FocusAreaColor.glsl.js +10 -8
  50. package/chunks/persistableUrlUtils.js +1 -1
  51. package/config.js +1 -1
  52. package/core/accessorSupport/decorators/persistable.js +1 -1
  53. package/geometry/projection/projectPointToVector.js +1 -1
  54. package/geometry/projection/projectVectorToPoint.js +1 -1
  55. package/geometry/projection/projectVectorToVector.js +1 -1
  56. package/geometry/projection.js +1 -1
  57. package/geometry/projectionUtils.js +5 -0
  58. package/geometry/support/meshUtils/elevation.js +1 -1
  59. package/geometry/support/meshUtils/extent.js +1 -1
  60. package/interfaces.d.ts +34 -2
  61. package/kernel.js +1 -1
  62. package/layers/MapNotesLayer.js +1 -1
  63. package/layers/RouteLayer.js +1 -1
  64. package/layers/graphics/applyEditsUtils.js +1 -1
  65. package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
  66. package/layers/graphics/data/QueryEngine.js +1 -1
  67. package/layers/graphics/data/projectionSupport.js +1 -1
  68. package/layers/graphics/data/queryUtils.js +1 -1
  69. package/layers/graphics/sources/support/CSVSourceWorker.js +1 -1
  70. package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
  71. package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
  72. package/layers/ogc/wfsUtils.js +1 -1
  73. package/layers/orientedImagery/core/coverageUtils.js +1 -1
  74. package/layers/orientedImagery/transformations/updateElevationUtils.js +1 -1
  75. package/layers/orientedImagery/transformations/utils.js +1 -1
  76. package/layers/support/ControlPointsGeoreference.js +1 -1
  77. package/layers/support/CornersGeoreference.js +1 -1
  78. package/layers/support/ElevationQuery.js +1 -1
  79. package/layers/support/ExtentAndRotationGeoreference.js +1 -1
  80. package/layers/support/GeoreferenceBase.js +1 -1
  81. package/layers/support/LocalMediaElementSource.js +1 -1
  82. package/layers/support/MediaElementView.js +1 -1
  83. package/layers/support/PolygonCollection.js +1 -1
  84. package/layers/support/SceneModification.js +1 -1
  85. package/layers/support/rasterFunctions/rasterProjectionHelper.js +1 -1
  86. package/package.json +1 -1
  87. package/portal/schemas/definitions.js +1 -1
  88. package/portal/schemas/webScene.js +1 -1
  89. package/portal/support/portalItemUtils.js +1 -1
  90. package/renderers/support/AuthoringInfoVisualVariable.js +1 -1
  91. package/smartMapping/renderers/size.js +1 -1
  92. package/smartMapping/renderers/support/spikeUtils.js +1 -1
  93. package/smartMapping/statistics/histogram.js +1 -1
  94. package/smartMapping/statistics/summaryStatistics.js +1 -1
  95. package/support/persistableUrlUtils.js +1 -1
  96. package/support/revision.js +1 -1
  97. package/views/2d/ViewStateManager.js +1 -1
  98. package/views/2d/constraints/GeometryConstraint.js +1 -1
  99. package/views/2d/engine/webgl/OverlayMultipoint.js +1 -1
  100. package/views/2d/grid/GridView2D.js +1 -1
  101. package/views/2d/interactive/editingTools/ControlPointsTransformTool.js +1 -1
  102. package/views/2d/interactive/editingTools/TransformTool.js +1 -1
  103. package/views/2d/layers/KMLLayerView2D.js +1 -1
  104. package/views/2d/viewpointUtils.js +1 -1
  105. package/views/3d/FocusAreasView.js +1 -1
  106. package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementPathHelper.js +1 -1
  107. package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
  108. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  109. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  110. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  111. package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
  112. package/views/3d/analysis/support/projectionUtils.js +1 -1
  113. package/views/3d/environment/EnvironmentManager.js +1 -1
  114. package/views/3d/interactive/Manipulator3D.js +1 -1
  115. package/views/3d/interactive/editingTools/dragEventPipeline3D.js +1 -1
  116. package/views/3d/interactive/editingTools/media/MediaElementControllerControlPoints.js +1 -1
  117. package/views/3d/interactive/editingTools/media/MediaElementControllerShape.js +1 -1
  118. package/views/3d/interactive/editingTools/reshape/edgeOffsetUtils.js +1 -1
  119. package/views/3d/interactive/visualElements/support/Segment.js +1 -1
  120. package/views/3d/layers/FeatureLayerView3D.js +1 -1
  121. package/views/3d/layers/FlowSubView3D.js +1 -1
  122. package/views/3d/layers/I3SMeshWorkerHandle.js +1 -1
  123. package/views/3d/layers/SceneLayerWorker.js +1 -1
  124. package/views/3d/layers/TileLayerView3D.js +1 -1
  125. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  126. package/views/3d/layers/graphics/Graphics3DFeatureStore.js +1 -1
  127. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  128. package/views/3d/layers/graphics/focusAreaStyle.js +1 -1
  129. package/views/3d/layers/graphics/graphicUtils.js +1 -1
  130. package/views/3d/layers/graphics/pipeline/Feature3DPipelineWorker.js +1 -1
  131. package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
  132. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  133. package/views/3d/layers/support/ImageHighlightHelper3D.js +1 -1
  134. package/views/3d/state/ViewStateManager.js +1 -1
  135. package/views/3d/support/cameraUtils.js +1 -1
  136. package/views/3d/support/viewpointUtils.js +1 -1
  137. package/views/3d/terrain/ExtentHelper.js +1 -1
  138. package/views/3d/webgl-engine/core/FBOCache.js +1 -1
  139. package/views/3d/webgl-engine/effects/focusArea/FocusAreaColorNode.js +1 -1
  140. package/views/3d/webgl-engine/effects/focusArea/FocusAreaEffect.js +5 -0
  141. package/views/3d/webgl-engine/effects/focusArea/FocusAreaMaskNode.js +1 -1
  142. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  143. package/views/3d/webgl-engine/shaders/FocusAreaColor.glsl.js +1 -1
  144. package/views/FocusArea.js +1 -1
  145. package/views/FocusAreaOutline.js +1 -1
  146. package/views/FocusAreas.js +1 -1
  147. package/views/SceneView.js +1 -1
  148. package/views/View2D.js +1 -1
  149. package/views/interactive/GraphicManipulator.js +1 -1
  150. package/views/interactive/dragEventPipeline.js +1 -1
  151. package/views/interactive/snapping/GridSnappingEngine.js +1 -1
  152. package/views/interactive/snapping/SnappingManager.js +1 -1
  153. package/views/interactive/snapping/featureSources/GraphicsSnappingSource.js +1 -1
  154. package/views/layers/SceneLayerView.js +1 -1
  155. package/views/support/projectionUtils.js +1 -1
  156. package/webscene/Slide.js +1 -1
  157. package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
  158. package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
  159. package/widgets/CoordinateConversion/CoordinateConversionViewModel.js +1 -1
  160. package/widgets/CoordinateConversion/support/Format.js +1 -1
  161. package/widgets/Editor/Upload.js +1 -1
  162. package/widgets/Editor.js +1 -1
  163. package/widgets/ElevationProfile/support/geometryUtils.js +1 -1
  164. package/widgets/Features/FeaturesViewModel.js +1 -1
  165. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  166. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  167. package/widgets/OrientedImageryViewer/adapters/sketch/TriangulatedMeasurementAdapter.js +1 -1
  168. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  169. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  170. package/widgets/Sketch/SketchViewModel.js +1 -1
  171. package/widgets/UtilityNetworkTrace/support/GeometryHandler.js +1 -1
  172. package/widgets/support/AnchorElementViewModel.js +1 -1
  173. package/widgets/support/GridControls/GridControlsViewModel.js +1 -1
  174. package/widgets/support/tests.js +1 -1
  175. package/assets/esri/core/workers/chunks/3a743653b786b010a57f.js +0 -1
  176. package/assets/esri/core/workers/chunks/6d1e1a4fcb90ea8b6848.js +0 -1
  177. package/assets/esri/core/workers/chunks/87fc7b6c3e2d4f7775e2.js +0 -1
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{schema_definitions as e}from"./definitions.js";const i={title:"Webscene",type:"object",description:"The web scene data lists the basemap, operational layers, and presentation slides to be used in the web scene. It also contains information about pop-up windows and layer styling overrides to be used in the web scene. A version property allows you to supply the version of the web scene JSON format being used.",properties:{applicationProperties:{$ref:"#/definitions/applicationProperties_schema.json"},authoringApp:{type:"string",description:"String value indicating the application which authored the webmap"},authoringAppVersion:{type:"string",description:"String value indicating the authoring App's version number."},baseMap:{description:"Basemaps give the web scene a geographic context.",$ref:"#/definitions/baseMap_schema.json"},clippingArea:{$ref:"#/definitions/clippingArea_schema.json"},ground:{$ref:"#/definitions/ground_schema.json"},heightModelInfo:{$ref:"#/definitions/heightModelInfo_schema.json"},initialState:{$ref:"#/definitions/initialState_schema.json"},mapFloorInfo:{$ref:"#/definitions/mapFloorInfo_schema.json"},mapRangeInfo:{description:"Map Range Information",$ref:"#/definitions/mapRangeInfo_schema.json"},operationalLayers:{type:"array",description:"Operational layers contain business data which are used to make thematic scenes.",items:{$ref:"#/definitions/operationalLayers_schema.json"},uniqueItems:!0},presentation:{$ref:"#/definitions/presentation_schema.json"},spatialReference:{description:"An object used to specify the spatial reference of the given geometry.",$ref:"#/definitions/spatialReference_schema.json"},tables:{type:"array",description:"An array of table objects.",items:{$ref:"#/definitions/table_schema.json"}},transportationNetworks:{type:"array",description:"Used to specify the transportation networks of the scene.",items:{$ref:"#/definitions/transportationNetwork_schema.json"}},version:{$ref:"#/definitions/version_schema.json"},viewingMode:{type:"string",enum:["global","local"]},widgets:{description:"the widgets object contains widgets that should be exposed to the user.",$ref:"#/definitions/widgets_schema.json"}},required:["ground","operationalLayers","spatialReference","version","viewingMode"],additionalProperties:!1,$schema:"http://json-schema.org/draft-07/schema",definitions:e};export{i as json};
5
+ import{schema_definitions as e}from"./definitions.js";const i={title:"Webscene",type:"object",description:"The web scene data lists the basemap, operational layers, and presentation slides to be used in the web scene. It also contains information about pop-up windows and layer styling overrides to be used in the web scene. A version property allows you to supply the version of the web scene JSON format being used.",properties:{applicationProperties:{$ref:"#/definitions/applicationProperties_schema.json"},authoringApp:{type:"string",description:"String value indicating the application which authored the webmap"},authoringAppVersion:{type:"string",description:"String value indicating the authoring App's version number."},baseMap:{description:"Basemaps give the web scene a geographic context.",$ref:"#/definitions/baseMap_schema.json"},clippingArea:{$ref:"#/definitions/clippingArea_schema.json"},focusAreas:{$ref:"#/definitions/focusAreas_schema.json"},ground:{$ref:"#/definitions/ground_schema.json"},heightModelInfo:{$ref:"#/definitions/heightModelInfo_schema.json"},initialState:{$ref:"#/definitions/initialState_schema.json"},mapFloorInfo:{$ref:"#/definitions/mapFloorInfo_schema.json"},mapRangeInfo:{description:"Map Range Information",$ref:"#/definitions/mapRangeInfo_schema.json"},operationalLayers:{type:"array",description:"Operational layers contain business data which are used to make thematic scenes.",items:{$ref:"#/definitions/operationalLayers_schema.json"},uniqueItems:!0},presentation:{$ref:"#/definitions/presentation_schema.json"},spatialReference:{description:"An object used to specify the spatial reference of the given geometry.",$ref:"#/definitions/spatialReference_schema.json"},tables:{type:"array",description:"An array of table objects.",items:{$ref:"#/definitions/table_schema.json"}},transportationNetworks:{type:"array",description:"Used to specify the transportation networks of the scene.",items:{$ref:"#/definitions/transportationNetwork_schema.json"}},version:{$ref:"#/definitions/version_schema.json"},viewingMode:{type:"string",enum:["global","local"]},widgets:{description:"the widgets object contains widgets that should be exposed to the user.",$ref:"#/definitions/widgets_schema.json"}},required:["ground","operationalLayers","spatialReference","version","viewingMode"],additionalProperties:!1,$schema:"http://json-schema.org/draft-07/schema",definitions:e};export{i as json};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{initializeProjection as e,project as t}from"../../geometry/projection.js";import r from"../../geometry/SpatialReference.js";import{webMercatorToGeographic as n}from"../../geometry/support/webMercatorUtils.js";async function o(o){const i=o.spatialReference;if(i.isWGS84)return o.clone();if(i.isWebMercator)return n(o);const s=r.WGS84;return await e(i,s),t(o,s)}function i(e,t){if(!s(e,t)){const r=e.typeKeywords;r?r.push(t):e.typeKeywords=[t]}}function s(e,t){return!!e.typeKeywords?.includes(t)}function a(e){return s(e,E.HOSTED_SERVICE)}function c(e,t){const r=e.typeKeywords;if(r){const e=r.indexOf(t);e>-1&&r.splice(e,1)}}function u(e,t,r){r?i(e,t):c(e,t)}async function l(e){const t=e.clone().normalize();let r;if(t.length>1)for(const n of t)r?n.width>r.width&&(r=n):r=n;else r=t[0];return o(r)}const E={CHARTS:"Charts",DYNAMIC:"Dynamic",DEVELOPER_BASEMAP:"DeveloperBasemap",GROUP_LAYER_MAP:"Map",HOSTED_SERVICE:"Hosted Service",JSAPI:"ArcGIS API for JavaScript",LOCAL_SCENE:"ViewingMode-Local",METADATA:"Metadata",MULTI_LAYER:"Multilayer",ORIENTED_IMAGERY_LAYER:"OrientedImageryLayer",SINGLE_LAYER:"Singlelayer",SUBTYPE_GROUP_LAYER:"SubtypeGroupLayer",SUBTYPE_GROUP_TABLE:"SubtypeGroupTable",TABLE:"Table",TILED_IMAGERY:"Tiled Imagery"};function f(e){const{portal:t,isOrgItem:r,itemControl:n}=e,o=t.user?.privileges;let i=!o||o.includes("features:user:edit"),s=!!r&&!!o?.includes("features:user:fullEdit");const a="update"===n||"admin"===n;return a?s=i=!0:s&&(i=!0),{features:{edit:i,fullEdit:s},content:{updateItem:a}}}export{i as addTypeKeyword,f as getUserPrivileges,l as getWGS84ExtentForItem,s as hasTypeKeyword,a as isHostedLayer,c as removeTypeKeyword,u as toggleTypeKeyword,E as typeKeyword};
5
+ import{initializeProjection as e,project as t}from"../../geometry/projectionUtils.js";import r from"../../geometry/SpatialReference.js";import{webMercatorToGeographic as n}from"../../geometry/support/webMercatorUtils.js";async function o(o){const i=o.spatialReference;if(i.isWGS84)return o.clone();if(i.isWebMercator)return n(o);const s=r.WGS84;return await e(i,s),t(o,s)}function i(e,t){if(!s(e,t)){const r=e.typeKeywords;r?r.push(t):e.typeKeywords=[t]}}function s(e,t){return!!e.typeKeywords?.includes(t)}function a(e){return s(e,E.HOSTED_SERVICE)}function c(e,t){const r=e.typeKeywords;if(r){const e=r.indexOf(t);e>-1&&r.splice(e,1)}}function u(e,t,r){r?i(e,t):c(e,t)}async function l(e){const t=e.clone().normalize();let r;if(t.length>1)for(const n of t)r?n.width>r.width&&(r=n):r=n;else r=t[0];return o(r)}const E={CHARTS:"Charts",DYNAMIC:"Dynamic",DEVELOPER_BASEMAP:"DeveloperBasemap",GROUP_LAYER_MAP:"Map",HOSTED_SERVICE:"Hosted Service",JSAPI:"ArcGIS API for JavaScript",LOCAL_SCENE:"ViewingMode-Local",METADATA:"Metadata",MULTI_LAYER:"Multilayer",ORIENTED_IMAGERY_LAYER:"OrientedImageryLayer",SINGLE_LAYER:"Singlelayer",SUBTYPE_GROUP_LAYER:"SubtypeGroupLayer",SUBTYPE_GROUP_TABLE:"SubtypeGroupTable",TABLE:"Table",TILED_IMAGERY:"Tiled Imagery"};function f(e){const{portal:t,isOrgItem:r,itemControl:n}=e,o=t.user?.privileges;let i=!o||o.includes("features:user:edit"),s=!!r&&!!o?.includes("features:user:fullEdit");const a="update"===n||"admin"===n;return a?s=i=!0:s&&(i=!0),{features:{edit:i,fullEdit:s},content:{updateItem:a}}}export{i as addTypeKeyword,f as getUserPrivileges,l as getWGS84ExtentForItem,s as hasTypeKeyword,a as isHostedLayer,c as removeTypeKeyword,u as toggleTypeKeyword,E as typeKeyword};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../chunks/tslib.es6.js";import{JSONMap as t}from"../../core/jsonMap.js";import r from"../../core/JSONSupport.js";import{clone as i}from"../../core/lang.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import{cast as s}from"../../core/accessorSupport/decorators/cast.js";import{subclass as n}from"../../core/accessorSupport/decorators/subclass.js";import l from"./AuthoringInfoSizeStop.js";var p;const a=new t({percentTotal:"percent-of-total",ratio:"ratio",percent:"percent"}),u=new t({sizeInfo:"size",colorInfo:"color",transparencyInfo:"opacity",rotationInfo:"rotation"}),m={key:e=>"number"==typeof e?"number":"string",typeMap:{number:Number,string:String},base:null},c=["high-to-low","above-and-below","centered-on","extremes"],y=[...new Set([...["high-to-low","above-and-below","centered-on","extremes","above","below"],...["high-to-low","above-and-below","above","below","reference-size","spike"]])],h=["seconds","minutes","hours","days","months","years"],S=["circle","diamond","hexagon-flat","hexagon-pointy","square"];let d=p=class extends r{constructor(e){super(e),this.endTime=null,this.field=null,this.maxSliderValue=null,this.minSliderValue=null,this.startTime=null,this.type=null,this.units=null}castEndTime(e){return"string"==typeof e||"number"==typeof e?e:null}get normalizationField(){return"reference-size"===this.theme||"spike"===this.theme?this._get("normalizationField"):null}set normalizationField(e){this._set("normalizationField",e)}get referenceSizeScale(){return"reference-size"===this.theme?this._get("referenceSizeScale"):null}set referenceSizeScale(e){this._set("referenceSizeScale",e)}get referenceSizeSymbolStyle(){return"reference-size"===this.theme?this._get("referenceSizeSymbolStyle"):null}set referenceSizeSymbolStyle(e){this._set("referenceSizeSymbolStyle",e)}castStartTime(e){return"string"==typeof e||"number"==typeof e?e:null}get sizeStops(){return"reference-size"===this.theme||"spike"===this.theme?this._get("sizeStops"):null}set sizeStops(e){this._set("sizeStops",e)}get style(){return"color"===this.type?this._get("style"):null}set style(e){this._set("style",e)}get theme(){return"color"===this.type||"size"===this.type?this._get("theme")||"high-to-low":null}set theme(e){this._set("theme",e)}clone(){return new p({endTime:this.endTime,field:this.field,maxSliderValue:this.maxSliderValue,minSliderValue:this.minSliderValue,normalizationField:this.normalizationField,referenceSizeScale:this.referenceSizeScale,referenceSizeSymbolStyle:this.referenceSizeSymbolStyle,sizeStops:i(this.sizeStops),startTime:this.startTime,style:this.style,theme:this.theme,type:this.type,units:this.units})}};e([o({types:m,json:{write:!0}})],d.prototype,"endTime",void 0),e([s("endTime")],d.prototype,"castEndTime",null),e([o({type:String,json:{write:!0}})],d.prototype,"field",void 0),e([o({type:Number,json:{write:!0}})],d.prototype,"maxSliderValue",void 0),e([o({type:Number,json:{write:!0}})],d.prototype,"minSliderValue",void 0),e([o({type:String,json:{origins:{"web-scene":{write:!1}},write:!0}})],d.prototype,"normalizationField",null),e([o({type:Number,value:null,json:{origins:{"web-scene":{write:!1}},write:!0}})],d.prototype,"referenceSizeScale",null),e([o({type:S,value:null,json:{origins:{"web-scene":{write:!1}},write:!0}})],d.prototype,"referenceSizeSymbolStyle",null),e([o({types:m,json:{write:!0}})],d.prototype,"startTime",void 0),e([s("startTime")],d.prototype,"castStartTime",null),e([o({type:[l],json:{origins:{"web-scene":{write:!1}},write:!0}})],d.prototype,"sizeStops",null),e([o({type:a.apiValues,value:null,json:{type:a.jsonValues,read:a.read,write:a.write}})],d.prototype,"style",null),e([o({type:y,value:null,json:{type:y,origins:{"web-scene":{type:c,write:{writer:(e,t)=>{c.includes(e)&&(t.theme=e)}}}},write:!0}})],d.prototype,"theme",null),e([o({type:u.apiValues,json:{type:u.jsonValues,read:u.read,write:u.write}})],d.prototype,"type",void 0),e([o({type:h,json:{type:h,write:!0}})],d.prototype,"units",void 0),d=p=e([n("esri.renderers.support.AuthoringInfoVisualVariable")],d);const f=d;export{f as default};
5
+ import{_ as e}from"../../chunks/tslib.es6.js";import{JSONMap as t}from"../../core/jsonMap.js";import i from"../../core/JSONSupport.js";import{clone as r}from"../../core/lang.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import{cast as l}from"../../core/accessorSupport/decorators/cast.js";import{subclass as s}from"../../core/accessorSupport/decorators/subclass.js";import n from"./AuthoringInfoSizeStop.js";var p;const a=new t({percentTotal:"percent-of-total",ratio:"ratio",percent:"percent"}),u=new t({sizeInfo:"size",colorInfo:"color",transparencyInfo:"opacity",rotationInfo:"rotation"}),y={key:e=>"number"==typeof e?"number":"string",typeMap:{number:Number,string:String},base:null},m=["high-to-low","above-and-below","centered-on","extremes"],c=[...new Set([...["high-to-low","above-and-below","centered-on","extremes","above","below"],...["high-to-low","above-and-below","above","below","reference-size","spike"]])],S=["seconds","minutes","hours","days","months","years"],h=["circle","diamond","hexagon-flat","hexagon-pointy","square"],d=["triangle-closed-outline","triangle-gradient-fill-closed","triangle-gradient-fill-closed-outline","triangle-gradient-fill-open","triangle-gradient-fill-open-outline","triangle-open-outline","triangle-solid-fill-closed","triangle-solid-fill-closed-outline","triangle-solid-fill-open","triangle-solid-fill-open-outline"];let f=p=class extends i{constructor(e){super(e),this.endTime=null,this.field=null,this.maxSliderValue=null,this.minSliderValue=null,this.startTime=null,this.type=null,this.units=null}castEndTime(e){return"string"==typeof e||"number"==typeof e?e:null}get normalizationField(){return"reference-size"===this.theme||"spike"===this.theme?this._get("normalizationField"):null}set normalizationField(e){this._set("normalizationField",e)}get referenceSizeScale(){return"reference-size"===this.theme?this._get("referenceSizeScale"):null}set referenceSizeScale(e){this._set("referenceSizeScale",e)}get referenceSizeSymbolStyle(){return"reference-size"===this.theme?this._get("referenceSizeSymbolStyle"):null}set referenceSizeSymbolStyle(e){this._set("referenceSizeSymbolStyle",e)}get spikeSymbolStyle(){return"spike"===this.theme?this._get("spikeSymbolStyle"):null}set spikeSymbolStyle(e){this._set("spikeSymbolStyle",e)}castStartTime(e){return"string"==typeof e||"number"==typeof e?e:null}get sizeStops(){return"reference-size"===this.theme||"spike"===this.theme?this._get("sizeStops"):null}set sizeStops(e){this._set("sizeStops",e)}get style(){return"color"===this.type?this._get("style"):null}set style(e){this._set("style",e)}get theme(){return"color"===this.type||"size"===this.type?this._get("theme")||"high-to-low":null}set theme(e){this._set("theme",e)}clone(){return new p({endTime:this.endTime,field:this.field,maxSliderValue:this.maxSliderValue,minSliderValue:this.minSliderValue,normalizationField:this.normalizationField,referenceSizeScale:this.referenceSizeScale,referenceSizeSymbolStyle:this.referenceSizeSymbolStyle,spikeSymbolStyle:this.spikeSymbolStyle,sizeStops:r(this.sizeStops),startTime:this.startTime,style:this.style,theme:this.theme,type:this.type,units:this.units})}};e([o({types:y,json:{write:!0}})],f.prototype,"endTime",void 0),e([l("endTime")],f.prototype,"castEndTime",null),e([o({type:String,json:{write:!0}})],f.prototype,"field",void 0),e([o({type:Number,json:{write:!0}})],f.prototype,"maxSliderValue",void 0),e([o({type:Number,json:{write:!0}})],f.prototype,"minSliderValue",void 0),e([o({type:String,json:{origins:{"web-scene":{write:!1}},write:!0}})],f.prototype,"normalizationField",null),e([o({type:Number,value:null,json:{origins:{"web-scene":{write:!1}},write:!0}})],f.prototype,"referenceSizeScale",null),e([o({type:h,value:null,json:{origins:{"web-scene":{write:!1}},write:!0}})],f.prototype,"referenceSizeSymbolStyle",null),e([o({type:d,value:null,json:{origins:{"web-scene":{write:!1}},write:!0}})],f.prototype,"spikeSymbolStyle",null),e([o({types:y,json:{write:!0}})],f.prototype,"startTime",void 0),e([l("startTime")],f.prototype,"castStartTime",null),e([o({type:[n],json:{origins:{"web-scene":{write:!1}},write:!0}})],f.prototype,"sizeStops",null),e([o({type:a.apiValues,value:null,json:{type:a.jsonValues,read:a.read,write:a.write}})],f.prototype,"style",null),e([o({type:c,value:null,json:{type:c,origins:{"web-scene":{type:m,write:{writer:(e,t)=>{m.includes(e)&&(t.theme=e)}}}},write:!0}})],f.prototype,"theme",null),e([o({type:u.apiValues,json:{type:u.jsonValues,read:u.read,write:u.write}})],f.prototype,"type",void 0),e([o({type:S,json:{type:S,write:!0}})],f.prototype,"units",void 0),f=p=e([s("esri.renderers.support.AuthoringInfoVisualVariable")],f);const g=f;export{g 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.34/esri/copyright.txt for details.
4
4
  */
5
- import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as r}from"../../core/screenUtils.js";import{ensureClass as a}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/support/AuthoringInfo.js";import t from"../../renderers/support/AuthoringInfoSizeStop.js";import o from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as u}from"../../renderers/support/utils.js";import m from"../../renderers/visualVariables/SizeVariable.js";import{castSizeFromStringOrNumber as p}from"../../renderers/visualVariables/support/castSizeVariable.js";import d from"../../renderers/visualVariables/support/SizeStop.js";import c from"../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{TransformationType as f}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import z from"../heuristics/referenceSize.js";import w from"../heuristics/sizeRange.js";import{createPrimitiveOverrides as h,updateReferenceSizeSymbol as b,createReferenceSizeSymbol as g}from"./support/referenceSizeUtils.js";import{isSizeVV as S,getAuthoringInfoVisualVariable as x,spliceVisualVariables as V,updateAuthoringInfoVisualVariable as T,processRegenerateParams as E,getRendererToUpdate as k,getStyleType as O,hasScaleDependentSizeVV as I,hasOutlineVV as B,findSizeVVIndex as F,findOutlineVVIndex as j}from"./support/regenerateUtils.js";import{createPrimitiveOverrides as q,updateSpikeSymbol as R,createSpikeSymbol as D}from"./support/spikeUtils.js";import{getSummaryStatistics as G,errorCallback as U,getClassBreaks as P,getTitleAndExpressionForAgeRenderer as M,updateAgeRendererAuthoringInfoVV as W,verifyBasicFieldValidity as C,getSizeRangeForAxis as $,getDataRange as A,createSymbol as H,getSymbolOutlineFromScheme as L,getSymbolSizeFromScheme as J,getBasemapInfo as K}from"./support/utils.js";import{verifyDates as N,supportedAgeUnits as Q}from"../statistics/support/ageUtils.js";import{verifyBinningParams as X}from"../support/binningUtils.js";import{getFieldsList as Y,isAnyDateField as Z,getNormalizationType as _}from"../support/utils.js";import{binningCapableLayerTypes as ee,featureCapableLayerTypes as ie,createLayerAdapter as re,getLayerTypeLabels as ae}from"../support/adapters/support/layerUtils.js";import{cloneScheme as ne,getSchemes as se}from"../symbology/size.js";import{getColorFromSymbol as le}from"../../symbols/support/utils.js";const te=2**53-1,oe=[5,112.5];async function ue(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===e.theme&&!e.view&&!e.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===e.theme&&e.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");e.forBinning&&X(e,"size-visual-variable");const r={...e},a=e.forBinning?ee:ie,n=re(r.layer,a,e.forBinning);if(!n)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+ae(a).join(", "));"height"===r.axis&&(r.sizeOptimizationEnabled=!1);const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType;if("mesh"===l)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(r.worldScale){if("polyline"===l||"polygon"===l)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if(!r.view||"3d"!==r.view.type)throw new i("size-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true")}if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const t=await Y({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),o=C(n,t,"size-visual-variable:invalid-parameters");if(o)throw o;return await pe(r),{...r,layer:n}}async function me(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&X(e,"size-continuous-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const a=e.forBinning?ee:ie,n=re(r.layer,a,e.forBinning);if(!n)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ae(a).join(", "));const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const o=await Y({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),u=C(n,o,"size-continuous-renderer:invalid-parameters");if(u)throw u;return await pe(r),{...r,layer:n}}async function pe(e){const i=e.layer;if(("polygon"===i.geometryType||e.forBinning)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await z({layer:i,view:e.view,filter:e.filter,forBinning:e.forBinning,signal:e.signal})}catch{}!e.theme&&e.referenceSizeResult?.isGrid&&(e.theme="reference-size"),e.referenceSizeOptions?.symbolStyle||(e.referenceSizeOptions?e.referenceSizeOptions.symbolStyle="circle":e.referenceSizeOptions={symbolStyle:"circle"})}}async function de(e){if(!e||!(e.layer&&e.view&&e.sizeStops))throw new i("update-renderer-with-reference-size:missing-parameters","'layer', 'view and 'sizeStops' parameters are required");const{view:r,forBinning:a}=e,n=e.forBinning?ee:ie,s=re(e.layer,n,e.forBinning);if(!s)throw new i("update-renderer-with-reference-size:invalid-parameters","'layer' must be one of these types: "+ae(n).join(", "));const l=s.layer;let t=e.renderer;if(!t)if(e.forBinning){if(!("featureReduction"in l&&l.featureReduction&&"renderer"in l.featureReduction&&l.featureReduction.renderer)||"class-breaks"!==l.featureReduction.renderer.type&&"unique-value"!==l.featureReduction.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Feature reduction renderer is not supported");t=l.featureReduction.renderer}else{if(!("renderer"in l)||!l.renderer||"class-breaks"!==l.renderer.type&&"unique-value"!==l.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Renderer is not supported");t=l.renderer}const o=t.authoringInfo;if(!o||!o?.visualVariables?.some((e=>"reference-size"===e.theme)))throw new i("update-renderer-with-reference-size:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'reference-size'");const u=e.isGrid??(await z({view:r,layer:l,forBinning:a}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function ce(e){if(!e||!e.layer||!e.sizeStops)throw new i("update-renderer-with-spike:missing-parameters","'layer' and 'sizeStops' parameters are required");const r=e.forBinning?ee:ie,a=re(e.layer,r,e.forBinning);if(!a)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+ae(r).join(", "));const n=a.layer;let s=e.renderer;if(!s)if(e.forBinning){if(!("featureReduction"in n&&n.featureReduction&&"renderer"in n.featureReduction&&n.featureReduction.renderer)||"class-breaks"!==n.featureReduction.renderer.type&&"unique-value"!==n.featureReduction.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Feature reduction renderer is not supported");s=n.featureReduction.renderer}else{if(!("renderer"in n)||!n.renderer||"class-breaks"!==n.renderer.type&&"unique-value"!==n.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Renderer is not supported");s=n.renderer}const l=s.authoringInfo;if(!l||!l?.visualVariables?.some((e=>"spike"===e.theme)))throw new i("update-renderer-with-spike:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'spike'");return{...e,renderer:s,layer:a}}async function fe(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("size-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("size-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&X(e,"size-class-breaks-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=_(r);const a=e.forBinning?ee:ie,n=re(r.layer,a,e.forBinning);if(!n)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ae(a).join(", "));if(!(null!=r.minValue&&null!=r.maxValue)&&(null!=r.minValue||null!=r.maxValue))throw new i("size-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const o=await Y({field:r.field,normalizationField:r.normalizationField}),u=C(n,o,"size-class-breaks-renderer:invalid-parameters");if(u)throw u;return{...r,layer:n}}function ye(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const r=i;return r.analyzeData=!(null!=i.minValue&&null!=i.maxValue),r}function ve(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric"),a=i;return a.worldScale=r,r&&(a.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,a}async function ze(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("size-age-renderer:missing-parameters","'layer', 'view', 'startTime', 'endTime' parameters are required");const r={...e};r.symbolType??="2d",r.defaultSymbolEnabled??=!0;const a=re(r.layer,ie);if(!a)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+ae(ie).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await a.load(n);const s=a.geometryType,l=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled,"mesh"===s)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(l&&("polyline"===s||"polygon"===s))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const t=N(a,r.startTime,r.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(r.unit&&!Q.includes(r.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${Q.join(", ")}`);return{...r,layer:a}}async function we(e){const r="regenerate-size-visual-variables";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const s=x(a,"size");if(!s)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=a.visualVariables?.find(S);if(!u&&!t&&!o)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable");let m=s.field,p=s.normalizationField,d=null,c=null;m||(u?.field?(m=u.field,p=u.normalizationField):a.field?(m=a.field,p=a.normalizationField):(d=u?.valueExpression??a.valueExpression,c=u?.valueExpressionTitle??a.valueExpressionTitle));const{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=I(a),b=await ue({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function he(e){const r="regenerate-size-continuous-renderer";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=a,m=s?.visualVariables.find((e=>"size"===e.type)),p=m.theme,{layer:d,forBinning:c,filter:f,view:y,signal:v}=e,z=B(a),w=I(a),h=await me({layer:d,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:p,outlineOptimizationEnabled:z,sizeOptimizationEnabled:w,forBinning:c,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:a}}async function be(e){const r="regenerate-size-class-breaks-renderer";await E(e,r);const a=await k(e);if("size-class-breaks"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=a,{classificationMethod:p,standardDeviationInterval:d}=n,c=a.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=B(a),b=await fe({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function ge(e){const r="regenerate-size-age-renderer";await E(e,r);const a=await k(e);if("size-age"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n}=a,s=n?.visualVariables.find((e=>"size"===e.type)),l=s.startTime,t=s.endTime,o=s.units,u=s.theme,{layer:m,filter:p,view:d,signal:c}=e,f=B(a),y=I(a),v=await ze({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:p,view:d,signal:c});return{...e,creatorParameters:v,renderer:a}}async function Se(e){let i=e.sizeScheme,r=null,a=null;const n=await K(e.basemap,e.view);if(r=null!=n.basemapId?n.basemapId:null,a=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:ne(i),basemapId:r,basemapTheme:a};const s=se({basemapTheme:a,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,r=s.basemapId,a=s.basemapTheme),{scheme:i,basemapId:r,basemapTheme:a}}function xe(e,i){switch(i){case"point":case"multipoint":{const i=e;return[p(i.minSize),p(i.maxSize)]}case"polyline":{const i=e;return[p(i.minWidth),p(i.maxWidth)]}case"polygon":{const i=e;return[p(i.marker.minSize),p(i.marker.maxSize)]}}}function Ve(e,i){e.transformationType===f.ClampedLinear&&"below"===i&&e.flipSizes()}async function Te(e,i,r,a,n,s){const l=Ee(e,i,r,a);return l||xe(n,s)}function Ee(e,i,r,a){return"spike"===a?[r?.minHeight??oe[0],r?.maxHeight??oe[1]]:"reference-size"===a&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function ke(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,r=0,a=0,n=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>a&&l<n&&t<2*n&&u<.5,p=l>r&&l<i&&t<2*i&&u<.5;return{minDataValue:m?a:p?r:l,maxDataValue:m?n:p?i:s+2*o,defaultValuesUsed:!1}}const{theme:r,field:a}=i,n=i.layer,s=a&&!("function"==typeof a)?n.getField(a):null,l=Z(s);return A(e,r,l,"above"===r||"below"===r)}function Oe(e,r){if(("spike"===r||"reference-size"===r)&&null!=e.minDataValue&&null!=e.maxDataValue&&null!=e.minSize&&null!=e.maxSize&&"number"==typeof e.minSize&&"number"==typeof e.maxSize)return[new d({value:e.minDataValue,size:e.minSize}),new d({value:e.maxDataValue,size:e.maxSize})];throw new i("get-size-stops-for-theme","Invalid size variable or theme")}async function Ie(e,r,n,s){const{theme:u,field:p,normalizationField:d,minValue:f,maxValue:y,axis:v}=e,z=e.layer.geometryType,w=await Se({basemap:e.basemap,geometryType:z,sizeScheme:e.sizeScheme,worldScale:e.worldScale,view:e.view}),h=w.scheme;if(!h)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const b=await Te(n,s,e.spikeOptions,u,h,z),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=ke(r,e),V=[],T="height"===v,E=T?v:void 0,k=b[0];let O=b[1];if(T&&"number"==typeof k&&"number"==typeof O){const e=$({minSize:k,maxSize:O},E);V.push(new m({axis:"width-and-depth",minSize:e.minSize})),O=e.maxSize}const I=new m({field:p??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:d,axis:E,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:a(c,e.legendOptions)});Ve(I,u),V.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,sizeStops:Oe(I,u).map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),theme:u,referenceSizeScale:s?.isGrid||e.sizeOptimizationEnabled?e?.view?.scale:void 0,referenceSizeSymbolStyle:e.referenceSizeOptions?.symbolStyle,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:"spike"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,sizeStops:Oe(I,u).map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:{type:"size",theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:V,statistics:r,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:ne(h),authoringInfo:F}}async function Be(e,i,r,a,l){const t=await n("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,p=l.defaultSymbolEnabled,d=ne(e.sizeScheme),c="polygon"===m,f=c?d.marker:d,y=c?d.background:null,v=c?"point":m,z=i?.opacity,w=e.isGrid,b=l.theme,S="reference-size"===b,x="spike"===b,V=S||x?[]:e.visualVariables.map((e=>e.clone()));i?.visualVariables?.length&&V.push(...i.visualVariables.map((e=>e.clone())));const T=S?g({type:l.referenceSizeOptions?.symbolStyle||"circle",color:f.color,primitiveOverrides:h({view:l.view,field:u,normalizationField:a,sizeStops:Oe(e.visualVariables[0],b),sizeByScaleEnabled:w||!!l.sizeOptimizationEnabled})}):x?D({color:f.color,strokeColor:f.outline.color,baseWidth:l.spikeOptions?.baseWidth,strokeWidth:l.spikeOptions?.strokeWidth,defaultHeight:l.spikeOptions?.defaultHeight,primitiveOverrides:q({field:u,normalizationField:a,sizeStops:Oe(e.visualVariables[0],b)}),symbolStyle:l.spikeOptions?.symbolStyle}):H(v,{type:l.symbolType,color:f.color,size:J(f,v),outline:L(f,v,z)});return{renderer:new s({backgroundFillSymbol:!w&&y?H(m,{type:l.symbolType,color:y.color,outline:L(y,m,z)}):null,classBreakInfos:[{minValue:-9007199254740991,maxValue:te,symbol:T}],defaultLabel:p?t.other:null,defaultSymbol:!p||S||x?null:H(v,{type:l.symbolType,color:f.noDataColor,size:J(f,v,!0),outline:L(f,v,z)}),field:u,normalizationField:a,normalizationType:r,valueExpression:l.valueExpression,valueExpressionTitle:l.valueExpressionTitle,visualVariables:V,authoringInfo:e.authoringInfo?.clone()}),visualVariables:e.visualVariables.map((e=>e.clone())),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,isGrid:w,sizeScheme:ne(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function Fe(e,i){const a=r(e.minSize),n=(r(e.maxSize)-a)/(i>=4?i-1:i),s=[];for(let r=0;r<i;r++)s.push(a+n*r);return s}async function je(e,i){const r=await n("esri/smartMapping/t9n/smartMapping"),a=e.layer,t=e.defaultSymbolEnabled,o=a.geometryType,m="polygon"===o,p=e.symbolType?.includes("3d-volumetric"),d=await Se({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:p,view:e.view}),c=d.scheme,{result:f,outlineResult:y}=i,v=f?.classBreakInfos??[],z=e.classificationMethod,w=e.normalizationType,h=m?c.marker:c,b=m?c.background:null,g=m?"point":o,S=xe(h,g),x=p?$({minSize:S[0],maxSize:S[1]},"height"):null,V=Fe({minSize:S[0],maxSize:x?x.maxSize:S[1]},v.length),T=y?.opacity,E=new s({backgroundFillSymbol:b&&H(o,{type:e.symbolType,color:b.color,outline:L(b,o,T)}),classBreakInfos:v.map(((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:H(g,{type:e.symbolType,color:h.color,size:V[r],widthAndDepth:x?.minSize,outline:L(h,g,T)}),label:i.label}))),defaultLabel:t?r.other:null,defaultSymbol:t?H(g,{type:e.symbolType,color:h.noDataColor,size:J(h,g,!0),widthAndDepth:x?.minSize,outline:L(h,g,T)}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?f?.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new l({type:"class-breaks-size",classificationMethod:z,standardDeviationInterval:e.standardDeviationInterval})});return"standard-deviation"!==z&&u({classBreakInfos:E.classBreakInfos,classificationMethod:z,normalizationType:w,round:!0}),y?.visualVariables?.length&&(E.visualVariables=y.visualVariables.map((e=>e.clone()))),{renderer:E,sizeScheme:ne(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function qe(e){const i=await ue(e),{view:r,field:a,valueExpression:n,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:p}=i,d=o?"field":void 0,[c,f]=await Promise.all([m??G({layer:t,field:a,valueExpression:n,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:o,filter:p,minValue:s,maxValue:l,view:r,signal:u}),i.sizeOptimizationEnabled?w({view:r,layer:t,signal:u,filter:p}).catch(U):null]);return Ie(i,c,f,i.referenceSizeResult)}async function Re(e){const{view:i,filter:r,renderer:a,signal:n,creatorParameters:s}=await we(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:v}=s,z=o?"field":void 0,[h,b]=await Promise.all([G({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:z,filter:r,view:i,signal:n}),c?w({view:i,layer:d,signal:n,filter:r}).catch(U):null]),g=Ee(b,y,f,p),{minDataValue:V,maxDataValue:T}=ke(h,{theme:p,layer:d,field:l}),E=a.visualVariables?.find(S),k=(E?.stops?null:E)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:v,valueUnit:"unknown",normalizationField:o});g&&(k.minSize=g[0],k.maxSize=g[1]),k.minDataValue=V,k.maxDataValue=T,Ve(k,p);const O=x(a,"size");O.minSliderValue=h.min,O.maxSliderValue=h.max;const I="reference-size"===p;return(I||"spike"===p)&&(O.sizeStops=Oe(k,p).map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),I&&(O.referenceSizeScale=y?.isGrid||c?i?.scale:void 0)),{visualVariables:"reference-size"===p||"spike"===p?[]:[k],isGrid:!!y?.isGrid,authoringInfo:a.authoringInfo?.clone(),statistics:h}}async function De(e){const i=await me(e),r={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[a,n]=await Promise.all([qe(ve(i)),i.outlineOptimizationEnabled?v(r).catch(U):null]),s=i.normalizationField;return Be(a,n,s?"field":void 0,s,i)}async function Ge(e){const{renderer:i,view:r,signal:a,filter:n,creatorParameters:s,forBinning:l}=await he(e),{layer:t,outlineOptimizationEnabled:o,theme:u,referenceSizeResult:m}=s,[p,d]=await Promise.all([Re({...e,referenceSizeResult:m}),o?v({layer:t,view:r,filter:n,signal:a}).catch(U):null]),c="reference-size"===u,f="spike"===u;V(i,p.visualVariables,F),V(i,d?.visualVariables,j),T(i,p.authoringInfo,"size");const y=p.statistics;if(!c&&!f)return{renderer:i,statistics:y};if(f){return{renderer:await Pe({layer:t,renderer:i,forBinning:l,sizeStops:x(i,"size","spike")?.sizeStops}),statistics:y}}const z=p.isGrid;return{renderer:await Ue({layer:t,renderer:i,view:r,forBinning:l,sizeStops:x(i,"size","reference-size")?.sizeStops,isGrid:z}),isGrid:z,statistics:y}}async function Ue(r){const{layer:a,referenceSizeOptions:n,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:p,isGrid:d}=await de(r),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find((e=>"reference-size"===e.theme)),y=r.field??f?.field,v=r.normalizationField??f?.normalizationField;if(!y)throw new i("update-renderer-with-reference-size:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const z=h({view:p,field:y,normalizationField:v,sizeStops:u,sizeByScaleEnabled:d||!!r.sizeOptimizationEnabled}),w=n?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach((i=>{const r=e?.color??le(i.symbol,1);"cim"===i.symbol.type?b(i.symbol,{type:w,color:r,primitiveOverrides:z}):r&&(i.symbol=g({type:w,color:r,primitiveOverrides:z}))}))}else if("unique-value"===c.type){const i=c.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&m&&"colors"in m?m.colors:null,n=r?e(r,c.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:le(i.symbol,1);"cim"===i.symbol?.type?b(i.symbol,{type:w,color:e,primitiveOverrides:z}):e&&(i.symbol=g({type:w,color:e,primitiveOverrides:z})),s++}c.uniqueValueGroups=i}}return f&&(f.field=y,f.normalizationField=v,f.sizeStops=u.map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),f.referenceSizeScale=d||r.sizeOptimizationEnabled?p.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Pe(r){const{layer:a,renderer:n,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await ce(r),p=n.clone();p.authoringInfo??=new l;const d=p.authoringInfo.visualVariables.find((e=>"spike"===e.theme)),c=r.field??d?.field,f=r.normalizationField??d?.normalizationField;if(!c)throw new i("update-renderer-with-spike:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const y=q({field:c,normalizationField:f,sizeStops:o});if("class-breaks"===p.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&s&&"marker"in s?s.marker:null;p.classBreakInfos.forEach((i=>{const r=e?.color??le(i.symbol,1)??void 0;"cim"===i.symbol.type?R(i.symbol,{color:r,primitiveOverrides:y,...m}):r&&(i.symbol=D({color:r,primitiveOverrides:y,...m}))}))}else if("unique-value"===p.type){const i=p.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&u&&"colors"in u?u.colors:null,n=r?e(r,p.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:le(i.symbol,1)??void 0;"cim"===i.symbol?.type?R(i.symbol,{color:e,primitiveOverrides:y,...m}):e&&(i.symbol=D({color:e,primitiveOverrides:y,...m})),s++}p.uniqueValueGroups=i}}return d&&(d.field=c,d.normalizationField=f,d.sizeStops=o.map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})))),p}async function Me(e){const i=await fe(e);return je(i,await P(ye(i),i.outlineOptimizationEnabled))}async function We(e){const{renderer:r,creatorParameters:a}=await be(e),{outlineOptimizationEnabled:n,normalizationType:s,classificationMethod:l}=a,{result:t,outlineResult:o}=await P(ye(a),n),m=t.classBreakInfos;if(a.numClasses!==m.length)throw new i("regenerate-class-breaks-renderer:invalid-parameters","The number of class breaks generated does not match the number of class breaks in the renderer.");return r.classBreakInfos.forEach(((e,i)=>{e.minValue=m[i].minValue,e.maxValue=m[i].maxValue,e.label=m[i].label})),r.normalizationTotal="percent-of-total"===s?t.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:r.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),V(r,o?.visualVariables,j),{renderer:r}}async function Ce(e){const i=await ze(e),{defaultSymbolEnabled:r,view:a,startTime:n,endTime:s,symbolType:l,minValue:t,maxValue:o,signal:u,filter:m,layer:p}=i,[d,c]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await y({view:a,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?v({layer:p,view:a,filter:m,signal:u}).catch(U):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:h}=await M(i,f),b=await qe(ve({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:z,legendOptions:{title:h},theme:i.theme,sizeScheme:i.sizeScheme,sizeOptimizationEnabled:i.sizeOptimizationEnabled,view:i.view,minValue:t,maxValue:o,filter:m,signal:u})),g={layer:p,valueExpression:w,defaultSymbolEnabled:r,symbolType:l},S=await Be(b,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach((e=>W(e,n,s,f))),{...S,unit:f}}async function $e(e){const{renderer:i,creatorParameters:r}=await ge(e),{layer:a,outlineOptimizationEnabled:n,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:p}=r,[d,c]=await Promise.all([y({view:u,layer:a,startTime:l,endTime:t,signal:m,filter:p}),n?v({layer:a,view:u,filter:p,signal:m}).catch(U):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:h}=await M(r,f),b=await qe(ve({layer:a,valueExpression:w,statistics:z,legendOptions:{title:h},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));V(i,b.visualVariables,F),V(i,c?.visualVariables,j),i.authoringInfo=b.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach((e=>W(e,l,t,f))),{renderer:i}}export{Ce as createAgeRenderer,Me as createClassBreaksRenderer,De as createContinuousRenderer,qe as createVisualVariables,Oe as getSizeStopsForTheme,$e as regenerateAgeRenderer,We as regenerateClassBreaksRenderer,Ge as regenerateContinuousRenderer,Re as regenerateVisualVariables,Ue as updateRendererWithReferenceSize,Pe as updateRendererWithSpike};
5
+ import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as r}from"../../core/screenUtils.js";import{ensureClass as a}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/support/AuthoringInfo.js";import t from"../../renderers/support/AuthoringInfoSizeStop.js";import o from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as u}from"../../renderers/support/utils.js";import m from"../../renderers/visualVariables/SizeVariable.js";import{castSizeFromStringOrNumber as p}from"../../renderers/visualVariables/support/castSizeVariable.js";import d from"../../renderers/visualVariables/support/SizeStop.js";import c from"../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{TransformationType as f}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import z from"../heuristics/referenceSize.js";import w from"../heuristics/sizeRange.js";import{createPrimitiveOverrides as b,updateReferenceSizeSymbol as h,createReferenceSizeSymbol as g}from"./support/referenceSizeUtils.js";import{isSizeVV as S,getAuthoringInfoVisualVariable as x,spliceVisualVariables as V,updateAuthoringInfoVisualVariable as T,processRegenerateParams as E,getRendererToUpdate as k,getStyleType as O,hasScaleDependentSizeVV as I,hasOutlineVV as B,findSizeVVIndex as F,findOutlineVVIndex as j}from"./support/regenerateUtils.js";import{createPrimitiveOverrides as q,updateSpikeSymbol as R,createSpikeSymbol as D,defaultSpikeSymbolStyle as G}from"./support/spikeUtils.js";import{getSummaryStatistics as U,errorCallback as P,getClassBreaks as M,getTitleAndExpressionForAgeRenderer as W,updateAgeRendererAuthoringInfoVV as C,verifyBasicFieldValidity as $,getSizeRangeForAxis as A,getDataRange as H,createSymbol as L,getSymbolOutlineFromScheme as J,getSymbolSizeFromScheme as K,getBasemapInfo as N}from"./support/utils.js";import{verifyDates as Q,supportedAgeUnits as X}from"../statistics/support/ageUtils.js";import{verifyBinningParams as Y}from"../support/binningUtils.js";import{getFieldsList as Z,isAnyDateField as _,getNormalizationType as ee}from"../support/utils.js";import{binningCapableLayerTypes as ie,featureCapableLayerTypes as re,createLayerAdapter as ae,getLayerTypeLabels as ne}from"../support/adapters/support/layerUtils.js";import{cloneScheme as se,getSchemes as le}from"../symbology/size.js";import{getColorFromSymbol as te}from"../../symbols/support/utils.js";const oe=2**53-1,ue=[5,112.5];async function me(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===e.theme&&!e.view&&!e.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===e.theme&&e.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");e.forBinning&&Y(e,"size-visual-variable");const r={...e},a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));"height"===r.axis&&(r.sizeOptimizationEnabled=!1);const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType;if("mesh"===l)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(r.worldScale){if("polyline"===l||"polygon"===l)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if(!r.view||"3d"!==r.view.type)throw new i("size-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true")}if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const t=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),o=$(n,t,"size-visual-variable:invalid-parameters");if(o)throw o;return"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G),await de(r),{...r,layer:n}}async function pe(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-continuous-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const o=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),u=$(n,o,"size-continuous-renderer:invalid-parameters");if(u)throw u;return"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G),await de(r),{...r,layer:n}}async function de(e){const i=e.layer;if(("polygon"===i.geometryType||e.forBinning)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await z({layer:i,view:e.view,filter:e.filter,forBinning:e.forBinning,signal:e.signal})}catch{}!e.theme&&e.referenceSizeResult?.isGrid&&(e.theme="reference-size"),e.referenceSizeOptions?.symbolStyle||(e.referenceSizeOptions?e.referenceSizeOptions.symbolStyle="circle":e.referenceSizeOptions={symbolStyle:"circle"})}}async function ce(e){if(!e||!(e.layer&&e.view&&e.sizeStops))throw new i("update-renderer-with-reference-size:missing-parameters","'layer', 'view and 'sizeStops' parameters are required");const{view:r,forBinning:a}=e,n=e.forBinning?ie:re,s=ae(e.layer,n,e.forBinning);if(!s)throw new i("update-renderer-with-reference-size:invalid-parameters","'layer' must be one of these types: "+ne(n).join(", "));const l=s.layer;let t=e.renderer;if(!t)if(e.forBinning){if(!("featureReduction"in l&&l.featureReduction&&"renderer"in l.featureReduction&&l.featureReduction.renderer)||"class-breaks"!==l.featureReduction.renderer.type&&"unique-value"!==l.featureReduction.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Feature reduction renderer is not supported");t=l.featureReduction.renderer}else{if(!("renderer"in l)||!l.renderer||"class-breaks"!==l.renderer.type&&"unique-value"!==l.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Renderer is not supported");t=l.renderer}const o=t.authoringInfo;if(!o||!o?.visualVariables?.some((e=>"reference-size"===e.theme)))throw new i("update-renderer-with-reference-size:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'reference-size'");const u=e.isGrid??(await z({view:r,layer:l,forBinning:a}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function fe(e){if(!e||!e.layer||!e.sizeStops)throw new i("update-renderer-with-spike:missing-parameters","'layer' and 'sizeStops' parameters are required");const r=e.forBinning?ie:re,a=ae(e.layer,r,e.forBinning);if(!a)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+ne(r).join(", "));const n=a.layer;let s=e.renderer;if(!s)if(e.forBinning){if(!("featureReduction"in n&&n.featureReduction&&"renderer"in n.featureReduction&&n.featureReduction.renderer)||"class-breaks"!==n.featureReduction.renderer.type&&"unique-value"!==n.featureReduction.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Feature reduction renderer is not supported");s=n.featureReduction.renderer}else{if(!("renderer"in n)||!n.renderer||"class-breaks"!==n.renderer.type&&"unique-value"!==n.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Renderer is not supported");s=n.renderer}const l=s.authoringInfo,t=l?.visualVariables.find((e=>"spike"===e.theme));if(!t)throw new i("update-renderer-with-spike:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'spike'");const o=e.spikeOptions??{};return o.symbolStyle=o?.symbolStyle||t?.spikeSymbolStyle||G,{...e,renderer:s,layer:a,spikeOptions:o}}async function ye(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("size-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("size-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-class-breaks-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=ee(r);const a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));if(!(null!=r.minValue&&null!=r.maxValue)&&(null!=r.minValue||null!=r.maxValue))throw new i("size-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const o=await Z({field:r.field,normalizationField:r.normalizationField}),u=$(n,o,"size-class-breaks-renderer:invalid-parameters");if(u)throw u;return{...r,layer:n}}function ve(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const r=i;return r.analyzeData=!(null!=i.minValue&&null!=i.maxValue),r}function ze(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric"),a=i;return a.worldScale=r,r&&(a.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,a}async function we(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("size-age-renderer:missing-parameters","'layer', 'view', 'startTime', 'endTime' parameters are required");const r={...e};r.symbolType??="2d",r.defaultSymbolEnabled??=!0;const a=ae(r.layer,re);if(!a)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+ne(re).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await a.load(n);const s=a.geometryType,l=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled,"mesh"===s)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(l&&("polyline"===s||"polygon"===s))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const t=Q(a,r.startTime,r.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(r.unit&&!X.includes(r.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${X.join(", ")}`);return{...r,layer:a}}async function be(e){const r="regenerate-size-visual-variables";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const s=x(a,"size");if(!s)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=a.visualVariables?.find(S);if(!u&&!t&&!o)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable");let m=s.field,p=s.normalizationField,d=null,c=null;m||(u?.field?(m=u.field,p=u.normalizationField):a.field?(m=a.field,p=a.normalizationField):(d=u?.valueExpression??a.valueExpression,c=u?.valueExpressionTitle??a.valueExpressionTitle));const{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,b=I(a),h=await me({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:b,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:h,renderer:a}}async function he(e){const r="regenerate-size-continuous-renderer";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=a,m=s?.visualVariables.find((e=>"size"===e.type)),p=m.theme,{layer:d,forBinning:c,filter:f,view:y,signal:v}=e,z=B(a),w=I(a),b=await pe({layer:d,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:p,outlineOptimizationEnabled:z,sizeOptimizationEnabled:w,forBinning:c,filter:f,view:y,signal:v});return{...e,creatorParameters:b,renderer:a}}async function ge(e){const r="regenerate-size-class-breaks-renderer";await E(e,r);const a=await k(e);if("size-class-breaks"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=a,{classificationMethod:p,standardDeviationInterval:d}=n,c=a.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,b=B(a),h=await ye({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:b,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:h,renderer:a}}async function Se(e){const r="regenerate-size-age-renderer";await E(e,r);const a=await k(e);if("size-age"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n}=a,s=n?.visualVariables.find((e=>"size"===e.type)),l=s.startTime,t=s.endTime,o=s.units,u=s.theme,{layer:m,filter:p,view:d,signal:c}=e,f=B(a),y=I(a),v=await we({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:p,view:d,signal:c});return{...e,creatorParameters:v,renderer:a}}async function xe(e){let i=e.sizeScheme,r=null,a=null;const n=await N(e.basemap,e.view);if(r=null!=n.basemapId?n.basemapId:null,a=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:se(i),basemapId:r,basemapTheme:a};const s=le({basemapTheme:a,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,r=s.basemapId,a=s.basemapTheme),{scheme:i,basemapId:r,basemapTheme:a}}function Ve(e,i){switch(i){case"point":case"multipoint":{const i=e;return[p(i.minSize),p(i.maxSize)]}case"polyline":{const i=e;return[p(i.minWidth),p(i.maxWidth)]}case"polygon":{const i=e;return[p(i.marker.minSize),p(i.marker.maxSize)]}}}function Te(e,i){e.transformationType===f.ClampedLinear&&"below"===i&&e.flipSizes()}async function Ee(e,i,r,a,n,s){const l=ke(e,i,r,a);return l||Ve(n,s)}function ke(e,i,r,a){return"spike"===a?[r?.minHeight??ue[0],r?.maxHeight??ue[1]]:"reference-size"===a&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function Oe(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,r=0,a=0,n=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>a&&l<n&&t<2*n&&u<.5,p=l>r&&l<i&&t<2*i&&u<.5;return{minDataValue:m?a:p?r:l,maxDataValue:m?n:p?i:s+2*o,defaultValuesUsed:!1}}const{theme:r,field:a}=i,n=i.layer,s=a&&!("function"==typeof a)?n.getField(a):null,l=_(s);return H(e,r,l,"above"===r||"below"===r)}function Ie(e,r){if(("spike"===r||"reference-size"===r)&&null!=e.minDataValue&&null!=e.maxDataValue&&null!=e.minSize&&null!=e.maxSize&&"number"==typeof e.minSize&&"number"==typeof e.maxSize)return[new d({value:e.minDataValue,size:e.minSize}),new d({value:e.maxDataValue,size:e.maxSize})];throw new i("get-size-stops-for-theme","Invalid size variable or theme")}async function Be(e,r,n,s){const{theme:u,field:p,normalizationField:d,minValue:f,maxValue:y,axis:v}=e,z=e.layer.geometryType,w=await xe({basemap:e.basemap,geometryType:z,sizeScheme:e.sizeScheme,worldScale:e.worldScale,view:e.view}),b=w.scheme;if(!b)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const h=await Ee(n,s,e.spikeOptions,u,b,z),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Oe(r,e),V=[],T="height"===v,E=T?v:void 0,k=h[0];let O=h[1];if(T&&"number"==typeof k&&"number"==typeof O){const e=A({minSize:k,maxSize:O},E);V.push(new m({axis:"width-and-depth",minSize:e.minSize})),O=e.maxSize}const I=new m({field:p??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:d,axis:E,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:a(c,e.legendOptions)});Te(I,u),V.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,sizeStops:Ie(I,u).map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),theme:u,referenceSizeScale:s?.isGrid||e.sizeOptimizationEnabled?e?.view?.scale:void 0,referenceSizeSymbolStyle:e.referenceSizeOptions?.symbolStyle,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:"spike"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,spikeSymbolStyle:e.spikeOptions?.symbolStyle,sizeStops:Ie(I,u).map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:{type:"size",theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:V,statistics:r,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:se(b),authoringInfo:F}}async function Fe(e,i,r,a,l){const t=await n("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,p=l.defaultSymbolEnabled,d=se(e.sizeScheme),c="polygon"===m,f=c?d.marker:d,y=c?d.background:null,v=c?"point":m,z=i?.opacity,w=e.isGrid,h=l.theme,S="reference-size"===h,x="spike"===h,V=S||x?[]:e.visualVariables.map((e=>e.clone()));i?.visualVariables?.length&&V.push(...i.visualVariables.map((e=>e.clone())));const T=S?g({type:l.referenceSizeOptions?.symbolStyle||"circle",color:f.color,primitiveOverrides:b({view:l.view,field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],h),sizeByScaleEnabled:w||!!l.sizeOptimizationEnabled})}):x?D({color:f.color,strokeColor:f.outline.color,baseWidth:l.spikeOptions?.baseWidth,strokeWidth:l.spikeOptions?.strokeWidth,defaultHeight:l.spikeOptions?.defaultHeight,primitiveOverrides:q({field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],h)}),symbolStyle:l.spikeOptions?.symbolStyle}):L(v,{type:l.symbolType,color:f.color,size:K(f,v),outline:J(f,v,z)});return{renderer:new s({backgroundFillSymbol:!w&&y?L(m,{type:l.symbolType,color:y.color,outline:J(y,m,z)}):null,classBreakInfos:[{minValue:-9007199254740991,maxValue:oe,symbol:T}],defaultLabel:p?t.other:null,defaultSymbol:!p||S||x?null:L(v,{type:l.symbolType,color:f.noDataColor,size:K(f,v,!0),outline:J(f,v,z)}),field:u,normalizationField:a,normalizationType:r,valueExpression:l.valueExpression,valueExpressionTitle:l.valueExpressionTitle,visualVariables:V,authoringInfo:e.authoringInfo?.clone()}),visualVariables:e.visualVariables.map((e=>e.clone())),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,isGrid:w,sizeScheme:se(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function je(e,i){const a=r(e.minSize),n=(r(e.maxSize)-a)/(i>=4?i-1:i),s=[];for(let r=0;r<i;r++)s.push(a+n*r);return s}async function qe(e,i){const r=await n("esri/smartMapping/t9n/smartMapping"),a=e.layer,t=e.defaultSymbolEnabled,o=a.geometryType,m="polygon"===o,p=e.symbolType?.includes("3d-volumetric"),d=await xe({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:p,view:e.view}),c=d.scheme,{result:f,outlineResult:y}=i,v=f?.classBreakInfos??[],z=e.classificationMethod,w=e.normalizationType,b=m?c.marker:c,h=m?c.background:null,g=m?"point":o,S=Ve(b,g),x=p?A({minSize:S[0],maxSize:S[1]},"height"):null,V=je({minSize:S[0],maxSize:x?x.maxSize:S[1]},v.length),T=y?.opacity,E=new s({backgroundFillSymbol:h&&L(o,{type:e.symbolType,color:h.color,outline:J(h,o,T)}),classBreakInfos:v.map(((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:L(g,{type:e.symbolType,color:b.color,size:V[r],widthAndDepth:x?.minSize,outline:J(b,g,T)}),label:i.label}))),defaultLabel:t?r.other:null,defaultSymbol:t?L(g,{type:e.symbolType,color:b.noDataColor,size:K(b,g,!0),widthAndDepth:x?.minSize,outline:J(b,g,T)}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?f?.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new l({type:"class-breaks-size",classificationMethod:z,standardDeviationInterval:e.standardDeviationInterval})});return"standard-deviation"!==z&&u({classBreakInfos:E.classBreakInfos,classificationMethod:z,normalizationType:w,round:!0}),y?.visualVariables?.length&&(E.visualVariables=y.visualVariables.map((e=>e.clone()))),{renderer:E,sizeScheme:se(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function Re(e){const i=await me(e),{view:r,field:a,valueExpression:n,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:p}=i,d=o?"field":void 0,[c,f]=await Promise.all([m??U({layer:t,field:a,valueExpression:n,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:o,filter:p,minValue:s,maxValue:l,view:r,signal:u}),i.sizeOptimizationEnabled?w({view:r,layer:t,signal:u,filter:p}).catch(P):null]);return Be(i,c,f,i.referenceSizeResult)}async function De(e){const{view:i,filter:r,renderer:a,signal:n,creatorParameters:s}=await be(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:v}=s,z=o?"field":void 0,[b,h]=await Promise.all([U({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:z,filter:r,view:i,signal:n}),c?w({view:i,layer:d,signal:n,filter:r}).catch(P):null]),g=ke(h,y,f,p),{minDataValue:V,maxDataValue:T}=Oe(b,{theme:p,layer:d,field:l}),E=a.visualVariables?.find(S),k=(E?.stops?null:E)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:v,valueUnit:"unknown",normalizationField:o});g&&(k.minSize=g[0],k.maxSize=g[1]),k.minDataValue=V,k.maxDataValue=T,Te(k,p);const O=x(a,"size");O.minSliderValue=b.min,O.maxSliderValue=b.max;const I="reference-size"===p;return(I||"spike"===p)&&(O.sizeStops=Ie(k,p).map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),I&&(O.referenceSizeScale=y?.isGrid||c?i?.scale:void 0)),{visualVariables:"reference-size"===p||"spike"===p?[]:[k],isGrid:!!y?.isGrid,authoringInfo:a.authoringInfo?.clone(),statistics:b}}async function Ge(e){const i=await pe(e),r={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[a,n]=await Promise.all([Re(ze(i)),i.outlineOptimizationEnabled?v(r).catch(P):null]),s=i.normalizationField;return Fe(a,n,s?"field":void 0,s,i)}async function Ue(e){const{renderer:i,view:r,signal:a,filter:n,creatorParameters:s,forBinning:l}=await he(e),{layer:t,outlineOptimizationEnabled:o,theme:u,referenceSizeResult:m}=s,[p,d]=await Promise.all([De({...e,referenceSizeResult:m}),o?v({layer:t,view:r,filter:n,signal:a}).catch(P):null]),c="reference-size"===u,f="spike"===u;V(i,p.visualVariables,F),V(i,d?.visualVariables,j),T(i,p.authoringInfo,"size");const y=p.statistics;if(!c&&!f)return{renderer:i,statistics:y};if(f){return{renderer:await Me({layer:t,renderer:i,forBinning:l,sizeStops:x(i,"size","spike")?.sizeStops}),statistics:y}}const z=p.isGrid;return{renderer:await Pe({layer:t,renderer:i,view:r,forBinning:l,sizeStops:x(i,"size","reference-size")?.sizeStops,isGrid:z}),isGrid:z,statistics:y}}async function Pe(r){const{layer:a,referenceSizeOptions:n,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:p,isGrid:d}=await ce(r),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find((e=>"reference-size"===e.theme)),y=r.field??f?.field,v=r.normalizationField??f?.normalizationField;if(!y)throw new i("update-renderer-with-reference-size:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const z=b({view:p,field:y,normalizationField:v,sizeStops:u,sizeByScaleEnabled:d||!!r.sizeOptimizationEnabled}),w=n?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach((i=>{const r=e?.color??te(i.symbol,1);"cim"===i.symbol.type?h(i.symbol,{type:w,color:r,primitiveOverrides:z}):r&&(i.symbol=g({type:w,color:r,primitiveOverrides:z}))}))}else if("unique-value"===c.type){const i=c.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&m&&"colors"in m?m.colors:null,n=r?e(r,c.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:te(i.symbol,1);"cim"===i.symbol?.type?h(i.symbol,{type:w,color:e,primitiveOverrides:z}):e&&(i.symbol=g({type:w,color:e,primitiveOverrides:z})),s++}c.uniqueValueGroups=i}}return f&&(f.field=y,f.normalizationField=v,f.sizeStops=u.map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),f.referenceSizeScale=d||r.sizeOptimizationEnabled?p.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Me(r){const{layer:a,renderer:n,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await fe(r),p=n.clone();p.authoringInfo??=new l;const d=p.authoringInfo.visualVariables.find((e=>"spike"===e.theme)),c=r.field??d?.field,f=r.normalizationField??d?.normalizationField;if(!c)throw new i("update-renderer-with-spike:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const y=q({field:c,normalizationField:f,sizeStops:o}),v=m?.symbolStyle;if("class-breaks"===p.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&s&&"marker"in s?s.marker:null;p.classBreakInfos.forEach((i=>{const r=e?.color??te(i.symbol,1)??void 0;"cim"===i.symbol.type?R(i.symbol,{color:r,primitiveOverrides:y,...m,symbolStyle:v}):r&&(i.symbol=D({color:r,primitiveOverrides:y,...m,symbolStyle:v}))}))}else if("unique-value"===p.type){const i=p.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&u&&"colors"in u?u.colors:null,n=r?e(r,p.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:te(i.symbol,1)??void 0;"cim"===i.symbol?.type?R(i.symbol,{color:e,primitiveOverrides:y,...m,symbolStyle:v}):e&&(i.symbol=D({color:e,primitiveOverrides:y,...m,symbolStyle:v})),s++}p.uniqueValueGroups=i}}return d&&(d.field=c,d.normalizationField=f,d.sizeStops=o.map((({label:e,size:i,value:r})=>new t({label:e,size:i,value:r}))),d.spikeSymbolStyle=v),p}async function We(e){const i=await ye(e);return qe(i,await M(ve(i),i.outlineOptimizationEnabled))}async function Ce(e){const{renderer:r,creatorParameters:a}=await ge(e),{outlineOptimizationEnabled:n,normalizationType:s,classificationMethod:l}=a,{result:t,outlineResult:o}=await M(ve(a),n),m=t.classBreakInfos;if(a.numClasses!==m.length)throw new i("regenerate-class-breaks-renderer:invalid-parameters","The number of class breaks generated does not match the number of class breaks in the renderer.");return r.classBreakInfos.forEach(((e,i)=>{e.minValue=m[i].minValue,e.maxValue=m[i].maxValue,e.label=m[i].label})),r.normalizationTotal="percent-of-total"===s?t.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:r.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),V(r,o?.visualVariables,j),{renderer:r}}async function $e(e){const i=await we(e),{defaultSymbolEnabled:r,view:a,startTime:n,endTime:s,symbolType:l,minValue:t,maxValue:o,signal:u,filter:m,layer:p}=i,[d,c]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await y({view:a,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?v({layer:p,view:a,filter:m,signal:u}).catch(P):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:b}=await W(i,f),h=await Re(ze({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:z,legendOptions:{title:b},theme:i.theme,sizeScheme:i.sizeScheme,sizeOptimizationEnabled:i.sizeOptimizationEnabled,view:i.view,minValue:t,maxValue:o,filter:m,signal:u})),g={layer:p,valueExpression:w,defaultSymbolEnabled:r,symbolType:l},S=await Fe(h,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach((e=>C(e,n,s,f))),{...S,unit:f}}async function Ae(e){const{renderer:i,creatorParameters:r}=await Se(e),{layer:a,outlineOptimizationEnabled:n,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:p}=r,[d,c]=await Promise.all([y({view:u,layer:a,startTime:l,endTime:t,signal:m,filter:p}),n?v({layer:a,view:u,filter:p,signal:m}).catch(P):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:b}=await W(r,f),h=await Re(ze({layer:a,valueExpression:w,statistics:z,legendOptions:{title:b},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));V(i,h.visualVariables,F),V(i,c?.visualVariables,j),i.authoringInfo=h.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach((e=>C(e,l,t,f))),{renderer:i}}export{$e as createAgeRenderer,We as createClassBreaksRenderer,Ge as createContinuousRenderer,Re as createVisualVariables,Ie as getSizeStopsForTheme,Ae as regenerateAgeRenderer,Ce as regenerateClassBreaksRenderer,Ue as regenerateContinuousRenderer,De as regenerateVisualVariables,Pe as updateRendererWithReferenceSize,Me as updateRendererWithSpike};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../Color.js";import{clone as o}from"../../../core/lang.js";import{px2pt as t}from"../../../core/screenUtils.js";import r from"../../../symbols/CIMSymbol.js";import{Simple3DLineStyle as i,LineJoinStyle as l,LineCapStyle as n}from"../../../symbols/cim/enums.js";const a="spike-height-override",s=t(8),m=t(20);function u(e){const{field:o,normalizationField:t,sizeStops:r}=e,{value:i,size:l}=r[0],{value:n,size:s}=r[1];let m,u=0;o&&(u=`$feature["${o}"]`,m=`\n if(!HasValue($feature, "${o}")){\n return 0;\n }\n $feature["${o}"];\n `),t&&(u=`$feature["${o}"] / $feature["${t}"]`,m=`if(!HasValue($feature, "${o}") || !HasValue($feature, "${t}") || $feature["${t}"] <= 0){\n return 0;\n }\n $feature["${o}"];\n $feature["${t}"];`);return[{type:"CIMPrimitiveOverride",primitiveName:a,propertyName:"Length",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:`\n ${m}\n var value = ${u};\n\n var maxSize = ${s};\n var minSize = ${l};\n\n var minDataValue = ${i};\n var maxDataValue = ${n};\n\n var ratio = Constrain(( value - minDataValue ) / ( maxDataValue - minDataValue ), 0, 1);\n\n var size = Constrain(maxSize * ratio, minSize, maxSize);\n return size;\n `,returnType:"Default"}}]}function c(e){const{primitiveOverrides:o,baseWidth:t,defaultHeight:i}=e,l=p(e);return new r({data:{type:"CIMSymbolReference",symbol:{type:"CIMPointSymbol",effects:[{type:"CIMGeometricEffectRadial",primitiveName:a,angle:90,length:i??m},{type:"CIMGeometricEffectTaperedPolygon",fromWidth:t??s,toWidth:1,length:5}],symbolLayers:l,haloSize:1,scaleX:1,angleAlignment:"Display"},primitiveOverrides:o}})}function p(e){const o=[f(e)],t=y(e);return t&&o.push(t),o}function f(e){const{strokeColor:o,strokeWidth:r,symbolStyle:a}=e,s=a?.includes("solid-fill")||a?.includes("gradient-fill");let m=o?.toArray(),u=!1;return a?.includes("outline")&&s?u=!0:m=e.color?.toArray(),{type:"CIMSolidStroke",effects:d(a),enable:!0,colorLocked:u,capStyle:n.Round,joinStyle:l.Round,lineStyle3D:i.Strip,miterLimit:4,width:r??t(1),color:m}}function d(e){if(!e?.includes("closed"))return[{type:"CIMGeometricEffectAddControlPoints",angleTolerance:90,primitiveName:"spike-control-points"},{type:"CIMGeometricEffectSuppress",suppress:!0,invert:!0,primitiveName:"spike-stroke-suppress"}]}function y(e){const{color:o,symbolStyle:t}=e,r=t?.includes("solid-fill"),i=t?.includes("gradient-fill");if(!r&&!i||!o)return;if(r)return{type:"CIMSolidFill",enable:!0,colorLocked:!1,color:o?.toArray()};const l=o.clone();return l.a=0,{type:"CIMGradientFill",enable:!0,angle:90,colorRamp:{type:"CIMMultipartColorRamp",colorRamps:[{type:"CIMLinearContinuousColorRamp",fromColor:o.toArray(),toColor:l.toArray()}],weights:[1]},gradientMethod:"Linear",gradientSize:70,gradientSizeUnits:"Relative",gradientType:"Continuous"}}function C(t,r){const{defaultHeight:i,baseWidth:l,color:n,strokeColor:s,primitiveOverrides:m,symbolStyle:u,strokeWidth:c}=r,f="CIMPointSymbol"===t.data.symbol?.type?t.data.symbol:null;if(!f)return t;const d=f.effects,y=d?.find((e=>"CIMGeometricEffectTaperedPolygon"===e.type)),C=d?.find((e=>"CIMGeometricEffectRadial"===e.type&&e.primitiveName===a));null!=l&&y&&(y.fromWidth=l),null!=i&&C&&(C.length=i);const v=f.symbolLayers,S=v?.find((e=>"CIMSolidStroke"===e.type)),$=v?.find((e=>"CIMSolidFill"===e.type)),M=v?.find((e=>"CIMGradientFill"===e.type)),I="CIMMultipartColorRamp"===M?.colorRamp?.type&&"CIMLinearContinuousColorRamp"===M.colorRamp.colorRamps[0]?.type?M.colorRamp.colorRamps[0]:null;if(u){const o=$?.color??I?.fromColor;f.symbolLayers=p({color:n??(o?new e(o):void 0),strokeColor:s??(S?.color?new e(S.color):void 0),strokeWidth:c??S?.width,symbolStyle:u})}else if(S&&null!=s)S.color=s.toArray();else if($&&null!=n)$.color=n.toArray();else if(I&&null!=n){const e=n.clone();e.a=0,I.fromColor=n.toArray(),I.toColor=e.toArray()}return void 0!==m&&(t.data.primitiveOverrides=o(m)),t}export{u as createPrimitiveOverrides,c as createSpikeSymbol,C as updateSpikeSymbol};
5
+ import e from"../../../Color.js";import{clone as o}from"../../../core/lang.js";import{px2pt as t}from"../../../core/screenUtils.js";import r from"../../../symbols/CIMSymbol.js";import{Simple3DLineStyle as i,LineJoinStyle as l,LineCapStyle as n}from"../../../symbols/cim/enums.js";const a="spike-height-override",s=t(8),m=t(20),u="triangle-solid-fill-open-outline";function c(e){const{field:o,normalizationField:t,sizeStops:r}=e,{value:i,size:l}=r[0],{value:n,size:s}=r[1];let m,u=0;o&&(u=`$feature["${o}"]`,m=`\n if(!HasValue($feature, "${o}")){\n return 0;\n }\n $feature["${o}"];\n `),t&&(u=`$feature["${o}"] / $feature["${t}"]`,m=`if(!HasValue($feature, "${o}") || !HasValue($feature, "${t}") || $feature["${t}"] <= 0){\n return 0;\n }\n $feature["${o}"];\n $feature["${t}"];`);return[{type:"CIMPrimitiveOverride",primitiveName:a,propertyName:"Length",valueExpressionInfo:{type:"CIMExpressionInfo",title:"Custom",expression:`\n ${m}\n var value = ${u};\n\n var maxSize = ${s};\n var minSize = ${l};\n\n var minDataValue = ${i};\n var maxDataValue = ${n};\n\n var ratio = Constrain(( value - minDataValue ) / ( maxDataValue - minDataValue ), 0, 1);\n\n var size = Constrain(maxSize * ratio, minSize, maxSize);\n return size;\n `,returnType:"Default"}}]}function p(e){const{primitiveOverrides:o,baseWidth:t,defaultHeight:i}=e,l=f(e);return new r({data:{type:"CIMSymbolReference",symbol:{type:"CIMPointSymbol",effects:[{type:"CIMGeometricEffectRadial",primitiveName:a,angle:90,length:i??m},{type:"CIMGeometricEffectTaperedPolygon",fromWidth:t??s,toWidth:1,length:5}],symbolLayers:l,haloSize:1,scaleX:1,angleAlignment:"Display"},primitiveOverrides:o}})}function f(e){const o=[d(e)],t=C(e);return t&&o.push(t),o}function d(e){const{strokeColor:o,strokeWidth:r,symbolStyle:a}=e,s=a?.includes("solid-fill")||a?.includes("gradient-fill");let m=o?.toArray(),u=!1;return a?.includes("outline")&&s?u=!0:m=e.color?.toArray(),{type:"CIMSolidStroke",effects:y(a),enable:!0,colorLocked:u,capStyle:n.Round,joinStyle:l.Round,lineStyle3D:i.Strip,miterLimit:4,width:r??t(1),color:m}}function y(e){if(!e?.includes("closed"))return[{type:"CIMGeometricEffectAddControlPoints",angleTolerance:90,primitiveName:"spike-control-points"},{type:"CIMGeometricEffectSuppress",suppress:!0,invert:!0,primitiveName:"spike-stroke-suppress"}]}function C(e){const{color:o,symbolStyle:t}=e,r=t?.includes("solid-fill"),i=t?.includes("gradient-fill");if(!r&&!i||!o)return;if(r)return{type:"CIMSolidFill",enable:!0,colorLocked:!1,color:o?.toArray()};const l=o.clone();return l.a=0,{type:"CIMGradientFill",enable:!0,angle:90,colorRamp:{type:"CIMMultipartColorRamp",colorRamps:[{type:"CIMLinearContinuousColorRamp",fromColor:o.toArray(),toColor:l.toArray()}],weights:[1]},gradientMethod:"Linear",gradientSize:70,gradientSizeUnits:"Relative",gradientType:"Continuous"}}function v(t,r){const{defaultHeight:i,baseWidth:l,color:n,strokeColor:s,primitiveOverrides:m,symbolStyle:u,strokeWidth:c}=r,p="CIMPointSymbol"===t.data.symbol?.type?t.data.symbol:null;if(!p)return t;const d=p.effects,y=d?.find((e=>"CIMGeometricEffectTaperedPolygon"===e.type)),C=d?.find((e=>"CIMGeometricEffectRadial"===e.type&&e.primitiveName===a));null!=l&&y&&(y.fromWidth=l),null!=i&&C&&(C.length=i);const v=p.symbolLayers,S=v?.find((e=>"CIMSolidStroke"===e.type)),$=v?.find((e=>"CIMSolidFill"===e.type)),M=v?.find((e=>"CIMGradientFill"===e.type)),I="CIMMultipartColorRamp"===M?.colorRamp?.type&&"CIMLinearContinuousColorRamp"===M.colorRamp.colorRamps[0]?.type?M.colorRamp.colorRamps[0]:null;if(u){const o=$?.color??I?.fromColor;p.symbolLayers=f({color:n??(o?new e(o):void 0),strokeColor:s??(S?.color?new e(S.color):void 0),strokeWidth:c??S?.width,symbolStyle:u})}else if(S&&null!=s)S.color=s.toArray();else if($&&null!=n)$.color=n.toArray();else if(I&&null!=n){const e=n.clone();e.a=0,I.fromColor=n.toArray(),I.toColor=e.toArray()}return void 0!==m&&(t.data.primitiveOverrides=o(m)),t}export{c as createPrimitiveOverrides,p as createSpikeSymbol,u as defaultSpikeSymbolStyle,v as updateSpikeSymbol};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import i from"../../core/Error.js";import{isTimeOnlyField as e,numericTypes as r}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as s,verifyFieldType as a,verifyFilterValidity as t}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as n,getFieldsList as l,isAnyDateField as p,dateTypes as f}from"../support/utils.js";import{binningCapableLayerTypes as m,defaultSupportedLayerTypes as d,createLayerAdapter as u,getLayerTypeLabels as h}from"../support/adapters/support/layerUtils.js";const w=[...f,"time-only",...r];async function c(r){if(!r?.layer||!(r.field||r.valueExpression||r.sqlExpression))throw new i("histogram:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(r.valueExpression&&!r.sqlExpression&&!r.view)throw new i("histogram:missing-parameters","View is required when 'valueExpression' is specified");r.forBinning&&o(r,"histogram");const{layer:f,...c}=r,g=r.forBinning?m:d,v=u(f,g,r.forBinning);if(!v)throw new i("histogram:invalid-parameters","'layer' must be one of these types: "+h(g).join(", "));const y={layerAdapter:v,...c};y.normalizationType=n(y);const x=null!=y.signal?{signal:y.signal}:null;await v.load(x);const E=y.valueExpression||y.sqlExpression,q=y.field,j=q?v.getField(q):null,z=!y.classificationMethod||"equal-interval"===y.classificationMethod,B=await l({field:q,normalizationField:y.normalizationField,valueExpression:y.valueExpression}),b=s(v,B,"histogram:invalid-parameters");if(b)throw b;if(j){const r=a(v,j,"histogram:invalid-parameters",w);if(r)throw r;if(p(j)||e(j)){if(y.normalizationType)throw new i("histogram:invalid-parameters","Normalization is not allowed for date fields");if(!z)throw new i("histogram:invalid-parameters","'classificationMethod' other than 'equal-interval' is not allowed for date fields")}}else if(E){if(y.normalizationType)throw new i("histogram:invalid-parameters","Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified");if(!z)throw new i("histogram:invalid-parameters","'classificationMethod' other than 'equal-interval' is not allowed when 'valueExpression' or 'sqlExpression' is specified")}y.filter&&!y.filter.spatialRelationship&&(y.filter.spatialRelationship="intersects");const A=t(y.filter,"histogram:invalid-parameters");if(A)throw A;return null==y.useQueryAttributeBins&&(y.useQueryAttributeBins=!0),y}async function g(i){const{layerAdapter:e,...r}=await c(i);return e.histogram(r)}export{g as default};
5
+ import i from"../../core/Error.js";import{isTimeOnlyField as e,numericTypes as r}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as s,verifyFieldType as a,verifyFilterValidity as t}from"./support/utils.js";import{verifyBinningParams as o}from"../support/binningUtils.js";import{getNormalizationType as n,getFieldsList as l,isAnyDateField as p,dateTypes as m}from"../support/utils.js";import{defaultSupportedLayerTypes as f,LayerType as d,binningCapableLayerTypes as u,createLayerAdapter as h,getLayerTypeLabels as w}from"../support/adapters/support/layerUtils.js";const c=[...m,"time-only",...r];async function g(r){if(!r?.layer||!(r.field||r.valueExpression||r.sqlExpression))throw new i("histogram:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(r.valueExpression&&!r.sqlExpression&&!r.view)throw new i("histogram:missing-parameters","View is required when 'valueExpression' is specified");r.forBinning&&o(r,"histogram");const{layer:m,...g}=r,v=[...f,d.ImageryLayer],y=r.forBinning?u:v,x=h(m,y,r.forBinning);if(!x)throw new i("histogram:invalid-parameters","'layer' must be one of these types: "+w(y).join(", "));const E={layerAdapter:x,...g};E.normalizationType=n(E);const q=null!=E.signal?{signal:E.signal}:null;await x.load(q);const j=E.valueExpression||E.sqlExpression,z=E.field,B=z?x.getField(z):null,b=!E.classificationMethod||"equal-interval"===E.classificationMethod,A=await l({field:z,normalizationField:E.normalizationField,valueExpression:E.valueExpression}),M=s(x,A,"histogram:invalid-parameters");if(M)throw M;if(B){const r=a(x,B,"histogram:invalid-parameters",c);if(r)throw r;if(p(B)||e(B)){if(E.normalizationType)throw new i("histogram:invalid-parameters","Normalization is not allowed for date fields");if(!b)throw new i("histogram:invalid-parameters","'classificationMethod' other than 'equal-interval' is not allowed for date fields")}}else if(j){if(E.normalizationType)throw new i("histogram:invalid-parameters","Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified");if(!b)throw new i("histogram:invalid-parameters","'classificationMethod' other than 'equal-interval' is not allowed when 'valueExpression' or 'sqlExpression' is specified")}E.filter&&!E.filter.spatialRelationship&&(E.filter.spatialRelationship="intersects");const F=t(E.filter,"histogram:invalid-parameters");if(F)throw F;return null==E.useQueryAttributeBins&&(E.useQueryAttributeBins=!0),E}async function v(i){const{layerAdapter:e,...r}=await g(i);return e.histogram(r)}export{v 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.34/esri/copyright.txt for details.
4
4
  */
5
- import s from"../../core/Error.js";import{isTimeOnlyField as i,numericTypes as r}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as t,verifyFieldType as e,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as n}from"../support/binningUtils.js";import{getNormalizationType as o,getFieldsList as l,isAnyDateField as p,dateTypes as m}from"../support/utils.js";import{binningCapableLayerTypes as u,defaultSupportedLayerTypes as f,createLayerAdapter as d,getLayerTypeLabels as c}from"../support/adapters/support/layerUtils.js";const y=[...r,...m,"time-only","string"];async function w(r){if(!r?.layer||!(r.field||r.valueExpression||r.sqlExpression))throw new s("summary-statistics:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(r.valueExpression&&!r.sqlExpression&&!r.view)throw new s("summary-statistics:missing-parameters","View is required when 'valueExpression' is specified");r.forBinning&&n(r,"summary-statistics");const{layer:m,...w}=r,v=r.forBinning?u:f,x=d(m,v,r.forBinning);if(!x)throw new s("summary-statistics:invalid-parameters","'layer' must be one of these types: "+c(v).join(", "));const E={layerAdapter:x,...w};E.normalizationType=o(E);const h=null!=E.signal?{signal:E.signal}:null;await x.load(h);const g=E.field,j=E.normalizationType,q=E.valueExpression||E.sqlExpression,z=g?x.getField(g):null,B=await l({field:E.field,normalizationField:E.normalizationField,valueExpression:E.valueExpression}),F=t(x,B,"summary-statistics:invalid-parameters");if(F)throw F;if(z){const r=e(x,z,"summary-statistics:invalid-parameters",y);if(r)throw r;if((p(z)||i(z))&&j)throw new s("summary-statistics:invalid-parameters","Normalization is not allowed for date fields")}else if(q&&j)throw new s("summary-statistics:invalid-parameters","Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified");E.filter&&!E.filter.spatialRelationship&&(E.filter.spatialRelationship="intersects");const U=a(E.filter,"summary-statistics:invalid-parameters");if(U)throw U;return E}async function v(s){const{layerAdapter:i,...r}=await w(s);return i.summaryStatistics(r)}export{v as default};
5
+ import s from"../../core/Error.js";import{isTimeOnlyField as i,numericTypes as r}from"../../layers/support/fieldUtils.js";import{verifyBasicFieldValidity as t,verifyFieldType as e,verifyFilterValidity as a}from"./support/utils.js";import{verifyBinningParams as n}from"../support/binningUtils.js";import{getNormalizationType as o,getFieldsList as l,isAnyDateField as p,dateTypes as m}from"../support/utils.js";import{defaultSupportedLayerTypes as u,LayerType as f,binningCapableLayerTypes as d,createLayerAdapter as c,getLayerTypeLabels as y}from"../support/adapters/support/layerUtils.js";const w=[...r,...m,"time-only","string"];async function v(r){if(!r?.layer||!(r.field||r.valueExpression||r.sqlExpression))throw new s("summary-statistics:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(r.valueExpression&&!r.sqlExpression&&!r.view)throw new s("summary-statistics:missing-parameters","View is required when 'valueExpression' is specified");r.forBinning&&n(r,"summary-statistics");const{layer:m,...v}=r,x=[...u,f.ImageryLayer],E=r.forBinning?d:x,h=c(m,E,r.forBinning);if(!h)throw new s("summary-statistics:invalid-parameters","'layer' must be one of these types: "+y(E).join(", "));const g={layerAdapter:h,...v};g.normalizationType=o(g);const j=null!=g.signal?{signal:g.signal}:null;await h.load(j);const q=g.field,z=g.normalizationType,B=g.valueExpression||g.sqlExpression,F=q?h.getField(q):null,U=await l({field:g.field,normalizationField:g.normalizationField,valueExpression:g.valueExpression}),b=t(h,U,"summary-statistics:invalid-parameters");if(b)throw b;if(F){const r=e(h,F,"summary-statistics:invalid-parameters",w);if(r)throw r;if((p(F)||i(F))&&z)throw new s("summary-statistics:invalid-parameters","Normalization is not allowed for date fields")}else if(B&&z)throw new s("summary-statistics:invalid-parameters","Normalization is not allowed when 'valueExpression' or 'sqlExpression' is specified");g.filter&&!g.filter.spatialRelationship&&(g.filter.spatialRelationship="intersects");const A=a(g.filter,"summary-statistics:invalid-parameters");if(A)throw A;return g}async function x(s){const{layerAdapter:i,...r}=await v(s);return i.summaryStatistics(r)}export{x 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.34/esri/copyright.txt for details.
4
4
  */
5
- import"../kernel.js";import"../core/urlUtils.js";import"../portal/support/urlUtils.js";export{M as MarkKeep,e as ensureMainOnlineDomain,c as fromCDNUrl,f as fromJSON,i as itemIdFromResourceUrl,b as prefixAndFilenameFromResourceUrl,r as read,a as toCDNUrl,t as toJSON,w as write}from"../chunks/persistableUrlUtils.js";
5
+ import"../kernel.js";import"../core/urlUtils.js";import"../portal/support/urlUtils.js";export{M as MarkKeep,e as ensureMainOnlineDomain,c as fromCDNUrl,f as fromJSON,i as itemIdFromResourceUrl,p as prefixAndFilenameFromResourceUrl,r as read,a as toCDNUrl,t as toJSON,w as write}from"../chunks/persistableUrlUtils.js";
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- const c="20250522",a="c88859ffb1adca4fbc44810a027c7fbd7b79885a";export{c as buildDate,a as commitHash};
5
+ const e="20250523",a="8614aed1e5852a6a30a7c5ee22f1c05c98e3bc5a";export{e 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.34/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../Viewpoint.js";import i from"../../core/Accessor.js";import s from"../../core/Error.js";import has from"../../core/has.js";import r from"../../core/Logger.js";import{watch as o,sync as n}from"../../core/reactiveUtils.js";import{createScreenPoint as a}from"../../core/screenUtils.js";import c from"../../core/Warning.js";import{property as p}from"../../core/accessorSupport/decorators/property.js";import"../../core/RandomLCG.js";import{subclass as h}from"../../core/accessorSupport/decorators/subclass.js";import l from"../../geometry/Extent.js";import{i as d}from"../../chunks/pe.js";import v from"../../geometry/Point.js";import{project as u}from"../../geometry/projection.js";import{equals as m}from"../../geometry/support/spatialReferenceUtils.js";import g from"./PaddedViewState.js";import{centerAt as w,setExtent as f,rotateTo as y,scaleTo as _,copy as j,extentToScale as x,angleBetween as S,resize as R}from"./viewpointUtils.js";let z=class extends i{constructor(t){super(t),this.constraints=null,this.ready=!1,this.resizeAlign="center",this.addHandles([o((()=>this.constraints?.version),(t=>{this.constraints&&t&&this.ready&&(this.state.viewpoint=this.constraints.fit(this.state.paddedViewState.viewpoint))}),n)])}get center(){if(!this.ready)return this._get("center");const{center:t,spatialReference:e}=this.state.paddedViewState;return this.state.commitProperty("id"),new v({x:t[0],y:t[1],spatialReference:e})}set center(t){if(null==t)return;if(!this.ready)return void this._set("center",t);let e;try{e=this._project(t,this.state.spatialReference)}catch(o){return void r.getLogger(this).error(new s("mapview:invalid-center","could not project the value in the view's spatial reference",{input:t,error:o}))}const i=this.viewpoint;w(i,i,e),this.viewpoint=i}get extent(){return this.ready?(this.state.commitProperty("id"),this.state.paddedViewState.extent.clone()):this._get("extent")}set extent(t){if(null==t)return;if(!t.width||!t.height)return void r.getLogger(this).error(new s("mapview:invalid-extent","invalid extent size"));if(!this.ready)return this._set("extent",t),this._set("center",void 0),this._set("viewpoint",void 0),this._set("scale",void 0),void this._set("zoom",void 0);let e;try{e=this._project(t,this.state.spatialReference)}catch(o){return void r.getLogger(this).error(new s("mapview:invalid-extent","could not project the value in the view's spatial reference",{error:o}))}const i=this.viewpoint;f(i,i,e,this.state.size,{constraints:this.constraints}),this.viewpoint=i}get padding(){return this.ready?this.state.padding:this._get("padding")}set padding(t){this.ready?(this.state.padding=t,this._set("padding",this.state.padding)):this._set("padding",t)}get resolution(){return this.ready?(this.state.commitProperty("id"),this.state.resolution):0}get rotation(){return this.ready?(this.state.commitProperty("id"),this.state.rotation):this._get("rotation")}set rotation(t){if(isNaN(t))return;if(!this.ready)return void this._set("rotation",t);const e=this.viewpoint;y(e,e,t),this.viewpoint=e}get scale(){return this.ready?(this.state.commitProperty("id"),this.state.scale):this._get("scale")}set scale(t){if(!t||isNaN(t))return;if(!this.ready){this._set("scale",t),this._set("zoom",void 0);const e=this._get("extent");return void(e&&(this._set("extent",void 0),this._set("center",e.center)))}const e=this.viewpoint;_(e,e,t),this.viewpoint=e}get viewpoint(){if(!this.ready)return this._get("viewpoint");return this.state.paddedViewState.viewpoint.clone()}set viewpoint(t){if(null==t)return;if(!this.ready)return this._set("viewpoint",t),this._set("extent",void 0),this._set("center",void 0),this._set("zoom",void 0),void this._set("scale",void 0);let i,o;try{i=this._project(t,this.state.spatialReference),!t.scale||isNaN(t.scale)?o=new s("mapview:invalid-viewpoint",`invalid scale value of ${t.scale}`):null==t.targetGeometry&&(o=new s("mapview:invalid-viewpoint","geometry not defined"))}catch(a){o=new s("mapview:invalid-viewpoint","could not project the value in the view's spatial reference",{error:a})}if(o)return void r.getLogger(this).error(o);this._scaleBeforeChangingSpatialReference=null;const n=new e({targetGeometry:new v,scale:0,rotation:0});j(n,i),this.constraints?.constrain(n,this.state.paddedViewState.viewpoint),this.state.viewpoint=n,this._set("viewpoint",n)}get visibleArea(){return this.ready?this.state.visibleArea:null}get zoom(){return this.ready?this.constraints?.scaleToZoom(this.scale)??-1:this._get("zoom")}set zoom(t){if(!(t>=0))return;if(!this.ready){this._set("zoom",t),this._set("scale",void 0);const e=this._get("extent");return void(e&&(this._set("extent",void 0),this._set("center",e.center)))}const e=this.constraints?.zoomToScale(t)??0;if(!e)return void this._set("zoom",-1);const i=this.viewpoint;_(i,i,e),this.viewpoint=i,this._set("zoom",this.constraints?.scaleToZoom(this.scale)??-1)}getUserStartupOptions(t){if(!t[0]&&!t[1])return{center:void 0,rotation:void 0,scale:void 0};const{padding:e,constraints:i}=this,s=this._get("center"),r=this._get("extent"),o=this._get("scale"),n=this._get("rotation"),a=this._get("viewpoint"),c=this._get("zoom"),p=null!=c&&null!=i&&i.zoomToScale(c)||void 0;let h,l,d;const v=a?.rotation,u=a?.targetGeometry;"extent"===u?.type?h=u:"point"===u?.type&&(l=u,d=a?.scale);const m=r??h;return{center:s??l??m?.center,rotation:n??v,scale:(o??p??d??(m&&x(m,[t[0]-e.left-e.right,t[1]-e.top-e.bottom])))||void 0}}startup(t,e,i,s){const o=t.targetGeometry;try{this._project(t,i)}catch(n){r.getLogger(this).warn(new c("mapview:startup-projection-error","projection of initial viewpoint to the view's spatial reference, defaulting to the initial viewpoint.",{center:o.toJSON(),spatialReference:i,error:n})),t.targetGeometry=s||new v({x:0,y:0,spatialReference:i})}this.constraints?.fit(t),this._set("state",new g({padding:this.padding,size:e,viewpoint:t})),this._set("ready",!0)}teardown(){this._set("ready",!1);const{center:[t,e],spatialReference:i,rotation:s,scale:r}=this.state.paddedViewState,o=new v({x:t,y:e,spatialReference:i});this._set("viewpoint",null),this._set("extent",null),this._set("center",o),this._set("zoom",-1),this._set("rotation",s),this._set("scale",r),this._set("state",null)}changeSpatialReference(t){const i=this.state.paddedViewState.clone();if(null==this._scaleBeforeChangingSpatialReference)this._scaleBeforeChangingSpatialReference=i.scale;else{const t=i.viewpoint.clone();t.scale=this._scaleBeforeChangingSpatialReference,i.viewpoint=t}const s=i.clone(),[o,n]=i.center;let a=null;try{a=this._project(new v({x:o,y:n,spatialReference:i.spatialReference}),t)}catch(h){d()||r.getLogger(this).warn(new c("mapview:spatial-reference-change","could not project the view's center to the new spatial reference",{center:a?.toJSON(),spatialReference:t,error:h}))}a||(a=new v({x:0,y:0,spatialReference:t}));const p=w(new e({targetGeometry:new v,scale:0,rotation:0}),i.viewpoint,a);s.viewpoint=p;try{const e=20,r=[i.size[0]/2,i.size[1]/2],o=[r[0]+e,r[1]],n=i.toMap([0,0],o),{x:a,y:c}=this._project(new v({x:n[0],y:n[1],spatialReference:i.spatialReference}),t);n[0]=a,n[1]=c,s.toScreen(n,n);const h=S(r,n,o),l=Math.hypot(n[0]-r[0],n[1]-r[1])/e;!Number.isFinite(l)||Math.abs(l)>4?(p.rotation=0,p.targetGeometry=new v({x:0,y:0,spatialReference:t})):(p.scale*=l,p.scale>has("mapview-srswitch-adjust-rotation-scale-threshold")?p.rotation=0:p.rotation+=Number.isFinite(h)?h:0)}catch{}this._get("constraints")?.constrain(p,void 0),this._get("state").viewpoint=p}resize(t,e){if(!this.ready)return;const i=this.state;let s=this.state.paddedViewState.viewpoint;const r=this.state.paddedViewState.size.slice();i.size=[t,e],R(s,s,r,this.state.paddedViewState.size,this.resizeAlign),s=this.constraints?.constrain(s,void 0)??s,this.state.viewpoint=s}toMap(t){if(!this.ready)return null;const e=[0,0],[i,s]=this.state.toMap(e,[t.x,t.y]),r=this.state.spatialReference;return new v({x:i,y:s,spatialReference:r})}toScreen(t,e){if(!this.ready)return null;const i=this._project(t,this.state.spatialReference),s=[i.x,i.y];return!1===e?.pickClosestTarget||this.state.paddedViewState.wrapMapCoordinate(s,s),this.state.toScreen(s,s),a(s[0],s[1])}_project(t,e){const i=t?.targetGeometry||t;if(!e)return t;if(!i)return null;if(e.imageCoordinateSystem||i.spatialReference?.imageCoordinateSystem)return t;if(m(e,i.spatialReference))return t;const r=u(i,e);if(!r)throw new s("mapview:projection-not-possible","projecting input geometry to target spatial reference returned a null value",{geometry:i,spatialReference:e});return V(t)?(t.targetGeometry=r,t):r}};function V(t){return"esri.Viewpoint"===t?.declaredClass}t([p({type:v})],z.prototype,"center",null),t([p()],z.prototype,"constraints",void 0),t([p({type:l})],z.prototype,"extent",null),t([p({value:{top:0,right:0,bottom:0,left:0},cast:t=>({top:0,right:0,bottom:0,left:0,...t})})],z.prototype,"padding",null),t([p()],z.prototype,"ready",void 0),t([p()],z.prototype,"resizeAlign",void 0),t([p({readOnly:!0})],z.prototype,"resolution",null),t([p({type:Number})],z.prototype,"rotation",null),t([p({type:Number})],z.prototype,"scale",null),t([p({readOnly:!0})],z.prototype,"state",void 0),t([p({type:e})],z.prototype,"viewpoint",null),t([p({readOnly:!0})],z.prototype,"visibleArea",null),t([p()],z.prototype,"zoom",null),z=t([h("esri.views.2d.ViewStateManager")],z);export{z as ViewStateManager};
5
+ import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../Viewpoint.js";import i from"../../core/Accessor.js";import s from"../../core/Error.js";import has from"../../core/has.js";import r from"../../core/Logger.js";import{watch as o,sync as n}from"../../core/reactiveUtils.js";import{createScreenPoint as a}from"../../core/screenUtils.js";import c from"../../core/Warning.js";import{property as p}from"../../core/accessorSupport/decorators/property.js";import"../../core/RandomLCG.js";import{subclass as h}from"../../core/accessorSupport/decorators/subclass.js";import l from"../../geometry/Extent.js";import{i as d}from"../../chunks/pe.js";import v from"../../geometry/Point.js";import{project as u}from"../../geometry/projectionUtils.js";import{equals as m}from"../../geometry/support/spatialReferenceUtils.js";import g from"./PaddedViewState.js";import{centerAt as w,setExtent as f,rotateTo as y,scaleTo as _,copy as j,extentToScale as x,angleBetween as S,resize as R}from"./viewpointUtils.js";let z=class extends i{constructor(t){super(t),this.constraints=null,this.ready=!1,this.resizeAlign="center",this.addHandles([o((()=>this.constraints?.version),(t=>{this.constraints&&t&&this.ready&&(this.state.viewpoint=this.constraints.fit(this.state.paddedViewState.viewpoint))}),n)])}get center(){if(!this.ready)return this._get("center");const{center:t,spatialReference:e}=this.state.paddedViewState;return this.state.commitProperty("id"),new v({x:t[0],y:t[1],spatialReference:e})}set center(t){if(null==t)return;if(!this.ready)return void this._set("center",t);let e;try{e=this._project(t,this.state.spatialReference)}catch(o){return void r.getLogger(this).error(new s("mapview:invalid-center","could not project the value in the view's spatial reference",{input:t,error:o}))}const i=this.viewpoint;w(i,i,e),this.viewpoint=i}get extent(){return this.ready?(this.state.commitProperty("id"),this.state.paddedViewState.extent.clone()):this._get("extent")}set extent(t){if(null==t)return;if(!t.width||!t.height)return void r.getLogger(this).error(new s("mapview:invalid-extent","invalid extent size"));if(!this.ready)return this._set("extent",t),this._set("center",void 0),this._set("viewpoint",void 0),this._set("scale",void 0),void this._set("zoom",void 0);let e;try{e=this._project(t,this.state.spatialReference)}catch(o){return void r.getLogger(this).error(new s("mapview:invalid-extent","could not project the value in the view's spatial reference",{error:o}))}const i=this.viewpoint;f(i,i,e,this.state.size,{constraints:this.constraints}),this.viewpoint=i}get padding(){return this.ready?this.state.padding:this._get("padding")}set padding(t){this.ready?(this.state.padding=t,this._set("padding",this.state.padding)):this._set("padding",t)}get resolution(){return this.ready?(this.state.commitProperty("id"),this.state.resolution):0}get rotation(){return this.ready?(this.state.commitProperty("id"),this.state.rotation):this._get("rotation")}set rotation(t){if(isNaN(t))return;if(!this.ready)return void this._set("rotation",t);const e=this.viewpoint;y(e,e,t),this.viewpoint=e}get scale(){return this.ready?(this.state.commitProperty("id"),this.state.scale):this._get("scale")}set scale(t){if(!t||isNaN(t))return;if(!this.ready){this._set("scale",t),this._set("zoom",void 0);const e=this._get("extent");return void(e&&(this._set("extent",void 0),this._set("center",e.center)))}const e=this.viewpoint;_(e,e,t),this.viewpoint=e}get viewpoint(){if(!this.ready)return this._get("viewpoint");return this.state.paddedViewState.viewpoint.clone()}set viewpoint(t){if(null==t)return;if(!this.ready)return this._set("viewpoint",t),this._set("extent",void 0),this._set("center",void 0),this._set("zoom",void 0),void this._set("scale",void 0);let i,o;try{i=this._project(t,this.state.spatialReference),!t.scale||isNaN(t.scale)?o=new s("mapview:invalid-viewpoint",`invalid scale value of ${t.scale}`):null==t.targetGeometry&&(o=new s("mapview:invalid-viewpoint","geometry not defined"))}catch(a){o=new s("mapview:invalid-viewpoint","could not project the value in the view's spatial reference",{error:a})}if(o)return void r.getLogger(this).error(o);this._scaleBeforeChangingSpatialReference=null;const n=new e({targetGeometry:new v,scale:0,rotation:0});j(n,i),this.constraints?.constrain(n,this.state.paddedViewState.viewpoint),this.state.viewpoint=n,this._set("viewpoint",n)}get visibleArea(){return this.ready?this.state.visibleArea:null}get zoom(){return this.ready?this.constraints?.scaleToZoom(this.scale)??-1:this._get("zoom")}set zoom(t){if(!(t>=0))return;if(!this.ready){this._set("zoom",t),this._set("scale",void 0);const e=this._get("extent");return void(e&&(this._set("extent",void 0),this._set("center",e.center)))}const e=this.constraints?.zoomToScale(t)??0;if(!e)return void this._set("zoom",-1);const i=this.viewpoint;_(i,i,e),this.viewpoint=i,this._set("zoom",this.constraints?.scaleToZoom(this.scale)??-1)}getUserStartupOptions(t){if(!t[0]&&!t[1])return{center:void 0,rotation:void 0,scale:void 0};const{padding:e,constraints:i}=this,s=this._get("center"),r=this._get("extent"),o=this._get("scale"),n=this._get("rotation"),a=this._get("viewpoint"),c=this._get("zoom"),p=null!=c&&null!=i&&i.zoomToScale(c)||void 0;let h,l,d;const v=a?.rotation,u=a?.targetGeometry;"extent"===u?.type?h=u:"point"===u?.type&&(l=u,d=a?.scale);const m=r??h;return{center:s??l??m?.center,rotation:n??v,scale:(o??p??d??(m&&x(m,[t[0]-e.left-e.right,t[1]-e.top-e.bottom])))||void 0}}startup(t,e,i,s){const o=t.targetGeometry;try{this._project(t,i)}catch(n){r.getLogger(this).warn(new c("mapview:startup-projection-error","projection of initial viewpoint to the view's spatial reference, defaulting to the initial viewpoint.",{center:o.toJSON(),spatialReference:i,error:n})),t.targetGeometry=s||new v({x:0,y:0,spatialReference:i})}this.constraints?.fit(t),this._set("state",new g({padding:this.padding,size:e,viewpoint:t})),this._set("ready",!0)}teardown(){this._set("ready",!1);const{center:[t,e],spatialReference:i,rotation:s,scale:r}=this.state.paddedViewState,o=new v({x:t,y:e,spatialReference:i});this._set("viewpoint",null),this._set("extent",null),this._set("center",o),this._set("zoom",-1),this._set("rotation",s),this._set("scale",r),this._set("state",null)}changeSpatialReference(t){const i=this.state.paddedViewState.clone();if(null==this._scaleBeforeChangingSpatialReference)this._scaleBeforeChangingSpatialReference=i.scale;else{const t=i.viewpoint.clone();t.scale=this._scaleBeforeChangingSpatialReference,i.viewpoint=t}const s=i.clone(),[o,n]=i.center;let a=null;try{a=this._project(new v({x:o,y:n,spatialReference:i.spatialReference}),t)}catch(h){d()||r.getLogger(this).warn(new c("mapview:spatial-reference-change","could not project the view's center to the new spatial reference",{center:a?.toJSON(),spatialReference:t,error:h}))}a||(a=new v({x:0,y:0,spatialReference:t}));const p=w(new e({targetGeometry:new v,scale:0,rotation:0}),i.viewpoint,a);s.viewpoint=p;try{const e=20,r=[i.size[0]/2,i.size[1]/2],o=[r[0]+e,r[1]],n=i.toMap([0,0],o),{x:a,y:c}=this._project(new v({x:n[0],y:n[1],spatialReference:i.spatialReference}),t);n[0]=a,n[1]=c,s.toScreen(n,n);const h=S(r,n,o),l=Math.hypot(n[0]-r[0],n[1]-r[1])/e;!Number.isFinite(l)||Math.abs(l)>4?(p.rotation=0,p.targetGeometry=new v({x:0,y:0,spatialReference:t})):(p.scale*=l,p.scale>has("mapview-srswitch-adjust-rotation-scale-threshold")?p.rotation=0:p.rotation+=Number.isFinite(h)?h:0)}catch{}this._get("constraints")?.constrain(p,void 0),this._get("state").viewpoint=p}resize(t,e){if(!this.ready)return;const i=this.state;let s=this.state.paddedViewState.viewpoint;const r=this.state.paddedViewState.size.slice();i.size=[t,e],R(s,s,r,this.state.paddedViewState.size,this.resizeAlign),s=this.constraints?.constrain(s,void 0)??s,this.state.viewpoint=s}toMap(t){if(!this.ready)return null;const e=[0,0],[i,s]=this.state.toMap(e,[t.x,t.y]),r=this.state.spatialReference;return new v({x:i,y:s,spatialReference:r})}toScreen(t,e){if(!this.ready)return null;const i=this._project(t,this.state.spatialReference),s=[i.x,i.y];return!1===e?.pickClosestTarget||this.state.paddedViewState.wrapMapCoordinate(s,s),this.state.toScreen(s,s),a(s[0],s[1])}_project(t,e){const i=t?.targetGeometry||t;if(!e)return t;if(!i)return null;if(e.imageCoordinateSystem||i.spatialReference?.imageCoordinateSystem)return t;if(m(e,i.spatialReference))return t;const r=u(i,e);if(!r)throw new s("mapview:projection-not-possible","projecting input geometry to target spatial reference returned a null value",{geometry:i,spatialReference:e});return V(t)?(t.targetGeometry=r,t):r}};function V(t){return"esri.Viewpoint"===t?.declaredClass}t([p({type:v})],z.prototype,"center",null),t([p()],z.prototype,"constraints",void 0),t([p({type:l})],z.prototype,"extent",null),t([p({value:{top:0,right:0,bottom:0,left:0},cast:t=>({top:0,right:0,bottom:0,left:0,...t})})],z.prototype,"padding",null),t([p()],z.prototype,"ready",void 0),t([p()],z.prototype,"resizeAlign",void 0),t([p({readOnly:!0})],z.prototype,"resolution",null),t([p({type:Number})],z.prototype,"rotation",null),t([p({type:Number})],z.prototype,"scale",null),t([p({readOnly:!0})],z.prototype,"state",void 0),t([p({type:e})],z.prototype,"viewpoint",null),t([p({readOnly:!0})],z.prototype,"visibleArea",null),t([p()],z.prototype,"zoom",null),z=t([h("esri.views.2d.ViewStateManager")],z);export{z as ViewStateManager};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Identifiable.js";import o from"../../../core/Logger.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/RandomLCG.js";import{subclass as i}from"../../../core/accessorSupport/decorators/subclass.js";import{project as n}from"../../../geometry/projection.js";import{extentContainsPoint as m,polygonContainsPoint as a}from"../../../geometry/support/contains.js";import{nearestCoordinate as c}from"../../../geometry/support/near.js";var l;let p=l=class extends(t.NumericIdentifiableMixin(r)){constructor(e){super(e),this.geometry=null,this.spatialReference=null}get normalizedGeometry(){if(null==this.geometry||!this.spatialReference)return null;if(!this.spatialReference.equals(this.geometry.spatialReference))try{return n(this.geometry,this.spatialReference)}catch(e){return o.getLogger(this).error("#constraints.geometry","could not project the geometry to the view's spatial reference",{geometry:this.geometry,spatialReference:this.spatialReference,error:e}),null}return this.geometry}constrain(e,r){if(null==this.normalizedGeometry)return e;const t=e.targetGeometry;if("extent"===this.normalizedGeometry.type?m(this.normalizedGeometry,t):a(this.normalizedGeometry,t))return e;const{coordinate:o}=c(this.normalizedGeometry,t);return o?(e.targetGeometry=o,e):e}clone(){return new l({geometry:this.geometry?.clone(),spatialReference:this.spatialReference?.clone()})}};e([s({constructOnly:!0})],p.prototype,"geometry",void 0),e([s({readOnly:!0})],p.prototype,"normalizedGeometry",null),e([s({constructOnly:!0})],p.prototype,"spatialReference",void 0),p=l=e([i("esri.views.2d.constraints.GeometryConstraint")],p);export{p as GeometryConstraint};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import r from"../../../core/Accessor.js";import t from"../../../core/Identifiable.js";import o from"../../../core/Logger.js";import{property as s}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/RandomLCG.js";import{subclass as i}from"../../../core/accessorSupport/decorators/subclass.js";import{project as n}from"../../../geometry/projectionUtils.js";import{extentContainsPoint as m,polygonContainsPoint as a}from"../../../geometry/support/contains.js";import{nearestCoordinate as c}from"../../../geometry/support/near.js";var l;let p=l=class extends(t.NumericIdentifiableMixin(r)){constructor(e){super(e),this.geometry=null,this.spatialReference=null}get normalizedGeometry(){if(null==this.geometry||!this.spatialReference)return null;if(!this.spatialReference.equals(this.geometry.spatialReference))try{return n(this.geometry,this.spatialReference)}catch(e){return o.getLogger(this).error("#constraints.geometry","could not project the geometry to the view's spatial reference",{geometry:this.geometry,spatialReference:this.spatialReference,error:e}),null}return this.geometry}constrain(e,r){if(null==this.normalizedGeometry)return e;const t=e.targetGeometry;if("extent"===this.normalizedGeometry.type?m(this.normalizedGeometry,t):a(this.normalizedGeometry,t))return e;const{coordinate:o}=c(this.normalizedGeometry,t);return o?(e.targetGeometry=o,e):e}clone(){return new l({geometry:this.geometry?.clone(),spatialReference:this.spatialReference?.clone()})}};e([s({constructOnly:!0})],p.prototype,"geometry",void 0),e([s({readOnly:!0})],p.prototype,"normalizedGeometry",null),e([s({constructOnly:!0})],p.prototype,"spatialReference",void 0),p=l=e([i("esri.views.2d.constraints.GeometryConstraint")],p);export{p as GeometryConstraint};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.34/esri/copyright.txt for details.
4
4
  */
5
- import{on as t}from"../../../../core/events.js";import e from"../../../../core/Handles.js";import{disposeMaybe as r}from"../../../../core/maybe.js";import{when as i,initial as s}from"../../../../core/reactiveUtils.js";import{createScreenPoint as o}from"../../../../core/screenUtils.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import a from"../../../../geometry/Point.js";import h from"../../../../geometry/Polygon.js";import{project as l}from"../../../../geometry/projection.js";import{DisplayObject as u}from"../DisplayObject.js";import m from"../../../layers/support/Geometry.js";import{TextureWrapMode as d}from"../../../webgl/enums.js";import{Texture as c}from"../../../webgl/Texture.js";import{TextureDescriptor as p}from"../../../webgl/TextureDescriptor.js";const f=2;class x extends u{constructor(r){super(),this.element=r,this._handles=new e,this.isWrapAround=!1,this.perspectiveTransform=n(),this.wrapAroundShift=0,this.clipGeometry=null,this._handles.add(i((()=>this.element),(()=>{const e=this.element;this.ready(),e&&this._handles.add(t(e,"play",(()=>this.requestRender())))}),s))}getMesh(t){throw new Error("Method not implemented.")}destroy(){this._handles.destroy(),this.texture=r(this.texture)}get textureSize(){if(!this.texture)return[1,1];const t=this.texture.descriptor;return[t.width,t.height]}get dvsMat3(){return this.parent.dvsMat3}beforeRender(t){const e=this.element;if(null==e)return;const{context:r}=t,{videoWidth:i,videoHeight:s}=e;if(0!==i&&0!==s){if(this.texture)e.paused||this.texture.setData(e);else{const t=new p;t.wrapMode=d.CLAMP_TO_EDGE,t.preMultiplyAlpha=!0,t.width=i,t.height=s,this.texture=new c(r,t,e)}e.paused||(this.texture.generateMipmap(),this.requestRender()),super.beforeRender(t)}}_createTransforms(){return null}updateDrawCoords(t,e,r,i){const s=this.element,o=this._getFrameInfo();if(!s||!o)return;this._initializeData(t,o,r);const{controlPoints:n,horizon:a}=o,u=Math.sqrt(n.length),d=u,{x:c,y:p}=t,x=this._vertices,y=n[0],g=n[u-1],P=n[(d-1)*u],w=n[(d-1)*u+u-1],_=l(a?a[0].mapPoint:y.mapPoint,r),v=l(a?a[1].mapPoint:g.mapPoint,r),j=l(P.mapPoint,r),A=l(w.mapPoint,r);this.clipGeometry=a?new m({geometry:h.fromJSON({rings:[[[j.x,j.y],[A.x,A.y],[v.x,v.y],[_.x,_.y],[j.x,j.y]]],spatialReference:r})}):null;for(let h=0;h<n.length;h++){const t=n[h],{sourcePoint:e,mapPoint:i}=t;if(null==e||null==i)continue;const s=l(i,r);x[h*f+0]=s.x-c,x[h*f+1]=s.y-p}let M=e;if(i){const t=Math.min(_.x,v.x,j.x,A.x),e=Math.max(_.x,v.x,j.x,A.x),{worldWidth:r,xBounds:s}=i,[o,n]=s;t<o&&e>o?M=r:e>n&&t<n&&(M=-r)}this.wrapAroundShift=M,this.isWrapAround=0!==M}draw(t,e){this.visible&&(this.isReady&&this._vertices&&this._indices&&this._texCoords?e.render(t,{transform:{dvs:this.dvsMat3},config:{perspective:this.perspectiveTransform,texSize:this.textureSize,wrapAroundShift:this.wrapAroundShift,isWrapAround:this.isWrapAround,opacity:this.opacity,texture:{texture:this.texture,unit:0}},position:this._vertices,tex:this._texCoords,index:this._indices}):this.requestRender())}_initializeData(t,e,r){if(null!=this._vertices&&null!=this._indices)return;const{controlPoints:i}=e,s=Math.sqrt(i.length),o=s,n=new Float32Array(f*i.length),a=new Uint16Array(2*i.length);for(let m=0;m<i.length;m++){const e=i[m],{sourcePoint:s,mapPoint:o}=e;if(null==s||null==o)continue;const h=l(o,r);n[m*f+0]=h.x-t.x,n[m*f+1]=h.y-t.y,a[2*m+0]=s.x,a[2*m+1]=s.y}const h=new Uint16Array(o*s+(o-2)*(s+2));let u=0;for(let l=0;l<o;l++){for(let t=0;t<s;t++)h[u++]=l*s+t,h[u++]=(l+1)*s+t;l<o-2&&(h[u++]=(l+1)*s+(s-1),h[u++]=(l+1)*s)}this._vertices=n,this._texCoords=a,this._indices=h}_getFrameInfo(){if(!this.groundControlPoints)return null;const t=this._getFrameControlPoints(),e=this.frameHorizonPoints;let r=null;if(e){const t=e.startX,i=e.startY,s=e.endX,n=e.endY;r=[{sourcePoint:o(t,i),mapPoint:new a(e.startLongitude,e.startLatitude)},{sourcePoint:o(s,n),mapPoint:new a(e.endLongitude,e.endLatitude)}]}return{controlPoints:t,horizon:r}}_getFrameControlPoints(){const t=this.groundControlPoints,e=t?.length;if(!e)return[];const r=new Array(e),i=Math.max(...t.map((({x:t})=>t))),s=this.element.videoWidth/i;for(let n=0;n<e;n++){const{x:e,y:i,lat:h,lon:l}=t[n];r[n]={sourcePoint:o(e*s,-i*s),mapPoint:new a(l,h)}}return r}}export{x as default};
5
+ import{on as t}from"../../../../core/events.js";import e from"../../../../core/Handles.js";import{disposeMaybe as r}from"../../../../core/maybe.js";import{when as i,initial as s}from"../../../../core/reactiveUtils.js";import{createScreenPoint as o}from"../../../../core/screenUtils.js";import{create as n}from"../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import a from"../../../../geometry/Point.js";import h from"../../../../geometry/Polygon.js";import{project as l}from"../../../../geometry/projectionUtils.js";import{DisplayObject as u}from"../DisplayObject.js";import m from"../../../layers/support/Geometry.js";import{TextureWrapMode as d}from"../../../webgl/enums.js";import{Texture as c}from"../../../webgl/Texture.js";import{TextureDescriptor as p}from"../../../webgl/TextureDescriptor.js";const f=2;class x extends u{constructor(r){super(),this.element=r,this._handles=new e,this.isWrapAround=!1,this.perspectiveTransform=n(),this.wrapAroundShift=0,this.clipGeometry=null,this._handles.add(i((()=>this.element),(()=>{const e=this.element;this.ready(),e&&this._handles.add(t(e,"play",(()=>this.requestRender())))}),s))}getMesh(t){throw new Error("Method not implemented.")}destroy(){this._handles.destroy(),this.texture=r(this.texture)}get textureSize(){if(!this.texture)return[1,1];const t=this.texture.descriptor;return[t.width,t.height]}get dvsMat3(){return this.parent.dvsMat3}beforeRender(t){const e=this.element;if(null==e)return;const{context:r}=t,{videoWidth:i,videoHeight:s}=e;if(0!==i&&0!==s){if(this.texture)e.paused||this.texture.setData(e);else{const t=new p;t.wrapMode=d.CLAMP_TO_EDGE,t.preMultiplyAlpha=!0,t.width=i,t.height=s,this.texture=new c(r,t,e)}e.paused||(this.texture.generateMipmap(),this.requestRender()),super.beforeRender(t)}}_createTransforms(){return null}updateDrawCoords(t,e,r,i){const s=this.element,o=this._getFrameInfo();if(!s||!o)return;this._initializeData(t,o,r);const{controlPoints:n,horizon:a}=o,u=Math.sqrt(n.length),d=u,{x:c,y:p}=t,x=this._vertices,y=n[0],g=n[u-1],P=n[(d-1)*u],w=n[(d-1)*u+u-1],_=l(a?a[0].mapPoint:y.mapPoint,r),v=l(a?a[1].mapPoint:g.mapPoint,r),j=l(P.mapPoint,r),A=l(w.mapPoint,r);this.clipGeometry=a?new m({geometry:h.fromJSON({rings:[[[j.x,j.y],[A.x,A.y],[v.x,v.y],[_.x,_.y],[j.x,j.y]]],spatialReference:r})}):null;for(let h=0;h<n.length;h++){const t=n[h],{sourcePoint:e,mapPoint:i}=t;if(null==e||null==i)continue;const s=l(i,r);x[h*f+0]=s.x-c,x[h*f+1]=s.y-p}let M=e;if(i){const t=Math.min(_.x,v.x,j.x,A.x),e=Math.max(_.x,v.x,j.x,A.x),{worldWidth:r,xBounds:s}=i,[o,n]=s;t<o&&e>o?M=r:e>n&&t<n&&(M=-r)}this.wrapAroundShift=M,this.isWrapAround=0!==M}draw(t,e){this.visible&&(this.isReady&&this._vertices&&this._indices&&this._texCoords?e.render(t,{transform:{dvs:this.dvsMat3},config:{perspective:this.perspectiveTransform,texSize:this.textureSize,wrapAroundShift:this.wrapAroundShift,isWrapAround:this.isWrapAround,opacity:this.opacity,texture:{texture:this.texture,unit:0}},position:this._vertices,tex:this._texCoords,index:this._indices}):this.requestRender())}_initializeData(t,e,r){if(null!=this._vertices&&null!=this._indices)return;const{controlPoints:i}=e,s=Math.sqrt(i.length),o=s,n=new Float32Array(f*i.length),a=new Uint16Array(2*i.length);for(let m=0;m<i.length;m++){const e=i[m],{sourcePoint:s,mapPoint:o}=e;if(null==s||null==o)continue;const h=l(o,r);n[m*f+0]=h.x-t.x,n[m*f+1]=h.y-t.y,a[2*m+0]=s.x,a[2*m+1]=s.y}const h=new Uint16Array(o*s+(o-2)*(s+2));let u=0;for(let l=0;l<o;l++){for(let t=0;t<s;t++)h[u++]=l*s+t,h[u++]=(l+1)*s+t;l<o-2&&(h[u++]=(l+1)*s+(s-1),h[u++]=(l+1)*s)}this._vertices=n,this._texCoords=a,this._indices=h}_getFrameInfo(){if(!this.groundControlPoints)return null;const t=this._getFrameControlPoints(),e=this.frameHorizonPoints;let r=null;if(e){const t=e.startX,i=e.startY,s=e.endX,n=e.endY;r=[{sourcePoint:o(t,i),mapPoint:new a(e.startLongitude,e.startLatitude)},{sourcePoint:o(s,n),mapPoint:new a(e.endLongitude,e.endLatitude)}]}return{controlPoints:t,horizon:r}}_getFrameControlPoints(){const t=this.groundControlPoints,e=t?.length;if(!e)return[];const r=new Array(e),i=Math.max(...t.map((({x:t})=>t))),s=this.element.videoWidth/i;for(let n=0;n<e;n++){const{x:e,y:i,lat:h,lon:l}=t[n];r[n]={sourcePoint:o(e*s,-i*s),mapPoint:new a(l,h)}}return r}}export{x 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.34/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../core/Handles.js";import{deg2rad as t}from"../../../core/mathUtils.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{watch as i,initial as s}from"../../../core/reactiveUtils.js";import{convertUnit as n}from"../../../core/unitUtils.js";import{fromRotation as o,translate as a,rotate as l,scaleByVec2 as m}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as c}from"../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{set as h,sub as p,scale as d,rotate as u}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{ZEROS as f}from"../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{create as j}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{isLoadedOrLoadFor as _,project as g}from"../../../geometry/projection.js";import{getClosestDenormalizedXToReference as C}from"../../../geometry/support/normalizeUtils.js";import{getResolutionForScale as R}from"../../../geometry/support/scaleUtils.js";import{equals as v}from"../../../geometry/support/spatialReferenceUtils.js";import{DisplayObject as U}from"../engine/DisplayObject.js";import{WGLDrawPhase as y}from"../engine/webgl/enums.js";import{GridTechnique as S}from"../engine/webgl/shaderGraph/techniques/grid/GridTechnique.js";import{minimumPixelsPerStrideForDisplayWhenScalingOff as b}from"./constants.js";import{measureMetersPerUnitAtReferencePoint as L,getScaleFactor as P}from"./gridUtils.js";const x=j();class w extends U{constructor(){super(),this._handles=new e,this._projectedCenter=null,this._metersPerSRUnit=null,this._technique=new S,this._grid=null,this.visible=!0}destroy(){this._handles=r(this._handles),this._technique.shutdown()}get grid(){return this._grid}set grid(e){this._grid=e,this._handles.removeAll(),this._handles.add([i((()=>e?.center),(()=>{this._projectedCenter=null}),s),i((()=>[e?.center,e?.dynamicScaling,e?.majorLineColor,e?.majorLineInterval,e?.minorLineColor,e?.rotateWithMap,e?.rotation,e?.spacing,e?.units]),(()=>this.requestRender()),s)])}_createTransforms(){return{displayViewScreenMat3:c()}}doRender(e){if(e.drawPhase!==y.MAP||null==this.grid||!this.visible)return;const{spacing:t,units:r,majorLineInterval:i,dynamicScaling:s,majorLineColor:o,minorLineColor:a}=this.grid;if(0===t)return;if(this._updateDerivedValues(e),null==this._projectedCenter||null==this._metersPerSRUnit)return;const{scale:l,spatialReference:m}=e.state,c=n(t,r,"meters"),h=this._metersPerSRUnit*R(l,m),p=c/h;if(!s&&p<b)return;const d=c*P(i,p,s);this._updateTransform(e,h,d),this._technique.render(e,{transform:{dvs:this.transforms.displayViewScreenMat3},config:{pxPerCell:d/h,minorLineColor:q(a),majorLineColor:q(o),majorLineInterval:i,halfWidth:.25,aaWidth:.5}})}_updateDerivedValues(e){if(!this.grid)return;const{center:t}=this.grid,{spatialReference:r}=e.state;this._projectedCenter&&v(this._projectedCenter.spatialReference,r)||(this._metersPerSRUnit=null,v(t.spatialReference,r)?this._projectedCenter=t:_(t.spatialReference,r)?this._projectedCenter=g(t,r):this.requestRender()),null==this._metersPerSRUnit&&null!=this._projectedCenter&&(this._metersPerSRUnit=L(this._projectedCenter))}_updateTransform(e,r,i){const{grid:s}=this,{center:n,rotation:c,size:j,spatialReference:_}=e.state;if(null==s||null==this._projectedCenter||null==this._metersPerSRUnit)return;const g=r*(j[0]/2),R=r*(j[1]/2),v=this._metersPerSRUnit/i,U=this._projectedCenter,y=t(s.rotation),S=t(c),b=this.transforms.displayViewScreenMat3;o(b,-y);const L=_.isWrappable?C(U.x,n[0],_):U.x,P=h(x,L,U.y),w=p(x,n,P);d(w,w,v),s.rotateWithMap||u(w,w,f,-S),u(w,w,f,-y),d(w,w,1/s.majorLineInterval),M(w,w),d(w,w,s.majorLineInterval),u(w,w,f,y),a(b,b,w),s.rotateWithMap&&l(b,b,S);const q=h(x,g/i,R/i);m(b,b,q)}}function M(e,t){return e[0]=t[0]-Math.trunc(t[0]),e[1]=t[1]-Math.trunc(t[1]),e}function q(e){const[t,r,i,s]=e.toArray().map((e=>e/255));return[t*s,r*s,i*s,s]}export{w as default};
5
+ import e from"../../../core/Handles.js";import{deg2rad as t}from"../../../core/mathUtils.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{watch as i,initial as s}from"../../../core/reactiveUtils.js";import{convertUnit as n}from"../../../core/unitUtils.js";import{fromRotation as o,translate as a,rotate as l,scaleByVec2 as m}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as c}from"../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{set as h,sub as p,scale as d,rotate as u}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{ZEROS as f}from"../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{create as j}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{isLoadedOrLoadFor as _,project as g}from"../../../geometry/projectionUtils.js";import{getClosestDenormalizedXToReference as C}from"../../../geometry/support/normalizeUtils.js";import{getResolutionForScale as R}from"../../../geometry/support/scaleUtils.js";import{equals as U}from"../../../geometry/support/spatialReferenceUtils.js";import{DisplayObject as v}from"../engine/DisplayObject.js";import{WGLDrawPhase as y}from"../engine/webgl/enums.js";import{GridTechnique as S}from"../engine/webgl/shaderGraph/techniques/grid/GridTechnique.js";import{minimumPixelsPerStrideForDisplayWhenScalingOff as b}from"./constants.js";import{measureMetersPerUnitAtReferencePoint as L,getScaleFactor as P}from"./gridUtils.js";const x=j();class w extends v{constructor(){super(),this._handles=new e,this._projectedCenter=null,this._metersPerSRUnit=null,this._technique=new S,this._grid=null,this.visible=!0}destroy(){this._handles=r(this._handles),this._technique.shutdown()}get grid(){return this._grid}set grid(e){this._grid=e,this._handles.removeAll(),this._handles.add([i((()=>e?.center),(()=>{this._projectedCenter=null}),s),i((()=>[e?.center,e?.dynamicScaling,e?.majorLineColor,e?.majorLineInterval,e?.minorLineColor,e?.rotateWithMap,e?.rotation,e?.spacing,e?.units]),(()=>this.requestRender()),s)])}_createTransforms(){return{displayViewScreenMat3:c()}}doRender(e){if(e.drawPhase!==y.MAP||null==this.grid||!this.visible)return;const{spacing:t,units:r,majorLineInterval:i,dynamicScaling:s,majorLineColor:o,minorLineColor:a}=this.grid;if(0===t)return;if(this._updateDerivedValues(e),null==this._projectedCenter||null==this._metersPerSRUnit)return;const{scale:l,spatialReference:m}=e.state,c=n(t,r,"meters"),h=this._metersPerSRUnit*R(l,m),p=c/h;if(!s&&p<b)return;const d=c*P(i,p,s);this._updateTransform(e,h,d),this._technique.render(e,{transform:{dvs:this.transforms.displayViewScreenMat3},config:{pxPerCell:d/h,minorLineColor:q(a),majorLineColor:q(o),majorLineInterval:i,halfWidth:.25,aaWidth:.5}})}_updateDerivedValues(e){if(!this.grid)return;const{center:t}=this.grid,{spatialReference:r}=e.state;this._projectedCenter&&U(this._projectedCenter.spatialReference,r)||(this._metersPerSRUnit=null,U(t.spatialReference,r)?this._projectedCenter=t:_(t.spatialReference,r)?this._projectedCenter=g(t,r):this.requestRender()),null==this._metersPerSRUnit&&null!=this._projectedCenter&&(this._metersPerSRUnit=L(this._projectedCenter))}_updateTransform(e,r,i){const{grid:s}=this,{center:n,rotation:c,size:j,spatialReference:_}=e.state;if(null==s||null==this._projectedCenter||null==this._metersPerSRUnit)return;const g=r*(j[0]/2),R=r*(j[1]/2),U=this._metersPerSRUnit/i,v=this._projectedCenter,y=t(s.rotation),S=t(c),b=this.transforms.displayViewScreenMat3;o(b,-y);const L=_.isWrappable?C(v.x,n[0],_):v.x,P=h(x,L,v.y),w=p(x,n,P);d(w,w,U),s.rotateWithMap||u(w,w,f,-S),u(w,w,f,-y),d(w,w,1/s.majorLineInterval),M(w,w),d(w,w,s.majorLineInterval),u(w,w,f,y),a(b,b,w),s.rotateWithMap&&l(b,b,S);const q=h(x,g/i,R/i);m(b,b,q)}}function M(e,t){return e[0]=t[0]-Math.trunc(t[0]),e[1]=t[1]-Math.trunc(t[1]),e}function q(e){const[t,r,i,s]=e.toArray().map((e=>e/255));return[t*s,r*s,i*s,s]}export{w 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.34/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import i from"../../../../Graphic.js";import{destroyMaybe as o}from"../../../../core/maybe.js";import{watch as r}from"../../../../core/reactiveUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";import{project as a,initializeProjection as h}from"../../../../geometry/projection.js";import{isValid as c}from"../../../../geometry/support/spatialReferenceUtils.js";import l from"../../../../layers/GraphicsLayer.js";import p from"../../../../symbols/CIMSymbol.js";import{applyCIMSymbolColor as d}from"../../../../symbols/support/cimSymbolUtils.js";import{ViewingMode as m}from"../../../ViewingMode.js";import{DragManipulation as y}from"./manipulations/DragManipulation.js";import{primaryKey as _}from"../../../input/keys.js";import{InteractiveToolBase as g}from"../../../interactive/InteractiveToolBase.js";import{EditGeometryOperations as f}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{AccumulationBehavior as u}from"../../../interactive/editGeometry/interfaces.js";const P={up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",toggleOpacity:"t",shift:"Shift",primaryKey:_},v=1,S=10,k=new e("#009af2");let b=class extends g{constructor(t){super(t),this._isOpacityToggled=!1,this._isModifierActive=!1,this._factor=1,this._initialControlPoints=null,this._graphicsLayer=new l({internal:!0,listMode:"hide",visible:!1,effect:"drop-shadow(0px, 0px, 3px)"}),this._undoStack=[],this._redoStack=[],this._sharedUndoStack=[],this._sharedRedoStack=[],this._highlightHandle=null,this.activeHandle=0,this.type="reshape"}initialize(){this._initialize()}destroy(){const{map:t}=this.view;this._controlPointManipulations.forEach((t=>t.destroy())),this._controlPointEditGeometryOperations.forEach((t=>t.destroy())),t.removeMany([this._graphicsLayer]),this._graphicsLayer.removeAll(),this._graphicsLayer=o(this._graphicsLayer),this._georeference=null,this._controlPointGraphics=null,this._controlPointManipulations=null,this._graphicsLayer=null,this._controlPointEditGeometryOperations=null,this._undoStack=null,this._redoStack=null,this._initialControlPoints=null,this._sharedUndoStack=null,this._sharedRedoStack=null}get _hasValidSpatialReference(){return c(this.view.spatialReference)}onActivate(){this.visible=!0}onDeactivate(){this.visible=!1}onShow(){this._graphicsLayer.visible=!0}onHide(){this._graphicsLayer.visible=!1}canUndo(){const t=this._undoStack[this._undoStack.length-1];return null!=t&&this._controlPointEditGeometryOperations[t].canUndo}canRedo(){const t=this._redoStack[this._redoStack.length-1];return null!=t&&this._controlPointEditGeometryOperations[t].canRedo}undo(){if(this._undoStack.length>0){const t=this._undoStack.pop();this._controlPointEditGeometryOperations[t].undo(),this.updateGraphics(),this._redoStack.push(t)}}redo(){if(this._redoStack.length>0){const t=this._redoStack.pop();this._controlPointEditGeometryOperations[t].redo(),this.updateGraphics(),this._undoStack.push(t)}}refresh(){const{mediaElement:t}=this;if(null==t.georeference)return;const e=t.georeference;"control-points"===e.type&&null!=e.coords&&(this._georeference=e,this._georeference.controlPoints.forEach((({mapPoint:t},e)=>{const i=this._controlPointEditGeometryOperations[e],o=i.data.components[0].vertices[0];i.setVertexPosition(o,i.data.coordinateHelper.pointToVector(t))})),this.updateGraphics())}reset(){this._georeference.controlPoints=this._initialControlPoints,this.refresh(),this._sharedUndoStack.length=0,this._sharedRedoStack.length=0}updateGraphics(){const t=this._georeference,e=t.controlPoints,i=e[0].mapPoint.spatialReference,o=this._hasValidSpatialReference;this._georeference.controlPoints=this._controlPointEditGeometryOperations.map(((r,s)=>{const n=r.data.geometry;return this._controlPointGraphics[s].geometry=n,{mapPoint:a(n,i),sourcePoint:o?e[s].sourcePoint:t.toSource(n)}}))}updateActiveHandle(t){if(this.activeHandle===t)return;const e=this._controlPointGraphics[this.activeHandle].symbol.clone();d(e,this.view.effectiveTheme.accentColor),this._controlPointGraphics[this.activeHandle].symbol=e;const i=this._controlPointGraphics[t].symbol.clone();d(i,k),this._controlPointGraphics[t].symbol=i,this.activeHandle=t,this.view.surface===document.activeElement&&this.highlightActiveHandle()}async highlightActiveHandle(){this.removeHighlightActiveHandle();const t=await this.view.whenLayerView(this._graphicsLayer);this._highlightHandle=t.highlight(this._controlPointGraphics[this.activeHandle])}removeHighlightActiveHandle(){this._highlightHandle&&this._highlightHandle.remove()}setSharedUndoStack(t){this._sharedUndoStack=t}setSharedRedoStack(t){this._sharedRedoStack=t}async _initialize(){const{view:t,mediaElement:e}=this;if(null==e.georeference)return;const o=e.georeference;"control-points"===o.type&&null!=o.coords&&(this._georeference=o,this._initialControlPoints=this._georeference.controlPoints,t.map.addMany([this._graphicsLayer]),t.focus(),this.visible=!1,this.finishToolCreation(),await this._loadProjectionEngine(),this._controlPointEditGeometryOperations=this._georeference.controlPoints.map((({mapPoint:e})=>f.fromGeometry(a(e,t.spatialReference),m.Local))),this._controlPointGraphics=this._controlPointEditGeometryOperations.map(((t,e)=>new i({symbol:new p({data:{type:"CIMSymbolReference",symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,colorLocked:!0,anchorPoint:{x:0,y:-15.75},anchorPointUnits:"Absolute",dominantSizeAxis3D:"Y",size:9,billboardMode3D:"FaceNearPlane",frame:{xmin:0,ymin:0,xmax:84.3,ymax:84.3},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{rings:[[[83.2,32.5],[84.3,40.7],[83.8,48.9],[81.7,56.9],[78.1,64.3],[73,70.9],[66.9,76.4],[59.7,80.5],[51.9,83.2],[43.7,84.3],[35.4,83.8],[27.4,81.7],[20,78],[13.4,73],[7.9,66.8],[3.8,59.7],[1.1,51.9],[0,43.7],[.5,35.4],[2.6,27.4],[6.3,20],[11.3,13.4],[17.5,7.9],[24.7,3.8],[32.5,1.1],[39.8,.1],[47.1,.3],[54.3,1.8],[61.1,4.5],[67.4,8.4],[72.9,13.3],[77.4,19.1],[80.9,25.5],[83.2,32.5]]]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]}}],scaleSymbolsProportionally:!0,respectFrame:!0,clippingPath:{type:"CIMClippingPath",clippingType:"Intersect",path:{rings:[[[0,0],[84.3,0],[84.3,84.3],[0,84.3],[0,0]]]}},rotation:0},{type:"CIMVectorMarker",enable:!0,anchorPoint:{x:0,y:-11.25},anchorPointUnits:"Absolute",dominantSizeAxis3D:"Y",size:22.5,billboardMode3D:"FaceNearPlane",frame:{xmin:0,ymin:0,xmax:197.7,ymax:294.7},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{rings:[[[98.9,0],[119.4,23.2],[139.4,49.3],[156.8,75.2],[171.2,100.8],[182.4,125.3],[190.6,148.8],[195.7,171.4],[197.7,192.9],[197.7,195.8],[197.7,200.3],[197.6,202.5],[197.5,204.8],[197.3,207.1],[197,209.4],[196.7,211.7],[196.4,214.1],[196,216.4],[195.5,218.7],[195,221.1],[194.4,223.4],[193.7,225.8],[193,228.1],[192.2,230.5],[191.4,232.8],[190.5,235.1],[189.5,237.5],[188.5,239.7],[187.4,242],[186.2,244.3],[185,246.5],[183.7,248.7],[182.4,250.9],[181,253.1],[179.5,255.2],[178,257.3],[176.4,259.4],[174.7,261.4],[173.1,263.3],[171.3,265.3],[169.5,267.2],[167.7,269],[165.8,270.8],[163.9,272.5],[161.9,274.2],[159.9,275.8],[157.8,277.4],[155.7,278.9],[153.6,280.4],[151.4,281.7],[149.2,283.1],[147,284.4],[144.8,285.6],[142.5,286.7],[140.3,287.8],[138,288.8],[135.7,289.8],[133.4,290.7],[131,291.5],[128.7,292.3],[126.4,293],[124,293.6],[121.7,294.2],[119.4,294.7],[117,295.2],[114.7,295.6],[112.4,296],[110.1,296.3],[107.8,296.5],[105.5,296.7],[103.3,296.8],[101.1,296.9],[98.8,296.9],[83.1,295.7],[67.8,292],[53.3,285.9],[39.9,277.5],[28.1,267.2],[18,255.1],[10,241.5],[4.2,226.9],[.9,211.5],[0,195.8],[.1,192.9],[2.1,171.4],[7.2,148.8],[15.4,125.3],[26.6,100.8],[41,75.2],[58.4,49.3],[78.4,23.2],[98.9,0]]]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:e===this.activeHandle?k.toArray():this.view.effectiveTheme.accentColor.toArray()}]}}],scaleSymbolsProportionally:!0,respectFrame:!0,clippingPath:{type:"CIMClippingPath",clippingType:"Intersect",path:{rings:[[[0,0],[197.7,0],[197.7,294.7],[0,294.7],[0,0]]]}},rotation:0}],haloSize:1,scaleX:1,angleAlignment:"Display",angle:0}}}),geometry:t.data.geometry}))),this._graphicsLayer.graphics.addMany([...this._controlPointGraphics]),this._controlPointManipulations=this._controlPointGraphics.map((e=>new y({tool:this,view:t,graphic:e}))),this.addHandles([...this._controlPointManipulations.map(((t,e)=>t.createDragPipeline(this._getInfo.bind(this,e),((t,i)=>{"start"===t.action&&(this._undoStack.push(e),this._redoStack=[],this._sharedUndoStack.push({tool:this,operation:i}),this._sharedRedoStack.length=0),this.updateGraphics()})))),r((()=>this.view.scale),(()=>this.active?this.updateGraphics():null))]),this._controlPointManipulations.forEach(((t,e)=>{const i=t=>{this.addHandles([t.events.on(["click","grab-changed"],(t=>this.updateActiveHandle(e)))])};t.forEachManipulator(i)})),this.addHandles([t.on("key-down",(i=>{t.activeTool===this&&(i.key!==P.shift||i.repeat||(this._isModifierActive=!0,i.stopPropagation()),i.key!==P.toggleOpacity||i.repeat||(e.opacity*=this._isOpacityToggled?2:.5,this._isOpacityToggled=!this._isOpacityToggled,i.stopPropagation()),i.key!==P.primaryKey||i.repeat||(this._factor=S,i.stopPropagation()),this._isModifierActive&&(i.key===P.up&&(this._move(0,this._factor),i.stopPropagation()),i.key===P.down&&(this._move(0,-this._factor),i.stopPropagation()),i.key===P.left&&(this._move(-this._factor,0),i.stopPropagation()),i.key===P.right&&(this._move(this._factor,0),i.stopPropagation())))})),t.on("key-up",(e=>{t.activeTool===this&&(e.key===P.shift&&(this._isModifierActive=!1,e.stopPropagation()),e.key===P.primaryKey&&(this._factor=v,e.stopPropagation()))}))]))}async _loadProjectionEngine(){const t=this._georeference.controlPoints[0].mapPoint;return h(t.spatialReference,this.view.spatialReference)}_getInfo(t){return{editGeometryOperations:this._controlPointEditGeometryOperations[t],constraints:this._hasValidSpatialReference?null:{xmin:0,ymin:0,xmax:this._georeference.width,ymax:this._georeference.height}}}_move(t,e){const i=this._controlPointEditGeometryOperations[this.activeHandle].move(t*this.view.resolution,e*this.view.resolution,0,u.NEW_STEP);this._sharedUndoStack.push({tool:this,operation:i}),this._sharedRedoStack.length=0,this.updateGraphics()}};t([s()],b.prototype,"_hasValidSpatialReference",null),t([s()],b.prototype,"activeHandle",void 0),t([s({constructOnly:!0,nonNullable:!0})],b.prototype,"mediaElement",void 0),t([s({readOnly:!0})],b.prototype,"type",void 0),t([s({constructOnly:!0})],b.prototype,"view",void 0),b=t([n("esri.views.2d.interactive.editingTools.ControlPointsTransformTool")],b);export{b as ControlPointsTransformTool,P as keys};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import i from"../../../../Graphic.js";import{destroyMaybe as o}from"../../../../core/maybe.js";import{watch as r}from"../../../../core/reactiveUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";import{project as a,initializeProjection as h}from"../../../../geometry/projectionUtils.js";import{isValid as c}from"../../../../geometry/support/spatialReferenceUtils.js";import l from"../../../../layers/GraphicsLayer.js";import p from"../../../../symbols/CIMSymbol.js";import{applyCIMSymbolColor as d}from"../../../../symbols/support/cimSymbolUtils.js";import{ViewingMode as m}from"../../../ViewingMode.js";import{DragManipulation as y}from"./manipulations/DragManipulation.js";import{primaryKey as _}from"../../../input/keys.js";import{InteractiveToolBase as g}from"../../../interactive/InteractiveToolBase.js";import{EditGeometryOperations as f}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{AccumulationBehavior as u}from"../../../interactive/editGeometry/interfaces.js";const P={up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",toggleOpacity:"t",shift:"Shift",primaryKey:_},v=1,S=10,k=new e("#009af2");let b=class extends g{constructor(t){super(t),this._isOpacityToggled=!1,this._isModifierActive=!1,this._factor=1,this._initialControlPoints=null,this._graphicsLayer=new l({internal:!0,listMode:"hide",visible:!1,effect:"drop-shadow(0px, 0px, 3px)"}),this._undoStack=[],this._redoStack=[],this._sharedUndoStack=[],this._sharedRedoStack=[],this._highlightHandle=null,this.activeHandle=0,this.type="reshape"}initialize(){this._initialize()}destroy(){const{map:t}=this.view;this._controlPointManipulations.forEach((t=>t.destroy())),this._controlPointEditGeometryOperations.forEach((t=>t.destroy())),t.removeMany([this._graphicsLayer]),this._graphicsLayer.removeAll(),this._graphicsLayer=o(this._graphicsLayer),this._georeference=null,this._controlPointGraphics=null,this._controlPointManipulations=null,this._graphicsLayer=null,this._controlPointEditGeometryOperations=null,this._undoStack=null,this._redoStack=null,this._initialControlPoints=null,this._sharedUndoStack=null,this._sharedRedoStack=null}get _hasValidSpatialReference(){return c(this.view.spatialReference)}onActivate(){this.visible=!0}onDeactivate(){this.visible=!1}onShow(){this._graphicsLayer.visible=!0}onHide(){this._graphicsLayer.visible=!1}canUndo(){const t=this._undoStack[this._undoStack.length-1];return null!=t&&this._controlPointEditGeometryOperations[t].canUndo}canRedo(){const t=this._redoStack[this._redoStack.length-1];return null!=t&&this._controlPointEditGeometryOperations[t].canRedo}undo(){if(this._undoStack.length>0){const t=this._undoStack.pop();this._controlPointEditGeometryOperations[t].undo(),this.updateGraphics(),this._redoStack.push(t)}}redo(){if(this._redoStack.length>0){const t=this._redoStack.pop();this._controlPointEditGeometryOperations[t].redo(),this.updateGraphics(),this._undoStack.push(t)}}refresh(){const{mediaElement:t}=this;if(null==t.georeference)return;const e=t.georeference;"control-points"===e.type&&null!=e.coords&&(this._georeference=e,this._georeference.controlPoints.forEach((({mapPoint:t},e)=>{const i=this._controlPointEditGeometryOperations[e],o=i.data.components[0].vertices[0];i.setVertexPosition(o,i.data.coordinateHelper.pointToVector(t))})),this.updateGraphics())}reset(){this._georeference.controlPoints=this._initialControlPoints,this.refresh(),this._sharedUndoStack.length=0,this._sharedRedoStack.length=0}updateGraphics(){const t=this._georeference,e=t.controlPoints,i=e[0].mapPoint.spatialReference,o=this._hasValidSpatialReference;this._georeference.controlPoints=this._controlPointEditGeometryOperations.map(((r,s)=>{const n=r.data.geometry;return this._controlPointGraphics[s].geometry=n,{mapPoint:a(n,i),sourcePoint:o?e[s].sourcePoint:t.toSource(n)}}))}updateActiveHandle(t){if(this.activeHandle===t)return;const e=this._controlPointGraphics[this.activeHandle].symbol.clone();d(e,this.view.effectiveTheme.accentColor),this._controlPointGraphics[this.activeHandle].symbol=e;const i=this._controlPointGraphics[t].symbol.clone();d(i,k),this._controlPointGraphics[t].symbol=i,this.activeHandle=t,this.view.surface===document.activeElement&&this.highlightActiveHandle()}async highlightActiveHandle(){this.removeHighlightActiveHandle();const t=await this.view.whenLayerView(this._graphicsLayer);this._highlightHandle=t.highlight(this._controlPointGraphics[this.activeHandle])}removeHighlightActiveHandle(){this._highlightHandle&&this._highlightHandle.remove()}setSharedUndoStack(t){this._sharedUndoStack=t}setSharedRedoStack(t){this._sharedRedoStack=t}async _initialize(){const{view:t,mediaElement:e}=this;if(null==e.georeference)return;const o=e.georeference;"control-points"===o.type&&null!=o.coords&&(this._georeference=o,this._initialControlPoints=this._georeference.controlPoints,t.map.addMany([this._graphicsLayer]),t.focus(),this.visible=!1,this.finishToolCreation(),await this._loadProjectionEngine(),this._controlPointEditGeometryOperations=this._georeference.controlPoints.map((({mapPoint:e})=>f.fromGeometry(a(e,t.spatialReference),m.Local))),this._controlPointGraphics=this._controlPointEditGeometryOperations.map(((t,e)=>new i({symbol:new p({data:{type:"CIMSymbolReference",symbol:{type:"CIMPointSymbol",symbolLayers:[{type:"CIMVectorMarker",enable:!0,colorLocked:!0,anchorPoint:{x:0,y:-15.75},anchorPointUnits:"Absolute",dominantSizeAxis3D:"Y",size:9,billboardMode3D:"FaceNearPlane",frame:{xmin:0,ymin:0,xmax:84.3,ymax:84.3},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{rings:[[[83.2,32.5],[84.3,40.7],[83.8,48.9],[81.7,56.9],[78.1,64.3],[73,70.9],[66.9,76.4],[59.7,80.5],[51.9,83.2],[43.7,84.3],[35.4,83.8],[27.4,81.7],[20,78],[13.4,73],[7.9,66.8],[3.8,59.7],[1.1,51.9],[0,43.7],[.5,35.4],[2.6,27.4],[6.3,20],[11.3,13.4],[17.5,7.9],[24.7,3.8],[32.5,1.1],[39.8,.1],[47.1,.3],[54.3,1.8],[61.1,4.5],[67.4,8.4],[72.9,13.3],[77.4,19.1],[80.9,25.5],[83.2,32.5]]]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:[255,255,255,255]}]}}],scaleSymbolsProportionally:!0,respectFrame:!0,clippingPath:{type:"CIMClippingPath",clippingType:"Intersect",path:{rings:[[[0,0],[84.3,0],[84.3,84.3],[0,84.3],[0,0]]]}},rotation:0},{type:"CIMVectorMarker",enable:!0,anchorPoint:{x:0,y:-11.25},anchorPointUnits:"Absolute",dominantSizeAxis3D:"Y",size:22.5,billboardMode3D:"FaceNearPlane",frame:{xmin:0,ymin:0,xmax:197.7,ymax:294.7},markerGraphics:[{type:"CIMMarkerGraphic",geometry:{rings:[[[98.9,0],[119.4,23.2],[139.4,49.3],[156.8,75.2],[171.2,100.8],[182.4,125.3],[190.6,148.8],[195.7,171.4],[197.7,192.9],[197.7,195.8],[197.7,200.3],[197.6,202.5],[197.5,204.8],[197.3,207.1],[197,209.4],[196.7,211.7],[196.4,214.1],[196,216.4],[195.5,218.7],[195,221.1],[194.4,223.4],[193.7,225.8],[193,228.1],[192.2,230.5],[191.4,232.8],[190.5,235.1],[189.5,237.5],[188.5,239.7],[187.4,242],[186.2,244.3],[185,246.5],[183.7,248.7],[182.4,250.9],[181,253.1],[179.5,255.2],[178,257.3],[176.4,259.4],[174.7,261.4],[173.1,263.3],[171.3,265.3],[169.5,267.2],[167.7,269],[165.8,270.8],[163.9,272.5],[161.9,274.2],[159.9,275.8],[157.8,277.4],[155.7,278.9],[153.6,280.4],[151.4,281.7],[149.2,283.1],[147,284.4],[144.8,285.6],[142.5,286.7],[140.3,287.8],[138,288.8],[135.7,289.8],[133.4,290.7],[131,291.5],[128.7,292.3],[126.4,293],[124,293.6],[121.7,294.2],[119.4,294.7],[117,295.2],[114.7,295.6],[112.4,296],[110.1,296.3],[107.8,296.5],[105.5,296.7],[103.3,296.8],[101.1,296.9],[98.8,296.9],[83.1,295.7],[67.8,292],[53.3,285.9],[39.9,277.5],[28.1,267.2],[18,255.1],[10,241.5],[4.2,226.9],[.9,211.5],[0,195.8],[.1,192.9],[2.1,171.4],[7.2,148.8],[15.4,125.3],[26.6,100.8],[41,75.2],[58.4,49.3],[78.4,23.2],[98.9,0]]]},symbol:{type:"CIMPolygonSymbol",symbolLayers:[{type:"CIMSolidFill",enable:!0,color:e===this.activeHandle?k.toArray():this.view.effectiveTheme.accentColor.toArray()}]}}],scaleSymbolsProportionally:!0,respectFrame:!0,clippingPath:{type:"CIMClippingPath",clippingType:"Intersect",path:{rings:[[[0,0],[197.7,0],[197.7,294.7],[0,294.7],[0,0]]]}},rotation:0}],haloSize:1,scaleX:1,angleAlignment:"Display",angle:0}}}),geometry:t.data.geometry}))),this._graphicsLayer.graphics.addMany([...this._controlPointGraphics]),this._controlPointManipulations=this._controlPointGraphics.map((e=>new y({tool:this,view:t,graphic:e}))),this.addHandles([...this._controlPointManipulations.map(((t,e)=>t.createDragPipeline(this._getInfo.bind(this,e),((t,i)=>{"start"===t.action&&(this._undoStack.push(e),this._redoStack=[],this._sharedUndoStack.push({tool:this,operation:i}),this._sharedRedoStack.length=0),this.updateGraphics()})))),r((()=>this.view.scale),(()=>this.active?this.updateGraphics():null))]),this._controlPointManipulations.forEach(((t,e)=>{const i=t=>{this.addHandles([t.events.on(["click","grab-changed"],(t=>this.updateActiveHandle(e)))])};t.forEachManipulator(i)})),this.addHandles([t.on("key-down",(i=>{t.activeTool===this&&(i.key!==P.shift||i.repeat||(this._isModifierActive=!0,i.stopPropagation()),i.key!==P.toggleOpacity||i.repeat||(e.opacity*=this._isOpacityToggled?2:.5,this._isOpacityToggled=!this._isOpacityToggled,i.stopPropagation()),i.key!==P.primaryKey||i.repeat||(this._factor=S,i.stopPropagation()),this._isModifierActive&&(i.key===P.up&&(this._move(0,this._factor),i.stopPropagation()),i.key===P.down&&(this._move(0,-this._factor),i.stopPropagation()),i.key===P.left&&(this._move(-this._factor,0),i.stopPropagation()),i.key===P.right&&(this._move(this._factor,0),i.stopPropagation())))})),t.on("key-up",(e=>{t.activeTool===this&&(e.key===P.shift&&(this._isModifierActive=!1,e.stopPropagation()),e.key===P.primaryKey&&(this._factor=v,e.stopPropagation()))}))]))}async _loadProjectionEngine(){const t=this._georeference.controlPoints[0].mapPoint;return h(t.spatialReference,this.view.spatialReference)}_getInfo(t){return{editGeometryOperations:this._controlPointEditGeometryOperations[t],constraints:this._hasValidSpatialReference?null:{xmin:0,ymin:0,xmax:this._georeference.width,ymax:this._georeference.height}}}_move(t,e){const i=this._controlPointEditGeometryOperations[this.activeHandle].move(t*this.view.resolution,e*this.view.resolution,0,u.NEW_STEP);this._sharedUndoStack.push({tool:this,operation:i}),this._sharedRedoStack.length=0,this.updateGraphics()}};t([s()],b.prototype,"_hasValidSpatialReference",null),t([s()],b.prototype,"activeHandle",void 0),t([s({constructOnly:!0,nonNullable:!0})],b.prototype,"mediaElement",void 0),t([s({readOnly:!0})],b.prototype,"type",void 0),t([s({constructOnly:!0})],b.prototype,"view",void 0),b=t([n("esri.views.2d.interactive.editingTools.ControlPointsTransformTool")],b);export{b as ControlPointsTransformTool,P as keys};