@arcgis/core 5.2.0-next.125 → 5.2.0-next.126
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.
- package/analysis/ElevationProfile/ElevationProfileDisplayUnits.d.ts +3 -2
- package/analysis/VolumeMeasurement/VolumeMeasurementDisplayUnits.d.ts +1 -0
- package/arcgisGlobal.d.ts +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{fe9582bc2244667e40ab.js → 05afa8c2b5929ce0545a.js} +1 -1
- package/assets/esri/core/workers/chunks/0a20f84b5f004a77a9f9.js +1 -0
- package/assets/esri/core/workers/chunks/{cfd56e0a716baf95e17b.js → 0a2b7c691a577cb3d189.js} +1 -1
- package/assets/esri/core/workers/chunks/{6cf34cfdd063a1b6fe3e.js → 0ccd4200c5a2a5de6e16.js} +1 -1
- package/assets/esri/core/workers/chunks/{bdf012e591a8476db467.js → 1406a884241809b62bff.js} +1 -1
- package/assets/esri/core/workers/chunks/17218d714cb07b607c2f.js +1 -0
- package/assets/esri/core/workers/chunks/1d040aa8951fff3141d9.js +1 -0
- package/assets/esri/core/workers/chunks/30604a29df320d7a4c6b.js +1 -0
- package/assets/esri/core/workers/chunks/3ef367c9b7bf1588307d.js +1 -0
- package/assets/esri/core/workers/chunks/{5b9b76e180cf206a8a0c.js → 4327d2c39a660bd89da7.js} +1 -1
- package/assets/esri/core/workers/chunks/4678a8170d8a3ccd1a7b.js +1 -0
- package/assets/esri/core/workers/chunks/474d9541d387b31ad275.js +1 -0
- package/assets/esri/core/workers/chunks/{f05becec0952a61bc654.js → 4d18451e0ea6ca54101a.js} +1 -1
- package/assets/esri/core/workers/chunks/{26bc509a031788bfa678.js → 4f464047c6f6c9486efd.js} +1 -1
- package/assets/esri/core/workers/chunks/{58528ccb7f72ae76d52b.js → 540f60e31b19d85e9371.js} +1 -1
- package/assets/esri/core/workers/chunks/{44857a76be2c0ac65bb9.js → 55a560fd872f7463b33d.js} +1 -1
- package/assets/esri/core/workers/chunks/56acda1eed3a013430e2.js +1 -0
- package/assets/esri/core/workers/chunks/{1f55701d23a5e5a0c70c.js → 57ab87e70ef85b9405f9.js} +122 -122
- package/assets/esri/core/workers/chunks/{f0901f9c7135b708434f.js → 5adf2792416b22cd602f.js} +1 -1
- package/assets/esri/core/workers/chunks/5fe5ef5ccf480634d159.js +1 -0
- package/assets/esri/core/workers/chunks/67678054342178b601cf.js +1 -0
- package/assets/esri/core/workers/chunks/67dcf9b873cb037b2647.js +1 -0
- package/assets/esri/core/workers/chunks/76548469fe1b9c3b2051.js +1 -0
- package/assets/esri/core/workers/chunks/7d6da4e89aa951e6523f.js +1 -0
- package/assets/esri/core/workers/chunks/7dd94567833386dc74de.js +1 -0
- package/assets/esri/core/workers/chunks/806f96ad09e882be41af.js +1 -0
- package/assets/esri/core/workers/chunks/{bbaaebe1774a22dba39b.js → 97602019a1ccad22a03a.js} +1 -1
- package/assets/esri/core/workers/chunks/{378bdb4e5cd1ebada1f4.js → 9ca98fffd43e63d5ade3.js} +1 -1
- package/assets/esri/core/workers/chunks/9d6a96e4c7ccedcb0c13.js +1 -0
- package/assets/esri/core/workers/chunks/9ec04faad97be55309b8.js +1 -0
- package/assets/esri/core/workers/chunks/a08385ebf1715414c1a6.js +1 -0
- package/assets/esri/core/workers/chunks/{e22a013ec38989caf9de.js → a790fc6b22acf651574b.js} +1 -1
- package/assets/esri/core/workers/chunks/{2f52ad525744b8793d49.js → a8258636096416c837a2.js} +1 -1
- package/assets/esri/core/workers/chunks/{813dd84933b407c8fe86.js → b34305474a861aaf6ccb.js} +1 -1
- package/assets/esri/core/workers/chunks/c5b733c3a5b2680042a2.js +1 -0
- package/assets/esri/core/workers/chunks/{f0709c48daca93e759c8.js → c692e583e87af58f6d91.js} +1 -1
- package/assets/esri/core/workers/chunks/{4f7e8e4ddf52b5245ea4.js → c77496c350004ee66eb2.js} +1 -1
- package/assets/esri/core/workers/chunks/{0fba5c0e89b057da548d.js → cb7cb7d57c4e7f76600f.js} +1 -1
- package/assets/esri/core/workers/chunks/d371d9279b30548efa02.js +1 -0
- package/assets/esri/core/workers/chunks/d5f0fed415b5b155d57c.js +1 -0
- package/assets/esri/core/workers/chunks/{3f082329a544c2c1d62d.js → d5f72670634e73c0b53a.js} +1 -1
- package/assets/esri/core/workers/chunks/d6e914f6ed45ea59034e.js +1 -0
- package/assets/esri/core/workers/chunks/{5afc12671a9a1bb6c56c.js → dc52e036547612949d32.js} +1 -1
- package/assets/esri/core/workers/chunks/e0894a308c84d5c158b0.js +1 -0
- package/assets/esri/core/workers/chunks/e1ae83ff3e0225708d4d.js +1 -0
- package/assets/esri/core/workers/chunks/{df79c00b5ddbef7148a0.js → eaa7cb3ffa8c11706a09.js} +1 -1
- package/assets/esri/core/workers/chunks/eebbc86a15ae3adb5f38.js +1 -0
- package/assets/esri/core/workers/chunks/fdbda3d2afea25142b86.js +1 -0
- package/assets/esri/libs/pdfjs/pdf.worker.mjs +4 -63051
- package/assets/esri/widgets/Editor/t9n/messages.ar.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.bg.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.bs.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.ca.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.cs.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.da.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.el.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.et.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.fr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.hr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.hu.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.id.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.ja.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.ko.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.lt.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.nl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.no.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.pl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.pt-BR.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.ro.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.ru.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.sk.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.sl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.sr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.sv.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.th.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.tr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.uk.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.vi.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.zh-CN.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.zh-HK.json +1 -1
- package/assets/esri/widgets/Editor/t9n/messages.zh-TW.json +1 -1
- package/chunks/GlobalIllumination.glsl.js +9 -9
- package/chunks/GlobalIlluminationBlur.glsl.js +8 -8
- package/chunks/HeatmapDensity.glsl.js +5 -5
- package/chunks/Pattern.glsl.js +30 -30
- package/chunks/RibbonLine.glsl.js +19 -19
- package/config.js +1 -1
- package/core/accessorSupport/types.d.ts +5 -1
- package/interfaces.d.ts +3 -0
- package/kernel.js +1 -1
- package/layers/ParquetLayer.d.ts +3 -2
- package/layers/ParquetLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
- package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +2 -2
- package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +1 -1
- package/layers/geospatialPDF/LGIDictMapFrame.js +1 -1
- package/layers/geospatialPDF/ViewportMeasureFrame.js +1 -1
- package/layers/geospatialPDF/geospatialPDFParserUtils.js +2 -0
- package/layers/geospatialPDF/projectionToWKTUtils.js +2 -0
- package/layers/geospatialPDF/renderExtentUtils.js +1 -1
- package/layers/geospatialPDF/sharedUtils.js +1 -1
- package/layers/orientedImagery/transformations/imageToWorld.js +1 -1
- package/layers/orientedImagery/transformations/utils.js +1 -1
- package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
- package/layers/raster/types.d.ts +6 -0
- package/layers/support/TimeSeriesCalculation.d.ts +32 -0
- package/layers/support/TimeSeriesCalculation.js +2 -0
- package/layers/support/TimeSeriesInfo.d.ts +19 -0
- package/layers/support/TimeSeriesInfo.js +1 -1
- package/layers/support/commonProperties.js +1 -1
- package/layers/support/timeSeriesUtils.d.ts +25 -1
- package/layers/support/timeSeriesUtils.js +1 -1
- package/layers/types.d.ts +1 -0
- package/package.json +2 -2
- package/popup/FeatureContentCollection.d.ts +4 -1
- package/popup/FeatureContentCollection.js +1 -1
- package/popup/types.d.ts +14 -3
- package/portal/schemas/definitions.js +1 -1
- package/portal/schemas/sceneLayerItem.js +1 -1
- package/renderers/support/AuthoringInfo.d.ts +8 -1
- package/renderers/support/AuthoringInfo.js +1 -1
- package/renderers/support/AuthoringInfoVisualVariable.d.ts +8 -1
- package/renderers/support/AuthoringInfoVisualVariable.js +1 -1
- package/rest/imageService/fetchRasterInfo.js +1 -1
- package/rest/knowledgeGraph/DataModel.js +1 -1
- package/smartMapping/renderers/color.d.ts +12 -0
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/opacity.d.ts +6 -0
- package/smartMapping/renderers/opacity.js +1 -1
- package/smartMapping/renderers/size.d.ts +12 -0
- package/smartMapping/renderers/size.js +1 -1
- package/smartMapping/renderers/support/regenerateUtils.js +1 -1
- package/smartMapping/renderers/support/rendererUtils.js +1 -1
- package/smartMapping/renderers/support/timeSeriesUtils.js +1 -1
- package/smartMapping/renderers/type.d.ts +6 -0
- package/smartMapping/renderers/type.js +1 -1
- package/smartMapping/renderers/univariateColorSize.d.ts +6 -0
- package/smartMapping/renderers/univariateColorSize.js +1 -1
- package/support/revision.js +1 -1
- package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
- package/views/2d/analysis/AreaMeasurementAnalysisView2D.d.ts +8 -0
- package/views/2d/analysis/AreaMeasurementAnalysisView2D.js +1 -1
- package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
- package/views/2d/analysis/DistanceMeasurementAnalysisView2D.d.ts +8 -0
- package/views/2d/analysis/DistanceMeasurementAnalysisView2D.js +1 -1
- package/views/2d/analysis/ElevationProfileAnalysisView2D.d.ts +3 -2
- package/views/3d/analysis/AreaMeasurementAnalysisView3D.js +1 -1
- package/views/3d/analysis/Dimension/DimensionController.js +1 -1
- package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
- package/views/3d/analysis/ElevationProfileAnalysisView3D.d.ts +3 -2
- package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
- package/views/3d/analysis/LineOfSight/lineOfSightPlacementUtils.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
- package/views/3d/analysis/VolumeMeasurementAnalysisView3D.d.ts +1 -0
- package/views/3d/analysis/VolumeMeasurementAnalysisView3D.js +1 -1
- package/views/3d/input/handlers/DragRotate.js +1 -1
- package/views/3d/input/handlers/PinchAndPanNavigation.js +1 -1
- package/views/3d/input/handlers/ground/GroundDoubleClickMove.js +1 -1
- package/views/3d/input/handlers/ground/GroundNavigation.js +1 -1
- package/views/3d/state/Constraints.js +1 -1
- package/views/3d/state/controllers/GroundNavigationController.js +1 -1
- package/views/3d/state/controllers/RotateController.js +1 -1
- package/views/3d/support/engineContent/line.js +1 -1
- package/views/3d/support/planarDistanceToGroundRatio.js +2 -0
- package/views/3d/terrain/OverlayManager.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +13 -13
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js +2 -2
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatRenderUtils.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatShadows.js +1 -1
- package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/DOMContainer.js +1 -1
- package/views/analysis/ElevationProfile/ElevationProfileController.js +1 -1
- package/views/analysis/LengthDimensionResult.d.ts +4 -1
- package/views/draw/support/managers/TooltipManager.js +1 -1
- package/views/interactive/options/SnappingOptions.d.ts +4 -2
- package/views/interactive/options/SnappingOptions.js +1 -1
- package/views/interactive/options/ViewOptions.d.ts +18 -0
- package/views/interactive/options/bindViewToolOptions.js +2 -0
- package/views/interactive/snapping/SnappingManagerPool.js +1 -1
- package/views/interactive/snapping/allLayerSnapping.js +1 -1
- package/views/overlay/FocusRegionOverlayItem.js +1 -1
- package/views/selection/SelectionOperation.d.ts +27 -1
- package/views/selection/types.d.ts +8 -20
- package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.d.ts +1 -0
- package/widgets/AreaMeasurement2D/AreaMeasurement2DViewModel.js +1 -1
- package/widgets/AreaMeasurement2D.js +1 -1
- package/widgets/BasemapLayerList/BasemapLayerListViewModel.d.ts +1 -0
- package/widgets/BasemapLayerList.d.ts +1 -0
- package/widgets/BatchAttributeForm/expressions/types.d.ts +1 -0
- package/widgets/BatchAttributeForm/types.d.ts +5 -1
- package/widgets/BatchAttributeForm.d.ts +1 -0
- package/widgets/Bookmarks/BookmarksViewModel.d.ts +1 -0
- package/widgets/Bookmarks.d.ts +1 -0
- package/widgets/CatalogLayerList/CatalogLayerListViewModel.d.ts +1 -0
- package/widgets/CatalogLayerList.d.ts +1 -0
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.d.ts +1 -0
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DViewModel.js +1 -1
- package/widgets/DistanceMeasurement2D.js +1 -1
- package/widgets/Editor.d.ts +1 -0
- package/widgets/FeatureForm.d.ts +1 -0
- package/widgets/FeatureTable/FeatureTableViewModel.d.ts +14 -0
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/support/FeatureStore.d.ts +14 -0
- package/widgets/FeatureTable/support/FeatureStore.js +1 -1
- package/widgets/FeatureTable.d.ts +1 -0
- package/widgets/FeatureTemplates.d.ts +1 -0
- package/widgets/Features/FeaturesViewModel.d.ts +1 -0
- package/widgets/Features.d.ts +2 -1
- package/widgets/HistogramRangeSlider.d.ts +1 -0
- package/widgets/Home/HomeViewModel.d.ts +1 -0
- package/widgets/Home.d.ts +1 -0
- package/widgets/LayerList/LayerListViewModel.d.ts +1 -0
- package/widgets/LayerList.d.ts +1 -0
- package/widgets/Locate/LocateViewModel.d.ts +1 -0
- package/widgets/Locate.d.ts +1 -0
- package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/navigation/NavigationManagerPanoramic.js +1 -1
- package/widgets/OrientedImageryViewer/types.d.ts +4 -1
- package/widgets/OrientedImageryViewer.d.ts +4 -1
- package/widgets/Popup.d.ts +1 -0
- package/widgets/Print/PrintViewModel.d.ts +1 -0
- package/widgets/Print.d.ts +1 -0
- package/widgets/Search.d.ts +1 -0
- package/widgets/Sketch.d.ts +1 -0
- package/widgets/Slider.d.ts +4 -0
- package/widgets/TimeSlider.d.ts +1 -0
- package/widgets/Track/TrackViewModel.d.ts +1 -0
- package/widgets/Track.d.ts +1 -0
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.d.ts +1 -0
- package/widgets/UtilityNetworkTrace.d.ts +1 -0
- package/widgets/ValuePicker/types.d.ts +1 -0
- package/widgets/ValuePicker.d.ts +1 -0
- package/widgets/smartMapping/SmartMappingSliderBase.d.ts +1 -0
- package/widgets/support/SelectionList/types.d.ts +2 -0
- package/widgets/support/SelectionToolbar/SelectionToolbarViewModel.d.ts +2 -1
- package/assets/esri/core/workers/chunks/0148cb611bf7c8c5fe8a.js +0 -1
- package/assets/esri/core/workers/chunks/0a4a5ed831a4e4d8e0fc.js +0 -1
- package/assets/esri/core/workers/chunks/0acc754907395e83bbc6.js +0 -1
- package/assets/esri/core/workers/chunks/0f8ff964461cf8e0673b.js +0 -1
- package/assets/esri/core/workers/chunks/1e46703cb566c25458ad.js +0 -1
- package/assets/esri/core/workers/chunks/25c90092def215949db9.js +0 -1
- package/assets/esri/core/workers/chunks/2a34760b3f0c134898ec.js +0 -1
- package/assets/esri/core/workers/chunks/38890ac5917942374ab8.js +0 -1
- package/assets/esri/core/workers/chunks/3b4ceaf21be540cb3499.js +0 -1
- package/assets/esri/core/workers/chunks/4c4ba466e23159991322.js +0 -1
- package/assets/esri/core/workers/chunks/606ac9358f508bda94f2.js +0 -1
- package/assets/esri/core/workers/chunks/6c4def0faaef861a09c9.js +0 -1
- package/assets/esri/core/workers/chunks/7285a37cd5359aa4bac5.js +0 -1
- package/assets/esri/core/workers/chunks/753d1ff177ecee8e2377.js +0 -1
- package/assets/esri/core/workers/chunks/8a8e94b5d7d153361b0b.js +0 -1
- package/assets/esri/core/workers/chunks/923c45ebcf45d9ce8ae0.js +0 -1
- package/assets/esri/core/workers/chunks/9af36ee6a0df224859bc.js +0 -1
- package/assets/esri/core/workers/chunks/a7ce5b958dfeb240c4a5.js +0 -1
- package/assets/esri/core/workers/chunks/aed479c14d93955f4798.js +0 -1
- package/assets/esri/core/workers/chunks/be52c319a0a81ce1ba36.js +0 -1
- package/assets/esri/core/workers/chunks/c0ec87800faf99cbd8bd.js +0 -1
- package/assets/esri/core/workers/chunks/ca5a4f62b09cc8579dc0.js +0 -1
- package/assets/esri/core/workers/chunks/d090baaa974e1e83fa44.js +0 -1
- package/assets/esri/core/workers/chunks/e9f8325a4cf89ae816cc.js +0 -1
- package/assets/esri/core/workers/chunks/ed7d4e8725aaa0ca4589.js +0 -1
- package/assets/esri/core/workers/chunks/f4572ad25712d204f258.js +0 -1
- package/layers/geospatialPDF/GeospatialPDFParserUtils.js +0 -2
- package/layers/geospatialPDF/Projection.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as a}from"../../core/screenUtils.js";import{ensureClass as r}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 f from"../heuristics/ageUnit.js";import y from"../heuristics/outline.js";import z from"../heuristics/referenceSize.js";import v from"../heuristics/sizeRange.js";import{getTypeSchemeData as w}from"./type.js";import{createPrimitiveOverrides as h,updateReferenceSizeSymbol as b,createReferenceSizeSymbol as g}from"./support/referenceSizeUtils.js";import{spliceVisualVariables as S,updateAuthoringInfoVisualVariable as x,getAuthoringInfoVisualVariable as E,isSizeVV as T,processRegenerateParams as V,getRendererToUpdate as k,getStyleType as O,hasOutlineVV as I,hasScaleDependentSizeVV as B,findSizeVVIndex as F,findOutlineVVIndex as R}from"./support/regenerateUtils.js";import{createPrimitiveOverrides as j,updateSpikeSymbol as q,createSpikeSymbol as D,defaultSpikeSymbolStyle as G}from"./support/spikeUtils.js";import{getTimeSeriesSummaryStatistics as N,resolveDataSeriesInfo as U}from"./support/timeSeriesUtils.js";import{errorCallback as P,getTitleAndExpressionForAgeRenderer as M,updateAgeRendererAuthoringInfoVV as C,getClassBreaks as W,getSummaryStatistics as $,createSymbol as A,getSymbolOutlineFromScheme as H,getSymbolSizeFromScheme as L,verifyBasicFieldValidity as J,getSizeRangeForAxis as K,getDataRange as Q,getBasemapInfo as X}from"./support/utils.js";import{verifyDates as Y,supportedAgeUnits as Z}from"../statistics/support/ageUtils.js";import{verifyBinningParams as _}from"../support/binningUtils.js";import{getNormalizationType as ee,getFieldsList as ie,isAnyDateField as ae}from"../support/utils.js";import{createLayerAdapter as re,featureCapableLayerTypes as ne,getLayerTypeLabels as se,binningCapableLayerTypes as le}from"../support/adapters/support/layerUtils.js";import{cloneScheme as te,getSchemes as oe}from"../symbology/size.js";import{getColorFromSymbol as ue}from"../../symbols/support/utils.js";const me=2**53-1,pe=[5,112.5];async function de(e,a){const r=U({...e});if(!(r&&r.layer&&(r.field||r.valueExpression||r.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(r.valueExpression&&!r.sqlExpression&&!r.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===r.theme&&!r.view&&!r.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===r.theme&&r.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");r.forBinning&&_(r,"size-visual-variable");const n={...r},s=r.forBinning?le:ne,l=re(n.layer,s,r.forBinning);if(!l)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+se(s).join(", "));"height"===n.axis&&(n.sizeOptimizationEnabled=!1);const t=null!=n.signal?{signal:n.signal}:null;await l.load(t);const o=l.geometryType;if("mesh"===o)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(n.worldScale){if("polyline"===o||"polygon"===o)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if("3d"!==n.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"===n.theme&&!r.forBinning&&"polygon"!==o)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===n.theme&&!r.forBinning&&"polygon"!==o&&"point"!==o)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const u=await ie({field:n.field,normalizationField:n.normalizationField,valueExpression:n.valueExpression}),m=J(l,u,"size-visual-variable:invalid-parameters");if(m)throw m;"spike"!==n.theme||n.spikeOptions?.symbolStyle||(n.spikeOptions??={},n.spikeOptions.symbolStyle=G);const p={...n,layer:l,referenceSizeResult:a};return await fe(p),p}async function ce(e){const a=U({...e});if(!(a&&a.layer&&(a.field||a.valueExpression||a.sqlExpression)))throw new i("size-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new i("size-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&_(a,"size-continuous-renderer");const r={...a};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const n=a.forBinning?le:ne,s=re(r.layer,n,a.forBinning);if(!s)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+se(n).join(", "));const l=null!=r.signal?{signal:r.signal}:null;await s.load(l);const t=s.geometryType,o=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===t&&r.outlineOptimizationEnabled,"mesh"===t)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===t||"polygon"===t))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&"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&&!a.forBinning&&"polygon"!==t)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!a.forBinning&&"polygon"!==t&&"point"!==t)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const u=await ie({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),m=J(s,u,"size-continuous-renderer:invalid-parameters");if(m)throw m;"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G);const p={...r,layer:s};return await fe(p),p}async function fe(e){const i=e.layer,a=i.geometryType,r=i.layer,n=e.forBinning&&"featureReduction"in r&&"binning"===r.featureReduction?.type;if(("polygon"===a||n)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await z({layer:r,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 ye(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:a,forBinning:r}=e,n=e.forBinning?le:ne,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: "+se(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:a,layer:l,forBinning:r}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function ze(e){if(!e||!e.layer||!e.sizeStops)throw new i("update-renderer-with-spike:missing-parameters","'layer' and 'sizeStops' parameters are required");const a=e.forBinning?le:ne,r=re(e.layer,a,e.forBinning);if(!r)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+se(a).join(", "));await r.load();const n=r.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??=t?.spikeSymbolStyle?void 0:G,{...e,renderer:s,layer:r,spikeOptions:o}}async function ve(e){const a=U({...e});if(!a||!a.layer||!a.field&&!a.valueExpression)throw new i("size-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(a.valueExpression&&!a.view)throw new i("size-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&_(a,"size-class-breaks-renderer");const r={...a};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=ee(r);const n=a.forBinning?le:ne,s=re(r.layer,n,a.forBinning);if(!s)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+se(n).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 l=null!=r.signal?{signal:r.signal}:null;await s.load(l);const t=s.geometryType,o=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===t&&r.outlineOptimizationEnabled,"mesh"===t)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===t||"polygon"===t))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")&&"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 u=await ie({field:r.field,normalizationField:r.normalizationField}),m=J(s,u,"size-class-breaks-renderer:invalid-parameters");if(m)throw m;return{...r,layer:s}}function we(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const a=i;return a.analyzeData=!(null!=i.minValue&&null!=i.maxValue),a}function he(e){const i={...e},a=!!i.symbolType?.includes("3d-volumetric"),r=i;return r.worldScale=a,a&&(r.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,r}async function be(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 a={...e};a.symbolType??="2d",a.defaultSymbolEnabled??=!0;const r=re(a.layer,ne);if(!r)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+se(ne).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await r.load(n);const s=r.geometryType,l=a.symbolType.includes("3d");if(a.outlineOptimizationEnabled="polygon"===s&&a.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(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.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=Y(r,a.startTime,a.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(a.unit&&!Z.includes(a.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${Z.join(", ")}`);return{...a,layer:r}}async function ge(e){const a="regenerate-size-visual-variables";V(e,a);const r=await k(e),n=O(r);if(!n||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(n))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const s=E(r,"size");if(!s)throw new i(`${a}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=r.visualVariables?.find(T);if(!u&&!t&&!o)throw new i(`${a}: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):r.field?(m=r.field,p=r.normalizationField):(d=u?.valueExpression??r.valueExpression,c=u?.valueExpressionTitle??r.valueExpressionTitle));const{layer:f,forBinning:y,filter:z,view:v,signal:w}=e,h=s.dataSeriesName,b=B(r),g=await de({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:b,forBinning:y,dataSeriesName:h,filter:z,view:v,signal:w},e.referenceSizeResult);return"reference-size"!==l||null==s.referenceSizeScale||!g.referenceSizeResult||g.referenceSizeResult.isGrid||g.sizeOptimizationEnabled||(g.sizeOptimizationEnabled=!0),{...e,creatorParameters:g,renderer:r}}async function Se(e){const a="regenerate-size-continuous-renderer";V(e,a);const r=await k(e),n=O(r);if(!n||!["size-continuous","univariate-color-size"].includes(n))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=r,m=s?.visualVariables.find(e=>"size"===e.type),p=m.theme,{layer:d,forBinning:c,filter:f,view:y,signal:z}=e,v=m.dataSeriesName,w=I(r),h=B(r),b=await ce({layer:d,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:p,outlineOptimizationEnabled:w,sizeOptimizationEnabled:h,forBinning:c,dataSeriesName:v,filter:f,view:y,signal:z});return"reference-size"!==p||null==m.referenceSizeScale||!b.referenceSizeResult||b.referenceSizeResult.isGrid||b.sizeOptimizationEnabled||(b.sizeOptimizationEnabled=!0),{...e,creatorParameters:b,renderer:r}}async function xe(e){const a="regenerate-size-class-breaks-renderer";await V(e,a);const r=await k(e);if("size-class-breaks"!==O(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=r,{classificationMethod:p,standardDeviationInterval:d}=n,c=r.classBreakInfos.length,{layer:f,forBinning:y,filter:z,view:v,signal:w}=e,h=n?.dataSeriesName,b=I(r),g=await ve({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:b,forBinning:y,dataSeriesName:h,filter:z,view:v,signal:w});return{...e,creatorParameters:g,renderer:r}}async function Ee(e){const a="regenerate-size-age-renderer";await V(e,a);const r=await k(e);if("size-age"!==O(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n}=r,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=I(r),y=B(r),z=await be({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:p,view:d,signal:c});return{...e,creatorParameters:z,renderer:r}}async function Te(e){let i=e.sizeScheme,a=null,r=null;const n=await X(e.basemap,e.view);if(a=null!=n.basemapId?n.basemapId:null,r=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:te(i),basemapId:a,basemapTheme:r};const s=oe({basemapTheme:r,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,a=s.basemapId,r=s.basemapTheme),{scheme:i,basemapId:a,basemapTheme:r}}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 ke(e,i){"clamped-linear"===e.transformationType&&"below"===i&&e.flipSizes()}async function Oe(e,i,a,r,n,s){const l=Ie(e,i,a,r);return l||Ve(n,s)}function Ie(e,i,a,r){return"spike"===r?[a?.minHeight??pe[0],a?.maxHeight??pe[1]]:"reference-size"===r&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function Be(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,a=0,r=0,n=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>r&&l<n&&t<2*n&&u<.5,p=l>a&&l<i&&t<2*i&&u<.5;return{minDataValue:m?r:p?a:l,maxDataValue:m?n:p?i:s+2*o,defaultValuesUsed:!1}}const{theme:a,field:r}=i,n=i.layer,s=r&&!("function"==typeof r)?n.getField(r):null,l=ae(s);return Q(e,a,l,"above"===a||"below"===a)}function Fe(e,a){if(("spike"===a||"reference-size"===a)&&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 Re(e,a,n,s){const{theme:u,field:p,normalizationField:d,minValue:f,maxValue:y,axis:z}=e,v=e.layer.geometryType,w=await Te({basemap:e.basemap,geometryType:v,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 Oe(n,s,e.spikeOptions,u,h,v),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Be(a,e),E=[],T="height"===z,V=T?z:void 0,k=b[0];let O=b[1];if(T&&"number"==typeof k&&"number"==typeof O){const e=K({minSize:k,maxSize:O},V);E.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:V,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:r(c,e.legendOptions)});ke(I,u),E.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,dataSeriesName:e.dataSeriesName,sizeStops:Fe(I,u).map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),theme:u,referenceSizeScale:s?.isGrid||e.sizeOptimizationEnabled?e?.view?.scale:void 0,referenceSizeSymbolStyle:e.referenceSizeOptions?.symbolStyle,minSliderValue:null!=f?f:a.min,maxSliderValue:null!=y?y:a.max}:"spike"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,dataSeriesName:e.dataSeriesName,spikeSymbolStyle:e.spikeOptions?.symbolStyle,sizeStops:Fe(I,u).map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),theme:u,minSliderValue:null!=f?f:a.min,maxSliderValue:null!=y?y:a.max}:{type:"size",theme:u,dataSeriesName:e.dataSeriesName,minSliderValue:null!=f?f:a.min,maxSliderValue:null!=y?y:a.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:E,statistics:a,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:te(h),authoringInfo:F}}async function je(e,i,a,r,l){const t=await n("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,p=l.defaultSymbolEnabled,d=te(e.sizeScheme),c="polygon"===m,f=c?d.marker:d,y=c?d.background:null,z=c?"point":m,v=i?.opacity,w=e.isGrid,b=l.theme,S="reference-size"===b,x="spike"===b,E=S||x?[]:e.visualVariables.map(e=>e.clone());i?.visualVariables?.length&&E.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:r,sizeStops:Fe(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:j({field:u,normalizationField:r,sizeStops:Fe(e.visualVariables[0],b)}),symbolStyle:l.spikeOptions?.symbolStyle}):A(z,{type:l.symbolType,color:f.color,size:L(f,z),outline:H(f,z,v)});return{renderer:new s({backgroundFillSymbol:!w&&y?A(m,{type:l.symbolType,color:y.color,outline:H(y,m,v)}):null,classBreakInfos:[{minValue:-me,maxValue:me,symbol:T}],defaultLabel:p?t.other:null,defaultSymbol:!p||S||x?null:A(z,{type:l.symbolType,color:f.noDataColor,size:L(f,z,!0),outline:H(f,z,v)}),field:u,normalizationField:r,normalizationType:a,valueExpression:l.valueExpression,valueExpressionTitle:l.valueExpressionTitle,visualVariables:E,authoringInfo:e.authoringInfo?.clone()}),visualVariables:e.visualVariables.map(e=>e.clone()),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,isGrid:w,sizeScheme:te(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function qe(e,i){const r=a(e.minSize),n=(a(e.maxSize)-r)/(i>=4?i-1:i),s=[];for(let a=0;a<i;a++)s.push(r+n*a);return s}async function De(e,i){const a=await n("esri/smartMapping/t9n/smartMapping"),r=e.layer,t=e.defaultSymbolEnabled,o=r.geometryType,m="polygon"===o,p=e.symbolType?.includes("3d-volumetric"),d=await Te({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:p,view:e.view}),c=d.scheme,{result:f,outlineResult:y}=i,z=f?.classBreakInfos??[],v=e.classificationMethod,w=e.normalizationType,h=m?c.marker:c,b=m?c.background:null,g=m?"point":o,S=Ve(h,g),x=p?K({minSize:S[0],maxSize:S[1]},"height"):null,E=qe({minSize:S[0],maxSize:x?x.maxSize:S[1]},z.length),T=y?.opacity,V=new s({backgroundFillSymbol:b&&A(o,{type:e.symbolType,color:b.color,outline:H(b,o,T)}),classBreakInfos:z.map((i,a)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:A(g,{type:e.symbolType,color:h.color,size:E[a],widthAndDepth:x?.minSize,outline:H(h,g,T)}),label:i.label})),defaultLabel:t?a.other:null,defaultSymbol:t?A(g,{type:e.symbolType,color:h.noDataColor,size:L(h,g,!0),widthAndDepth:x?.minSize,outline:H(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:v,standardDeviationInterval:e.standardDeviationInterval,dataSeriesName:e.dataSeriesName})});return"standard-deviation"!==v&&u({classBreakInfos:V.classBreakInfos,classificationMethod:v,normalizationType:w,round:!0}),y?.visualVariables?.length&&(V.visualVariables=y.visualVariables.map(e=>e.clone())),{renderer:V,sizeScheme:te(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function Ge(e){const i=await de(e),{view:a,field:r,valueExpression:n,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:p,dataSeriesName:d}=i,c=o?"field":void 0,[f,y]=await Promise.all([m??(d?N({layer:t,view:a,signal:u,dataSeriesName:d,filter:p}):$({layer:t,field:r,valueExpression:n,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:c,normalizationField:o,filter:p,minValue:s,maxValue:l,view:a,signal:u})),i.sizeOptimizationEnabled?v({view:a,layer:t,signal:u,filter:p}).catch(P):null]);return Re(i,f,y,i.referenceSizeResult)}async function Ne(e){const{view:i,filter:a,renderer:r,signal:n,creatorParameters:s}=await ge(e),{field:l,normalizationField:o,valueExpression:u,valueExpressionTitle:p,theme:d,layer:c,sizeOptimizationEnabled:f,spikeOptions:y,referenceSizeResult:z,dataSeriesName:w}=s,h=o?"field":void 0,b=r.authoringInfo?.clone(),[g,S]=await Promise.all([(w?N({layer:c,view:i,signal:n,dataSeriesName:w,filter:a}):Promise.resolve(null)).then(e=>e??$({layer:c,field:l,valueExpression:u,normalizationField:o,normalizationType:h,filter:a,view:i,signal:n})),f&&!z?v({view:i,layer:c,signal:n,filter:a}).catch(P):null]),x=Ie(S,z,y,d),{minDataValue:E,maxDataValue:V}=Be(g,{theme:d,layer:c,field:l}),k=r.visualVariables?.find(T),O=(k?.stops?null:k)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:p,valueUnit:"unknown",normalizationField:o});x&&(O.minSize=x[0],O.maxSize=x[1]),O.minDataValue=E,O.maxDataValue=V,w&&(O.valueExpression=u??null,O.valueExpressionTitle=p??null),ke(O,d);const I=b.visualVariables.find(e=>"size"===e.type);I.dataSeriesName=w??I.dataSeriesName,I.minSliderValue=g.min,I.maxSliderValue=g.max;const B="reference-size"===d;return(B||"spike"===d)&&(I.sizeStops=Fe(O,d).map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),B&&(I.referenceSizeScale=z?.isGrid||f?i?.scale:void 0)),{visualVariables:"reference-size"===d||"spike"===d?[]:[O],isGrid:!!z?.isGrid,authoringInfo:b,statistics:g}}async function Ue(e){const i=await ce(e),a={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[r,n]=await Promise.all([Ge(he(i)),i.outlineOptimizationEnabled?y(a).catch(P):null]),s=i.normalizationField;return je(r,n,s?"field":void 0,s,i)}async function Pe(e){const{renderer:i,view:a,signal:r,filter:n,creatorParameters:s,forBinning:l}=await Se(e),{layer:t,sizeOptimizationEnabled:o,outlineOptimizationEnabled:u,theme:m,referenceSizeResult:p,valueExpression:d,valueExpressionTitle:c}=s,[f,z]=await Promise.all([Ne({...e,referenceSizeResult:p}),u?y({layer:t,view:a,filter:n,signal:r}).catch(P):null]),v="reference-size"===m,w="spike"===m;S(i,f.visualVariables,F),S(i,z?.visualVariables,R),i.valueExpression=d??null,i.valueExpressionTitle=c??null,x(i,f.authoringInfo,"size");const h=f.statistics;if(!v&&!w)return{renderer:i,statistics:h};if(w){return{renderer:await Ce({layer:t,renderer:i,forBinning:l,sizeStops:E(i,"size","spike")?.sizeStops}),statistics:h}}const b=f.isGrid;return{renderer:await Me({layer:t,renderer:i,view:a,forBinning:l,sizeOptimizationEnabled:o,sizeStops:E(i,"size","reference-size")?.sizeStops,isGrid:b}),isGrid:b,statistics:h}}async function Me(a){const{layer:r,referenceSizeOptions:n,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:p,isGrid:d}=await ye(a),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find(e=>"reference-size"===e.theme),y=a.field??f?.field,z=a.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 v=h({view:p,field:y,normalizationField:z,sizeStops:u,sizeByScaleEnabled:d||!!a.sizeOptimizationEnabled}),w=n?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in r?r.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach(i=>{const a=e?.color??ue(i.symbol,1);"cim"===i.symbol.type?b(i.symbol,{type:w,color:a,primitiveOverrides:v}):a&&(i.symbol=g({type:w,color:a,primitiveOverrides:v}))})}else if("unique-value"===c.type){const i=c.uniqueValueGroups,a="polygon"===("geometryType"in r?r.geometryType:null)&&m&&"colors"in m?m.colors:null,n=a?e(a,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]:ue(i.symbol,1);"cim"===i.symbol?.type?b(i.symbol,{type:w,color:e,primitiveOverrides:v}):e&&(i.symbol=g({type:w,color:e,primitiveOverrides:v})),s++}c.uniqueValueGroups=i}}return f&&(f.field=y,f.normalizationField=z,f.sizeStops=u.map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),f.referenceSizeScale=d||a.sizeOptimizationEnabled?p.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Ce(a){const{layer:r,renderer:n,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await ze(a),p=n.clone();p.authoringInfo??=new l;const d=p.authoringInfo.visualVariables.find(e=>"spike"===e.theme),c=a.field??d?.field,f=a.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=j({field:c,normalizationField:f,sizeStops:o}),z="geometryType"in r?r.geometryType:null,v={primitiveOverrides:y,...m},h=m?.symbolStyle,b=h&&h.includes("outline")&&(h.includes("solid-fill")||h.includes("gradient-fill"));if("class-breaks"===p.type){if(s||b){const e=z?await Te({geometryType:z,sizeScheme:s,view:a.view}):null,i=e?.scheme,r="polygon"===z&&i&&"marker"in i?i.marker:i;if(s){const e=r&&"color"in r?r?.color:void 0;v.color=e}if(b){const e=r&&"outline"in r?r.outline.color:void 0;v.strokeColor=e}}p.classBreakInfos.forEach(e=>{if("cim"===e.symbol.type)q(e.symbol,v);else{const i=v.color??ue(e.symbol,1)??void 0;i&&(e.symbol=D({...v,color:i}))}})}else if("unique-value"===p.type){const i=p.uniqueValueGroups,r=p.uniqueValueInfos?.length??0;let n=null;if(u||b){const i=z&&r?await w({numColors:r,geometryType:z,typeScheme:u,view:a.view}):null,s=i?.scheme;if(u){const i=s&&"colors"in s?s.colors:null;n=i?e(i,r):null}if(b){const e=s&&"outline"in s?s.outline.color:void 0;v.strokeColor=e}}let s=0;if(i){for(const e of i)for(const i of e.classes??[]){if("cim"===i.symbol?.type)q(i.symbol,{...v,color:n?.[s]});else{const e=n?.[s]??ue(i.symbol,1)??void 0;e&&(i.symbol=D({...v,color:e}))}s++}p.uniqueValueGroups=i}}return d&&(d.field=c,d.normalizationField=f,d.sizeStops=o.map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),h&&(d.spikeSymbolStyle=h)),p}async function We(e){const i=await ve(e);return De(i,await W(we(i),i.outlineOptimizationEnabled))}async function $e(e){const{renderer:a,creatorParameters:r}=await xe(e),{outlineOptimizationEnabled:n,normalizationType:s,classificationMethod:l,valueExpression:t,valueExpressionTitle:o}=r,{result:m,outlineResult:p}=await W(we(r),n),d=m.classBreakInfos;if(r.numClasses!==d.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 a.classBreakInfos.forEach((e,i)=>{e.minValue=d[i].minValue,e.maxValue=d[i].maxValue,e.label=d[i].label}),a.normalizationTotal="percent-of-total"===s?m.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:a.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),S(a,p?.visualVariables,R),a.valueExpression=t??null,a.valueExpressionTitle=o??null,{renderer:a}}async function Ae(e){const i=await be(e),{defaultSymbolEnabled:a,view:r,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 f({view:r,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?y({layer:p,view:r,filter:m,signal:u}).catch(P):null]),{unit:z,statistics:v}=d,{valueExpression:w,title:h}=await M(i,z),b=await Ge(he({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:v,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:a,symbolType:l},S=await je(b,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach(e=>C(e,n,s,z)),{...S,unit:z}}async function He(e){const{renderer:i,creatorParameters:a}=await Ee(e),{layer:r,outlineOptimizationEnabled:n,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:p}=a,[d,c]=await Promise.all([f({view:u,layer:r,startTime:l,endTime:t,signal:m,filter:p}),n?y({layer:r,view:u,filter:p,signal:m}).catch(P):null]),{unit:z,statistics:v}=d,{valueExpression:w,title:h}=await M(a,z),b=await Ge(he({layer:r,valueExpression:w,statistics:v,legendOptions:{title:h},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));S(i,b.visualVariables,F),S(i,c?.visualVariables,R),i.authoringInfo=b.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach(e=>C(e,l,t,z)),{renderer:i}}export{Ae as createAgeRenderer,We as createClassBreaksRenderer,Ue as createContinuousRenderer,Ge as createVisualVariables,Fe as getSizeStopsForTheme,He as regenerateAgeRenderer,$e as regenerateClassBreaksRenderer,Pe as regenerateContinuousRenderer,Ne as regenerateVisualVariables,Me as updateRendererWithReferenceSize,Ce as updateRendererWithSpike};
|
|
2
|
+
import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as a}from"../../core/screenUtils.js";import{ensureClass as r}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 d}from"../../renderers/visualVariables/support/castSizeVariable.js";import p from"../../renderers/visualVariables/support/SizeStop.js";import c from"../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import f from"../heuristics/ageUnit.js";import y from"../heuristics/outline.js";import z from"../heuristics/referenceSize.js";import v from"../heuristics/sizeRange.js";import{getTypeSchemeData as w}from"./type.js";import{createPrimitiveOverrides as h,updateReferenceSizeSymbol as b,createReferenceSizeSymbol as g}from"./support/referenceSizeUtils.js";import{spliceVisualVariables as S,updateAuthoringInfoVisualVariable as x,getAuthoringInfoVisualVariable as E,isSizeVV as T,processRegenerateParams as V,getRendererToUpdate as k,getStyleType as O,hasOutlineVV as I,hasScaleDependentSizeVV as B,findSizeVVIndex as F,findOutlineVVIndex as R}from"./support/regenerateUtils.js";import{createPrimitiveOverrides as N,updateSpikeSymbol as j,createSpikeSymbol as q,defaultSpikeSymbolStyle as C}from"./support/spikeUtils.js";import{getTimeSeriesSummaryStatistics as D,resolveDataSeriesInfo as G}from"./support/timeSeriesUtils.js";import{errorCallback as U,getTitleAndExpressionForAgeRenderer as P,updateAgeRendererAuthoringInfoVV as M,getClassBreaks as W,getSummaryStatistics as $,createSymbol as A,getSymbolOutlineFromScheme as H,getSymbolSizeFromScheme as L,verifyBasicFieldValidity as J,getSizeRangeForAxis as K,getDataRange as Q,getBasemapInfo as X}from"./support/utils.js";import{verifyDates as Y,supportedAgeUnits as Z}from"../statistics/support/ageUtils.js";import{verifyBinningParams as _}from"../support/binningUtils.js";import{getNormalizationType as ee,getFieldsList as ie,isAnyDateField as ae}from"../support/utils.js";import{createLayerAdapter as re,featureCapableLayerTypes as ne,getLayerTypeLabels as se,binningCapableLayerTypes as le}from"../support/adapters/support/layerUtils.js";import{cloneScheme as te,getSchemes as oe}from"../symbology/size.js";import{getColorFromSymbol as ue}from"../../symbols/support/utils.js";const me=2**53-1,de=[5,112.5];async function pe(e,a){const r=G({...e});if(!(r&&r.layer&&(r.field||r.valueExpression||r.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(r.valueExpression&&!r.sqlExpression&&!r.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===r.theme&&!r.view&&!r.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===r.theme&&r.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");r.forBinning&&_(r,"size-visual-variable");const n={...r},s=r.forBinning?le:ne,l=re(n.layer,s,r.forBinning);if(!l)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+se(s).join(", "));"height"===n.axis&&(n.sizeOptimizationEnabled=!1);const t=null!=n.signal?{signal:n.signal}:null;await l.load(t);const o=l.geometryType;if("mesh"===o)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(n.worldScale){if("polyline"===o||"polygon"===o)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if("3d"!==n.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"===n.theme&&!r.forBinning&&"polygon"!==o)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===n.theme&&!r.forBinning&&"polygon"!==o&&"point"!==o)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const u=await ie({field:n.field,normalizationField:n.normalizationField,valueExpression:n.valueExpression}),m=J(l,u,"size-visual-variable:invalid-parameters");if(m)throw m;"spike"!==n.theme||n.spikeOptions?.symbolStyle||(n.spikeOptions??={},n.spikeOptions.symbolStyle=C);const d={...n,layer:l,referenceSizeResult:a};return await fe(d),d}async function ce(e){const a=G({...e});if(!(a&&a.layer&&(a.field||a.valueExpression||a.sqlExpression)))throw new i("size-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new i("size-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&_(a,"size-continuous-renderer");const r={...a};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const n=a.forBinning?le:ne,s=re(r.layer,n,a.forBinning);if(!s)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+se(n).join(", "));const l=null!=r.signal?{signal:r.signal}:null;await s.load(l);const t=s.geometryType,o=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===t&&r.outlineOptimizationEnabled,"mesh"===t)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===t||"polygon"===t))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&"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&&!a.forBinning&&"polygon"!==t)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!a.forBinning&&"polygon"!==t&&"point"!==t)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const u=await ie({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),m=J(s,u,"size-continuous-renderer:invalid-parameters");if(m)throw m;"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=C);const d={...r,layer:s};return await fe(d),d}async function fe(e){const i=e.layer,a=i.geometryType,r=i.layer,n=e.forBinning&&"featureReduction"in r&&"binning"===r.featureReduction?.type;if(("polygon"===a||n)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await z({layer:r,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 ye(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:a,forBinning:r}=e,n=e.forBinning?le:ne,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: "+se(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:a,layer:l,forBinning:r}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function ze(e){if(!e||!e.layer||!e.sizeStops)throw new i("update-renderer-with-spike:missing-parameters","'layer' and 'sizeStops' parameters are required");const a=e.forBinning?le:ne,r=re(e.layer,a,e.forBinning);if(!r)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+se(a).join(", "));await r.load();const n=r.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??=t?.spikeSymbolStyle?void 0:C,{...e,renderer:s,layer:r,spikeOptions:o}}async function ve(e){const a=G({...e});if(!a||!a.layer||!a.field&&!a.valueExpression)throw new i("size-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(a.valueExpression&&!a.view)throw new i("size-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&_(a,"size-class-breaks-renderer");const r={...a};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=ee(r);const n=a.forBinning?le:ne,s=re(r.layer,n,a.forBinning);if(!s)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+se(n).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 l=null!=r.signal?{signal:r.signal}:null;await s.load(l);const t=s.geometryType,o=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===t&&r.outlineOptimizationEnabled,"mesh"===t)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===t||"polygon"===t))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")&&"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 u=await ie({field:r.field,normalizationField:r.normalizationField}),m=J(s,u,"size-class-breaks-renderer:invalid-parameters");if(m)throw m;return{...r,layer:s}}function we(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const a=i;return a.analyzeData=!(null!=i.minValue&&null!=i.maxValue),a}function he(e){const i={...e},a=!!i.symbolType?.includes("3d-volumetric"),r=i;return r.worldScale=a,a&&(r.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,r}async function be(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 a={...e};a.symbolType??="2d",a.defaultSymbolEnabled??=!0;const r=re(a.layer,ne);if(!r)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+se(ne).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await r.load(n);const s=r.geometryType,l=a.symbolType.includes("3d");if(a.outlineOptimizationEnabled="polygon"===s&&a.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(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.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=Y(r,a.startTime,a.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(a.unit&&!Z.includes(a.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${Z.join(", ")}`);return{...a,layer:r}}async function ge(e){const a="regenerate-size-visual-variables";V(e,a);const r=await k(e),n=O(r);if(!n||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(n))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const s=E(r,"size");if(!s)throw new i(`${a}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=r.visualVariables?.find(T);if(!u&&!t&&!o)throw new i(`${a}:invalid-parameters`,"Renderer does not have a size visual variable");let m=s.field,d=s.normalizationField,p=null,c=null;m||(u?.field?(m=u.field,d=u.normalizationField):r.field?(m=r.field,d=r.normalizationField):(p=u?.valueExpression??r.valueExpression,c=u?.valueExpressionTitle??r.valueExpressionTitle));const{layer:f,forBinning:y,filter:z,view:v,signal:w}=e,h=s.dataSeriesName,b=s.dataSeriesCalculationName,g=B(r),S=await pe({layer:f,field:m,valueExpression:p,valueExpressionTitle:c,normalizationField:d,theme:l,sizeOptimizationEnabled:g,forBinning:y,dataSeriesName:h,dataSeriesCalculationName:b,filter:z,view:v,signal:w},e.referenceSizeResult);return"reference-size"!==l||null==s.referenceSizeScale||!S.referenceSizeResult||S.referenceSizeResult.isGrid||S.sizeOptimizationEnabled||(S.sizeOptimizationEnabled=!0),{...e,creatorParameters:S,renderer:r}}async function Se(e){const a="regenerate-size-continuous-renderer";V(e,a);const r=await k(e),n=O(r);if(!n||!["size-continuous","univariate-color-size"].includes(n))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=r,m=s?.visualVariables.find(e=>"size"===e.type),d=m.theme,{layer:p,forBinning:c,filter:f,view:y,signal:z}=e,v=m.dataSeriesName,w=m.dataSeriesCalculationName,h=I(r),b=B(r),g=await ce({layer:p,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:d,outlineOptimizationEnabled:h,sizeOptimizationEnabled:b,forBinning:c,dataSeriesName:v,dataSeriesCalculationName:w,filter:f,view:y,signal:z});return"reference-size"!==d||null==m.referenceSizeScale||!g.referenceSizeResult||g.referenceSizeResult.isGrid||g.sizeOptimizationEnabled||(g.sizeOptimizationEnabled=!0),{...e,creatorParameters:g,renderer:r}}async function xe(e){const a="regenerate-size-class-breaks-renderer";await V(e,a);const r=await k(e);if("size-class-breaks"!==O(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=r,{classificationMethod:d,standardDeviationInterval:p}=n,c=r.classBreakInfos.length,{layer:f,forBinning:y,filter:z,view:v,signal:w}=e,h=n?.dataSeriesName,b=n?.dataSeriesCalculationName,g=I(r),S=await ve({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:d,standardDeviationInterval:p,numClasses:c,outlineOptimizationEnabled:g,forBinning:y,dataSeriesName:h,dataSeriesCalculationName:b,filter:z,view:v,signal:w});return{...e,creatorParameters:S,renderer:r}}async function Ee(e){const a="regenerate-size-age-renderer";await V(e,a);const r=await k(e);if("size-age"!==O(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n}=r,s=n?.visualVariables.find(e=>"size"===e.type),l=s.startTime,t=s.endTime,o=s.units,u=s.theme,{layer:m,filter:d,view:p,signal:c}=e,f=I(r),y=B(r),z=await be({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:d,view:p,signal:c});return{...e,creatorParameters:z,renderer:r}}async function Te(e){let i=e.sizeScheme,a=null,r=null;const n=await X(e.basemap,e.view);if(a=null!=n.basemapId?n.basemapId:null,r=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:te(i),basemapId:a,basemapTheme:r};const s=oe({basemapTheme:r,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,a=s.basemapId,r=s.basemapTheme),{scheme:i,basemapId:a,basemapTheme:r}}function Ve(e,i){switch(i){case"point":case"multipoint":{const i=e;return[d(i.minSize),d(i.maxSize)]}case"polyline":{const i=e;return[d(i.minWidth),d(i.maxWidth)]}case"polygon":{const i=e;return[d(i.marker.minSize),d(i.marker.maxSize)]}}}function ke(e,i){"clamped-linear"===e.transformationType&&"below"===i&&e.flipSizes()}async function Oe(e,i,a,r,n,s){const l=Ie(e,i,a,r);return l||Ve(n,s)}function Ie(e,i,a,r){return"spike"===r?[a?.minHeight??de[0],a?.maxHeight??de[1]]:"reference-size"===r&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function Be(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,a=0,r=0,n=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>r&&l<n&&t<2*n&&u<.5,d=l>a&&l<i&&t<2*i&&u<.5;return{minDataValue:m?r:d?a:l,maxDataValue:m?n:d?i:s+2*o,defaultValuesUsed:!1}}const{theme:a,field:r}=i,n=i.layer,s=r&&!("function"==typeof r)?n.getField(r):null,l=ae(s);return Q(e,a,l,"above"===a||"below"===a)}function Fe(e,a){if(("spike"===a||"reference-size"===a)&&null!=e.minDataValue&&null!=e.maxDataValue&&null!=e.minSize&&null!=e.maxSize&&"number"==typeof e.minSize&&"number"==typeof e.maxSize)return[new p({value:e.minDataValue,size:e.minSize}),new p({value:e.maxDataValue,size:e.maxSize})];throw new i("get-size-stops-for-theme","Invalid size variable or theme")}async function Re(e,a,n,s){const{theme:u,field:d,normalizationField:p,minValue:f,maxValue:y,axis:z}=e,v=e.layer.geometryType,w=await Te({basemap:e.basemap,geometryType:v,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 Oe(n,s,e.spikeOptions,u,h,v),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Be(a,e),E=[],T="height"===z,V=T?z:void 0,k=b[0];let O=b[1];if(T&&"number"==typeof k&&"number"==typeof O){const e=K({minSize:k,maxSize:O},V);E.push(new m({axis:"width-and-depth",minSize:e.minSize})),O=e.maxSize}const I=new m({field:d??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:p,axis:V,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:r(c,e.legendOptions)});ke(I,u),E.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,dataSeriesName:e.dataSeriesName,dataSeriesCalculationName:e.dataSeriesCalculationName,sizeStops:Fe(I,u).map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),theme:u,referenceSizeScale:s?.isGrid||e.sizeOptimizationEnabled?e?.view?.scale:void 0,referenceSizeSymbolStyle:e.referenceSizeOptions?.symbolStyle,minSliderValue:null!=f?f:a.min,maxSliderValue:null!=y?y:a.max}:"spike"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,dataSeriesName:e.dataSeriesName,dataSeriesCalculationName:e.dataSeriesCalculationName,spikeSymbolStyle:e.spikeOptions?.symbolStyle,sizeStops:Fe(I,u).map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),theme:u,minSliderValue:null!=f?f:a.min,maxSliderValue:null!=y?y:a.max}:{type:"size",theme:u,dataSeriesName:e.dataSeriesName,dataSeriesCalculationName:e.dataSeriesCalculationName,minSliderValue:null!=f?f:a.min,maxSliderValue:null!=y?y:a.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:E,statistics:a,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:te(h),authoringInfo:F}}async function Ne(e,i,a,r,l){const t=await n("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,d=l.defaultSymbolEnabled,p=te(e.sizeScheme),c="polygon"===m,f=c?p.marker:p,y=c?p.background:null,z=c?"point":m,v=i?.opacity,w=e.isGrid,b=l.theme,S="reference-size"===b,x="spike"===b,E=S||x?[]:e.visualVariables.map(e=>e.clone());i?.visualVariables?.length&&E.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:r,sizeStops:Fe(e.visualVariables[0],b),sizeByScaleEnabled:w||!!l.sizeOptimizationEnabled})}):x?q({color:f.color,strokeColor:f.outline.color,baseWidth:l.spikeOptions?.baseWidth,strokeWidth:l.spikeOptions?.strokeWidth,defaultHeight:l.spikeOptions?.defaultHeight,primitiveOverrides:N({field:u,normalizationField:r,sizeStops:Fe(e.visualVariables[0],b)}),symbolStyle:l.spikeOptions?.symbolStyle}):A(z,{type:l.symbolType,color:f.color,size:L(f,z),outline:H(f,z,v)});return{renderer:new s({backgroundFillSymbol:!w&&y?A(m,{type:l.symbolType,color:y.color,outline:H(y,m,v)}):null,classBreakInfos:[{minValue:-me,maxValue:me,symbol:T}],defaultLabel:d?t.other:null,defaultSymbol:!d||S||x?null:A(z,{type:l.symbolType,color:f.noDataColor,size:L(f,z,!0),outline:H(f,z,v)}),field:u,normalizationField:r,normalizationType:a,valueExpression:l.valueExpression,valueExpressionTitle:l.valueExpressionTitle,visualVariables:E,authoringInfo:e.authoringInfo?.clone()}),visualVariables:e.visualVariables.map(e=>e.clone()),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,isGrid:w,sizeScheme:te(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function je(e,i){const r=a(e.minSize),n=(a(e.maxSize)-r)/(i>=4?i-1:i),s=[];for(let a=0;a<i;a++)s.push(r+n*a);return s}async function qe(e,i){const a=await n("esri/smartMapping/t9n/smartMapping"),r=e.layer,t=e.defaultSymbolEnabled,o=r.geometryType,m="polygon"===o,d=e.symbolType?.includes("3d-volumetric"),p=await Te({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:d,view:e.view}),c=p.scheme,{result:f,outlineResult:y}=i,z=f?.classBreakInfos??[],v=e.classificationMethod,w=e.normalizationType,h=m?c.marker:c,b=m?c.background:null,g=m?"point":o,S=Ve(h,g),x=d?K({minSize:S[0],maxSize:S[1]},"height"):null,E=je({minSize:S[0],maxSize:x?x.maxSize:S[1]},z.length),T=y?.opacity,V=new s({backgroundFillSymbol:b&&A(o,{type:e.symbolType,color:b.color,outline:H(b,o,T)}),classBreakInfos:z.map((i,a)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:A(g,{type:e.symbolType,color:h.color,size:E[a],widthAndDepth:x?.minSize,outline:H(h,g,T)}),label:i.label})),defaultLabel:t?a.other:null,defaultSymbol:t?A(g,{type:e.symbolType,color:h.noDataColor,size:L(h,g,!0),widthAndDepth:x?.minSize,outline:H(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:v,standardDeviationInterval:e.standardDeviationInterval,dataSeriesName:e.dataSeriesName,dataSeriesCalculationName:e.dataSeriesCalculationName})});return"standard-deviation"!==v&&u({classBreakInfos:V.classBreakInfos,classificationMethod:v,normalizationType:w,round:!0}),y?.visualVariables?.length&&(V.visualVariables=y.visualVariables.map(e=>e.clone())),{renderer:V,sizeScheme:te(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function Ce(e){const i=await pe(e),{view:a,field:r,valueExpression:n,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:d,dataSeriesName:p}=i,c=o?"field":void 0,[f,y]=await Promise.all([m??(p?D({layer:t,view:a,signal:u,dataSeriesName:p,dataSeriesCalculationName:i.dataSeriesCalculationName,filter:d}):$({layer:t,field:r,valueExpression:n,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:c,normalizationField:o,filter:d,minValue:s,maxValue:l,view:a,signal:u})),i.sizeOptimizationEnabled?v({view:a,layer:t,signal:u,filter:d}).catch(U):null]);return Re(i,f,y,i.referenceSizeResult)}async function De(e){const{view:i,filter:a,renderer:r,signal:n,creatorParameters:s}=await ge(e),{field:l,normalizationField:o,valueExpression:u,valueExpressionTitle:d,theme:p,layer:c,sizeOptimizationEnabled:f,spikeOptions:y,referenceSizeResult:z,dataSeriesName:w,dataSeriesCalculationName:h}=s,b=o?"field":void 0,g=r.authoringInfo?.clone(),[S,x]=await Promise.all([(w?D({layer:c,view:i,signal:n,dataSeriesName:w,dataSeriesCalculationName:h,filter:a}):Promise.resolve(null)).then(e=>e??$({layer:c,field:l,valueExpression:u,normalizationField:o,normalizationType:b,filter:a,view:i,signal:n})),f&&!z?v({view:i,layer:c,signal:n,filter:a}).catch(U):null]),E=Ie(x,z,y,p),{minDataValue:V,maxDataValue:k}=Be(S,{theme:p,layer:c,field:l}),O=r.visualVariables?.find(T),I=(O?.stops?null:O)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:d,valueUnit:"unknown",normalizationField:o});E&&(I.minSize=E[0],I.maxSize=E[1]),I.minDataValue=V,I.maxDataValue=k,w&&(I.valueExpression=u??null,I.valueExpressionTitle=d??null),ke(I,p);const B=g.visualVariables.find(e=>"size"===e.type);B.dataSeriesName=w??B.dataSeriesName,B.dataSeriesCalculationName=h??B.dataSeriesCalculationName,B.minSliderValue=S.min,B.maxSliderValue=S.max;const F="reference-size"===p;return(F||"spike"===p)&&(B.sizeStops=Fe(I,p).map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),F&&(B.referenceSizeScale=z?.isGrid||f?i?.scale:void 0)),{visualVariables:"reference-size"===p||"spike"===p?[]:[I],isGrid:!!z?.isGrid,authoringInfo:g,statistics:S}}async function Ge(e){const i=await ce(e),a={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[r,n]=await Promise.all([Ce(he(i)),i.outlineOptimizationEnabled?y(a).catch(U):null]),s=i.normalizationField;return Ne(r,n,s?"field":void 0,s,i)}async function Ue(e){const{renderer:i,view:a,signal:r,filter:n,creatorParameters:s,forBinning:l}=await Se(e),{layer:t,sizeOptimizationEnabled:o,outlineOptimizationEnabled:u,theme:m,referenceSizeResult:d,valueExpression:p,valueExpressionTitle:c}=s,[f,z]=await Promise.all([De({...e,referenceSizeResult:d}),u?y({layer:t,view:a,filter:n,signal:r}).catch(U):null]),v="reference-size"===m,w="spike"===m;S(i,f.visualVariables,F),S(i,z?.visualVariables,R),i.valueExpression=p??null,i.valueExpressionTitle=c??null,x(i,f.authoringInfo,"size");const h=f.statistics;if(!v&&!w)return{renderer:i,statistics:h};if(w){return{renderer:await Me({layer:t,renderer:i,forBinning:l,sizeStops:E(i,"size","spike")?.sizeStops}),statistics:h}}const b=f.isGrid;return{renderer:await Pe({layer:t,renderer:i,view:a,forBinning:l,sizeOptimizationEnabled:o,sizeStops:E(i,"size","reference-size")?.sizeStops,isGrid:b}),isGrid:b,statistics:h}}async function Pe(a){const{layer:r,referenceSizeOptions:n,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:d,isGrid:p}=await ye(a),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find(e=>"reference-size"===e.theme),y=a.field??f?.field,z=a.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 v=h({view:d,field:y,normalizationField:z,sizeStops:u,sizeByScaleEnabled:p||!!a.sizeOptimizationEnabled}),w=n?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in r?r.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach(i=>{const a=e?.color??ue(i.symbol,1);"cim"===i.symbol.type?b(i.symbol,{type:w,color:a,primitiveOverrides:v}):a&&(i.symbol=g({type:w,color:a,primitiveOverrides:v}))})}else if("unique-value"===c.type){const i=c.uniqueValueGroups,a="polygon"===("geometryType"in r?r.geometryType:null)&&m&&"colors"in m?m.colors:null,n=a?e(a,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]:ue(i.symbol,1);"cim"===i.symbol?.type?b(i.symbol,{type:w,color:e,primitiveOverrides:v}):e&&(i.symbol=g({type:w,color:e,primitiveOverrides:v})),s++}c.uniqueValueGroups=i}}return f&&(f.field=y,f.normalizationField=z,f.sizeStops=u.map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),f.referenceSizeScale=p||a.sizeOptimizationEnabled?d.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Me(a){const{layer:r,renderer:n,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await ze(a),d=n.clone();d.authoringInfo??=new l;const p=d.authoringInfo.visualVariables.find(e=>"spike"===e.theme),c=a.field??p?.field,f=a.normalizationField??p?.normalizationField;if(!c)throw new i("update-renderer-with-spike:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const y=N({field:c,normalizationField:f,sizeStops:o}),z="geometryType"in r?r.geometryType:null,v={primitiveOverrides:y,...m},h=m?.symbolStyle,b=h&&h.includes("outline")&&(h.includes("solid-fill")||h.includes("gradient-fill"));if("class-breaks"===d.type){if(s||b){const e=z?await Te({geometryType:z,sizeScheme:s,view:a.view}):null,i=e?.scheme,r="polygon"===z&&i&&"marker"in i?i.marker:i;if(s){const e=r&&"color"in r?r?.color:void 0;v.color=e}if(b){const e=r&&"outline"in r?r.outline.color:void 0;v.strokeColor=e}}d.classBreakInfos.forEach(e=>{if("cim"===e.symbol.type)j(e.symbol,v);else{const i=v.color??ue(e.symbol,1)??void 0;i&&(e.symbol=q({...v,color:i}))}})}else if("unique-value"===d.type){const i=d.uniqueValueGroups,r=d.uniqueValueInfos?.length??0;let n=null;if(u||b){const i=z&&r?await w({numColors:r,geometryType:z,typeScheme:u,view:a.view}):null,s=i?.scheme;if(u){const i=s&&"colors"in s?s.colors:null;n=i?e(i,r):null}if(b){const e=s&&"outline"in s?s.outline.color:void 0;v.strokeColor=e}}let s=0;if(i){for(const e of i)for(const i of e.classes??[]){if("cim"===i.symbol?.type)j(i.symbol,{...v,color:n?.[s]});else{const e=n?.[s]??ue(i.symbol,1)??void 0;e&&(i.symbol=q({...v,color:e}))}s++}d.uniqueValueGroups=i}}return p&&(p.field=c,p.normalizationField=f,p.sizeStops=o.map(({label:e,size:i,value:a})=>new t({label:e,size:i,value:a})),h&&(p.spikeSymbolStyle=h)),d}async function We(e){const i=await ve(e);return qe(i,await W(we(i),i.outlineOptimizationEnabled))}async function $e(e){const{renderer:a,creatorParameters:r}=await xe(e),{outlineOptimizationEnabled:n,normalizationType:s,classificationMethod:l,valueExpression:t,valueExpressionTitle:o}=r,{result:m,outlineResult:d}=await W(we(r),n),p=m.classBreakInfos;if(r.numClasses!==p.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 a.classBreakInfos.forEach((e,i)=>{e.minValue=p[i].minValue,e.maxValue=p[i].maxValue,e.label=p[i].label}),a.normalizationTotal="percent-of-total"===s?m.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:a.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),S(a,d?.visualVariables,R),a.valueExpression=t??null,a.valueExpressionTitle=o??null,{renderer:a}}async function Ae(e){const i=await be(e),{defaultSymbolEnabled:a,view:r,startTime:n,endTime:s,symbolType:l,minValue:t,maxValue:o,signal:u,filter:m,layer:d}=i,[p,c]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await f({view:r,layer:d,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?y({layer:d,view:r,filter:m,signal:u}).catch(U):null]),{unit:z,statistics:v}=p,{valueExpression:w,title:h}=await P(i,z),b=await Ce(he({layer:d,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:v,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:d,valueExpression:w,defaultSymbolEnabled:a,symbolType:l},S=await Ne(b,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach(e=>M(e,n,s,z)),{...S,unit:z}}async function He(e){const{renderer:i,creatorParameters:a}=await Ee(e),{layer:r,outlineOptimizationEnabled:n,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:d}=a,[p,c]=await Promise.all([f({view:u,layer:r,startTime:l,endTime:t,signal:m,filter:d}),n?y({layer:r,view:u,filter:d,signal:m}).catch(U):null]),{unit:z,statistics:v}=p,{valueExpression:w,title:h}=await P(a,z),b=await Ce(he({layer:r,valueExpression:w,statistics:v,legendOptions:{title:h},sizeOptimizationEnabled:s,theme:o,view:u,filter:d,signal:m}));S(i,b.visualVariables,F),S(i,c?.visualVariables,R),i.authoringInfo=b.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach(e=>M(e,l,t,z)),{renderer:i}}export{Ae as createAgeRenderer,We as createClassBreaksRenderer,Ge as createContinuousRenderer,Ce as createVisualVariables,Fe as getSizeStopsForTheme,He as regenerateAgeRenderer,$e as regenerateClassBreaksRenderer,Ue as regenerateContinuousRenderer,De as regenerateVisualVariables,Pe as updateRendererWithReferenceSize,Me as updateRendererWithSpike};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../../core/Error.js";async function n(n,r){const{layer:i,view:t,forBinning:a,filter:s}=n;if(!i||!t)throw new e(`${r}:missing-parameters`,"'layer' and 'view' parameters are required");await i.load();const o="featureReduction"in i?i.featureReduction:null;if(a){if("binning"!==o?.type)throw new e(`${r}:invalid-parameters`,"'layer' must have 'featureReduction' property defined with 'binning' type when 'forBinning' parameter is true");if(s)throw new e(`${r}:invalid-parameters`,"'filter' parameter is not supported when 'forBinning' parameter is true")}return n}async function r(n){const{layer:r,forBinning:i,renderer:t}=n;await r.load();const a="featureReduction"in r?r.featureReduction:null,s=t?.clone()??(i&&"binning"===a?.type?a?.renderer?.clone():"renderer"in r?r.renderer?.clone():null);if(!s)throw new e("get-renderer-to-update:invalid-parameters","renderer not available");return s}function i(e,n,r){const i=e?.authoringInfo?.visualVariables;return i?.find(e=>"reference-size"===r?e.type===n&&"reference-size"===e.theme:"spike"===r?e.type===n&&"spike"===e.theme:e.type===n)}function t(e){if(!e)return null;const n=e.type,r="visualVariables"in e?e.visualVariables:null,t=r?.find(d),a=r?.find(z),s=e.authoringInfo,o=i(e,"color"),u=i(e,"size"),l=i(e,"size","reference-size"),c=i(e,"size","spike");if("class-breaks"===n){if("univariate-color-size"===s?.type)return"univariate-color-size";if(t)return a?u?.units?"color-size-age":o?.units?"color-age-size":"color-size":o?.units?"color-age":l||c?"color-size":"color-continuous";if(a)return u?.units?"size-age":"size-continuous";if(e.classBreakInfos.length>1)return"class-breaks-color"===s?.type?"color-class-breaks":"class-breaks-size"===s?.type?"size-class-breaks":null;if(l||c)return"size-continuous"}return"unique-value"===n?e.valueExpression?"predominance"===s?.type?"predominance":"relationship"===s?.type?a||l||c?"relationship-size":"relationship":a||l||c?"type-size":"type":a?u?.units?"type-size-age":"type-size":l||c?"type-size":"type":"pie-chart"===n?"pie-chart":"dot-density"===n?"dot-density":"heatmap"===n?"heatmap":"simple"===n?"location":null}function a(e){return!!e.visualVariables?.some(h)}function s(e){return!!e.visualVariables?.some(v)}function o(e){return e?.findIndex(h)??-1}function u(e){return e?.findIndex(z)??-1}function l(e){return e?.findIndex(d)??-1}function c(e){return e?.findIndex(y)??-1}function f(e){return e?.findIndex(m)??-1}function p(e){return e?.findIndex(v)??-1}function d(e){return"color"===e.type}function y(e){return"opacity"===e.type}function m(e){return"rotation"===e.type}function z(e){return"size"===e.type&&"outline"!==e.target&&"$view.scale"!==e.valueExpression}function h(e){return"size"===e.type&&"outline"===e.target}function v(e){return"size"===e.type&&"$view.scale"===e.valueExpression&&"outline"!==e.target&&Array.isArray(e.stops)}function g(e,n,r){const i=e.visualVariables,t=r(i);if(!n||Array.isArray(n)&&!n.length)return;Array.isArray(n)||(n=[n]);const a=n.map(e=>e.clone());i?t>-1?i.splice(t,1,...a):i.push(...a):e.visualVariables=a}function b(e,n,r){const t=n?.visualVariables.find(e=>e.type===r),a=i(e,r);a&&t&&(a.dataSeriesName=t.dataSeriesName,a.minSliderValue=t.minSliderValue,a.maxSliderValue=t.maxSliderValue,"size"===r&&("reference-size"!==a.theme&&"spike"!==a.theme||(a.sizeStops=t.sizeStops?.map(e=>e.clone()),"reference-size"===a.theme&&(a.referenceSizeScale=t.referenceSizeScale))))}export{l as findColorVVIndex,c as findOpacityVVIndex,o as findOutlineVVIndex,f as findRotationVVIndex,p as findScaleDependentSizeVVIndex,u as findSizeVVIndex,i as getAuthoringInfoVisualVariable,r as getRendererToUpdate,t as getStyleType,a as hasOutlineVV,s as hasScaleDependentSizeVV,d as isColorVV,y as isOpacityVV,h as isOutlineVV,m as isRotationVV,v as isScaleDependentSizeVV,z as isSizeVV,n as processRegenerateParams,g as spliceVisualVariables,b as updateAuthoringInfoVisualVariable};
|
|
2
|
+
import e from"../../../core/Error.js";async function n(n,r){const{layer:i,view:t,forBinning:a,filter:s}=n;if(!i||!t)throw new e(`${r}:missing-parameters`,"'layer' and 'view' parameters are required");await i.load();const o="featureReduction"in i?i.featureReduction:null;if(a){if("binning"!==o?.type)throw new e(`${r}:invalid-parameters`,"'layer' must have 'featureReduction' property defined with 'binning' type when 'forBinning' parameter is true");if(s)throw new e(`${r}:invalid-parameters`,"'filter' parameter is not supported when 'forBinning' parameter is true")}return n}async function r(n){const{layer:r,forBinning:i,renderer:t}=n;await r.load();const a="featureReduction"in r?r.featureReduction:null,s=t?.clone()??(i&&"binning"===a?.type?a?.renderer?.clone():"renderer"in r?r.renderer?.clone():null);if(!s)throw new e("get-renderer-to-update:invalid-parameters","renderer not available");return s}function i(e,n,r){const i=e?.authoringInfo?.visualVariables;return i?.find(e=>"reference-size"===r?e.type===n&&"reference-size"===e.theme:"spike"===r?e.type===n&&"spike"===e.theme:e.type===n)}function t(e){if(!e)return null;const n=e.type,r="visualVariables"in e?e.visualVariables:null,t=r?.find(d),a=r?.find(z),s=e.authoringInfo,o=i(e,"color"),u=i(e,"size"),l=i(e,"size","reference-size"),c=i(e,"size","spike");if("class-breaks"===n){if("univariate-color-size"===s?.type)return"univariate-color-size";if(t)return a?u?.units?"color-size-age":o?.units?"color-age-size":"color-size":o?.units?"color-age":l||c?"color-size":"color-continuous";if(a)return u?.units?"size-age":"size-continuous";if(e.classBreakInfos.length>1)return"class-breaks-color"===s?.type?"color-class-breaks":"class-breaks-size"===s?.type?"size-class-breaks":null;if(l||c)return"size-continuous"}return"unique-value"===n?e.valueExpression?"predominance"===s?.type?"predominance":"relationship"===s?.type?a||l||c?"relationship-size":"relationship":a||l||c?"type-size":"type":a?u?.units?"type-size-age":"type-size":l||c?"type-size":"type":"pie-chart"===n?"pie-chart":"dot-density"===n?"dot-density":"heatmap"===n?"heatmap":"simple"===n?"location":null}function a(e){return!!e.visualVariables?.some(h)}function s(e){return!!e.visualVariables?.some(v)}function o(e){return e?.findIndex(h)??-1}function u(e){return e?.findIndex(z)??-1}function l(e){return e?.findIndex(d)??-1}function c(e){return e?.findIndex(y)??-1}function f(e){return e?.findIndex(m)??-1}function p(e){return e?.findIndex(v)??-1}function d(e){return"color"===e.type}function y(e){return"opacity"===e.type}function m(e){return"rotation"===e.type}function z(e){return"size"===e.type&&"outline"!==e.target&&"$view.scale"!==e.valueExpression}function h(e){return"size"===e.type&&"outline"===e.target}function v(e){return"size"===e.type&&"$view.scale"===e.valueExpression&&"outline"!==e.target&&Array.isArray(e.stops)}function g(e,n,r){const i=e.visualVariables,t=r(i);if(!n||Array.isArray(n)&&!n.length)return;Array.isArray(n)||(n=[n]);const a=n.map(e=>e.clone());i?t>-1?i.splice(t,1,...a):i.push(...a):e.visualVariables=a}function b(e,n,r){const t=n?.visualVariables.find(e=>e.type===r),a=i(e,r);a&&t&&(a.dataSeriesName=t.dataSeriesName,a.dataSeriesCalculationName=t.dataSeriesCalculationName,a.minSliderValue=t.minSliderValue,a.maxSliderValue=t.maxSliderValue,"size"===r&&("reference-size"!==a.theme&&"spike"!==a.theme||(a.sizeStops=t.sizeStops?.map(e=>e.clone()),"reference-size"===a.theme&&(a.referenceSizeScale=t.referenceSizeScale))))}export{l as findColorVVIndex,c as findOpacityVVIndex,o as findOutlineVVIndex,f as findRotationVVIndex,p as findScaleDependentSizeVVIndex,u as findSizeVVIndex,i as getAuthoringInfoVisualVariable,r as getRendererToUpdate,t as getStyleType,a as hasOutlineVV,s as hasScaleDependentSizeVV,d as isColorVV,y as isOpacityVV,h as isOutlineVV,m as isRotationVV,v as isScaleDependentSizeVV,z as isSizeVV,n as processRegenerateParams,g as spliceVisualVariables,b as updateAuthoringInfoVisualVariable};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../../core/Error.js";import r from"../../../renderers/visualVariables/RotationVariable.js";import{regenerateVisualVariable as a}from"../opacity.js";import{getRendererToUpdate as i,getStyleType as t,findOpacityVVIndex as n,spliceVisualVariables as s,updateAuthoringInfoVisualVariable as o,findRotationVVIndex as l,findSizeVVIndex as c,getAuthoringInfoVisualVariable as u,hasScaleDependentSizeVV as d}from"./regenerateUtils.js";import{resolveDataSeriesInfo as p}from"./timeSeriesUtils.js";async function w(r){let a=await i(r);const n=t(a),s=r.includedParts,o=s?.includes("size-variable")??!0,l=s?.includes("color-variable")??!0,c=s?.includes("class-breaks")??!0,u=s?.includes("opacity-variable")??!0,d=s?.includes("rotation-variable")??!0;switch(a=await f({params:r,renderer:a,styleType:n,includeOpacityVariable:u,includeRotationVariable:d}),r={...r,renderer:a},n){case"color-continuous":{if(!l)return a;const{regenerateContinuousRenderer:e}=await(import("../color.js"));return(await e(r)).renderer}case"color-class-breaks":{if(!c)return a;const{regenerateClassBreaksRenderer:e}=await(import("../color.js"));return(await e(r)).renderer}case"color-age":{if(!l)return a;const{regenerateAgeRenderer:e}=await(import("../color.js"));return(await e(r)).renderer}case"size-continuous":{if(!o)return a;const{regenerateContinuousRenderer:e}=await(import("../size.js"));return(await e(r)).renderer}case"size-class-breaks":{if(!c)return a;const{regenerateClassBreaksRenderer:e}=await(import("../size.js"));return(await e(r)).renderer}case"size-age":{if(!o)return a;const{regenerateAgeRenderer:e}=await(import("../size.js"));return(await e(r)).renderer}case"color-size":{let e=a;if(l){const{regenerateContinuousRenderer:a}=await(import("../color.js"));e=(await a(r)).renderer}return o?await m(r,e):e}case"type":{const{regenerateRenderer:e}=await(import("../type.js"));return(await e(r)).renderer}case"type-size":{const{regenerateRenderer:e}=await(import("../type.js")),{renderer:a}=await e(r);return o?await m(r,a):a}case"predominance":{const{regenerateRenderer:e}=await(import("../predominance.js"));return(await e(r)).renderer}case"relationship":{if(!c)return a;const{regenerateRenderer:e}=await(import("../relationship.js"));return(await e(r)).renderer}case"relationship-size":{let e=a;if(c){const{regenerateRenderer:a}=await(import("../relationship.js")),{renderer:i}=await a(r);e=i}return o?await m(r,e):e}case"pie-chart":{const{regenerateRenderer:e}=await(import("../pieChart.js"));return(await e(r)).renderer}case"dot-density":{const{regenerateRenderer:e}=await(import("../dotDensity.js"));return(await e(r)).renderer}case"heatmap":{const{regenerateRenderer:e}=await(import("../heatmap.js"));return(await e(r)).renderer}case"location":{const{regenerateRenderer:e}=await(import("../location.js"));return(await e(r)).renderer}case"univariate-color-size":{const{regenerateRenderer:e}=await(import("../univariateColorSize.js"));return(await e(r)).renderer}default:throw new e("regenerate-renderer:invalid-parameters","renderer type not supported")}}async function m(e,r){const{regenerateVisualVariables:a,updateRendererWithReferenceSize:i,updateRendererWithSpike:t}=await(import("../size.js")),{visualVariables:n,authoringInfo:l,isGrid:p}=await a({...e,renderer:r});s(r,n,c),o(r,l,"size");const w=u(r,"size","reference-size"),m=u(r,"size","spike");return w||m?m?await t({layer:e.layer,renderer:r,sizeStops:m.sizeStops,forBinning:e.forBinning}):await i({layer:e.layer,renderer:r,sizeStops:w.sizeStops,view:e.view,forBinning:e.forBinning,sizeOptimizationEnabled:d(r),isGrid:p}):r}async function f({params:e,renderer:r,styleType:i,includeOpacityVariable:t,includeRotationVariable:c}){if(!("visualVariables"in r))return r;if(t&&"predominance"!==i&&-1!==n(r.visualVariables)){const i=await a({...e,renderer:r});s(r,i?.visualVariable,n),o(r,i?.authoringInfo,"opacity")}if(c){const a=await g(e,r);s(r,a,l)}return r}async function g(e,a){const i=a.visualVariables?.[l(a.visualVariables)],t=u(a,"rotation");if(!i)return null;const n=new r({axis:i.axis,rotationType:i.rotationType,field:i.field,valueExpression:i.valueExpression,valueExpressionTitle:i.valueExpressionTitle,legendOptions:i.legendOptions?.clone()});if(!t?.dataSeriesName)return n;const s=p({layer:e.layer,view:e.view,field:n.field??null,dataSeriesName:t.dataSeriesName,valueExpression:n.valueExpression??null,valueExpressionTitle:n.valueExpressionTitle??null});return n.field=s.field??null,n.valueExpression=s.valueExpression??null,n.valueExpressionTitle=s.valueExpressionTitle??null,n}export{w as regenerateRenderer};
|
|
2
|
+
import e from"../../../core/Error.js";import r from"../../../renderers/visualVariables/RotationVariable.js";import{regenerateVisualVariable as a}from"../opacity.js";import{getRendererToUpdate as i,getStyleType as t,findOpacityVVIndex as n,spliceVisualVariables as s,updateAuthoringInfoVisualVariable as o,findRotationVVIndex as l,findSizeVVIndex as c,getAuthoringInfoVisualVariable as u,hasScaleDependentSizeVV as d}from"./regenerateUtils.js";import{resolveDataSeriesInfo as p}from"./timeSeriesUtils.js";async function w(r){let a=await i(r);const n=t(a),s=r.includedParts,o=s?.includes("size-variable")??!0,l=s?.includes("color-variable")??!0,c=s?.includes("class-breaks")??!0,u=s?.includes("opacity-variable")??!0,d=s?.includes("rotation-variable")??!0;switch(a=await f({params:r,renderer:a,styleType:n,includeOpacityVariable:u,includeRotationVariable:d}),r={...r,renderer:a},n){case"color-continuous":{if(!l)return a;const{regenerateContinuousRenderer:e}=await(import("../color.js"));return(await e(r)).renderer}case"color-class-breaks":{if(!c)return a;const{regenerateClassBreaksRenderer:e}=await(import("../color.js"));return(await e(r)).renderer}case"color-age":{if(!l)return a;const{regenerateAgeRenderer:e}=await(import("../color.js"));return(await e(r)).renderer}case"size-continuous":{if(!o)return a;const{regenerateContinuousRenderer:e}=await(import("../size.js"));return(await e(r)).renderer}case"size-class-breaks":{if(!c)return a;const{regenerateClassBreaksRenderer:e}=await(import("../size.js"));return(await e(r)).renderer}case"size-age":{if(!o)return a;const{regenerateAgeRenderer:e}=await(import("../size.js"));return(await e(r)).renderer}case"color-size":{let e=a;if(l){const{regenerateContinuousRenderer:a}=await(import("../color.js"));e=(await a(r)).renderer}return o?await m(r,e):e}case"type":{const{regenerateRenderer:e}=await(import("../type.js"));return(await e(r)).renderer}case"type-size":{const{regenerateRenderer:e}=await(import("../type.js")),{renderer:a}=await e(r);return o?await m(r,a):a}case"predominance":{const{regenerateRenderer:e}=await(import("../predominance.js"));return(await e(r)).renderer}case"relationship":{if(!c)return a;const{regenerateRenderer:e}=await(import("../relationship.js"));return(await e(r)).renderer}case"relationship-size":{let e=a;if(c){const{regenerateRenderer:a}=await(import("../relationship.js")),{renderer:i}=await a(r);e=i}return o?await m(r,e):e}case"pie-chart":{const{regenerateRenderer:e}=await(import("../pieChart.js"));return(await e(r)).renderer}case"dot-density":{const{regenerateRenderer:e}=await(import("../dotDensity.js"));return(await e(r)).renderer}case"heatmap":{const{regenerateRenderer:e}=await(import("../heatmap.js"));return(await e(r)).renderer}case"location":{const{regenerateRenderer:e}=await(import("../location.js"));return(await e(r)).renderer}case"univariate-color-size":{const{regenerateRenderer:e}=await(import("../univariateColorSize.js"));return(await e(r)).renderer}default:throw new e("regenerate-renderer:invalid-parameters","renderer type not supported")}}async function m(e,r){const{regenerateVisualVariables:a,updateRendererWithReferenceSize:i,updateRendererWithSpike:t}=await(import("../size.js")),{visualVariables:n,authoringInfo:l,isGrid:p}=await a({...e,renderer:r});s(r,n,c),o(r,l,"size");const w=u(r,"size","reference-size"),m=u(r,"size","spike");return w||m?m?await t({layer:e.layer,renderer:r,sizeStops:m.sizeStops,forBinning:e.forBinning}):await i({layer:e.layer,renderer:r,sizeStops:w.sizeStops,view:e.view,forBinning:e.forBinning,sizeOptimizationEnabled:d(r),isGrid:p}):r}async function f({params:e,renderer:r,styleType:i,includeOpacityVariable:t,includeRotationVariable:c}){if(!("visualVariables"in r))return r;if(t&&"predominance"!==i&&-1!==n(r.visualVariables)){const i=await a({...e,renderer:r});s(r,i?.visualVariable,n),o(r,i?.authoringInfo,"opacity")}if(c){const a=await g(e,r);s(r,a,l)}return r}async function g(e,a){const i=a.visualVariables?.[l(a.visualVariables)],t=u(a,"rotation");if(!i)return null;const n=new r({axis:i.axis,rotationType:i.rotationType,field:i.field,valueExpression:i.valueExpression,valueExpressionTitle:i.valueExpressionTitle,legendOptions:i.legendOptions?.clone()});if(!t?.dataSeriesName)return n;const s=p({layer:e.layer,view:e.view,field:n.field??null,dataSeriesName:t.dataSeriesName,dataSeriesCalculationName:t.dataSeriesCalculationName,valueExpression:n.valueExpression??null,valueExpressionTitle:n.valueExpressionTitle??null});return n.field=s.field??null,n.valueExpression=s.valueExpression??null,n.valueExpressionTitle=s.valueExpressionTitle??null,n}export{w as regenerateRenderer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../../core/Error.js";import{getSourceLayer as
|
|
2
|
+
import e from"../../../core/Error.js";import{getSourceLayer as t,getDataSeriesInfo as i}from"../../../layers/support/dataSeriesUtils.js";import{createTimeSeriesExpression as a}from"../../../layers/support/timeSeriesUtils.js";import s from"../../statistics/summaryStatistics.js";import{isIntegerField as r,castIntegerFieldToFloat as n}from"../../support/utils.js";import{createLayerAdapter as o,featureCapableLayerTypes as l}from"../../support/adapters/support/layerUtils.js";const m=new Set(["big-integer","double","integer","long","single","small-integer"]);function u(t,i){const a=i.fieldTimeMappings??[],s=[];for(const r of a){const a=r.fieldName;if(!a)throw new e("time-series-summary-statistics:invalid-parameters","Found a time series mapping with an empty 'fieldName'");const n=t.getField(a);if(!n)throw new e("time-series-summary-statistics:invalid-parameters",`Field '${a}' defined in time series '${i.name}' does not exist`);if(!m.has(n.type))throw new e("time-series-summary-statistics:invalid-parameters",`Field '${a}' in time series '${i.name}' has unsupported type '${n.type}'`);s.push(a)}return s}function p(t,i,a){if(null==i)return;const s=t.calculationMethods?.find(e=>e.name===i);if(!s?.type)throw new e(`${a}:invalid-parameters`,"'dataSeriesCalculationName' is not valid");return s}function d(e,t,i){const a="change-from-first"===i||"percent-change-from-first"===i,s="percent-change-from-first"===i||"percent-change-from-previous"===i;return t.slice(1).map((i,o)=>{const l=a?t[0]:t[o],m=r(e,l)?n(l):l,u=r(e,i)?n(i):i;return{sqlExpression:s?`CASE WHEN ${l} IS NULL OR ${l} = 0 OR ${i} IS NULL THEN NULL ELSE 100.0 * (${u} - ${m}) / ${m} END`:`CASE WHEN ${l} IS NULL OR ${i} IS NULL THEN NULL ELSE ${u} - ${m} END`}})}function c(e){const t=e.filter(e=>e.count),i=t.reduce((e,t)=>e+(t.count??0),0);if(!i)return{count:0};const a=Math.min(...t.map(e=>e.min)),s=Math.max(...t.map(e=>e.max)),r=t.reduce((e,t)=>e+(t.sum??0),0),n=r/i,o=t.reduce((e,t)=>e+(t.variance??0)*Math.max((t.count??0)-1,0),0),l=t.reduce((e,t)=>e+(t.count??0)*((t.avg??0)-n)**2,0),m=i>1?(o+l)/(i-1):0,u=Math.sqrt(m);return{min:a,max:s,avg:n,count:i,sum:r,variance:m,stddev:u}}async function f(t,i,a,r){const n=o(t.layer,l);if(!n)throw new e("time-series-summary-statistics:invalid-parameters","'layer' must be a feature-capable layer");await n.load(null!=t.signal?{signal:t.signal}:null);return c(await Promise.all(d(i,a,r).map(({sqlExpression:e})=>s({layer:n,sqlExpression:e,view:t.view,filter:t.filter,signal:t.signal}))))}function y(e,t,i){const a=e.dataSeriesInfos?.indexOf(t)??-1,s=t.title||`${t.name} ${a}`,r=i?.title;return r||(i?.type?`${s} ${i.type}`:s)}async function v(a){const r=t(a.layer);if(!r)throw new e("time-series-summary-statistics:invalid-parameters","'layer' must support dataSeriesInfos");const n=i(r,a.dataSeriesName);if(!n)throw new e("time-series-summary-statistics:invalid-parameters","'dataSeriesName' is not valid");if("time-series-fields"!==n.type)throw new e("time-series-summary-statistics:invalid-parameters","'dataSeriesName' has unsupported type");const o=p(n,a.dataSeriesCalculationName,"time-series-summary-statistics"),l=u(r,n);return o?.type?f(a,r,l,o.type):s({layer:a.layer,fields:l,view:a.view,filter:a.filter,signal:a.signal})}function w(s){if(!s.dataSeriesName||!s.layer){if(null!=s.dataSeriesCalculationName)throw new e("resolve-data-series-info:invalid-parameters","'dataSeriesCalculationName' requires a valid 'dataSeriesName' and 'layer'");return s}const r=t(s.layer);if(!r)throw new e("resolve-data-series-info:invalid-parameters","'layer' must support dataSeriesInfos");const n=i(r,s.dataSeriesName);if(!n)throw new e("resolve-data-series-info:invalid-parameters","'dataSeriesName' is not valid");if("time-series-fields"!==n.type)throw new e("resolve-data-series-info:invalid-parameters","'dataSeriesName' has unsupported type");const o=p(n,s.dataSeriesCalculationName,"resolve-data-series-info"),l=a(n,{calculationMethod:o?.type??void 0});return s.valueExpression=l,s.valueExpressionTitle=y(r,n,o),"field"in s&&(s.field=null),s}export{v as getTimeSeriesSummaryStatistics,w as resolveDataSeriesInfo};
|
|
@@ -182,6 +182,12 @@ export interface RendererParameters extends AbortOptions {
|
|
|
182
182
|
* precedence is `dataSeriesName` over `valueExpression` over `field`.
|
|
183
183
|
*/
|
|
184
184
|
dataSeriesName?: string | null;
|
|
185
|
+
/**
|
|
186
|
+
* Name of the calculation method to use in the data series configuration referenced by `dataSeriesName`.
|
|
187
|
+
*
|
|
188
|
+
* @since 5.2
|
|
189
|
+
*/
|
|
190
|
+
dataSeriesCalculationName?: string | null;
|
|
185
191
|
/**
|
|
186
192
|
* Provides options for setting a title to a field that will override the field
|
|
187
193
|
* alias defined in the service. This title will represent the field in the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as l}from"../../core/lang.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import{isTimeOnlyField as r}from"../../layers/support/fieldUtils.js";import o from"../../renderers/PointCloudUniqueValueRenderer.js";import t from"../../renderers/UniqueValueRenderer.js";import s from"../../renderers/support/AuthoringInfo.js";import a from"../../renderers/support/RendererLegendOptions.js";import{createUniqueValueLabel as u,calculateDateFormatInterval as p,dateFormatIntervalOptions as m}from"../../renderers/support/utils.js";import d from"../../renderers/support/pointCloud/ColorUniqueValueInfo.js";import c from"../heuristics/outline.js";import f from"../heuristics/sizeRange.js";import{spliceVisualVariables as y,findOutlineVVIndex as v,findScaleDependentSizeVVIndex as b,processRegenerateParams as g,getRendererToUpdate as h,getStyleType as w,hasOutlineVV as T,hasScaleDependentSizeVV as E}from"./support/regenerateUtils.js";import{resolveDataSeriesInfo as z}from"./support/timeSeriesUtils.js";import{getPointSizeAlgorithm as x,errorCallback as I,getBasemapInfo as V,isValidPointSize as S,verifyBasicFieldValidity as j,getSymbolSizeFromScheme as M,getSymbolOutlineFromScheme as O,createSymbol as q}from"./support/utils.js";import U from"../statistics/uniqueValues.js";import{verifyBinningParams as C}from"../support/binningUtils.js";import{getFieldsList as B,fieldDelimiter as R,isAnyDateField as N}from"../support/utils.js";import{createLayerAdapter as P,getLayerTypeLabels as Z,binningCapableLayerTypes as F,featureCapableLayerTypes as A}from"../support/adapters/support/layerUtils.js";import{cloneScheme as D,getSchemes as k}from"../symbology/type.js";async function L(e){const n=z({...e});if(!n?.layer||!n.field&&!n.valueExpression)throw new i("type-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(n.valueExpression&&!n.view)throw new i("type-renderer:missing-parameters","View is required when 'valueExpression' is specified");n.forBinning&&C(n,"type-renderer");const r={...n,layer:n.layer};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.sortBy??="count",r.sortEnabled??=!0,r.statistics=l(r.statistics);const o=null==r.numTypes?10:r.numTypes,t=n.forBinning?F:A,s=P(r.layer,t,n.forBinning);if(!s)throw new i("type-renderer:invalid-parameters","'layer' must be one of these types: "+Z(t).join(", "));const a=null!=r.signal?{signal:r.signal}:null;await s.load(a);const u=s.geometryType;r.outlineOptimizationEnabled="polygon"===u&&r.outlineOptimizationEnabled;const p="featureReduction"in n.layer&&"cluster"===n.layer.featureReduction?.type;if(r.sizeOptimizationEnabled=!("point"!==u&&"multipoint"!==u&&"polyline"!==u||p)&&r.sizeOptimizationEnabled,"mesh"===u)r.symbolType="3d-volumetric",r.colorMixMode=r.colorMixMode||"replace",r.edgesType=r.edgesType||"none";else{if("3d-volumetric-uniform"===r.symbolType&&"point"!==u)throw new i("type-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(r.symbolType.includes("3d-volumetric")&&"3d"!==r.view?.type)throw new i("type-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const m=await B({field:r.field,field2:r.field2,field3:r.field3,valueExpression:r.valueExpression}),d=j(s,m,"type-renderer:invalid-parameters");if(d)throw d;return{...r,layer:s,numTypes:o}}async function $(e){const l="regenerate-type-renderer";await g(e,l);const n=await h(e),r=w(n);if(!r||!["type","type-size"].includes(r))throw new i(`${l}:invalid-parameters`,"Renderer is invalid");const{field:o,field2:t,field3:s,valueExpression:a,valueExpressionTitle:u}=n,p=n.uniqueValueInfos.length,{layer:m,forBinning:d,filter:c,view:f,signal:y}=e,v=n.authoringInfo?.dataSeriesName,b=T(n),z=E(n),x=await L({layer:m,field:o,field2:t,field3:s,valueExpression:a,valueExpressionTitle:u,numTypes:p,outlineOptimizationEnabled:b,sizeOptimizationEnabled:z,dataSeriesName:v,forBinning:d,filter:c,view:f,signal:y});return{...e,creatorParameters:x,renderer:n}}async function G(e){if(!e?.layer||!e.field)throw new i("type-point-cloud-class-renderer:missing-parameters","'layer' and 'field' parameters are required");const n={...e,layer:e.layer};n.statistics=l(n.statistics);const r=[10],o=P(n.layer,r);if(!o)throw new i("type-point-cloud-class-renderer:invalid-parameters","'layer' must be one of these types: "+Z(r).join(", "));if(n.layer=o,n.density=n.density||25,n.size=n.size||"100%",!S(n.size))throw new i("type-point-cloud-class-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const t=null!=n.signal?{signal:n.signal}:null;await o.load(t);const s=await B({field:n.field}),a=j(o,s,"type-point-cloud-class-renderer:invalid-parameters");if(a)throw a;return n}async function H(e){let i=e.typeScheme,l=null,n=null;const r=await V(e.basemap,e.view);if(l=null!=r.basemapId?r.basemapId:null,n=null!=r.basemapTheme?r.basemapTheme:null,i)return{scheme:D(i),basemapId:l,basemapTheme:n};const o=k({numColors:e.numColors,basemapTheme:n,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return o&&(i=o.primaryScheme,l=o.basemapId,n=o.basemapTheme),{scheme:i,basemapId:l,basemapTheme:n}}function J(e,i){let l;return l=e.label<i.label?-1:e.label>i.label?1:0,l}function K(e,i){let l;return l=e.value<i.value?-1:e.value>i.value?1:0,l}function Q(e,i){let l=i.count-e.count;return 0===l&&(l=J(e,i)),l}function W(e,i){let l=i.count-e.count;return 0===l&&(l=K(e,i)),l}function X(e,i,l){let n;"count"===i?(n=W,l&&"codedValues"in l&&l.codedValues&&(n=Q)):"value"===i&&(n=K,l&&"codedValues"in l&&l.codedValues&&(n=J)),n&&e.sort(n)}async function Y(e,i,l,r){const o=await n("esri/smartMapping/t9n/smartMapping"),{field:p,field2:m,field3:d}=i,c=e.uniqueValueInfos,f=i.layer,y=p?f.getField(p):null,v=y?f.getFieldDomain(y.name):null,b=-1===i.numTypes?c.length:i.numTypes,g=f.geometryType,h=new t({field:p,field2:m,field3:d,fieldDelimiter:p&&m?R:null}),w=[],T=[],E={value:null,domain:v,fieldInfo:y};c.forEach((e,i)=>{E.value=e.value,e.label=u(E);const l=e.value;(null===l||"string"==typeof l&&l.toLowerCase().includes("<null>"))&&w.unshift(i)});for(const n of w)T.unshift(c.splice(n,1)[0]);!1!==i.sortEnabled&&X(c,i.sortBy,v),_(E,i,c);const z=l?.opacity,x=await H({numColors:c.length,basemap:i.basemap,geometryType:g,typeScheme:i.typeScheme,worldScale:!!i.symbolType?.includes("3d-volumetric"),view:i.view}),I=x.scheme,V=I.colors.map(e=>e.clone()),S=M(I,g),j=O(I,g,z);c.forEach((e,l)=>{E.value=e.value,e.label=u(E),e.symbol=q(g,{type:i.symbolType,color:V[l],size:S,outline:j,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}})}),i.valueExpression&&(h.valueExpression=i.valueExpression,h.valueExpressionTitle=i.valueExpressionTitle),i.legendOptions&&(h.legendOptions=new a(i.legendOptions));for(let n=0;n<b;n++){const e=c[n];e&&h.addUniqueValueInfo({value:e.value,label:e.label,symbol:q(g,{type:i.symbolType,color:V[n].clone(),size:S,outline:j,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}})})}i.defaultSymbolEnabled&&(h.defaultSymbol=q(g,{type:i.symbolType,color:I.noDataColor,size:S,outline:j,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}}),h.defaultLabel=o.other);for(const n of T)n.symbol=q(g,{type:i.symbolType,color:I.noDataColor,size:S,outline:j,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}}),c.push(n);const U=[],C=h.uniqueValueInfos?.length??0,B=C===c.length?-1:C;if(B>-1)for(let n=B;n<c.length;n++)U.push({...c[n]});return l?.visualVariables?.length&&(h.visualVariables=l.visualVariables.map(e=>e.clone())),r?.minSize&&(h.visualVariables?h.visualVariables.push(r.minSize):h.visualVariables=[r.minSize]),i.dataSeriesName&&(h.authoringInfo=new s({dataSeriesName:i.dataSeriesName})),{renderer:h,uniqueValueInfos:c,excludedUniqueValueInfos:U,typeScheme:D(I),basemapId:x.basemapId,basemapTheme:x.basemapTheme}}function _(e,i,l){const{field:n,numTypes:o,layer:t,view:s}=i,a=n?t.getField(n):null;if(a&&(N(a)||r(a))){const i=l.filter((e,i)=>i<o).map(e=>e.value),n=r(a)?null:p(i),u=n?m[n]:void 0;if(e.dateFormatOptions={fieldType:a.type,format:u},s){const i=t.layer;e.dateFormatOptions.timeZoneOptions={layerTimeZone:"preferredTimeZone"in i?i.preferredTimeZone:null,viewTimeZone:s.timeZone,datesInUnknownTimezone:"datesInUnknownTimezone"in i&&i.datesInUnknownTimezone}}}}async function ee(i,l){const n=i.uniqueValueInfos,r=await H({numColors:n.length,basemap:"gray",theme:"point-cloud-class",geometryType:"point",typeScheme:l}),o=r?.scheme,t="point-cloud-class"===o?.theme,s=t?o.colors:e(o?.colors??[],n.length);return X(n,"value"),n.map((e,i)=>{const l=e.value;let n=null;return t?(n=s[l],n||(n=s[s.length-1])):n=s[i],new d({values:[l],color:n,label:e.label})})}async function ie(e){const i=await L(e),{layer:l,view:n,signal:r,filter:o}=i,t={layer:l,field:i.field,field2:i.field2,field3:i.field3,valueExpression:i.valueExpression,returnAllCodedValues:i.returnAllCodedValues,view:n,filter:o,signal:r},[s,a,u]=await Promise.all([null!=i.statistics?i.statistics:U(t),i.outlineOptimizationEnabled?c({layer:l,view:n,signal:r,filter:o}).catch(I):null,i.sizeOptimizationEnabled?f({layer:l,view:n,signal:r,filter:o}).catch(I):null]);return Y(s,i,a,u)}async function le(e){const{creatorParameters:i,view:l,signal:n,filter:r,renderer:o}=await $(e),{layer:t,outlineOptimizationEnabled:s,sizeOptimizationEnabled:a,field:u,valueExpression:p,valueExpressionTitle:m}=i,[d,g]=await Promise.all([s?c({layer:t,view:l,signal:n,filter:r}).catch(I):null,a?f({layer:t,view:l,signal:n,filter:r}).catch(I):null]);return y(o,d?.visualVariables,v),y(o,g?.minSize,b),i.dataSeriesName&&(o.field=u,o.valueExpression=p,o.valueExpressionTitle=m),{renderer:o}}async function ne(e){const i=await G(e),l=null!=i.statistics?i.statistics:await U({layer:i.layer,field:i.field,signal:i.signal});return{renderer:new o({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:x(i.size),colorUniqueValueInfos:await ee(l,i.typeScheme)})}}export{ne as createPCClassRenderer,ie as createRenderer,H as getTypeSchemeData,le as regenerateRenderer};
|
|
2
|
+
import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as l}from"../../core/lang.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import{isTimeOnlyField as r}from"../../layers/support/fieldUtils.js";import a from"../../renderers/PointCloudUniqueValueRenderer.js";import o from"../../renderers/UniqueValueRenderer.js";import t from"../../renderers/support/AuthoringInfo.js";import s from"../../renderers/support/RendererLegendOptions.js";import{createUniqueValueLabel as u,calculateDateFormatInterval as p,dateFormatIntervalOptions as m}from"../../renderers/support/utils.js";import d from"../../renderers/support/pointCloud/ColorUniqueValueInfo.js";import c from"../heuristics/outline.js";import f from"../heuristics/sizeRange.js";import{spliceVisualVariables as y,findOutlineVVIndex as v,findScaleDependentSizeVVIndex as g,processRegenerateParams as h,getRendererToUpdate as b,getStyleType as w,hasOutlineVV as T,hasScaleDependentSizeVV as E}from"./support/regenerateUtils.js";import{resolveDataSeriesInfo as z}from"./support/timeSeriesUtils.js";import{getPointSizeAlgorithm as x,errorCallback as I,getBasemapInfo as S,isValidPointSize as V,verifyBasicFieldValidity as j,getSymbolSizeFromScheme as M,getSymbolOutlineFromScheme as O,createSymbol as C}from"./support/utils.js";import q from"../statistics/uniqueValues.js";import{verifyBinningParams as U}from"../support/binningUtils.js";import{getFieldsList as N,fieldDelimiter as B,isAnyDateField as R}from"../support/utils.js";import{createLayerAdapter as P,getLayerTypeLabels as Z,binningCapableLayerTypes as F,featureCapableLayerTypes as A}from"../support/adapters/support/layerUtils.js";import{cloneScheme as D,getSchemes as k}from"../symbology/type.js";async function L(e){const n=z({...e});if(!n?.layer||!n.field&&!n.valueExpression)throw new i("type-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(n.valueExpression&&!n.view)throw new i("type-renderer:missing-parameters","View is required when 'valueExpression' is specified");n.forBinning&&U(n,"type-renderer");const r={...n,layer:n.layer};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.sortBy??="count",r.sortEnabled??=!0,r.statistics=l(r.statistics);const a=null==r.numTypes?10:r.numTypes,o=n.forBinning?F:A,t=P(r.layer,o,n.forBinning);if(!t)throw new i("type-renderer:invalid-parameters","'layer' must be one of these types: "+Z(o).join(", "));const s=null!=r.signal?{signal:r.signal}:null;await t.load(s);const u=t.geometryType;r.outlineOptimizationEnabled="polygon"===u&&r.outlineOptimizationEnabled;const p="featureReduction"in n.layer&&"cluster"===n.layer.featureReduction?.type;if(r.sizeOptimizationEnabled=!("point"!==u&&"multipoint"!==u&&"polyline"!==u||p)&&r.sizeOptimizationEnabled,"mesh"===u)r.symbolType="3d-volumetric",r.colorMixMode=r.colorMixMode||"replace",r.edgesType=r.edgesType||"none";else{if("3d-volumetric-uniform"===r.symbolType&&"point"!==u)throw new i("type-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(r.symbolType.includes("3d-volumetric")&&"3d"!==r.view?.type)throw new i("type-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const m=await N({field:r.field,field2:r.field2,field3:r.field3,valueExpression:r.valueExpression}),d=j(t,m,"type-renderer:invalid-parameters");if(d)throw d;return{...r,layer:t,numTypes:a}}async function $(e){const l="regenerate-type-renderer";await h(e,l);const n=await b(e),r=w(n);if(!r||!["type","type-size"].includes(r))throw new i(`${l}:invalid-parameters`,"Renderer is invalid");const{field:a,field2:o,field3:t,valueExpression:s,valueExpressionTitle:u}=n,p=n.uniqueValueInfos.length,{layer:m,forBinning:d,filter:c,view:f,signal:y}=e,v=n.authoringInfo?.dataSeriesName,g=n.authoringInfo?.dataSeriesCalculationName,z=T(n),x=E(n),I=await L({layer:m,field:a,field2:o,field3:t,valueExpression:s,valueExpressionTitle:u,numTypes:p,outlineOptimizationEnabled:z,sizeOptimizationEnabled:x,dataSeriesName:v,dataSeriesCalculationName:g,forBinning:d,filter:c,view:f,signal:y});return{...e,creatorParameters:I,renderer:n}}async function G(e){if(!e?.layer||!e.field)throw new i("type-point-cloud-class-renderer:missing-parameters","'layer' and 'field' parameters are required");const n={...e,layer:e.layer};n.statistics=l(n.statistics);const r=[10],a=P(n.layer,r);if(!a)throw new i("type-point-cloud-class-renderer:invalid-parameters","'layer' must be one of these types: "+Z(r).join(", "));if(n.layer=a,n.density=n.density||25,n.size=n.size||"100%",!V(n.size))throw new i("type-point-cloud-class-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const o=null!=n.signal?{signal:n.signal}:null;await a.load(o);const t=await N({field:n.field}),s=j(a,t,"type-point-cloud-class-renderer:invalid-parameters");if(s)throw s;return n}async function H(e){let i=e.typeScheme,l=null,n=null;const r=await S(e.basemap,e.view);if(l=null!=r.basemapId?r.basemapId:null,n=null!=r.basemapTheme?r.basemapTheme:null,i)return{scheme:D(i),basemapId:l,basemapTheme:n};const a=k({numColors:e.numColors,basemapTheme:n,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return a&&(i=a.primaryScheme,l=a.basemapId,n=a.basemapTheme),{scheme:i,basemapId:l,basemapTheme:n}}function J(e,i){let l;return l=e.label<i.label?-1:e.label>i.label?1:0,l}function K(e,i){let l;return l=e.value<i.value?-1:e.value>i.value?1:0,l}function Q(e,i){let l=i.count-e.count;return 0===l&&(l=J(e,i)),l}function W(e,i){let l=i.count-e.count;return 0===l&&(l=K(e,i)),l}function X(e,i,l){let n;"count"===i?(n=W,l&&"codedValues"in l&&l.codedValues&&(n=Q)):"value"===i&&(n=K,l&&"codedValues"in l&&l.codedValues&&(n=J)),n&&e.sort(n)}async function Y(e,i,l,r){const a=await n("esri/smartMapping/t9n/smartMapping"),{field:p,field2:m,field3:d}=i,c=e.uniqueValueInfos,f=i.layer,y=p?f.getField(p):null,v=y?f.getFieldDomain(y.name):null,g=-1===i.numTypes?c.length:i.numTypes,h=f.geometryType,b=new o({field:p,field2:m,field3:d,fieldDelimiter:p&&m?B:null}),w=[],T=[],E={value:null,domain:v,fieldInfo:y};c.forEach((e,i)=>{E.value=e.value,e.label=u(E);const l=e.value;(null===l||"string"==typeof l&&l.toLowerCase().includes("<null>"))&&w.unshift(i)});for(const n of w)T.unshift(c.splice(n,1)[0]);!1!==i.sortEnabled&&X(c,i.sortBy,v),_(E,i,c);const z=l?.opacity,x=await H({numColors:c.length,basemap:i.basemap,geometryType:h,typeScheme:i.typeScheme,worldScale:!!i.symbolType?.includes("3d-volumetric"),view:i.view}),I=x.scheme,S=I.colors.map(e=>e.clone()),V=M(I,h),j=O(I,h,z);c.forEach((e,l)=>{E.value=e.value,e.label=u(E),e.symbol=C(h,{type:i.symbolType,color:S[l],size:V,outline:j,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}})}),i.valueExpression&&(b.valueExpression=i.valueExpression,b.valueExpressionTitle=i.valueExpressionTitle),i.legendOptions&&(b.legendOptions=new s(i.legendOptions));for(let n=0;n<g;n++){const e=c[n];e&&b.addUniqueValueInfo({value:e.value,label:e.label,symbol:C(h,{type:i.symbolType,color:S[n].clone(),size:V,outline:j,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}})})}i.defaultSymbolEnabled&&(b.defaultSymbol=C(h,{type:i.symbolType,color:I.noDataColor,size:V,outline:j,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}}),b.defaultLabel=a.other);for(const n of T)n.symbol=C(h,{type:i.symbolType,color:I.noDataColor,size:V,outline:j,meshInfo:{colorMixMode:i.colorMixMode,edgesType:i.edgesType}}),c.push(n);const q=[],U=b.uniqueValueInfos?.length??0,N=U===c.length?-1:U;if(N>-1)for(let n=N;n<c.length;n++)q.push({...c[n]});return l?.visualVariables?.length&&(b.visualVariables=l.visualVariables.map(e=>e.clone())),r?.minSize&&(b.visualVariables?b.visualVariables.push(r.minSize):b.visualVariables=[r.minSize]),i.dataSeriesName&&(b.authoringInfo=new t({dataSeriesName:i.dataSeriesName,dataSeriesCalculationName:i.dataSeriesCalculationName})),{renderer:b,uniqueValueInfos:c,excludedUniqueValueInfos:q,typeScheme:D(I),basemapId:x.basemapId,basemapTheme:x.basemapTheme}}function _(e,i,l){const{field:n,numTypes:a,layer:o,view:t}=i,s=n?o.getField(n):null;if(s&&(R(s)||r(s))){const i=l.filter((e,i)=>i<a).map(e=>e.value),n=r(s)?null:p(i),u=n?m[n]:void 0;if(e.dateFormatOptions={fieldType:s.type,format:u},t){const i=o.layer;e.dateFormatOptions.timeZoneOptions={layerTimeZone:"preferredTimeZone"in i?i.preferredTimeZone:null,viewTimeZone:t.timeZone,datesInUnknownTimezone:"datesInUnknownTimezone"in i&&i.datesInUnknownTimezone}}}}async function ee(i,l){const n=i.uniqueValueInfos,r=await H({numColors:n.length,basemap:"gray",theme:"point-cloud-class",geometryType:"point",typeScheme:l}),a=r?.scheme,o="point-cloud-class"===a?.theme,t=o?a.colors:e(a?.colors??[],n.length);return X(n,"value"),n.map((e,i)=>{const l=e.value;let n=null;return o?(n=t[l],n||(n=t[t.length-1])):n=t[i],new d({values:[l],color:n,label:e.label})})}async function ie(e){const i=await L(e),{layer:l,view:n,signal:r,filter:a}=i,o={layer:l,field:i.field,field2:i.field2,field3:i.field3,valueExpression:i.valueExpression,returnAllCodedValues:i.returnAllCodedValues,view:n,filter:a,signal:r},[t,s,u]=await Promise.all([null!=i.statistics?i.statistics:q(o),i.outlineOptimizationEnabled?c({layer:l,view:n,signal:r,filter:a}).catch(I):null,i.sizeOptimizationEnabled?f({layer:l,view:n,signal:r,filter:a}).catch(I):null]);return Y(t,i,s,u)}async function le(e){const{creatorParameters:i,view:l,signal:n,filter:r,renderer:a}=await $(e),{layer:o,outlineOptimizationEnabled:t,sizeOptimizationEnabled:s,field:u,valueExpression:p,valueExpressionTitle:m}=i,[d,h]=await Promise.all([t?c({layer:o,view:l,signal:n,filter:r}).catch(I):null,s?f({layer:o,view:l,signal:n,filter:r}).catch(I):null]);return y(a,d?.visualVariables,v),y(a,h?.minSize,g),i.dataSeriesName&&(a.field=u,a.valueExpression=p,a.valueExpressionTitle=m),{renderer:a}}async function ne(e){const i=await G(e),l=null!=i.statistics?i.statistics:await q({layer:i.layer,field:i.field,signal:i.signal});return{renderer:new a({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:x(i.size),colorUniqueValueInfos:await ee(l,i.typeScheme)})}}export{ne as createPCClassRenderer,ie as createRenderer,H as getTypeSchemeData,le as regenerateRenderer};
|
|
@@ -228,6 +228,12 @@ export interface VisualVariablesParamsBase extends AbortOptions {
|
|
|
228
228
|
* precedence is `dataSeriesName` over `valueExpression` over `field`.
|
|
229
229
|
*/
|
|
230
230
|
dataSeriesName?: string | null;
|
|
231
|
+
/**
|
|
232
|
+
* Name of the calculation method to use in the data series configuration referenced by `dataSeriesName`.
|
|
233
|
+
*
|
|
234
|
+
* @since 5.2
|
|
235
|
+
*/
|
|
236
|
+
dataSeriesCalculationName?: string | null;
|
|
231
237
|
/**
|
|
232
238
|
* A SQL expression evaluating to a number. When provided, statistics are
|
|
233
239
|
* queried from the server for the entire layer. Only use this parameter when generating a renderer based on
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import e from"../../core/Error.js";import i from"../../renderers/support/AuthoringInfo.js";import a from"../../renderers/support/ClassBreakInfo.js";import s from"../../renderers/visualVariables/support/SizeStop.js";import{getSize as o}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{createVisualVariable as n}from"./color.js";import{createContinuousRenderer as l,createVisualVariables as t,regenerateContinuousRenderer as r}from"./size.js";import{isColorVV as u,updateAuthoringInfoVisualVariable as p,spliceVisualVariables as m,findSizeVVIndex as c,getAuthoringInfoVisualVariable as v,processRegenerateParams as d,getRendererToUpdate as f,getStyleType as b,hasOutlineVV as y,hasScaleDependentSizeVV as w}from"./support/regenerateUtils.js";import{resolveDataSeriesInfo as h}from"./support/timeSeriesUtils.js";import{verifyBasicFieldValidity as z,createStopValuesForAboveBelow as g,clampAboveAndBelowStopValues as V,createDefaultStopValues as x}from"./support/utils.js";import{verifyBinningParams as E}from"../support/binningUtils.js";import{isAnyDateField as O,getFieldsList as S}from"../support/utils.js";import{binningCapableLayerTypes as T,featureCapableLayerTypes as I,createLayerAdapter as j,getLayerTypeLabels as B}from"../support/adapters/support/layerUtils.js";import{getAboveAndBelowSymbols as U}from"../symbology/support/aboveAndBelowUtils.js";import{applyCIMSymbolColor as q}from"../../symbols/support/cimSymbolUtils.js";import D from"../../symbols/support/Symbol3DMaterial.js";const C=2**53-1;async function F(i){const a=h({...i});if(!a?.layer||!(a.field||a.valueExpression||a.sqlExpression))throw new e("univariate-colorsize-visual-variables:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new e("univariate-colorsize-visual-variables:missing-parameters","View is required when 'valueExpression' is specified");if("above-and-below"===a.theme&&a.sizeOptions?.sizeOptimizationEnabled)throw new e("univariate-colorsize-visual-variables:invalid-parameters","sizeOptimizationEnabled cannot be true for 'above-and-below' theme");a.forBinning&&E(a,"univariate-colorsize-visual-variables");const s={...a,layer:a.layer},o=a.forBinning?T:I,n=j(s.layer,o,a.forBinning);if(!n)throw new e("univariate-colorsize-visual-variables:invalid-parameters","'layer' must be one of these types: "+B(o).join(", "));s.layer=n,s.theme=s.theme||s.colorOptions?.theme?s.theme:"high-to-low";const l=null!=s.signal?{signal:s.signal}:null;await n.load(l);const t=await S({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),r=z(n,t,"univariate-colorsize-visual-variables:invalid-parameters");if(r)throw r;return s}function k(e,i){const a={...e},{sizeOptions:s,theme:o}=a,n=a.legendOptions||a.sizeOptions?.legendOptions;return delete a.sizeOptions,delete a.colorOptions,{...a,...s,statistics:i||a.statistics,theme:"above-and-below"===o?null:o,legendOptions:n}}function N(e,i){const a={...e},s=a.colorOptions,o=a.theme||s?.theme,n=a.legendOptions||a.colorOptions?.legendOptions;return delete a.sizeOptions,delete a.colorOptions,{...a,...s,statistics:i||a.statistics,theme:o,legendOptions:n}}async function A(i){const a=h({...i});if(!a?.layer||!(a.field||a.valueExpression||a.sqlExpression))throw new e("univariate-colorsize-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new e("univariate-colorsize-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&E(a,"univariate-colorsize-continuous-renderer");const s={...a,layer:a.layer};s.symbolType=s.symbolType||"2d",s.colorOptions||(s.colorOptions={}),s.colorOptions.isContinuous=s.colorOptions.isContinuous??!1;const o=a.forBinning?T:I,n=j(s.layer,o,a.forBinning);if(!n)throw new e("univariate-colorsize-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+B(o).join(", "));const l=null!=s.signal?{signal:s.signal}:null;if(await n.load(l),"above-and-below"===s.theme&&s.symbolOptions){if(s.symbolType.includes("3d-volumetric"))throw new e("univariate-colorsize-continuous-renderer:invalid-parameters","'symbolOptions' is applicable for '2d' and '3d-flat' 'symbolType' only");if("point"!==n.geometryType&&"polygon"!==n.geometryType)throw new e("univariate-colorsize-continuous-renderer:invalid-parameters","'symbolOptions' only apply to layers with 'point' or 'polygon' geometryType")}const t=await S({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),r=z(n,t,"univariate-colorsize-continuous-renderer:invalid-parameters");if(r)throw r;return{...s,layer:n}}function M(e){const i={...e},a={...i.sizeOptions};return delete i.sizeOptions,delete i.colorOptions,delete a.sizeOptimizationEnabled,{...i,...a}}async function P(i){const a="regenerate-univariate-color-size-renderer";await d(i,a);const s=await f(i);if("univariate-color-size"!==b(s))throw new e(`${a}:invalid-parameters`,"Renderer is invalid");const{layer:o,forBinning:n,filter:l,view:t,signal:r}=i,u=v(s,"color")?.dataSeriesName??v(s,"size")?.dataSeriesName,{field:p,normalizationField:m,valueExpression:c,valueExpressionTitle:h}=s,z=y(s),g=w(s),V=s.authoringInfo?.univariateTheme,x=await A({layer:o,field:p,normalizationField:m,valueExpression:c,valueExpressionTitle:h,outlineOptimizationEnabled:z,theme:V,colorOptions:{isContinuous:"above-and-below"===V?s.visualVariables?.some(e=>"color"===e.type):void 0},sizeOptions:{sizeOptimizationEnabled:g},dataSeriesName:u,forBinning:n,filter:l,view:t,signal:r});return{...i,creatorParameters:x,renderer:s}}function R(e,i){if("type"in e&&"cim"===e.type)q(e,i);else if("type"in e&&e.type.includes("3d")){e.symbolLayers.forEach(e=>{"material"in e&&null!=e.material&&"color"in e.material&&(e.material?e.material.color=i:e.material=new D({color:i}))})}else"color"in e&&(e.color=i)}function L(e,i,a){if((i?.symbolStyle||i?.symbols)&&("point"===a||"polygon"===a))return i.symbols||U(i.symbolStyle);const s=e.classBreakInfos[0].symbol;return{above:s.clone(),below:s.clone()}}function $(e,i,s){const o=s.symbolOptions,n=s.layer,l=o?.symbols?"custom":o?.symbolStyle,t=s.colorOptions?.isContinuous;if(G(e,i,t),l||!t){const s=i.size.visualVariables[0].stops,{above:r,below:u}=L(e,o,n.geometryType);if(!t){const e=i.color.colorScheme.colors,a=e[0];R(r,e[e.length-1]),R(u,a)}e.classBreakInfos=[new a({minValue:-C,maxValue:s[2].value,symbol:u}),new a({minValue:s[2].value,maxValue:C,symbol:r})],l&&e.authoringInfo&&(e.authoringInfo.univariateSymbolStyle=l)}}function G(e,i,a=!0){const s=i?.authoringInfo?.clone(),o=s?.visualVariables?.some(e=>"reference-size"===e.theme),n=o?[]:i.size.visualVariables.map(e=>e.clone());a?n.push(i.color.visualVariable.clone()):s.visualVariables=s.visualVariables?.filter(e=>"size"===e.type),e.visualVariables&&n.push(...e.visualVariables.filter(e=>"target"in e&&"outline"===e.target).map(e=>e.clone())),e.authoringInfo=s,e.visualVariables=n}function H(e){const i={...e},a=i.symbolType,s=!!a?.includes("3d-volumetric");delete i.symbolType,delete i.defaultSymbolEnabled;const o=i;return o.worldScale=s,s&&(o.sizeOptions={...o.sizeOptions},o.sizeOptions.axis="3d-volumetric-uniform"===a?"all":"height"),o}async function J(e,i,a,n){const l=i[0],t=i[1],r=Math.round((t-l)/2)+l,u=e.clone();u.stops=[new s({value:a[0],size:t}),new s({value:a[1],size:r}),new s({value:a[2],size:l}),new s({value:a[3],size:r}),new s({value:a[4],size:t})],e.stops=[new s({value:n[0],size:o(u,n[0])}),new s({value:n[1],size:o(u,n[1])}),new s({value:n[2],size:o(u,n[2])}),new s({value:n[3],size:o(u,n[3])}),new s({value:n[4],size:o(u,n[4])})]}async function K(e,i,a,s,o){const n=e.find(e=>"width-and-depth"!==e.axis&&!e.target),l="number"==typeof n?.minSize?n?.minSize:null,t="number"==typeof n?.maxSize?n?.maxSize:null;if(null!=n?.minDataValue&&null!=l&&null!=t)if(s)if("above-and-below"===s){n.minDataValue=null,n.maxDataValue=null,n.minSize=null,n.maxSize=null;const e=g(a,o),s=V(e,a);await J(n,[l,t],e,s),i.stops.forEach((e,i)=>e.value=s[i])}else{const{minDataValue:e,maxDataValue:a}=n,s=x(e,a,5);i.stops.forEach((e,i)=>e.value=s[i]),n.minDataValue=s[0],n.maxDataValue=s[s.length-1]}else n.minDataValue=i.stops[0].value,n.maxDataValue=i.stops[i.stops.length-1].value}function Q(e,a,s){const{theme:o,minValue:n,maxValue:l}=e,t=a.authoringInfo.visualVariables[0].clone(),r=s.authoringInfo.visualVariables[0].clone(),{stops:u}=a.visualVariable;return"above-and-below"===o?(t.minSliderValue=r.minSliderValue=n??u[0].value,t.maxSliderValue=r.maxSliderValue=l??u.at(-1)?.value,r.theme="above-and-below"):o&&"high-to-low"!==o||"reference-size"!==r.theme||2!==r.sizeStops?.length||(r.sizeStops[0].value=u[0].value,r.sizeStops[1].value=u.at(-1)?.value),new i({type:"univariate-color-size",univariateTheme:o,visualVariables:[t,r]})}async function W(e){const i=await F(e),a=await n(N(i)),{visualVariable:s,statistics:o}=a,l=await t(k(i,o)),r=l.visualVariables,u=e.layer,p=e.field?u.getField(e.field):null;return await K(r,s,o,i.theme,O(p)),{basemapId:l.basemapId,basemapTheme:l.basemapTheme,statistics:o,defaultValuesUsed:a.defaultValuesUsed,color:{visualVariable:s,colorScheme:a.colorScheme},size:{visualVariables:r,sizeScheme:l.sizeScheme},authoringInfo:Q(i,a,l)}}async function X(e){return Y(e)}async function Y(e){const i=await A(e),{renderer:a,statistics:s,defaultValuesUsed:o}=await l(M(i)),n=H(i);n.statistics=s;const t=await W(n);return"above-and-below"===i.theme?$(a,t,i):G(a,t),{renderer:a,statistics:s,defaultValuesUsed:o,color:i.colorOptions?.isContinuous||"above-and-below"!==i.theme?t.color:null,size:t.size,basemapId:t.basemapId,basemapTheme:t.basemapTheme}}async function Z(e){const{creatorParameters:i}=await P(e),{layer:a,field:s,theme:o,colorOptions:l,valueExpression:d,valueExpressionTitle:f}=i,{renderer:b,statistics:y}=await r(e),w=await F({...H(i),statistics:y}),h=await n(N(w)),z=h.visualVariable,g=(await t(k(w))).visualVariables,V=s?a.getField(s):null;await K(g,z,y,o,O(V));const x=l?.isContinuous||"above-and-below"!==o,E=b.visualVariables?.find(u);b.valueExpression=d??null,b.valueExpressionTitle=f??null,x&&E?.stops&&(E.stops.forEach((e,i)=>e.value=z.stops[i].value),E.valueExpression=z.valueExpression??null,E.valueExpressionTitle=z.valueExpressionTitle??null,p(b,h.authoringInfo,"color")),m(b,g,c);const S=v(b,"size");if((!o||"high-to-low"===o)&&"reference-size"===S?.theme&&2===S.sizeStops?.length){const{stops:e}=z;S.sizeStops[0].value=e[0].value,S.sizeStops[1].value=e.at(-1)?.value}if("above-and-below"===o&&g[0]?.stops){const e=g[0].stops;b.classBreakInfos[0].maxValue=e[2].value,b.classBreakInfos[1].minValue=e[2].value}return{renderer:b}}export{X as createContinuousRenderer,Y as createRenderer,W as createVisualVariables,Z as regenerateRenderer};
|
|
2
|
+
import e from"../../core/Error.js";import i from"../../renderers/support/AuthoringInfo.js";import a from"../../renderers/support/ClassBreakInfo.js";import s from"../../renderers/visualVariables/support/SizeStop.js";import{getSize as o}from"../../renderers/visualVariables/support/visualVariableUtils.js";import{createVisualVariable as l}from"./color.js";import{createContinuousRenderer as n,createVisualVariables as t,regenerateContinuousRenderer as r}from"./size.js";import{isColorVV as u,updateAuthoringInfoVisualVariable as p,spliceVisualVariables as m,findSizeVVIndex as c,getAuthoringInfoVisualVariable as v,processRegenerateParams as d,getRendererToUpdate as f,getStyleType as b,hasOutlineVV as y,hasScaleDependentSizeVV as w}from"./support/regenerateUtils.js";import{resolveDataSeriesInfo as h}from"./support/timeSeriesUtils.js";import{verifyBasicFieldValidity as z,createStopValuesForAboveBelow as g,clampAboveAndBelowStopValues as V,createDefaultStopValues as x}from"./support/utils.js";import{verifyBinningParams as E}from"../support/binningUtils.js";import{isAnyDateField as O,getFieldsList as S}from"../support/utils.js";import{binningCapableLayerTypes as T,featureCapableLayerTypes as I,createLayerAdapter as j,getLayerTypeLabels as B}from"../support/adapters/support/layerUtils.js";import{getAboveAndBelowSymbols as C}from"../symbology/support/aboveAndBelowUtils.js";import{applyCIMSymbolColor as U}from"../../symbols/support/cimSymbolUtils.js";import q from"../../symbols/support/Symbol3DMaterial.js";const D=2**53-1;async function F(i){const a=h({...i});if(!a?.layer||!(a.field||a.valueExpression||a.sqlExpression))throw new e("univariate-colorsize-visual-variables:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new e("univariate-colorsize-visual-variables:missing-parameters","View is required when 'valueExpression' is specified");if("above-and-below"===a.theme&&a.sizeOptions?.sizeOptimizationEnabled)throw new e("univariate-colorsize-visual-variables:invalid-parameters","sizeOptimizationEnabled cannot be true for 'above-and-below' theme");a.forBinning&&E(a,"univariate-colorsize-visual-variables");const s={...a,layer:a.layer},o=a.forBinning?T:I,l=j(s.layer,o,a.forBinning);if(!l)throw new e("univariate-colorsize-visual-variables:invalid-parameters","'layer' must be one of these types: "+B(o).join(", "));s.layer=l,s.theme=s.theme||s.colorOptions?.theme?s.theme:"high-to-low";const n=null!=s.signal?{signal:s.signal}:null;await l.load(n);const t=await S({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),r=z(l,t,"univariate-colorsize-visual-variables:invalid-parameters");if(r)throw r;return s}function N(e,i){const a={...e},{sizeOptions:s,theme:o}=a,l=a.legendOptions||a.sizeOptions?.legendOptions;return delete a.sizeOptions,delete a.colorOptions,{...a,...s,statistics:i||a.statistics,theme:"above-and-below"===o?null:o,legendOptions:l}}function k(e,i){const a={...e},s=a.colorOptions,o=a.theme||s?.theme,l=a.legendOptions||a.colorOptions?.legendOptions;return delete a.sizeOptions,delete a.colorOptions,{...a,...s,statistics:i||a.statistics,theme:o,legendOptions:l}}async function A(i){const a=h({...i});if(!a?.layer||!(a.field||a.valueExpression||a.sqlExpression))throw new e("univariate-colorsize-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new e("univariate-colorsize-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&E(a,"univariate-colorsize-continuous-renderer");const s={...a,layer:a.layer};s.symbolType=s.symbolType||"2d",s.colorOptions||(s.colorOptions={}),s.colorOptions.isContinuous=s.colorOptions.isContinuous??!1;const o=a.forBinning?T:I,l=j(s.layer,o,a.forBinning);if(!l)throw new e("univariate-colorsize-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+B(o).join(", "));const n=null!=s.signal?{signal:s.signal}:null;if(await l.load(n),"above-and-below"===s.theme&&s.symbolOptions){if(s.symbolType.includes("3d-volumetric"))throw new e("univariate-colorsize-continuous-renderer:invalid-parameters","'symbolOptions' is applicable for '2d' and '3d-flat' 'symbolType' only");if("point"!==l.geometryType&&"polygon"!==l.geometryType)throw new e("univariate-colorsize-continuous-renderer:invalid-parameters","'symbolOptions' only apply to layers with 'point' or 'polygon' geometryType")}const t=await S({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),r=z(l,t,"univariate-colorsize-continuous-renderer:invalid-parameters");if(r)throw r;return{...s,layer:l}}function M(e){const i={...e},a={...i.sizeOptions};return delete i.sizeOptions,delete i.colorOptions,delete a.sizeOptimizationEnabled,{...i,...a}}async function P(i){const a="regenerate-univariate-color-size-renderer";await d(i,a);const s=await f(i);if("univariate-color-size"!==b(s))throw new e(`${a}:invalid-parameters`,"Renderer is invalid");const{layer:o,forBinning:l,filter:n,view:t,signal:r}=i,u=v(s,"color")?.dataSeriesName??v(s,"size")?.dataSeriesName,p=v(s,"color")?.dataSeriesCalculationName??v(s,"size")?.dataSeriesCalculationName,{field:m,normalizationField:c,valueExpression:h,valueExpressionTitle:z}=s,g=y(s),V=w(s),x=s.authoringInfo?.univariateTheme,E=await A({layer:o,field:m,normalizationField:c,valueExpression:h,valueExpressionTitle:z,outlineOptimizationEnabled:g,theme:x,colorOptions:{isContinuous:"above-and-below"===x?s.visualVariables?.some(e=>"color"===e.type):void 0},sizeOptions:{sizeOptimizationEnabled:V},dataSeriesName:u,dataSeriesCalculationName:p,forBinning:l,filter:n,view:t,signal:r});return{...i,creatorParameters:E,renderer:s}}function R(e,i){if("type"in e&&"cim"===e.type)U(e,i);else if("type"in e&&e.type.includes("3d")){e.symbolLayers.forEach(e=>{"material"in e&&null!=e.material&&"color"in e.material&&(e.material?e.material.color=i:e.material=new q({color:i}))})}else"color"in e&&(e.color=i)}function L(e,i,a){if((i?.symbolStyle||i?.symbols)&&("point"===a||"polygon"===a))return i.symbols||C(i.symbolStyle);const s=e.classBreakInfos[0].symbol;return{above:s.clone(),below:s.clone()}}function $(e,i,s){const o=s.symbolOptions,l=s.layer,n=o?.symbols?"custom":o?.symbolStyle,t=s.colorOptions?.isContinuous;if(G(e,i,t),n||!t){const s=i.size.visualVariables[0].stops,{above:r,below:u}=L(e,o,l.geometryType);if(!t){const e=i.color.colorScheme.colors,a=e[0];R(r,e[e.length-1]),R(u,a)}e.classBreakInfos=[new a({minValue:-D,maxValue:s[2].value,symbol:u}),new a({minValue:s[2].value,maxValue:D,symbol:r})],n&&e.authoringInfo&&(e.authoringInfo.univariateSymbolStyle=n)}}function G(e,i,a=!0){const s=i?.authoringInfo?.clone(),o=s?.visualVariables?.some(e=>"reference-size"===e.theme),l=o?[]:i.size.visualVariables.map(e=>e.clone());a?l.push(i.color.visualVariable.clone()):s.visualVariables=s.visualVariables?.filter(e=>"size"===e.type),e.visualVariables&&l.push(...e.visualVariables.filter(e=>"target"in e&&"outline"===e.target).map(e=>e.clone())),e.authoringInfo=s,e.visualVariables=l}function H(e){const i={...e},a=i.symbolType,s=!!a?.includes("3d-volumetric");delete i.symbolType,delete i.defaultSymbolEnabled;const o=i;return o.worldScale=s,s&&(o.sizeOptions={...o.sizeOptions},o.sizeOptions.axis="3d-volumetric-uniform"===a?"all":"height"),o}async function J(e,i,a,l){const n=i[0],t=i[1],r=Math.round((t-n)/2)+n,u=e.clone();u.stops=[new s({value:a[0],size:t}),new s({value:a[1],size:r}),new s({value:a[2],size:n}),new s({value:a[3],size:r}),new s({value:a[4],size:t})],e.stops=[new s({value:l[0],size:o(u,l[0])}),new s({value:l[1],size:o(u,l[1])}),new s({value:l[2],size:o(u,l[2])}),new s({value:l[3],size:o(u,l[3])}),new s({value:l[4],size:o(u,l[4])})]}async function K(e,i,a,s,o){const l=e.find(e=>"width-and-depth"!==e.axis&&!e.target),n="number"==typeof l?.minSize?l?.minSize:null,t="number"==typeof l?.maxSize?l?.maxSize:null;if(null!=l?.minDataValue&&null!=n&&null!=t)if(s)if("above-and-below"===s){l.minDataValue=null,l.maxDataValue=null,l.minSize=null,l.maxSize=null;const e=g(a,o),s=V(e,a);await J(l,[n,t],e,s),i.stops.forEach((e,i)=>e.value=s[i])}else{const{minDataValue:e,maxDataValue:a}=l,s=x(e,a,5);i.stops.forEach((e,i)=>e.value=s[i]),l.minDataValue=s[0],l.maxDataValue=s[s.length-1]}else l.minDataValue=i.stops[0].value,l.maxDataValue=i.stops[i.stops.length-1].value}function Q(e,a,s){const{theme:o,minValue:l,maxValue:n}=e,t=a.authoringInfo.visualVariables[0].clone(),r=s.authoringInfo.visualVariables[0].clone(),{stops:u}=a.visualVariable;return"above-and-below"===o?(t.minSliderValue=r.minSliderValue=l??u[0].value,t.maxSliderValue=r.maxSliderValue=n??u.at(-1)?.value,r.theme="above-and-below"):o&&"high-to-low"!==o||"reference-size"!==r.theme||2!==r.sizeStops?.length||(r.sizeStops[0].value=u[0].value,r.sizeStops[1].value=u.at(-1)?.value),new i({type:"univariate-color-size",univariateTheme:o,visualVariables:[t,r]})}async function W(e){const i=await F(e),a=await l(k(i)),{visualVariable:s,statistics:o}=a,n=await t(N(i,o)),r=n.visualVariables,u=e.layer,p=e.field?u.getField(e.field):null;return await K(r,s,o,i.theme,O(p)),{basemapId:n.basemapId,basemapTheme:n.basemapTheme,statistics:o,defaultValuesUsed:a.defaultValuesUsed,color:{visualVariable:s,colorScheme:a.colorScheme},size:{visualVariables:r,sizeScheme:n.sizeScheme},authoringInfo:Q(i,a,n)}}async function X(e){return Y(e)}async function Y(e){const i=await A(e),{renderer:a,statistics:s,defaultValuesUsed:o}=await n(M(i)),l=H(i);l.statistics=s;const t=await W(l);return"above-and-below"===i.theme?$(a,t,i):G(a,t),{renderer:a,statistics:s,defaultValuesUsed:o,color:i.colorOptions?.isContinuous||"above-and-below"!==i.theme?t.color:null,size:t.size,basemapId:t.basemapId,basemapTheme:t.basemapTheme}}async function Z(e){const{creatorParameters:i}=await P(e),{layer:a,field:s,theme:o,colorOptions:n,valueExpression:d,valueExpressionTitle:f}=i,{renderer:b,statistics:y}=await r(e),w=await F({...H(i),statistics:y}),h=await l(k(w)),z=h.visualVariable,g=(await t(N(w))).visualVariables,V=s?a.getField(s):null;await K(g,z,y,o,O(V));const x=n?.isContinuous||"above-and-below"!==o,E=b.visualVariables?.find(u);b.valueExpression=d??null,b.valueExpressionTitle=f??null,x&&E?.stops&&(E.stops.forEach((e,i)=>e.value=z.stops[i].value),E.valueExpression=z.valueExpression??null,E.valueExpressionTitle=z.valueExpressionTitle??null,p(b,h.authoringInfo,"color")),m(b,g,c);const S=v(b,"size");if((!o||"high-to-low"===o)&&"reference-size"===S?.theme&&2===S.sizeStops?.length){const{stops:e}=z;S.sizeStops[0].value=e[0].value,S.sizeStops[1].value=e.at(-1)?.value}if("above-and-below"===o&&g[0]?.stops){const e=g[0].stops;b.classBreakInfos[0].maxValue=e[2].value,b.classBreakInfos[1].minValue=e[2].value}return{renderer:b}}export{X as createContinuousRenderer,Y as createRenderer,W as createVisualVariables,Z as regenerateRenderer};
|
package/support/revision.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
const
|
|
2
|
+
const e="20260929",c="7012c974759d1222c40beaeef038078e481a19db";export{e as buildDate,c as revision};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{multiplyOpacity as i}from"../../../../core/colorUtils.js";import{makeHandle as s}from"../../../../core/handleUtils.js";import{isAborted as a,ignoreAbortErrors as o}from"../../../../core/promiseUtils.js";import{watch as r,initial as n}from"../../../../core/reactiveUtils.js";import{property as l,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as c}from"../../../../core/support/UpdatingHandles.js";import p from"../../../../symbols/SimpleFillSymbol.js";import m from"../../../../symbols/SimpleLineSymbol.js";import{ExclusiveOperationManager as d}from"../../../analysis/ExclusiveOperationManager.js";import u from"../../../../widgets/Sketch/SketchViewModel.js";function
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{multiplyOpacity as i}from"../../../../core/colorUtils.js";import{makeHandle as s}from"../../../../core/handleUtils.js";import{isAborted as a,ignoreAbortErrors as o}from"../../../../core/promiseUtils.js";import{watch as r,initial as n}from"../../../../core/reactiveUtils.js";import{property as l,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as c}from"../../../../core/support/UpdatingHandles.js";import p from"../../../../symbols/SimpleFillSymbol.js";import m from"../../../../symbols/SimpleLineSymbol.js";import{ExclusiveOperationManager as d}from"../../../analysis/ExclusiveOperationManager.js";import{bindViewToolOptions as u}from"../../../interactive/options/bindViewToolOptions.js";import y from"../../../../widgets/Sketch/SketchViewModel.js";function w(e){return"polygon"===e?.type}let _=class extends t{constructor(e){super(e),this._invisibleAreaSymbol=new p({color:null,outline:null}),this._invisibleLineSymbol=new m({color:null,width:0}),this._operationManager=new d,this._updatingHandles=new c}initialize(){this._sketchViewModel=new y({defaultCreateOptions:{mode:"click"},defaultUpdateOptions:{enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,enableZ:!1,highlightOptions:{enabled:!1},multipleSelectionEnabled:!1,reshapeOptions:{edgeOperation:"none",shapeOperation:"none"},toggleToolOnClick:!1,tool:"reshape"},updateOnGraphicClick:!1,cancelUpdateOnClickAway:!1,view:this.view}),this.addHandles([r(()=>({interactive:this.measurementViewData.interactive,visible:this.measurementViewData.visible}),({interactive:e,visible:t})=>{t&&e&&this._analysis.geometry?"place"!==this._operationManager.currentOperationType&&this.reshape().catch(()=>{}):this._operationManager.stop()}),r(()=>this.measurementViewData.analysis.geometry,e=>{e||(this._operationManager.stop(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll())}),r(()=>this.measurementViewData.snappingOptions,e=>{this._sketchViewModel&&(this._sketchViewModel.snappingOptions=e)},n),u(this._sketchViewModel.sketchOptions,()=>this.view.options),r(()=>this.view.effectiveTheme.accentColor,e=>{this._areaSymbol=new p({color:i(e,.3),outline:new m({color:e,width:2})})},n)])}destroy(){this._areaSymbol?.destroy(),this._invisibleAreaSymbol.destroy(),this._invisibleLineSymbol.destroy(),this._operationManager.destroy(),this._sketchViewModel?.destroy(),this._updatingHandles.destroy()}get state(){if(!this.measurementViewData.visible||!this._operationManager.currentOperationType)return"idle";switch(this._operationManager.currentOperationType){case"place":return"placing";case"reshape":return"reshaping"}}get updating(){return!this._sketchViewModel||this._sketchViewModel.updating||this._updatingHandles.updating}async place(e){return this._operationManager.start("place",async t=>{if(!this._sketchViewModel||!this.measurementViewData.sketchGraphicsLayer)return;const i=this._analysis.clone(),r=e=>{const i="state"in e?e.state:"active",s="graphic"in e?e.graphic:e.graphics?.at(0);switch(i){case"start":case"active":{const e=s?.geometry;"polygon"===e?.type&&(this._analysis.geometry=e);break}case"cancel":case"complete":t.stop(),o(this.reshape())}},n=this._sketchViewModel.on(["create","undo","redo"],r);t.handles.push(n,s(()=>{n.remove(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll();const s=this._analysis;return s.valid?a(e)||i.equals(s)?t.reject():void t.resolve({}):(s.clear(),t.reject())})),this._sketchViewModel.activeLineSymbol=this._invisibleLineSymbol,this._sketchViewModel.polygonSymbol=this._invisibleAreaSymbol,this._sketchViewModel.layer=this.measurementViewData.sketchGraphicsLayer,this._updatingHandles.consumePromise(o(this._sketchViewModel.create("polygon")))},e)}async reshape(e){return this._operationManager.start("reshape",async t=>{if(!this._sketchViewModel)return;const i=()=>this._areaSymbol&&this._sketchViewModel&&this.measurementViewData.manipulatorGraphic&&this.measurementViewData.manipulatorGraphicsLayer?(this._sketchViewModel.activeLineSymbol=null,this._sketchViewModel.polygonSymbol=this._areaSymbol,this._sketchViewModel.layer=this.measurementViewData.manipulatorGraphicsLayer,this._updatingHandles.addPromise(o(this._sketchViewModel.update(this.measurementViewData.manipulatorGraphic,{tool:"reshape"})))):Promise.resolve(),r=this._sketchViewModel.on("update",e=>{const s=e.graphics[0]?.geometry;this._analysis.geometry=w(s)?s:null,"complete"===e.state&&(this.measurementViewData.interactive?i():t.stop())});t.handles.push(r,s(()=>{if(r.remove(),this._sketchViewModel?.cancel(),a(e))return t.reject();t.resolve()})),await i()},e)}get _analysis(){return this.measurementViewData.analysis}};e([l()],_.prototype,"_sketchViewModel",void 0),e([l()],_.prototype,"measurementViewData",void 0),e([l()],_.prototype,"state",null),e([l()],_.prototype,"updating",null),e([l()],_.prototype,"view",void 0),_=e([h("esri.views.2d.analysis.AreaMeasurement.AreaMeasurementTool")],_);export{_ as AreaMeasurementTool};
|
|
@@ -57,6 +57,14 @@ export default abstract class AreaMeasurementAnalysisView2D extends AnalysisView
|
|
|
57
57
|
* It supports [self](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/snapping/SnappingOptions/#selfEnabled) and
|
|
58
58
|
* [feature](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/snapping/SnappingOptions/#featureEnabled) snapping.
|
|
59
59
|
*
|
|
60
|
+
* > [!WARNING]
|
|
61
|
+
* >
|
|
62
|
+
* > **Known Limitations**
|
|
63
|
+
* >
|
|
64
|
+
* > This analysis currently uses its `snappingOptions` rather than [ViewOptions.snapping](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/#snapping).
|
|
65
|
+
* > Tooltips and units configured through `view.options` still apply.
|
|
66
|
+
* > Support for `view.options.snapping` in this analysis is planned for a future release.
|
|
67
|
+
*
|
|
60
68
|
* @since 5.0
|
|
61
69
|
*/
|
|
62
70
|
get snappingOptions(): SnappingOptions;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as t}from"tslib";import{toAdaptiveLengthUnitForArea as e,toAdaptiveAreaUnit as i}from"../../../core/quantity.js";import{property as r,subclass as a}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as s}from"../../../support/getDefaultUnitForView.js";import o from"./AnalysisView2D.js";import{AreaMeasurementAreaVisualization as n}from"./AreaMeasurement/AreaMeasurementAreaVisualization.js";import{AreaMeasurementController as
|
|
2
|
+
import{__decorate as t}from"tslib";import{toAdaptiveLengthUnitForArea as e,toAdaptiveAreaUnit as i}from"../../../core/quantity.js";import{property as r,subclass as a}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as s}from"../../../support/getDefaultUnitForView.js";import o from"./AnalysisView2D.js";import{AreaMeasurementAreaVisualization as n}from"./AreaMeasurement/AreaMeasurementAreaVisualization.js";import{AreaMeasurementController as p}from"./AreaMeasurement/AreaMeasurementController.js";import{AreaMeasurementManipulatorVisualization as l}from"./AreaMeasurement/AreaMeasurementManipulatorVisualization.js";import{AreaMeasurementSketchVisualization as u}from"./AreaMeasurement/AreaMeasurementSketchVisualization.js";import{AreaMeasurementTool as m}from"./AreaMeasurement/AreaMeasurementTool.js";import h from"../../interactive/snapping/SnappingOptions.js";let y=class extends o{constructor(t){super(t),this.analysis=null,this.snappingOptions=new h,this.type="area-measurement-view-2d"}initialize(){const{view:t}=this;this._areaVisualization=new n({view:t,measurementViewData:this}),this._controller=new p({view:t,measurementViewData:this}),this._manipulatorVisualization=new l({view:t,measurementViewData:this}),this._sketchVisualization=new u({view:t,measurementViewData:this}),this._tool=new m({view:t,measurementViewData:this})}destroy(){this._areaVisualization?.destroy(),this._controller?.destroy(),this._manipulatorVisualization?.destroy(),this._sketchVisualization?.destroy(),this._tool?.destroy()}get manipulatorGraphic(){return this._manipulatorVisualization?.graphic}get manipulatorGraphicsLayer(){return this._manipulatorVisualization?.graphicsLayer}get sketchGraphicsLayer(){return this._sketchVisualization?.graphicsLayer}get interactive(){return super.interactive}set interactive(t){super.interactive=t}get result(){const t=this._controller?.result;if(!t)return t;const{unit:r}=this,{area:a,display:s,mode:o,perimeter:n}=t;return{area:a?i(a,r):null,display:s,mode:o,perimeter:n?e(n,r):null}}get unit(){return this.analysis.unit??this.view.options.displayUnits.area??s(this.view)}get updating(){return(this._areaVisualization?.updating??!0)||(this._controller?.updating??!0)||(this._sketchVisualization?.updating??!0)||(this._tool?.updating??!0)}get visible(){return super.visible}set visible(t){super.visible=t}async place(t){return this._tool.place(t)}};t([r()],y.prototype,"_areaVisualization",void 0),t([r()],y.prototype,"_controller",void 0),t([r()],y.prototype,"_manipulatorVisualization",void 0),t([r()],y.prototype,"_sketchVisualization",void 0),t([r()],y.prototype,"_tool",void 0),t([r({constructOnly:!0})],y.prototype,"analysis",void 0),t([r()],y.prototype,"manipulatorGraphic",null),t([r()],y.prototype,"manipulatorGraphicsLayer",null),t([r()],y.prototype,"sketchGraphicsLayer",null),t([r({readOnly:!0})],y.prototype,"result",null),t([r({type:h,nonNullable:!0})],y.prototype,"snappingOptions",void 0),t([r({readOnly:!0})],y.prototype,"type",void 0),t([r({readOnly:!0})],y.prototype,"unit",null),t([r({readOnly:!0})],y.prototype,"updating",null),y=t([a("esri.views.2d.analysis.AreaMeasurementAnalysisView2D")],y);const c=y;export{c as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{multiplyOpacity as i}from"../../../../core/colorUtils.js";import{makeHandle as s}from"../../../../core/handleUtils.js";import{ignoreAbortErrors as a,isAborted as
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../../../core/Accessor.js";import{multiplyOpacity as i}from"../../../../core/colorUtils.js";import{makeHandle as s}from"../../../../core/handleUtils.js";import{ignoreAbortErrors as a,isAborted as o}from"../../../../core/promiseUtils.js";import{watch as r,initial as n}from"../../../../core/reactiveUtils.js";import{property as l,subclass as h}from"../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as c}from"../../../../core/support/UpdatingHandles.js";import p from"../../../../symbols/SimpleLineSymbol.js";import{ExclusiveOperationManager as m}from"../../../analysis/ExclusiveOperationManager.js";import{bindViewToolOptions as d}from"../../../interactive/options/bindViewToolOptions.js";import u from"../../../../widgets/Sketch/SketchViewModel.js";function y(e){return"polyline"===e?.type}let w=class extends t{constructor(e){super(e),this._invisibleLineSymbol=new p({color:null,width:0}),this._operationManager=new m,this._updatingHandles=new c}initialize(){this._sketchViewModel=new u({defaultCreateOptions:{mode:"click"},defaultUpdateOptions:{enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,enableZ:!1,highlightOptions:{enabled:!1},multipleSelectionEnabled:!1,reshapeOptions:{edgeOperation:"none",shapeOperation:"none"},toggleToolOnClick:!1,tool:"reshape"},updateOnGraphicClick:!1,view:this.view}),this.addHandles([r(()=>({interactive:this.measurementViewData.interactive,visible:this.measurementViewData.visible}),({interactive:e,visible:t})=>{t&&e&&this._analysis.geometry?"place"!==this._operationManager.currentOperationType&&this.reshape().catch(()=>{}):this._operationManager.stop()}),r(()=>this.measurementViewData.analysis.geometry,e=>{e||(this._operationManager.stop(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll())}),r(()=>this.measurementViewData.snappingOptions,e=>{this._sketchViewModel&&(this._sketchViewModel.snappingOptions=e)},n),d(this._sketchViewModel.sketchOptions,()=>this.view.options),r(()=>this.view.effectiveTheme.accentColor,e=>{this._lineSymbol=new p({color:i(e,.3),width:2})},n)])}destroy(){this._invisibleLineSymbol.destroy(),this._lineSymbol?.destroy(),this._operationManager.destroy(),this._sketchViewModel?.destroy(),this._updatingHandles.destroy()}get state(){if(!this.measurementViewData.visible||!this._operationManager.currentOperationType)return"idle";switch(this._operationManager.currentOperationType){case"place":return"placing";case"reshape":return"reshaping"}}get updating(){return!this._sketchViewModel||this._sketchViewModel.updating||this._updatingHandles.updating}async place(e){return this._operationManager.start("place",async t=>{if(!this._sketchViewModel||!this.measurementViewData.sketchGraphicsLayer)return;const i=this._analysis.clone(),r=this._sketchViewModel.on("create",e=>{switch(e.state){case"start":case"active":{const t=e.graphic?.geometry;"polyline"===t?.type&&(this._analysis.geometry=t);break}case"cancel":case"complete":t.stop(),a(this.reshape())}});t.handles.push(r,s(()=>{r.remove(),this._sketchViewModel?.cancel(),this.measurementViewData.sketchGraphicsLayer?.removeAll();const s=this._analysis;return s.valid?o(e)||i.equals(s)?t.reject():void t.resolve({}):(s.clear(),t.reject())})),this._sketchViewModel.activeLineSymbol=this._invisibleLineSymbol,this._sketchViewModel.polylineSymbol=this._invisibleLineSymbol,this._sketchViewModel.layer=this.measurementViewData.sketchGraphicsLayer,this._updatingHandles.consumePromise(a(this._sketchViewModel.create("polyline")))},e)}async reshape(e){return this._operationManager.start("reshape",async t=>{if(!this._sketchViewModel)return;const i=()=>this._lineSymbol&&this._sketchViewModel&&this.measurementViewData.manipulatorGraphic&&this.measurementViewData.manipulatorGraphicsLayer?(this._sketchViewModel.activeLineSymbol=null,this._sketchViewModel.polylineSymbol=this._lineSymbol,this._sketchViewModel.layer=this.measurementViewData.manipulatorGraphicsLayer,this._updatingHandles.addPromise(a(this._sketchViewModel.update(this.measurementViewData.manipulatorGraphic,{tool:"reshape"})))):Promise.resolve(),r=this._sketchViewModel.on("update",e=>{const s=e.graphics[0]?.geometry;this._analysis.geometry=y(s)?s:null,"complete"===e.state&&(this.measurementViewData.interactive?i():t.stop())});t.handles.push(r,s(()=>{if(r.remove(),this._sketchViewModel?.cancel(),o(e))return t.reject();t.resolve()})),await i()},e)}get _analysis(){return this.measurementViewData.analysis}};e([l()],w.prototype,"_sketchViewModel",void 0),e([l()],w.prototype,"measurementViewData",void 0),e([l()],w.prototype,"state",null),e([l()],w.prototype,"updating",null),e([l()],w.prototype,"view",void 0),w=e([h("esri.views.2d.analysis.DistanceMeasurement.DistanceMeasurementTool")],w);export{w as DistanceMeasurementTool};
|
|
@@ -56,6 +56,14 @@ export default abstract class DistanceMeasurementAnalysisView2D extends Analysis
|
|
|
56
56
|
* It supports [self](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/snapping/SnappingOptions/#selfEnabled) and
|
|
57
57
|
* [feature](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/snapping/SnappingOptions/#featureEnabled) snapping.
|
|
58
58
|
*
|
|
59
|
+
* > [!WARNING]
|
|
60
|
+
* >
|
|
61
|
+
* > **Known Limitations**
|
|
62
|
+
* >
|
|
63
|
+
* > This analysis currently uses its `snappingOptions` rather than [ViewOptions.snapping](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/#snapping).
|
|
64
|
+
* > Tooltips and units configured through `view.options` still apply.
|
|
65
|
+
* > Support for `view.options.snapping` in this analysis is planned for a future release.
|
|
66
|
+
*
|
|
59
67
|
* @since 5.0
|
|
60
68
|
*/
|
|
61
69
|
get snappingOptions(): SnappingOptions;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{__decorate as t}from"tslib";import{toAdaptiveLengthUnit as i}from"../../../core/quantity.js";import{property as e,subclass as s}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as a}from"../../../support/getDefaultUnitForView.js";import r from"./AnalysisView2D.js";import{DistanceMeasurementController as n}from"./DistanceMeasurement/DistanceMeasurementController.js";import{DistanceMeasurementLineVisualization as o}from"./DistanceMeasurement/DistanceMeasurementLineVisualization.js";import{DistanceMeasurementManipulatorVisualization as l}from"./DistanceMeasurement/DistanceMeasurementManipulatorVisualization.js";import{DistanceMeasurementSketchVisualization as p}from"./DistanceMeasurement/DistanceMeasurementSketchVisualization.js";import{DistanceMeasurementTool as u}from"./DistanceMeasurement/DistanceMeasurementTool.js";import c from"../../interactive/snapping/SnappingOptions.js";let m=class extends r{constructor(t){super(t),this.analysis=null,this.snappingOptions=new c,this.type="distance-measurement-view-2d"}initialize(){const{view:t}=this;this._lineVisualization=new o({view:t,measurementViewData:this}),this._controller=new n({view:t,measurementViewData:this}),this._manipulatorVisualization=new l({view:t,measurementViewData:this}),this._sketchVisualization=new p({view:t,measurementViewData:this}),this._tool=new u({view:t,measurementViewData:this})}destroy(){this._lineVisualization?.destroy(),this._controller?.destroy(),this._manipulatorVisualization?.destroy(),this._sketchVisualization?.destroy(),this._tool?.destroy()}get manipulatorGraphic(){return this._manipulatorVisualization?.graphic}get manipulatorGraphicsLayer(){return this._manipulatorVisualization?.graphicsLayer}get sketchGraphicsLayer(){return this._sketchVisualization?.graphicsLayer}get interactive(){return super.interactive}set interactive(t){super.interactive=t}get result(){const t=this._controller?.result;return t?{...t,length:i(t.length,this.unit)}:t}get unit(){return this.analysis.unit??a(this.view)}get updating(){return(this._controller?.updating??!0)||(this._lineVisualization?.updating??!0)||(this._sketchVisualization?.updating??!0)||(this._tool?.updating??!0)}get visible(){return super.visible}set visible(t){super.visible=t}async place(t){return this._tool.place(t)}};t([e()],m.prototype,"_lineVisualization",void 0),t([e()],m.prototype,"_controller",void 0),t([e()],m.prototype,"_manipulatorVisualization",void 0),t([e()],m.prototype,"_sketchVisualization",void 0),t([e()],m.prototype,"_tool",void 0),t([e({constructOnly:!0})],m.prototype,"analysis",void 0),t([e()],m.prototype,"manipulatorGraphic",null),t([e()],m.prototype,"manipulatorGraphicsLayer",null),t([e()],m.prototype,"sketchGraphicsLayer",null),t([e({readOnly:!0})],m.prototype,"result",null),t([e({type:c,nonNullable:!0})],m.prototype,"snappingOptions",void 0),t([e({readOnly:!0})],m.prototype,"type",void 0),t([e({readOnly:!0})],m.prototype,"unit",null),t([e({readOnly:!0})],m.prototype,"updating",null),m=t([s("esri.views.2d.analysis.DistanceMeasurementAnalysisView2D")],m);const h=m;export{h as default};
|
|
2
|
+
import{__decorate as t}from"tslib";import{toAdaptiveLengthUnit as i}from"../../../core/quantity.js";import{property as e,subclass as s}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as a}from"../../../support/getDefaultUnitForView.js";import r from"./AnalysisView2D.js";import{DistanceMeasurementController as n}from"./DistanceMeasurement/DistanceMeasurementController.js";import{DistanceMeasurementLineVisualization as o}from"./DistanceMeasurement/DistanceMeasurementLineVisualization.js";import{DistanceMeasurementManipulatorVisualization as l}from"./DistanceMeasurement/DistanceMeasurementManipulatorVisualization.js";import{DistanceMeasurementSketchVisualization as p}from"./DistanceMeasurement/DistanceMeasurementSketchVisualization.js";import{DistanceMeasurementTool as u}from"./DistanceMeasurement/DistanceMeasurementTool.js";import c from"../../interactive/snapping/SnappingOptions.js";let m=class extends r{constructor(t){super(t),this.analysis=null,this.snappingOptions=new c,this.type="distance-measurement-view-2d"}initialize(){const{view:t}=this;this._lineVisualization=new o({view:t,measurementViewData:this}),this._controller=new n({view:t,measurementViewData:this}),this._manipulatorVisualization=new l({view:t,measurementViewData:this}),this._sketchVisualization=new p({view:t,measurementViewData:this}),this._tool=new u({view:t,measurementViewData:this})}destroy(){this._lineVisualization?.destroy(),this._controller?.destroy(),this._manipulatorVisualization?.destroy(),this._sketchVisualization?.destroy(),this._tool?.destroy()}get manipulatorGraphic(){return this._manipulatorVisualization?.graphic}get manipulatorGraphicsLayer(){return this._manipulatorVisualization?.graphicsLayer}get sketchGraphicsLayer(){return this._sketchVisualization?.graphicsLayer}get interactive(){return super.interactive}set interactive(t){super.interactive=t}get result(){const t=this._controller?.result;return t?{...t,length:i(t.length,this.unit)}:t}get unit(){return this.analysis.unit??this.view.options.displayUnits.length??a(this.view)}get updating(){return(this._controller?.updating??!0)||(this._lineVisualization?.updating??!0)||(this._sketchVisualization?.updating??!0)||(this._tool?.updating??!0)}get visible(){return super.visible}set visible(t){super.visible=t}async place(t){return this._tool.place(t)}};t([e()],m.prototype,"_lineVisualization",void 0),t([e()],m.prototype,"_controller",void 0),t([e()],m.prototype,"_manipulatorVisualization",void 0),t([e()],m.prototype,"_sketchVisualization",void 0),t([e()],m.prototype,"_tool",void 0),t([e({constructOnly:!0})],m.prototype,"analysis",void 0),t([e()],m.prototype,"manipulatorGraphic",null),t([e()],m.prototype,"manipulatorGraphicsLayer",null),t([e()],m.prototype,"sketchGraphicsLayer",null),t([e({readOnly:!0})],m.prototype,"result",null),t([e({type:c,nonNullable:!0})],m.prototype,"snappingOptions",void 0),t([e({readOnly:!0})],m.prototype,"type",void 0),t([e({readOnly:!0})],m.prototype,"unit",null),t([e({readOnly:!0})],m.prototype,"updating",null),m=t([s("esri.views.2d.analysis.DistanceMeasurementAnalysisView2D")],m);const h=m;export{h as default};
|
|
@@ -40,8 +40,9 @@ export default abstract class ElevationProfileAnalysisView2D extends AnalysisVie
|
|
|
40
40
|
/**
|
|
41
41
|
* Units used for all the [results](https://developers.arcgis.com/javascript/latest/references/core/views/2d/analysis/ElevationProfileAnalysisView2D/#results) and [statistics](https://developers.arcgis.com/javascript/latest/references/core/views/2d/analysis/ElevationProfileAnalysisView2D/#statistics) of the elevation profile analysis.
|
|
42
42
|
*
|
|
43
|
-
* If not specified
|
|
44
|
-
*
|
|
43
|
+
* If units are not specified in [ElevationProfileAnalysis.displayUnits](https://developers.arcgis.com/javascript/latest/references/core/analysis/ElevationProfileAnalysis/#displayUnits), they are read from
|
|
44
|
+
* [ViewOptions.displayUnits](https://developers.arcgis.com/javascript/latest/references/core/views/interactive/options/ViewOptions/#displayUnits), when configured. Otherwise, units are chosen
|
|
45
|
+
* automatically based on the magnitude of the results.
|
|
45
46
|
*/
|
|
46
47
|
get effectiveDisplayUnits(): ElevationProfileEffectiveDisplayUnits;
|
|
47
48
|
/**
|