@arcgis/core 5.2.0-next.6 → 5.2.0-next.7
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/WebLinkChart.d.ts +1 -1
- package/WebMap.d.ts +2 -2
- package/WebScene.d.ts +3 -3
- package/arcade.d.ts +9 -9
- package/arcgisGlobal.d.ts +4 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/03354ad3d74d858173b4.js +1 -0
- package/assets/esri/core/workers/chunks/{07a242ea908aa8e2ba28.js → 09a4139fc6d069ab6928.js} +1 -1
- package/assets/esri/core/workers/chunks/09d0e430c66788a2626f.js +640 -0
- package/assets/esri/core/workers/chunks/0a510acf50915e00c62b.js +1 -0
- package/assets/esri/core/workers/chunks/{829a0583b8a228c65379.js → 0b169bb1969f86232a1a.js} +1 -1
- package/assets/esri/core/workers/chunks/{20e2d11f6de438ee883e.js → 0ded58ccb83f624f1460.js} +1 -1
- package/assets/esri/core/workers/chunks/{d1ac98f48bb6d43d97c8.js → 0f3654c8157ec8f22869.js} +3 -3
- package/assets/esri/core/workers/chunks/19dcae83be0fc0aced02.js +1 -0
- package/assets/esri/core/workers/chunks/1eabe746481e0b228498.js +1 -0
- package/assets/esri/core/workers/chunks/{c27cb2a83a1d2e004501.js → 238478cfe493fd4a6100.js} +1 -1
- package/assets/esri/core/workers/chunks/{bf706a5d065a357de51b.js → 2413b383b7f2bdcd4ced.js} +1 -1
- package/assets/esri/core/workers/chunks/277718031c903da2b3b9.js +1 -0
- package/assets/esri/core/workers/chunks/{7ed5b669010db58845f8.js → 294f2803aac000c99693.js} +1 -1
- package/assets/esri/core/workers/chunks/{093f27e4e4781870b431.js → 297ae764445e6f73a5ea.js} +1 -1
- package/assets/esri/core/workers/chunks/2b36a54927f5a7281da3.js +1 -0
- package/assets/esri/core/workers/chunks/{be0eab592db0e651b023.js → 2b814bb51704a5b4fdc2.js} +6 -6
- package/assets/esri/core/workers/chunks/3172d7fc23787a287191.js +1 -0
- package/assets/esri/core/workers/chunks/{eedee0af459e6b8a6116.js → 33e0130e6a40fc768978.js} +1 -1
- package/assets/esri/core/workers/chunks/343ba5ea459e96ba79c6.js +1 -0
- package/assets/esri/core/workers/chunks/{a2159df718a7f2f59271.js → 38a2f34661563c7c29c1.js} +1 -1
- package/assets/esri/core/workers/chunks/3a5c1c501808352857bd.js +1 -0
- package/assets/esri/core/workers/chunks/{a96c7432ca97cbeef4b8.js → 3db898a38a7c5f0efb48.js} +1 -1
- package/assets/esri/core/workers/chunks/3fbb6ff940156a981983.js +1 -0
- package/assets/esri/core/workers/chunks/{24eaf1349ffe10e616e6.js → 40c4e14e7bb505ef10a3.js} +1 -1
- package/assets/esri/core/workers/chunks/4104fa1ede36bcee9be5.js +1 -0
- package/assets/esri/core/workers/chunks/{b002304a45856b024b46.js → 4714241189c13d0db897.js} +1 -1
- package/assets/esri/core/workers/chunks/485d20152495c27b8074.js +1 -0
- package/assets/esri/core/workers/chunks/{16b90d8f628a412ba4ba.js → 4894997bfa438f66da36.js} +1 -1
- package/assets/esri/core/workers/chunks/{0e774f14ba274832f390.js → 520e0e5307eef27becc6.js} +1 -1
- package/assets/esri/core/workers/chunks/53d165b4f30fd64e5d8a.js +1 -0
- package/assets/esri/core/workers/chunks/{c83fea0d0ebd0d8e43fd.js → 542f5469f7b42026b24f.js} +1 -1
- package/assets/esri/core/workers/chunks/5553279998ae07b60f5f.js +1 -0
- package/assets/esri/core/workers/chunks/{cda99b543a0e1979346c.js → 5cb1b950249d651f3837.js} +1 -1
- package/assets/esri/core/workers/chunks/{7601278ebced0c0c31cf.js → 5e3e0d7b85dfd52d1c7d.js} +1 -1
- package/assets/esri/core/workers/chunks/{f5a2c28dc26c065ea355.js → 62dfbdc847be4800e833.js} +22 -20
- package/assets/esri/core/workers/chunks/{c216cd5d6b5d4fe4bab3.js → 62e77e3c5ca9b4887923.js} +2 -2
- package/assets/esri/core/workers/chunks/{cc479daacd2cf715baa8.js → 62fc3c367f736c73b0d7.js} +1 -1
- package/assets/esri/core/workers/chunks/{b1f1271434af302938e8.js → 643c33a98f2d30a92001.js} +1 -1
- package/assets/esri/core/workers/chunks/{1c1515e020e32e177b54.js → 6a5356ebed70e0f8f979.js} +1 -1
- package/assets/esri/core/workers/chunks/{3402fb9c596b582311c7.js → 75839240022b280929f7.js} +1 -1
- package/assets/esri/core/workers/chunks/77a4f6f224d7ca4b69f4.js +1 -0
- package/assets/esri/core/workers/chunks/{6637f19b82555738a1d5.js → 78aa5bc6af2758da20d0.js} +1 -1
- package/assets/esri/core/workers/chunks/7df94cb985db41815fad.js +2 -0
- package/assets/esri/core/workers/chunks/{153dc2a0b08a0e44a881.js → 8419934bec7723b0feef.js} +1 -1
- package/assets/esri/core/workers/chunks/{50dc9893e13396f5e35d.js → 875cce0be4f6c89f80f3.js} +2 -2
- package/assets/esri/core/workers/chunks/{c319c3b85cdec73a9f45.js → 877c848beaf9a939862c.js} +1 -1
- package/assets/esri/core/workers/chunks/{ae74f722fb385e45fcf1.js → 893c0d28a5bf3f9f29f1.js} +1 -1
- package/assets/esri/core/workers/chunks/{5abe34bb0110694f7b42.js → 90953a827bc89d0e6bd5.js} +1 -1
- package/assets/esri/core/workers/chunks/{14c6419568d8a7a15cd6.js → 92ab5886aa2d8b9b179f.js} +1 -1
- package/assets/esri/core/workers/chunks/{4e676e888a935c507d90.js → 93d4bda22bde33fafa57.js} +1 -1
- package/assets/esri/core/workers/chunks/{fbb23db01f3cf629d32e.js → 992a90ecbab931198fd0.js} +1 -1
- package/assets/esri/core/workers/chunks/{1765042635084f75d2b3.js → 9b676606bf839b7aa433.js} +1 -1
- package/assets/esri/core/workers/chunks/a261f4c22224511fdfff.js +1 -0
- package/assets/esri/core/workers/chunks/{ea8f642b1db933d2c26f.js → a2ac139d0975085279a6.js} +1 -1
- package/assets/esri/core/workers/chunks/a4d3cbc02dc1186a9a6d.js +1 -0
- package/assets/esri/core/workers/chunks/a8ec5b85c2fa6fb4f391.js +1 -0
- package/assets/esri/core/workers/chunks/{6af77529c977d034d287.js → b23009d9f8eb7c20ce45.js} +1 -1
- package/assets/esri/core/workers/chunks/{1f55d60d3adc31283296.js → b79428c5093614174e76.js} +1 -1
- package/assets/esri/core/workers/chunks/b9bdb1f05e904c3655e4.js +1 -0
- package/assets/esri/core/workers/chunks/c4fc85281ca83af7abaf.js +1 -0
- package/assets/esri/core/workers/chunks/c983e5ce0ff952b65d7f.js +1 -0
- package/assets/esri/core/workers/chunks/{f79bd469b25099a31274.js → ca6907e14b1dde4d5c07.js} +1 -1
- package/assets/esri/core/workers/chunks/cbbd94c53e75efc99876.js +1 -0
- package/assets/esri/core/workers/chunks/{8f94c90fdb0333da2d0f.js → cfd28eba44cf5a296c6d.js} +1 -1
- package/assets/esri/core/workers/chunks/{e9dcc3e9dbafe9bbed84.js → d21480b078ec9680d4c4.js} +1 -1
- package/assets/esri/core/workers/chunks/{ace1899a8e5162b4018d.js → d6bb8db22ba85ad05fd7.js} +1 -1
- package/assets/esri/core/workers/chunks/{8244b74e9c3a30d8d2f6.js → d9d4754062758789f186.js} +2 -2
- package/assets/esri/core/workers/chunks/{d35c475f004367e333eb.js → e094364e54981c91e1b4.js} +1 -1
- package/assets/esri/core/workers/chunks/e33d2ede6c9f1527d51b.js +1 -0
- package/assets/esri/core/workers/chunks/{3e3134e4bc34d4e07179.js → e545df5ea7c0ced92cee.js} +1 -1
- package/assets/esri/core/workers/chunks/{49f6c9e9980b8c624fd7.js → f02fe24177e56a7e42b2.js} +1 -1
- package/assets/esri/core/workers/chunks/{d1ccc5f2d8892328ab01.js → f5731ad4cfbbf1cc569a.js} +2 -2
- package/assets/esri/themes/base/widgets/_DatePicker.scss +1 -1
- package/chunks/RealisticTree.glsl.js +17 -15
- package/config.d.ts +2 -2
- package/config.js +1 -1
- package/core/Collection.d.ts +25 -25
- package/core/Error.d.ts +1 -1
- package/core/JSONSupport.d.ts +1 -1
- package/core/promiseUtils.d.ts +3 -3
- package/core/reactiveUtils.d.ts +4 -4
- package/core/sql/WhereClause.d.ts +1 -1
- package/core/timeUtils.d.ts +1 -1
- package/core/workers/Connection.d.ts +9 -9
- package/core/workers.d.ts +1 -1
- package/editing/types.d.ts +3 -3
- package/geometry/Mesh.d.ts +9 -2
- package/geometry/Mesh.js +1 -1
- package/geometry/support/MeshMaterial.d.ts +5 -5
- package/geometry/support/MeshTexture.d.ts +19 -19
- package/geometry/support/jsonUtils.d.ts +1 -1
- package/geometry/support/meshUtils.d.ts +130 -2
- package/geometry/support/meshUtils.js +1 -1
- package/identity/Credential.d.ts +1 -1
- package/identity/IdentityManager.d.ts +1 -1
- package/identity/OAuthInfo.d.ts +1 -1
- package/identity/ServerInfo.d.ts +2 -2
- package/interfaces.d.ts +13 -0
- package/intl/number.d.ts +3 -3
- package/intl/substitute.d.ts +2 -2
- package/intl.d.ts +28 -28
- package/kernel.js +1 -1
- package/layers/AnnotationLayer.js +1 -1
- package/layers/BaseDynamicLayer.d.ts +5 -5
- package/layers/BaseTileLayer.d.ts +4 -4
- package/layers/BuildingSceneLayer.d.ts +1 -1
- package/layers/CSVLayer.d.ts +7 -1
- package/layers/CatalogLayer.d.ts +6 -0
- package/layers/DimensionFeatureLayer.js +1 -1
- package/layers/FeatureLayer.d.ts +44 -7
- package/layers/FeatureLayer.js +1 -1
- package/layers/GeoJSONLayer.d.ts +7 -1
- package/layers/LinkChartLayer.js +1 -1
- package/layers/MapImageLayer.d.ts +5 -5
- package/layers/MediaLayer.d.ts +2 -2
- package/layers/OrientedImageryLayer.d.ts +29 -2
- package/layers/ParquetLayer.d.ts +7 -1
- package/layers/SceneLayer.d.ts +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/StreamLayer.d.ts +1 -1
- package/layers/SubtypeGroupLayer.d.ts +7 -1
- package/layers/TileLayer.d.ts +2 -2
- package/layers/VideoLayer.d.ts +1 -1
- package/layers/VoxelLayer.d.ts +4 -4
- package/layers/WCSLayer.d.ts +2 -2
- package/layers/WFSLayer.d.ts +6 -0
- package/layers/WebTileLayer.d.ts +1 -1
- package/layers/catalog/CatalogFootprintLayer.d.ts +20 -1
- package/layers/graphics/sources/FeatureLayerSource.js +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphSublayer.d.ts +6 -0
- package/layers/mixins/ArcGISImageService.d.ts +7 -1
- package/layers/mixins/BlendLayer.d.ts +1 -1
- package/layers/mixins/DataSeriesLayer.d.ts +161 -0
- package/layers/mixins/DataSeriesLayer.js +2 -0
- package/layers/mixins/FeatureLayerBase.d.ts +3 -3
- package/layers/orientedImagery/core/coverageUtils.js +1 -1
- package/layers/support/DateTimeFieldFormat.d.ts +10 -10
- package/layers/support/FeatureEffect.d.ts +22 -22
- package/layers/support/FeatureReductionBinning.d.ts +12 -0
- package/layers/support/FeatureReductionCluster.d.ts +12 -0
- package/layers/support/Field.d.ts +2 -2
- package/layers/support/ImageElement.d.ts +1 -1
- package/layers/support/MosaicRule.d.ts +0 -2
- package/layers/support/NumberFieldFormat.d.ts +5 -5
- package/layers/support/StreamConnection.d.ts +1 -1
- package/layers/support/Sublayer.d.ts +2 -2
- package/layers/support/SubtypeSublayer.d.ts +14 -1
- package/layers/support/TimeSeriesFieldTimeMapping.d.ts +30 -0
- package/layers/support/TimeSeriesFieldTimeMapping.js +2 -0
- package/layers/support/TimeSeriesInfo.d.ts +149 -0
- package/layers/support/TimeSeriesInfo.js +2 -0
- package/layers/support/VideoElement.d.ts +1 -1
- package/layers/support/dataSeriesUtils.d.ts +18 -0
- package/layers/support/dataSeriesUtils.js +2 -0
- package/layers/support/kmlUtils.js +1 -1
- package/layers/support/timeSeriesUtils.d.ts +27 -0
- package/layers/support/timeSeriesUtils.js +2 -0
- package/layers/types.d.ts +1 -1
- package/linkChart/ChronologicalLayoutSettings.d.ts +1 -1
- package/networks/CircuitManager.d.ts +1 -1
- package/networks/Network.d.ts +1 -1
- package/networks/UnitIdentifierManager.d.ts +1 -1
- package/networks/support/NamedTraceConfiguration.d.ts +1 -1
- package/networks/support/TraceConfiguration.d.ts +2 -2
- package/networks/support/UNTraceConfiguration.d.ts +3 -3
- package/networks/support/jsonTypes.d.ts +7 -1
- package/networks/support/utils.js +1 -1
- package/package.json +3 -3
- package/popup/content/CustomContent.d.ts +1 -1
- package/portal/Portal.d.ts +2 -2
- package/portal/jsonTypes.d.ts +2 -2
- package/renderers/support/AuthoringInfo.d.ts +14 -1
- package/renderers/support/AuthoringInfo.js +1 -1
- package/renderers/support/AuthoringInfoVisualVariable.d.ts +14 -1
- package/renderers/support/AuthoringInfoVisualVariable.js +1 -1
- package/renderers/support/jsonUtils.d.ts +1 -1
- package/renderers/support/utils.d.ts +1 -1
- package/renderers/visualVariables/RotationVariable.d.ts +16 -1
- package/renderers/visualVariables/RotationVariable.js +1 -1
- package/request/types.d.ts +23 -23
- package/rest/geometryService.d.ts +1 -1
- package/rest/knowledgeGraph/CreateReplicaResponse.d.ts +1 -1
- package/rest/knowledgeGraph/GraphApplyEdits.d.ts +1 -1
- package/rest/knowledgeGraph/GraphProperty.d.ts +5 -1
- package/rest/knowledgeGraph/GraphQueryStreamingResult.d.ts +2 -2
- package/rest/knowledgeGraph/wasmInterface/wasmToDataModelFactories.js +1 -1
- package/rest/knowledgeGraph/wasmInterface/wasmToQueryResponseObjFactories.js +1 -1
- package/rest/knowledgeGraph/wasmInterface/wasmToReplicaFactories.js +1 -1
- package/rest/knowledgeGraphService.d.ts +13 -13
- package/rest/layerSources/DynamicDataLayer.d.ts +1 -1
- package/rest/print.d.ts +1 -1
- package/rest/support/AttributeBinsQuery.d.ts +16 -2
- package/rest/support/ClosestFacilityParameters.d.ts +6 -6
- package/rest/support/LastMileDeliveryParameters.d.ts +4 -4
- package/rest/support/LocationToAddressParameters.d.ts +1 -1
- package/rest/support/PrintTemplate.d.ts +5 -5
- package/rest/support/Query.d.ts +18 -4
- package/rest/support/RouteParameters.d.ts +5 -5
- package/rest/support/ServiceAreaParameters.d.ts +6 -6
- package/rest/support/TopFeaturesQuery.d.ts +16 -2
- package/rest/support/meshFeatureSet.js +1 -1
- package/smartMapping/renderers/color.d.ts +40 -0
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/opacity.d.ts +8 -0
- package/smartMapping/renderers/opacity.js +1 -1
- package/smartMapping/renderers/size.d.ts +38 -0
- package/smartMapping/renderers/size.js +1 -1
- package/smartMapping/renderers/support/regenerateUtils.js +1 -1
- package/smartMapping/renderers/support/timeSeriesUtils.js +2 -0
- package/smartMapping/renderers/type.d.ts +20 -1
- package/smartMapping/renderers/type.js +1 -1
- package/smartMapping/renderers/univariateColorSize.d.ts +19 -0
- package/smartMapping/renderers/univariateColorSize.js +1 -1
- package/support/revision.js +1 -1
- package/support/tests/setupServiceMocksMesh.js +1 -1
- package/support/timeUtils.d.ts +3 -3
- package/symbols/Font.d.ts +7 -7
- package/symbols/WebStyleSymbol.d.ts +11 -11
- package/symbols/cim/effects/EffectControlMeasureLine.js +1 -1
- package/symbols/support/Symbol3DEmissive.d.ts +8 -2
- package/symbols/support/jsonUtils.d.ts +1 -1
- package/time/TimeExtent.d.ts +2 -2
- package/versionManagement/VersionManagementService.d.ts +8 -8
- package/versionManagement/VersionManager.d.ts +13 -3
- package/versionManagement/VersioningState.d.ts +4 -4
- package/views/2d/MapViewConstraints.d.ts +29 -25
- package/views/2d/engine/flow/styles/Imagery.js +1 -1
- package/views/2d/engine/flow/styles/Particles.js +1 -1
- package/views/2d/engine/flow/styles/Streamlines.js +1 -1
- package/views/2d/engine/vectorTiles/VectorTileFeatureIndex.js +1 -1
- package/views/2d/engine/vectorTiles/style/StyleLayer.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/layers/BaseLayerView2D.d.ts +4 -20
- package/views/2d/layers/BaseLayerViewGL2D.d.ts +6 -22
- package/views/2d/layers/VectorTileLayerView2D.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReaderParquet.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/VolumeMeasurementError.d.ts +1 -1
- package/views/3d/glTF/internal/resourceUtils.js +1 -1
- package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
- package/views/3d/webgl/RenderNode.d.ts +7 -7
- package/views/3d/webgl-engine/effects/glow/Glow.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/shaders/RealisticTree.glsl.js +1 -1
- package/views/BreakpointsOwner.d.ts +1 -1
- package/views/DOMContainer.d.ts +6 -6
- package/views/Magnifier.d.ts +1 -1
- package/views/MapView.d.ts +1 -1
- package/views/SceneView.d.ts +2 -2
- package/views/View2D.d.ts +62 -54
- package/views/Viewport2DMixin.d.ts +1 -1
- package/views/analysis/ElevationProfile/ElevationProfileError.d.ts +1 -1
- package/views/input/gamepad/GamepadInputDevice.d.ts +1 -1
- package/views/input/types.d.ts +15 -15
- package/views/layers/FeatureLikeLayerView.d.ts +7 -4
- package/views/layers/GraphicsLayerView.d.ts +6 -3
- package/views/layers/ImageryLayerView.d.ts +4 -0
- package/views/navigation/Navigation.d.ts +1 -1
- package/views/support/WebAssemblyRequirements.js +1 -1
- package/views/types.d.ts +1 -1
- package/webscene/Glow.d.ts +0 -4
- package/widgets/BasemapGallery.d.ts +1 -1
- package/widgets/BasemapLayerList.d.ts +1 -1
- package/widgets/BatchAttributeForm/inputs/AttachmentElementInput.js +1 -1
- package/widgets/BatchAttributeForm.d.ts +1 -1
- package/widgets/BatchAttributeForm.js +1 -1
- package/widgets/Bookmarks.d.ts +1 -1
- package/widgets/BuildingExplorer.d.ts +1 -1
- package/widgets/CoordinateConversion/CoordinateConversionViewModel.d.ts +2 -2
- package/widgets/CoordinateConversion/CoordinateConversionViewModel.js +1 -1
- package/widgets/CoordinateConversion.d.ts +2 -2
- package/widgets/Daylight.d.ts +1 -1
- package/widgets/Directions.d.ts +1 -1
- package/widgets/Editor.d.ts +1 -1
- package/widgets/Feature.d.ts +1 -1
- package/widgets/FeatureForm.d.ts +1 -1
- package/widgets/FeatureTable/FieldColumn.d.ts +1 -14
- package/widgets/FeatureTable/Grid/Column.d.ts +1 -1
- package/widgets/FeatureTable/support/ColumnTemplateBase.d.ts +1 -1
- package/widgets/FeatureTemplates.d.ts +1 -1
- package/widgets/FloorFilter.d.ts +1 -1
- package/widgets/Fullscreen/FullscreenViewModel.d.ts +3 -3
- package/widgets/Fullscreen/FullscreenViewModel.js +1 -1
- package/widgets/Fullscreen.d.ts +3 -3
- package/widgets/LayerList/ListItemPanel.d.ts +5 -5
- package/widgets/Legend.d.ts +1 -1
- package/widgets/Locate/LocateViewModel.d.ts +2 -2
- package/widgets/Locate.d.ts +1 -1
- package/widgets/PanoramicViewer/utils.js +1 -1
- package/widgets/Popup.d.ts +1 -1
- package/widgets/Print/PrintViewModel.d.ts +2 -2
- package/widgets/Print/TemplateOptions.d.ts +4 -4
- package/widgets/Print.d.ts +6 -6
- package/widgets/Search/SearchViewModel.d.ts +5 -5
- package/widgets/Search.d.ts +4 -4
- package/widgets/ShadowCast.d.ts +1 -1
- package/widgets/Sketch/SketchViewModel.d.ts +1 -1
- package/widgets/Slice.d.ts +1 -1
- package/widgets/TableList/ListItemPanel.d.ts +5 -5
- package/widgets/Track/TrackViewModel.d.ts +3 -3
- package/widgets/Track.d.ts +3 -3
- package/widgets/UtilityNetworkTrace.d.ts +1 -1
- package/widgets/VersionManagement/VersionManagementViewModel.d.ts +2 -2
- package/widgets/Weather.d.ts +1 -1
- package/widgets/Widget.d.ts +1 -1
- package/widgets/support/forms/formUtils.js +1 -1
- package/widgets/support/types.d.ts +1 -1
- package/widgets/support/widget.d.ts +6 -6
- package/assets/esri/core/workers/chunks/1ddbf5f507ac153234be.js +0 -1
- package/assets/esri/core/workers/chunks/29615df388a0df022d8c.js +0 -1
- package/assets/esri/core/workers/chunks/2bd334f9ab89334df713.js +0 -1
- package/assets/esri/core/workers/chunks/319ff04282dc8ae38b56.js +0 -2
- package/assets/esri/core/workers/chunks/3a6678ee9990d7e83e15.js +0 -1
- package/assets/esri/core/workers/chunks/3b3986276e70297d573b.js +0 -1
- package/assets/esri/core/workers/chunks/46fbd519cc1a37923bfc.js +0 -1
- package/assets/esri/core/workers/chunks/4ef53455c8bc6efee80e.js +0 -1
- package/assets/esri/core/workers/chunks/51ee6102f5f4840a5b47.js +0 -1
- package/assets/esri/core/workers/chunks/58994b6bfcda5f2ada80.js +0 -1
- package/assets/esri/core/workers/chunks/6db274f6767102a39021.js +0 -1
- package/assets/esri/core/workers/chunks/77769663cd712822d33e.js +0 -1
- package/assets/esri/core/workers/chunks/8c5a41ae68775bac3446.js +0 -1
- package/assets/esri/core/workers/chunks/b08a1255dacf6cfcf139.js +0 -640
- package/assets/esri/core/workers/chunks/b098469e0010a6b44df9.js +0 -1
- package/assets/esri/core/workers/chunks/ca1b0cb14ea9ae1bf2a3.js +0 -1
- package/assets/esri/core/workers/chunks/ca4245414d8ecd217f9d.js +0 -1
- package/assets/esri/core/workers/chunks/d3af51a6d9014ff46170.js +0 -1
- package/assets/esri/core/workers/chunks/d561dc933d8fe1672d85.js +0 -1
- package/assets/esri/core/workers/chunks/e38836bfcc7a15a2fd1f.js +0 -1
- package/assets/esri/core/workers/chunks/e645f992ec6f935ee3a5.js +0 -1
- package/assets/esri/core/workers/chunks/eabd4a78221b7e733793.js +0 -1
- package/assets/esri/core/workers/chunks/f05932aea4eb267cba4d.js +0 -1
- /package/assets/esri/core/workers/chunks/{50dc9893e13396f5e35d.js.LICENSE.txt → 62e77e3c5ca9b4887923.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{319ff04282dc8ae38b56.js.LICENSE.txt → 7df94cb985db41815fad.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{c216cd5d6b5d4fe4bab3.js.LICENSE.txt → 875cce0be4f6c89f80f3.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{8244b74e9c3a30d8d2f6.js.LICENSE.txt → d9d4754062758789f186.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{d1ccc5f2d8892328ab01.js.LICENSE.txt → f5731ad4cfbbf1cc569a.js.LICENSE.txt} +0 -0
|
@@ -159,6 +159,16 @@ export function createVisualVariable(parameters: VisualVariableParameters): Prom
|
|
|
159
159
|
* .then(function(response){
|
|
160
160
|
* layer.renderer = response.renderer;
|
|
161
161
|
* });
|
|
162
|
+
* @example
|
|
163
|
+
* // visualization based off time series definition
|
|
164
|
+
* const colorParams = {
|
|
165
|
+
* layer,
|
|
166
|
+
* dataSeriesName: "ts0",
|
|
167
|
+
* view,
|
|
168
|
+
* };
|
|
169
|
+
*
|
|
170
|
+
* const { renderer } = await colorRendererCreator.createContinuousRenderer(colorParams);
|
|
171
|
+
* layer.renderer = renderer;
|
|
162
172
|
*/
|
|
163
173
|
export function createContinuousRenderer(parameters: ContinuousRendererParameters): Promise<ContinuousRendererResult>;
|
|
164
174
|
|
|
@@ -223,6 +233,18 @@ export function createContinuousRenderer(parameters: ContinuousRendererParameter
|
|
|
223
233
|
* .then(function(response){
|
|
224
234
|
* layer.renderer = response.renderer;
|
|
225
235
|
* });
|
|
236
|
+
* @example
|
|
237
|
+
* // visualization based off time series definition
|
|
238
|
+
* const colorParams = {
|
|
239
|
+
* layer,
|
|
240
|
+
* dataSeriesName: "ts0",
|
|
241
|
+
* view,
|
|
242
|
+
* classificationMethod: "equal-interval",
|
|
243
|
+
* numClasses: 4
|
|
244
|
+
* };
|
|
245
|
+
*
|
|
246
|
+
* const { renderer } = await colorRendererCreator.createClassBreaksRenderer(colorParams);
|
|
247
|
+
* layer.renderer = renderer;
|
|
226
248
|
*/
|
|
227
249
|
export function createClassBreaksRenderer(parameters: ClassBreaksRendererParameters): Promise<ClassBreaksRendererResult>;
|
|
228
250
|
|
|
@@ -421,6 +443,15 @@ export interface VisualVariableParametersBase extends AbortOptions {
|
|
|
421
443
|
* This is used by the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
|
|
422
444
|
*/
|
|
423
445
|
valueExpressionTitle?: string | null;
|
|
446
|
+
/**
|
|
447
|
+
* Name of a configured entry in [DataSeriesLayer.dataSeriesInfos](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/DataSeriesLayer/#dataSeriesInfos).
|
|
448
|
+
* When provided, the renderer creator reads the Arcade expression from the matching
|
|
449
|
+
* data series info and uses mapped fields to calculate statistics. Set this as an alternative to `field`
|
|
450
|
+
* or `valueExpression` when working with a layer that has data series configured.
|
|
451
|
+
* If all three of `field`, `valueExpression`, and `dataSeriesName` are provided, then the
|
|
452
|
+
* precedence is `dataSeriesName` over `valueExpression` over `field`.
|
|
453
|
+
*/
|
|
454
|
+
dataSeriesName?: string | null;
|
|
424
455
|
/**
|
|
425
456
|
* A SQL expression evaluating to a number. When provided, statistics are
|
|
426
457
|
* queried from the server for the entire layer. Only use this parameter when generating a renderer based on
|
|
@@ -639,6 +670,15 @@ export interface ClassBreaksRendererParameters extends AbortOptions {
|
|
|
639
670
|
* This is used by the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
|
|
640
671
|
*/
|
|
641
672
|
valueExpressionTitle?: string | null;
|
|
673
|
+
/**
|
|
674
|
+
* Name of a configured entry in [DataSeriesLayer.dataSeriesInfos](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/DataSeriesLayer/#dataSeriesInfos).
|
|
675
|
+
* When provided, the renderer creator reads the Arcade expression from the matching
|
|
676
|
+
* data series info and uses mapped fields to calculate statistics. Set this as an alternative to `field`
|
|
677
|
+
* or `valueExpression` when working with a layer that has data series configured.
|
|
678
|
+
* If all three of `field`, `valueExpression`, and `dataSeriesName` are provided, then the
|
|
679
|
+
* precedence is `dataSeriesName` over `valueExpression` over `field`.
|
|
680
|
+
*/
|
|
681
|
+
dataSeriesName?: string | null;
|
|
642
682
|
/**
|
|
643
683
|
* Indicates how the data is normalized.
|
|
644
684
|
* The data value obtained from the `field`
|
|
@@ -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 a}from"../../core/lang.js";import{ensureClass as r}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as o}from"../../intl/messages.js";import n from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/PointCloudRGBRenderer.js";import s from"../../renderers/PointCloudStretchRenderer.js";import t from"../../renderers/support/AuthoringInfo.js";import u from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as m,createColorStops as c}from"../../renderers/support/utils.js";import d from"../../renderers/visualVariables/ColorVariable.js";import p from"../../renderers/visualVariables/support/ColorStop.js";import f from"../../renderers/visualVariables/support/VisualVariableLegendOptions.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import h from"../heuristics/sizeRange.js";import{spliceVisualVariables as w,updateAuthoringInfoVisualVariable as b,processRegenerateParams as g,getRendererToUpdate as T,getStyleType as x,hasOutlineVV as z,hasScaleDependentSizeVV as E,findColorVVIndex as V,findOutlineVVIndex as I,findScaleDependentSizeVVIndex as S}from"./support/regenerateUtils.js";import{errorCallback as M,getTitleAndExpressionForAgeRenderer as B,updateAgeRendererAuthoringInfoVV as O,getClassBreaks as j,getSummaryStatistics as k,getPointSizeAlgorithm as F,createSymbol as q,getSymbolOutlineFromScheme as R,getSymbolSizeFromScheme as U,verifyBasicFieldValidity as C,isValidPointSize as P,getDefaultDataRange as D,createDefaultStopValues as $,createStopValues as L,getDataRange as A,createDataValues as G,getBasemapInfo as W}from"./support/utils.js";import{verifyDates as H,supportedAgeUnits as J}from"../statistics/support/ageUtils.js";import{verifyBinningParams as K}from"../support/binningUtils.js";import{isAnyDateField as N,getNormalizationType as Q,getFieldsList as X}from"../support/utils.js";import{createLayerAdapter as Y,featureCapableLayerTypes as Z,getLayerTypeLabels as _,binningCapableLayerTypes as ee}from"../support/adapters/support/layerUtils.js";import{cloneScheme as ie,createScheme as ae,getSchemes as re,getSchemeById as oe}from"../symbology/color.js";import{getColorSchemeDefinition as ne}from"../symbology/support/utils.js";const le="high-to-low",se=2**53-1,te=5;async function ue(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-visual-variable");const a={...e},r=e.forBinning?ee:Z,o=Y(a.layer,r,e.forBinning);if(!o)throw new i("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+_(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);if("mesh"!==o.geometryType&&a.worldScale&&"3d"!==a.view?.type)throw new i("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const l=await X({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),s=C(o,l,"color-visual-variable:invalid-parameters");if(s)throw s;return{...a,layer:o}}async function me(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-continuous-renderer");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0;const r=e.forBinning?ee:Z,o=Y(a.layer,r,e.forBinning);if(!o)throw new i("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+_(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);const l=o.geometryType;a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled;const s="featureReduction"in a.layer&&"cluster"===a.layer.featureReduction?.type;if(a.sizeOptimizationEnabled=!("point"!==l&&"multipoint"!==l&&"polyline"!==l||s)&&a.sizeOptimizationEnabled,"mesh"===l)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==l)throw new i("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&"3d"!==a.view?.type)throw new i("color-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const t=await X({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),u=C(o,t,"color-continuous-renderer:invalid-parameters");if(u)throw u;return{...a,layer:o}}async function ce(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&K(e,"color-class-breaks-renderer");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0,a.classificationMethod??="equal-interval",a.normalizationType=Q(a);const r=e.forBinning?ee:Z,o=Y(a.layer,r,e.forBinning);if(!o)throw new i("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+_(r).join(", "));if(!(null!=a.minValue&&null!=a.maxValue)&&(null!=a.minValue||null!=a.maxValue))throw new i("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);const l=o.geometryType;if(a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled,"mesh"===l)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else{if("3d-volumetric-uniform"===a.symbolType&&"point"!==l)throw new i("color-class-breaks-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&"3d"!==a.view?.type)throw new i("color-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const s=await X({field:a.field,normalizationField:a.normalizationField}),t=C(o,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return{...a,layer:o}}function de(e){const i={...e};delete i.basemap,delete i.colorScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const a=i;return a.analyzeData=!(null!=i.minValue&&null!=i.maxValue),a}async function pe(e){if(!e?.layer)throw new i("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required");const a={...e,layer:e.layer},r=[10],o=Y(a.layer,r);if(!o)throw new i("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+_(r).join(", "));if(a.layer=o,a.density=a.density||25,a.size=a.size||"100%",!P(a.size))throw new i("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const n=null!=a.signal?{signal:a.signal}:null;return await o.load(n),a}async function fe(e){if(!e?.layer||!e.field)throw new i("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required");const a=e.field.toLowerCase();if("intensity"!==a&&"elevation"!==a)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'");const r={...e,layer:e.layer,field:e.field},o=[10],n=Y(r.layer,o);if(!n)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+_(o).join(", "));if(r.layer=n,r.density=r.density||25,r.size=r.size||"100%",!P(r.size))throw new i("color-point-cloud-continuous-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const l=null!=r.signal?{signal:r.signal}:null;return await n.load(l),r}function ye(e){const i={...e},a=!!i.symbolType?.includes("3d-volumetric");delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const r=i;return r.worldScale=a,r}async function ve(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0;const r=Y(a.layer,Z);if(!r)throw new i("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+_(Z).join(", "));const o=null!=a.signal?{signal:a.signal}:null;await r.load(o);const n=r.geometryType;a.outlineOptimizationEnabled="polygon"===n&&a.outlineOptimizationEnabled;const l="featureReduction"in a.layer&&"cluster"===a.layer.featureReduction?.type;if(a.sizeOptimizationEnabled=!("point"!==n&&"multipoint"!==n&&"polyline"!==n||l)&&a.sizeOptimizationEnabled,"mesh"===n)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else if("3d-volumetric-uniform"===a.symbolType&&"point"!==n)throw new i("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const s=H(r,a.startTime,a.endTime,"color-age-renderer:invalid-parameters");if(s)throw s;if(a.unit&&!J.includes(a.unit))throw new i("color-age-renderer:invalid-unit",`Supported units are: ${J.join(", ")}`);return{...a,layer:r}}async function he(e){const a="regenerate-color-visual-variable";await g(e,a);const r=await T(e);if("class-breaks"!==r?.type)throw new i(`${a}:invalid-parameters`,"Renderer must be a ClassBreaksRenderer to regenerate a color visual variable");const o=r.authoringInfo,n=o?.visualVariables.find(e=>"color"===e.type),l=r.visualVariables?.find(e=>"color"===e.type);if(!l)throw new i(`${a}:invalid-parameters`,"Renderer does not have a color visual variable");const{field:s,normalizationField:t,valueExpression:u,valueExpressionTitle:m}=l,c="univariate-color-size"===o?.type?o?.univariateTheme:n?.theme,{layer:d,forBinning:p,filter:f,view:y,signal:v}=e,h=await ue({layer:d,field:s,valueExpression:u,valueExpressionTitle:m,normalizationField:t,theme:c,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:r}}async function we(e){const a="regenerate-color-continuous-renderer";await g(e,a);const r=await T(e),o=x(r);if(!o||!["color-continuous","color-size"].includes(o))throw new i(`${a}:invalid-renderer`,"Renderer is invalid");const{authoringInfo:n,field:l,normalizationField:s,valueExpression:t,valueExpressionTitle:u}=r,m=n?.visualVariables.find(e=>"color"===e.type),c=m?.theme,{layer:d,forBinning:p,filter:f,view:y,signal:v}=e,h=z(r),w=E(r),b=await me({layer:d,field:l,valueExpression:t,valueExpressionTitle:u,normalizationField:s,theme:c,outlineOptimizationEnabled:h,sizeOptimizationEnabled:w,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:b,renderer:r}}async function be(e){const a="regenerate-color-class-breaks-renderer";await g(e,a);const r=await T(e);if("color-class-breaks"!==x(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:o,field:n,normalizationField:l,normalizationType:s,normalizationTotal:t,valueExpression:u,valueExpressionTitle:m}=r,{classificationMethod:c,standardDeviationInterval:d}=o,p=r.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:h,signal:w}=e,b=z(r),E=await ce({layer:f,field:n,valueExpression:u,valueExpressionTitle:m,normalizationType:s,normalizationField:l,normalizationTotal:t,classificationMethod:c,standardDeviationInterval:d,numClasses:p,outlineOptimizationEnabled:b,defaultSymbolEnabled:!!r.defaultSymbol,forBinning:y,filter:v,view:h,signal:w});return{...e,creatorParameters:E,renderer:r}}async function ge(e){const a="regenerate-color-age-renderer";await g(e,a);const r=await T(e);if("color-age"!==x(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:o}=r,n=o?.visualVariables.find(e=>"color"===e.type),l=n.startTime,s=n.endTime,t=n.units,u=n.theme,{layer:m,filter:c,view:d,signal:p}=e,f=z(r),y=E(r),v=await ve({layer:m,startTime:l,endTime:s,unit:t,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:c,view:d,signal:p});return{...e,creatorParameters:v,renderer:r}}async function Te(e,i){let a=e.colorScheme,r=null,o=null;const{view:n}=e,l=await W(e.basemap,n);if(r=null!=l.basemapId?l.basemapId:null,o=null!=l.basemapTheme?l.basemapTheme:null,a)return{scheme:ie(a),basemapId:r,basemapTheme:o};const s=e.theme||le,t=re({theme:s,basemapTheme:o,geometryType:e.geometryType,worldScale:e.worldScale,view:n});if(t)if(r=t.basemapId,o=t.basemapTheme,e.schemeId){const i=s+"/"+r+"/"+e.schemeId;a=oe({id:i,geometryType:e.geometryType})}else a=t.primaryScheme;return{scheme:a,basemapId:r,basemapTheme:o}}function xe(e,i){const a=ne(e);return ae({geometryType:i},void 0,a.commonProps,a.colorRampInfo)}async function ze(a,r){const o=r.layer,n=await Te({basemap:r.basemap,colorScheme:r.colorScheme,geometryType:o.geometryType,schemeId:"elevation"===r.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),l=n.scheme;if(!l)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const s=e(l.colors,te);if(s.length<te)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const t=D(a,!1,!0),u=t?$(t[0],t[1],5):L(a);return{stops:c({values:u,isDate:!1,colors:s,labelIndexes:[0,2,4]}),basemapId:n.basemapId,basemapTheme:n.basemapTheme,statistics:a,defaultValuesUsed:!!t,colorScheme:ie(l)}}function Ee(e,i,a,r){const o=A(e,i,a,!0);return{values:G(o,e,i,r),defaultValuesUsed:o.defaultValuesUsed}}async function Ve(a,o,n,l){const{field:s,theme:m}=a,c=await Te({basemap:a.basemap,theme:a.theme,geometryType:n,colorScheme:a.colorScheme,worldScale:a.worldScale,view:a.view}),y=c.scheme;if(!y)throw new i("color-visual-variable:insufficient-info","Unable to find color scheme");const v=e(y.colors,te);if(v.length<te)throw new i("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const h=y.id.includes("seq-"),{values:w,defaultValuesUsed:b}=Ee(o,m,l,h),g=e(v,te),T=new d({field:s??void 0,valueExpression:a.valueExpression,valueExpressionTitle:a.valueExpressionTitle,normalizationField:a.normalizationField,stops:w.map((e,i)=>new p({value:e,color:g[i]})),legendOptions:r(f,a.legendOptions)}),x=new u({type:"color",minSliderValue:null!=a.minValue?a.minValue:o.min,maxSliderValue:null!=a.maxValue?a.maxValue:o.max,theme:y.theme}),z=new t({visualVariables:[x]});return{basemapId:c.basemapId,basemapTheme:c.basemapTheme,visualVariable:T,statistics:o,defaultValuesUsed:b,colorScheme:ie(y),authoringInfo:z}}async function Ie(e,i,a,r,l,s,t){const u=await o("esri/smartMapping/t9n/smartMapping"),{field:m,defaultSymbolEnabled:c}=t,d=ie(e.colorScheme),p=i?.opacity,f=[e.visualVariable.clone()];i?.visualVariables?.length&&f.push(...i.visualVariables.map(e=>e.clone())),a?.minSize&&f.push(a.minSize);return{renderer:new n({classBreakInfos:[{minValue:-se,maxValue:se,symbol:q(s,{type:t.symbolType,color:d.noDataColor,size:U(d,s),outline:R(d,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:c?u.other:null,defaultSymbol:c?q(s,{type:t.symbolType,color:d.noDataColor,size:U(d,s),outline:R(d,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}):null,field:m,normalizationType:r,normalizationField:l,valueExpression:t.valueExpression,valueExpressionTitle:t.valueExpressionTitle,visualVariables:f,authoringInfo:e.authoringInfo&&e.authoringInfo.clone()}),visualVariable:e.visualVariable.clone(),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,colorScheme:ie(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function Se(e){const i=await ue(e),{view:a,field:r,valueExpression:o,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:u,filter:m,statistics:c}=i,d=t?"field":void 0,p=await(c??k({layer:s,field:r,valueExpression:o,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:t,minValue:n,maxValue:l,filter:m,view:a,signal:u})),f=s,y=r&&"function"!=typeof r?f.getField(r):null;return Ve(i,p,f.geometryType,N(y))}async function Me(i){const{view:a,filter:r,creatorParameters:o,renderer:n,signal:l}=await he(i),s=n.authoringInfo?.clone(),t=s?.visualVariables.find(e=>"color"===e.type),u=n.visualVariables?.find(e=>"color"===e.type),{field:m,normalizationField:c,valueExpression:d,theme:f,layer:y}=o,v=await k({layer:y,field:m,valueExpression:d,normalizationField:c,filter:r,view:a,signal:l}),h=m&&"function"!=typeof m?y.getField(m):null,{values:w}=Ee(v,f,N(h),"high-to-low"===f);if(w.length===u.stops.length)u.stops.forEach((e,i)=>e.value=w[i]);else{const i=u.stops.map(e=>e.color),a=e(i,te);u.stops=w.map((e,i)=>new p({value:e,color:a[i]}))}return t&&(t.minSliderValue=v.min,t.maxSliderValue=v.max),{visualVariable:u,authoringInfo:s,statistics:v}}function Be(i,r){const o=i.colorsForClassBreaks;if(o?.length)for(const e of o)if(e.numClasses===r)return a(e.colors);return e(i.colors,r)}async function Oe(e,a){const r=await o("esri/smartMapping/t9n/smartMapping"),l=e.layer,s=e.defaultSymbolEnabled,u=l.geometryType,c=e.classificationMethod,d="standard-deviation"===c,p=await Te({basemap:e.basemap,geometryType:u,theme:d?"above-and-below":null,colorScheme:e.colorScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view}),f=p.scheme,{result:y,outlineResult:v}=a,h=y.classBreakInfos,w=e.normalizationType;if(!f)throw new i("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const b=Be(f,h.length);if(!b||b.length!==h.length)throw new i("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=v?.opacity,T=new n({classBreakInfos:h.map((i,a)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:q(u,{type:e.symbolType,color:b[a],size:U(f,u),outline:R(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:i.label})),defaultLabel:s?r.other:null,defaultSymbol:s?q(u,{type:e.symbolType,color:f.noDataColor,size:U(f,u),outline:R(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?y.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new t({type:"class-breaks-color",classificationMethod:c,standardDeviationInterval:e.standardDeviationInterval})});return d||m({classBreakInfos:T.classBreakInfos,classificationMethod:c,normalizationType:w,round:!0}),v?.visualVariables?.length&&(T.visualVariables=v.visualVariables.map(e=>e.clone())),{renderer:T,colorScheme:ie(f),classBreaksResult:y,defaultValuesUsed:a.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function je(e){const i=await me(e),{layer:a,view:r,signal:o,filter:n}=i,[l,s,t]=await Promise.all([Se(ye(i)),i.outlineOptimizationEnabled?v({layer:a,view:r,signal:o,filter:n}).catch(M):null,i.sizeOptimizationEnabled?h({layer:a,view:r,signal:o,filter:n}).catch(M):null]),u=i.normalizationField;return Ie(l,s,t,u?"field":void 0,u,a.geometryType,i)}async function ke(e){const{renderer:i,view:a,signal:r,filter:o,creatorParameters:n}=await we(e),{layer:l,outlineOptimizationEnabled:s,sizeOptimizationEnabled:t}=n,[u,m,c]=await Promise.all([Me(e),s?v({layer:l,view:a,signal:r,filter:o}).catch(M):null,t?h({layer:l,view:a,signal:r,filter:o}).catch(M):null]);return w(i,u.visualVariable,V),w(i,m?.visualVariables,I),w(i,c?.minSize,S),b(i,u.authoringInfo,"color"),{renderer:i}}async function Fe(e){const i=await ce(e);return Oe(i,await j(de(i),i.outlineOptimizationEnabled))}async function qe(e){const{renderer:i,creatorParameters:a}=await be(e),{normalizationType:r,outlineOptimizationEnabled:o,classificationMethod:n}=a;if("manual"===n)return{renderer:i};const l=await j(de(a),o),s=l.result.classBreakInfos;if(a.numClasses!==s.length){const e=xe(i.classBreakInfos.map(e=>e.symbol),a.layer.geometryType);return{renderer:(await Oe({...a,colorScheme:e},l)).renderer}}return i.classBreakInfos.forEach((e,i)=>{e.minValue=s[i].minValue,e.maxValue=s[i].maxValue,e.label=s[i].label}),i.normalizationTotal="percent-of-total"===r?l.result.normalizationTotal:void 0,"standard-deviation"!==n&&m({classBreakInfos:i.classBreakInfos,classificationMethod:n,normalizationType:r,round:!0}),w(i,l.outlineResult?.visualVariables,I),{renderer:i}}function Re(e){return pe(e).then(e=>({renderer:new l({field:"RGB",pointsPerInch:e.density??void 0,pointSizeAlgorithm:F(e.size)})}))}async function Ue(e){const i=await fe(e),a=i.statistics??await k({layer:i.layer,field:i.field,signal:i.signal}),r=await ze(a,i);return{renderer:new s({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:F(i.size),stops:r.stops}),basemapId:r.basemapId,basemapTheme:r.basemapTheme,statistics:r.statistics,defaultValuesUsed:r.defaultValuesUsed,colorScheme:r.colorScheme}}async function Ce(e){const i=await ve(e),{defaultSymbolEnabled:a,view:r,startTime:o,endTime:n,symbolType:l,colorMixMode:s,edgesType:t,minValue:u,maxValue:m,signal:c,filter:d}=i,p=i.layer,[f,w,b]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:y({view:r,layer:p,startTime:o,endTime:n,minValue:u,maxValue:m,signal:c,filter:d}),i.outlineOptimizationEnabled?v({layer:p,view:r,signal:c,filter:d}).catch(M):null,i.sizeOptimizationEnabled?h({layer:p,view:r,signal:c,filter:d}).catch(M):null]),{unit:g,statistics:T}=f,{valueExpression:x,title:z}=await B(i,g),E=await Se(ye({layer:p,basemap:i.basemap,valueExpression:x,symbolType:l,statistics:T,legendOptions:{title:z},colorScheme:i.colorScheme,theme:i.theme,view:r,minValue:i.minValue,maxValue:i.maxValue,filter:d,signal:c})),V={valueExpression:x,defaultSymbolEnabled:a,symbolType:l,colorMixMode:s,edgesType:t},I=await Ie(E,w,b,null,null,p.geometryType,V),S=I.renderer.authoringInfo?.visualVariables;return S?.forEach(e=>O(e,o,n,g)),{...I,unit:g}}async function Pe(e){const{renderer:i,creatorParameters:a}=await ge(e),{layer:r,outlineOptimizationEnabled:o,sizeOptimizationEnabled:n,startTime:l,endTime:s,theme:t,view:u,signal:m,filter:c}=a,[d,p,f]=await Promise.all([y({view:u,layer:r,startTime:l,endTime:s,signal:m,filter:c}),o?v({layer:r,view:u,signal:m,filter:c}).catch(M):null,n?h({layer:r,view:u,signal:m,filter:c}).catch(M):null]),{unit:b,statistics:g}=d,{valueExpression:T,title:x}=await B(a,b),z=await Se(ye({layer:r,valueExpression:T,statistics:g,legendOptions:{title:x},theme:t,view:u,filter:c,signal:m}));w(i,z.visualVariable,V),w(i,p?.visualVariables,I),w(i,f?.minSize,S),i.authoringInfo=z.authoringInfo.clone();const E=i.authoringInfo?.visualVariables;return E?.forEach(e=>O(e,l,s,b)),{renderer:i}}export{Ce as createAgeRenderer,Fe as createClassBreaksRenderer,je as createContinuousRenderer,Ue as createPCContinuousRenderer,Re as createPCTrueColorRenderer,Se as createVisualVariable,Pe as regenerateAgeRenderer,qe as regenerateClassBreaksRenderer,ke as regenerateContinuousRenderer,Me as regenerateVisualVariable};
|
|
2
|
+
import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{clone as a}from"../../core/lang.js";import{ensureClass as r}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as o}from"../../intl/messages.js";import n from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/PointCloudRGBRenderer.js";import s from"../../renderers/PointCloudStretchRenderer.js";import t from"../../renderers/support/AuthoringInfo.js";import u from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as m,createColorStops as d}from"../../renderers/support/utils.js";import c from"../../renderers/visualVariables/ColorVariable.js";import p from"../../renderers/visualVariables/support/ColorStop.js";import f from"../../renderers/visualVariables/support/VisualVariableLegendOptions.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import h from"../heuristics/sizeRange.js";import{spliceVisualVariables as w,updateAuthoringInfoVisualVariable as b,processRegenerateParams as g,getRendererToUpdate as T,getStyleType as x,hasOutlineVV as E,hasScaleDependentSizeVV as z,findColorVVIndex as V,findOutlineVVIndex as S,findScaleDependentSizeVVIndex as I}from"./support/regenerateUtils.js";import{getTimeSeriesSummaryStatistics as M,resolveDataSeriesInfo as j}from"./support/timeSeriesUtils.js";import{errorCallback as B,getTitleAndExpressionForAgeRenderer as O,updateAgeRendererAuthoringInfoVV as k,getClassBreaks as F,getSummaryStatistics as q,getPointSizeAlgorithm as U,createSymbol as R,getSymbolOutlineFromScheme as C,getSymbolSizeFromScheme as N,verifyBasicFieldValidity as P,isValidPointSize as D,getDefaultDataRange as $,createDefaultStopValues as L,createStopValues as A,getDataRange as G,createDataValues as W,getBasemapInfo as H}from"./support/utils.js";import{verifyDates as J,supportedAgeUnits as K}from"../statistics/support/ageUtils.js";import{verifyBinningParams as Q}from"../support/binningUtils.js";import{isAnyDateField as X,getNormalizationType as Y,getFieldsList as Z}from"../support/utils.js";import{createLayerAdapter as _,featureCapableLayerTypes as ee,getLayerTypeLabels as ie,binningCapableLayerTypes as ae}from"../support/adapters/support/layerUtils.js";import{cloneScheme as re,createScheme as oe,getSchemes as ne,getSchemeById as le}from"../symbology/color.js";import{getColorSchemeDefinition as se}from"../symbology/support/utils.js";const te="high-to-low",ue=2**53-1,me=5;async function de(e){const a=j({...e});if(!(a&&a.layer&&(a.field||a.valueExpression||a.sqlExpression)))throw new i("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new i("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&Q(a,"color-visual-variable");const r={...a},o=a.forBinning?ae:ee,n=_(r.layer,o,a.forBinning);if(!n)throw new i("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+ie(o).join(", "));const l=null!=r.signal?{signal:r.signal}:null;await n.load(l);if("mesh"!==n.geometryType&&r.worldScale&&"3d"!==r.view?.type)throw new i("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const s=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),t=P(n,s,"color-visual-variable:invalid-parameters");if(t)throw t;return{...r,layer:n}}async function ce(e){const a=j({...e});if(!(a&&a.layer&&(a.field||a.valueExpression||a.sqlExpression)))throw new i("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.sqlExpression&&!a.view)throw new i("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&Q(a,"color-continuous-renderer");const r={...a};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const o=a.forBinning?ae:ee,n=_(r.layer,o,a.forBinning);if(!n)throw new i("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ie(o).join(", "));const l=null!=r.signal?{signal:r.signal}:null;await n.load(l);const s=n.geometryType;r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled;const t="featureReduction"in r.layer&&"cluster"===r.layer.featureReduction?.type;if(r.sizeOptimizationEnabled=!("point"!==s&&"multipoint"!==s&&"polyline"!==s||t)&&r.sizeOptimizationEnabled,"mesh"===s)r.symbolType="3d-volumetric",r.colorMixMode=r.colorMixMode||"replace",r.edgesType=r.edgesType||"none";else{if("3d-volumetric-uniform"===r.symbolType&&"point"!==s)throw new i("color-continuous-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("color-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const u=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),m=P(n,u,"color-continuous-renderer:invalid-parameters");if(m)throw m;return{...r,layer:n}}async function pe(e){const a=j({...e});if(!a||!a.layer||!a.field&&!a.valueExpression)throw new i("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(a.valueExpression&&!a.view)throw new i("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&Q(a,"color-class-breaks-renderer");const r={...a};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=Y(r);const o=a.forBinning?ae:ee,n=_(r.layer,o,a.forBinning);if(!n)throw new i("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ie(o).join(", "));if(!(null!=r.minValue&&null!=r.maxValue)&&(null!=r.minValue||null!=r.maxValue))throw new i("color-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 n.load(l);const s=n.geometryType;if(r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled,"mesh"===s)r.symbolType="3d-volumetric",r.colorMixMode=r.colorMixMode||"replace",r.edgesType=r.edgesType||"none";else{if("3d-volumetric-uniform"===r.symbolType&&"point"!==s)throw new i("color-class-breaks-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("color-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const t=await Z({field:r.field,normalizationField:r.normalizationField}),u=P(n,t,"color-class-breaks-renderer:invalid-parameters");if(u)throw u;return{...r,layer:n}}function fe(e){const i={...e};delete i.basemap,delete i.colorScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const a=i;return a.analyzeData=!(null!=i.minValue&&null!=i.maxValue),a}async function ye(e){if(!e?.layer)throw new i("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required");const a={...e,layer:e.layer},r=[10],o=_(a.layer,r);if(!o)throw new i("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+ie(r).join(", "));if(a.layer=o,a.density=a.density||25,a.size=a.size||"100%",!D(a.size))throw new i("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const n=null!=a.signal?{signal:a.signal}:null;return await o.load(n),a}async function ve(e){if(!e?.layer||!e.field)throw new i("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required");const a=e.field.toLowerCase();if("intensity"!==a&&"elevation"!==a)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'");const r={...e,layer:e.layer,field:e.field},o=[10],n=_(r.layer,o);if(!n)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ie(o).join(", "));if(r.layer=n,r.density=r.density||25,r.size=r.size||"100%",!D(r.size))throw new i("color-point-cloud-continuous-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");const l=null!=r.signal?{signal:r.signal}:null;return await n.load(l),r}function he(e){const i={...e},a=!!i.symbolType?.includes("3d-volumetric");delete i.symbolType,delete i.defaultSymbolEnabled,delete i.colorMixMode,delete i.edgesType;const r=i;return r.worldScale=a,r}async function we(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const a={...e};a.symbolType=a.symbolType||"2d",a.defaultSymbolEnabled??=!0;const r=_(a.layer,ee);if(!r)throw new i("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+ie(ee).join(", "));const o=null!=a.signal?{signal:a.signal}:null;await r.load(o);const n=r.geometryType;a.outlineOptimizationEnabled="polygon"===n&&a.outlineOptimizationEnabled;const l="featureReduction"in a.layer&&"cluster"===a.layer.featureReduction?.type;if(a.sizeOptimizationEnabled=!("point"!==n&&"multipoint"!==n&&"polyline"!==n||l)&&a.sizeOptimizationEnabled,"mesh"===n)a.symbolType="3d-volumetric",a.colorMixMode=a.colorMixMode||"replace",a.edgesType=a.edgesType||"none";else if("3d-volumetric-uniform"===a.symbolType&&"point"!==n)throw new i("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(a.symbolType.includes("3d-volumetric")&&(!a.view||"3d"!==a.view.type))throw new i("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const s=J(r,a.startTime,a.endTime,"color-age-renderer:invalid-parameters");if(s)throw s;if(a.unit&&!K.includes(a.unit))throw new i("color-age-renderer:invalid-unit",`Supported units are: ${K.join(", ")}`);return{...a,layer:r}}async function be(e){const a="regenerate-color-visual-variable";await g(e,a);const r=await T(e);if("class-breaks"!==r?.type)throw new i(`${a}:invalid-parameters`,"Renderer must be a ClassBreaksRenderer to regenerate a color visual variable");const o=r.authoringInfo,n=o?.visualVariables.find(e=>"color"===e.type),l=r.visualVariables?.find(e=>"color"===e.type);if(!l)throw new i(`${a}:invalid-parameters`,"Renderer does not have a color visual variable");const{field:s,normalizationField:t,valueExpression:u,valueExpressionTitle:m}=l,d="univariate-color-size"===o?.type?o?.univariateTheme:n?.theme,{layer:c,forBinning:p,filter:f,view:y,signal:v}=e,h=n?.dataSeriesName,w=await de({layer:c,field:s,valueExpression:u,valueExpressionTitle:m,normalizationField:t,theme:d,forBinning:p,dataSeriesName:h,filter:f,view:y,signal:v});return{...e,creatorParameters:w,renderer:r}}async function ge(e){const a="regenerate-color-continuous-renderer";await g(e,a);const r=await T(e),o=x(r);if(!o||!["color-continuous","color-size"].includes(o))throw new i(`${a}:invalid-renderer`,"Renderer is invalid");const{authoringInfo:n,field:l,normalizationField:s,valueExpression:t,valueExpressionTitle:u}=r,m=n?.visualVariables.find(e=>"color"===e.type),d=m?.theme,{layer:c,forBinning:p,filter:f,view:y,signal:v}=e,h=m?.dataSeriesName,w=E(r),b=z(r),V=await ce({layer:c,field:l,valueExpression:t,valueExpressionTitle:u,normalizationField:s,theme:d,outlineOptimizationEnabled:w,sizeOptimizationEnabled:b,forBinning:p,dataSeriesName:h,filter:f,view:y,signal:v});return{...e,creatorParameters:V,renderer:r}}async function Te(e){const a="regenerate-color-class-breaks-renderer";await g(e,a);const r=await T(e);if("color-class-breaks"!==x(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:o,field:n,normalizationField:l,normalizationType:s,normalizationTotal:t,valueExpression:u,valueExpressionTitle:m}=r,{classificationMethod:d,standardDeviationInterval:c}=o,p=r.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:h,signal:w}=e,b=o?.dataSeriesName,z=E(r),V=await pe({layer:f,field:n,valueExpression:u,valueExpressionTitle:m,normalizationType:s,normalizationField:l,normalizationTotal:t,classificationMethod:d,standardDeviationInterval:c,numClasses:p,outlineOptimizationEnabled:z,defaultSymbolEnabled:!!r.defaultSymbol,forBinning:y,dataSeriesName:b,filter:v,view:h,signal:w});return{...e,creatorParameters:V,renderer:r}}async function xe(e){const a="regenerate-color-age-renderer";await g(e,a);const r=await T(e);if("color-age"!==x(r))throw new i(`${a}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:o}=r,n=o?.visualVariables.find(e=>"color"===e.type),l=n.startTime,s=n.endTime,t=n.units,u=n.theme,{layer:m,filter:d,view:c,signal:p}=e,f=E(r),y=z(r),v=await we({layer:m,startTime:l,endTime:s,unit:t,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:d,view:c,signal:p});return{...e,creatorParameters:v,renderer:r}}async function Ee(e,i){let a=e.colorScheme,r=null,o=null;const{view:n}=e,l=await H(e.basemap,n);if(r=null!=l.basemapId?l.basemapId:null,o=null!=l.basemapTheme?l.basemapTheme:null,a)return{scheme:re(a),basemapId:r,basemapTheme:o};const s=e.theme||te,t=ne({theme:s,basemapTheme:o,geometryType:e.geometryType,worldScale:e.worldScale,view:n});if(t)if(r=t.basemapId,o=t.basemapTheme,e.schemeId){const i=s+"/"+r+"/"+e.schemeId;a=le({id:i,geometryType:e.geometryType})}else a=t.primaryScheme;return{scheme:a,basemapId:r,basemapTheme:o}}function ze(e,i){const a=se(e);return oe({geometryType:i},void 0,a.commonProps,a.colorRampInfo)}async function Ve(a,r){const o=r.layer,n=await Ee({basemap:r.basemap,colorScheme:r.colorScheme,geometryType:o.geometryType,schemeId:"elevation"===r.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),l=n.scheme;if(!l)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const s=e(l.colors,me);if(s.length<me)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const t=$(a,!1,!0),u=t?L(t[0],t[1],5):A(a);return{stops:d({values:u,isDate:!1,colors:s,labelIndexes:[0,2,4]}),basemapId:n.basemapId,basemapTheme:n.basemapTheme,statistics:a,defaultValuesUsed:!!t,colorScheme:re(l)}}function Se(e,i,a,r){const o=G(e,i,a,!0);return{values:W(o,e,i,r),defaultValuesUsed:o.defaultValuesUsed}}async function Ie(a,o,n,l){const{field:s,theme:m}=a,d=await Ee({basemap:a.basemap,theme:a.theme,geometryType:n,colorScheme:a.colorScheme,worldScale:a.worldScale,view:a.view}),y=d.scheme;if(!y)throw new i("color-visual-variable:insufficient-info","Unable to find color scheme");const v=e(y.colors,me);if(v.length<me)throw new i("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const h=y.id.includes("seq-"),{values:w,defaultValuesUsed:b}=Se(o,m,l,h),g=e(v,me),T=new c({field:s??void 0,valueExpression:a.valueExpression,valueExpressionTitle:a.valueExpressionTitle,normalizationField:a.normalizationField,stops:w.map((e,i)=>new p({value:e,color:g[i]})),legendOptions:r(f,a.legendOptions)}),x=new u({type:"color",minSliderValue:null!=a.minValue?a.minValue:o.min,maxSliderValue:null!=a.maxValue?a.maxValue:o.max,theme:y.theme,dataSeriesName:a.dataSeriesName}),E=new t({visualVariables:[x]});return{basemapId:d.basemapId,basemapTheme:d.basemapTheme,visualVariable:T,statistics:o,defaultValuesUsed:b,colorScheme:re(y),authoringInfo:E}}async function Me(e,i,a,r,l,s,t){const u=await o("esri/smartMapping/t9n/smartMapping"),{field:m,defaultSymbolEnabled:d}=t,c=re(e.colorScheme),p=i?.opacity,f=[e.visualVariable.clone()];i?.visualVariables?.length&&f.push(...i.visualVariables.map(e=>e.clone())),a?.minSize&&f.push(a.minSize);return{renderer:new n({classBreakInfos:[{minValue:-ue,maxValue:ue,symbol:R(s,{type:t.symbolType,color:c.noDataColor,size:N(c,s),outline:C(c,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:d?u.other:null,defaultSymbol:d?R(s,{type:t.symbolType,color:c.noDataColor,size:N(c,s),outline:C(c,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}}):null,field:m,normalizationType:r,normalizationField:l,valueExpression:t.valueExpression,valueExpressionTitle:t.valueExpressionTitle,visualVariables:f,authoringInfo:e.authoringInfo&&e.authoringInfo.clone()}),visualVariable:e.visualVariable.clone(),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,colorScheme:re(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function je(e){const i=await de(e),{view:a,field:r,valueExpression:o,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:u,filter:m,statistics:d,dataSeriesName:c}=i,p=t?"field":void 0,f=await(d??(c?M({layer:s,view:a,signal:u,dataSeriesName:c,filter:m}):q({layer:s,field:r,valueExpression:o,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:p,normalizationField:t,minValue:n,maxValue:l,filter:m,view:a,signal:u}))),y=s,v=r&&"function"!=typeof r?y.getField(r):null;return await Ie(i,f,y.geometryType,X(v))}async function Be(i){const{view:a,filter:r,creatorParameters:o,renderer:n,signal:l}=await be(i),s=n.authoringInfo?.clone(),t=s?.visualVariables.find(e=>"color"===e.type),u=n.visualVariables?.find(e=>"color"===e.type),{field:m,normalizationField:d,valueExpression:c,valueExpressionTitle:f,theme:y,layer:v,dataSeriesName:h}=o,w=h?await M({layer:v,view:a,signal:l,dataSeriesName:h,filter:r}):await q({layer:v,field:m,valueExpression:c,normalizationField:d,filter:r,view:a,signal:l}),b=m&&"function"!=typeof m?v.getField(m):null,{values:g}=Se(w,y,X(b),"high-to-low"===y);if(g.length===u.stops.length)u.stops.forEach((e,i)=>e.value=g[i]);else{const i=u.stops.map(e=>e.color),a=e(i,me);u.stops=g.map((e,i)=>new p({value:e,color:a[i]}))}return h&&(u.valueExpression=c??null,u.valueExpressionTitle=f??null,t&&(t.dataSeriesName=h)),t&&(t.minSliderValue=w.min,t.maxSliderValue=w.max),{visualVariable:u,authoringInfo:s,statistics:w}}function Oe(i,r){const o=i.colorsForClassBreaks;if(o?.length)for(const e of o)if(e.numClasses===r)return a(e.colors);return e(i.colors,r)}async function ke(e,a){const r=await o("esri/smartMapping/t9n/smartMapping"),l=e.layer,s=e.defaultSymbolEnabled,u=l.geometryType,d=e.classificationMethod,c="standard-deviation"===d,p=await Ee({basemap:e.basemap,geometryType:u,theme:c?"above-and-below":null,colorScheme:e.colorScheme,worldScale:!!e.symbolType?.includes("3d-volumetric"),view:e.view}),f=p.scheme,{result:y,outlineResult:v}=a,h=y.classBreakInfos,w=e.normalizationType;if(!f)throw new i("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const b=Oe(f,h.length);if(!b||b.length!==h.length)throw new i("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=v?.opacity,T=new n({classBreakInfos:h.map((i,a)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:R(u,{type:e.symbolType,color:b[a],size:N(f,u),outline:C(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:i.label})),defaultLabel:s?r.other:null,defaultSymbol:s?R(u,{type:e.symbolType,color:f.noDataColor,size:N(f,u),outline:C(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?y.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new t({type:"class-breaks-color",classificationMethod:d,standardDeviationInterval:e.standardDeviationInterval,dataSeriesName:e.dataSeriesName})});return c||m({classBreakInfos:T.classBreakInfos,classificationMethod:d,normalizationType:w,round:!0}),v?.visualVariables?.length&&(T.visualVariables=v.visualVariables.map(e=>e.clone())),{renderer:T,colorScheme:re(f),classBreaksResult:y,defaultValuesUsed:a.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function Fe(e){const i=await ce(e),{layer:a,view:r,signal:o,filter:n}=i,[l,s,t]=await Promise.all([je(he(i)),i.outlineOptimizationEnabled?v({layer:a,view:r,signal:o,filter:n}).catch(B):null,i.sizeOptimizationEnabled?h({layer:a,view:r,signal:o,filter:n}).catch(B):null]),u=i.normalizationField;return Me(l,s,t,u?"field":void 0,u,a.geometryType,i)}async function qe(e){const{renderer:i,view:a,signal:r,filter:o,creatorParameters:n}=await ge(e),{layer:l,outlineOptimizationEnabled:s,sizeOptimizationEnabled:t,valueExpression:u,valueExpressionTitle:m}=n,[d,c,p]=await Promise.all([Be(e),s?v({layer:l,view:a,signal:r,filter:o}).catch(B):null,t?h({layer:l,view:a,signal:r,filter:o}).catch(B):null]);return w(i,d.visualVariable,V),w(i,c?.visualVariables,S),w(i,p?.minSize,I),n.dataSeriesName&&(i.valueExpression=u??null,i.valueExpressionTitle=m??null),b(i,d.authoringInfo,"color"),{renderer:i}}async function Ue(e){const i=await pe(e);return ke(i,await F(fe(i),i.outlineOptimizationEnabled))}async function Re(e){const{renderer:i,creatorParameters:a}=await Te(e),{normalizationType:r,outlineOptimizationEnabled:o,classificationMethod:n,valueExpression:l,valueExpressionTitle:s}=a;if("manual"===n)return{renderer:i};const t=await F(fe(a),o),u=t.result.classBreakInfos;if(a.numClasses!==u.length){const e=ze(i.classBreakInfos.map(e=>e.symbol),a.layer.geometryType);return{renderer:(await ke({...a,colorScheme:e},t)).renderer}}return i.classBreakInfos.forEach((e,i)=>{e.minValue=u[i].minValue,e.maxValue=u[i].maxValue,e.label=u[i].label}),i.normalizationTotal="percent-of-total"===r?t.result.normalizationTotal:void 0,"standard-deviation"!==n&&m({classBreakInfos:i.classBreakInfos,classificationMethod:n,normalizationType:r,round:!0}),w(i,t.outlineResult?.visualVariables,S),a.dataSeriesName&&(i.valueExpression=l??null,i.valueExpressionTitle=s??null),{renderer:i}}function Ce(e){return ye(e).then(e=>({renderer:new l({field:"RGB",pointsPerInch:e.density??void 0,pointSizeAlgorithm:U(e.size)})}))}async function Ne(e){const i=await ve(e),a=i.statistics??await q({layer:i.layer,field:i.field,signal:i.signal}),r=await Ve(a,i);return{renderer:new s({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:U(i.size),stops:r.stops}),basemapId:r.basemapId,basemapTheme:r.basemapTheme,statistics:r.statistics,defaultValuesUsed:r.defaultValuesUsed,colorScheme:r.colorScheme}}async function Pe(e){const i=await we(e),{defaultSymbolEnabled:a,view:r,startTime:o,endTime:n,symbolType:l,colorMixMode:s,edgesType:t,minValue:u,maxValue:m,signal:d,filter:c}=i,p=i.layer,[f,w,b]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:y({view:r,layer:p,startTime:o,endTime:n,minValue:u,maxValue:m,signal:d,filter:c}),i.outlineOptimizationEnabled?v({layer:p,view:r,signal:d,filter:c}).catch(B):null,i.sizeOptimizationEnabled?h({layer:p,view:r,signal:d,filter:c}).catch(B):null]),{unit:g,statistics:T}=f,{valueExpression:x,title:E}=await O(i,g),z=await je(he({layer:p,basemap:i.basemap,valueExpression:x,symbolType:l,statistics:T,legendOptions:{title:E},colorScheme:i.colorScheme,theme:i.theme,view:r,minValue:i.minValue,maxValue:i.maxValue,filter:c,signal:d})),V={valueExpression:x,defaultSymbolEnabled:a,symbolType:l,colorMixMode:s,edgesType:t},S=await Me(z,w,b,null,null,p.geometryType,V),I=S.renderer.authoringInfo?.visualVariables;return I?.forEach(e=>k(e,o,n,g)),{...S,unit:g}}async function De(e){const{renderer:i,creatorParameters:a}=await xe(e),{layer:r,outlineOptimizationEnabled:o,sizeOptimizationEnabled:n,startTime:l,endTime:s,theme:t,view:u,signal:m,filter:d}=a,[c,p,f]=await Promise.all([y({view:u,layer:r,startTime:l,endTime:s,signal:m,filter:d}),o?v({layer:r,view:u,signal:m,filter:d}).catch(B):null,n?h({layer:r,view:u,signal:m,filter:d}).catch(B):null]),{unit:b,statistics:g}=c,{valueExpression:T,title:x}=await O(a,b),E=await je(he({layer:r,valueExpression:T,statistics:g,legendOptions:{title:x},theme:t,view:u,filter:d,signal:m}));w(i,E.visualVariable,V),w(i,p?.visualVariables,S),w(i,f?.minSize,I),i.authoringInfo=E.authoringInfo.clone();const z=i.authoringInfo?.visualVariables;return z?.forEach(e=>k(e,l,s,b)),{renderer:i}}export{Pe as createAgeRenderer,Ue as createClassBreaksRenderer,Fe as createContinuousRenderer,Ne as createPCContinuousRenderer,Ce as createPCTrueColorRenderer,je as createVisualVariable,De as regenerateAgeRenderer,Re as regenerateClassBreaksRenderer,qe as regenerateContinuousRenderer,Be as regenerateVisualVariable};
|
|
@@ -123,6 +123,14 @@ export interface VisualVariableParameters extends AbortOptions {
|
|
|
123
123
|
* This is used by the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
|
|
124
124
|
*/
|
|
125
125
|
valueExpressionTitle?: string | null;
|
|
126
|
+
/**
|
|
127
|
+
* The name of a data series configuration from which to derive information for authoring an
|
|
128
|
+
* expression used to drive opacity. This allows client applications to link opacity
|
|
129
|
+
* to a specific data series configuration.
|
|
130
|
+
*
|
|
131
|
+
* @since 5.1
|
|
132
|
+
*/
|
|
133
|
+
dataSeriesName?: string | null;
|
|
126
134
|
/**
|
|
127
135
|
* A SQL expression evaluating to a number. When provided, statistics are
|
|
128
136
|
* 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
|
|
2
|
+
import e from"../../core/Error.js";import{ensureClass as i}from"../../core/accessorSupport/ensureType.js";import a from"../../renderers/support/AuthoringInfo.js";import r from"../../renderers/support/AuthoringInfoVisualVariable.js";import s from"../../renderers/visualVariables/OpacityVariable.js";import l from"../../renderers/visualVariables/support/OpacityStop.js";import o from"../../renderers/visualVariables/support/VisualVariableLegendOptions.js";import{getTimeSeriesSummaryStatistics as n,resolveDataSeriesInfo as t}from"./support/timeSeriesUtils.js";import{getSummaryStatistics as p,verifyBasicFieldValidity as u,createStopValues as m,getDefaultDataRange as d}from"./support/utils.js";import{verifyBinningParams as f}from"../support/binningUtils.js";import{getFieldsList as v,isAnyDateField as c}from"../support/utils.js";import{binningCapableLayerTypes as y,featureCapableLayerTypes as w,createLayerAdapter as x,getLayerTypeLabels as V}from"../support/adapters/support/layerUtils.js";async function g(i){const a=t({...i});if(!a?.layer||!(a.field||a.valueExpression||a.sqlExpression))throw new e("opacity-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.view)throw new e("opacity-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");a.forBinning&&f(a,"opacity-visual-variable");const r={...a,layer:a.layer},s=a.forBinning?y:w,l=x(r.layer,s,a.forBinning);if(!l)throw new e("opacity-visual-variable:invalid-parameters","'layer' must be one of these types: "+V(s).join(", "));r.layer=l;const o=null!=r.signal?{signal:r.signal}:null;await l.load(o);const n=await v({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),p=u(l,n,"opacity-visual-variable:invalid-parameters");if(p)throw p;return r}function E(e,n){const t=n.layer,p=n.field,u=p&&!("function"==typeof p)?t.getField(p):null,f=c(u),v=m(e),y=d(e,f,!0),w=y||[v[0],v[4]],x=new s({field:p??void 0,valueExpression:n.valueExpression,valueExpressionTitle:n.valueExpressionTitle,normalizationField:n.normalizationField,stops:[new l({value:w[0],opacity:.3}),new l({value:w[1],opacity:1})],legendOptions:i(o,n.legendOptions)}),V=new r({type:"opacity",dataSeriesName:n.dataSeriesName,minSliderValue:null!=n.minValue?n.minValue:e.min,maxSliderValue:null!=n.maxValue?n.maxValue:e.max}),g=new a({visualVariables:[V]});return Promise.resolve({visualVariable:x,statistics:e,defaultValuesUsed:!!y,authoringInfo:g})}async function b(e){const i=await g(e);let a=null;return a=i.statistics?i.statistics:i.dataSeriesName?await n({layer:i.layer,view:i.view,dataSeriesName:i.dataSeriesName,filter:i.filter,signal:i.signal}):await p({layer:i.layer,field:i.field,valueExpression:i.valueExpression,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:i.normalizationField?"field":void 0,normalizationField:i.normalizationField,minValue:i.minValue,maxValue:i.maxValue,filter:i.filter,view:i.view,signal:i.signal}),E(a,i)}export{b as createVisualVariable};
|
|
@@ -148,6 +148,16 @@ export function createVisualVariables(parameters: VisualVariableParameters): Pro
|
|
|
148
148
|
* // when the promise resolves, apply the renderer to the layer
|
|
149
149
|
* const { renderer } = await createContinuousRenderer(sizeParams);
|
|
150
150
|
* layer.renderer = renderer;
|
|
151
|
+
* @example
|
|
152
|
+
* // visualization based off time series definition
|
|
153
|
+
* const sizeParams = {
|
|
154
|
+
* layer,
|
|
155
|
+
* dataSeriesName: "ts0",
|
|
156
|
+
* view,
|
|
157
|
+
* };
|
|
158
|
+
*
|
|
159
|
+
* const { renderer } = await sizeRendererCreator.createContinuousRenderer(sizeParams);
|
|
160
|
+
* layer.renderer = renderer;
|
|
151
161
|
*/
|
|
152
162
|
export function createContinuousRenderer(parameters: ContinuousRendererParameters): Promise<ContinuousRendererResult>;
|
|
153
163
|
|
|
@@ -249,6 +259,16 @@ export function updateRendererWithSpike(params: UpdateRendererWithSpikeParameter
|
|
|
249
259
|
* // when the promise resolves, apply the renderer to the layer
|
|
250
260
|
* const { renderer } = await createClassBreaksRenderer(sizeParams);
|
|
251
261
|
* layer.renderer = renderer;
|
|
262
|
+
* @example
|
|
263
|
+
* // visualization based off time series definition
|
|
264
|
+
* const sizeParams = {
|
|
265
|
+
* layer,
|
|
266
|
+
* dataSeriesName: "ts0",
|
|
267
|
+
* view,
|
|
268
|
+
* };
|
|
269
|
+
*
|
|
270
|
+
* const { renderer } = await sizeRendererCreator.createClassBreaksRenderer(sizeParams);
|
|
271
|
+
* layer.renderer = renderer;
|
|
252
272
|
*/
|
|
253
273
|
export function createClassBreaksRenderer(parameters: ClassBreaksRendererParameters): Promise<ClassBreaksRendererResult>;
|
|
254
274
|
|
|
@@ -357,6 +377,15 @@ export interface VisualVariableParamsBase extends AbortOptions {
|
|
|
357
377
|
* This is used by the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
|
|
358
378
|
*/
|
|
359
379
|
valueExpressionTitle?: string | null;
|
|
380
|
+
/**
|
|
381
|
+
* Name of a configured entry in [DataSeriesLayer.dataSeriesInfos](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/DataSeriesLayer/#dataSeriesInfos).
|
|
382
|
+
* When provided, the renderer creator reads the Arcade expression from the matching
|
|
383
|
+
* data series info and uses mapped fields to calculate statistics. Set this as an alternative to `field`
|
|
384
|
+
* or `valueExpression` when working with a layer that has data series configured.
|
|
385
|
+
* If all three of `field`, `valueExpression`, and `dataSeriesName` are provided, then the
|
|
386
|
+
* precedence is `dataSeriesName` over `valueExpression` over `field`.
|
|
387
|
+
*/
|
|
388
|
+
dataSeriesName?: string | null;
|
|
360
389
|
/**
|
|
361
390
|
* A SQL expression evaluating to a number. When provided, statistics are
|
|
362
391
|
* queried from the server for the entire layer. Only use this parameter when generating a renderer based on
|
|
@@ -703,6 +732,15 @@ export interface ClassBreaksRendererParameters extends AbortOptions {
|
|
|
703
732
|
* This is used by the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
|
|
704
733
|
*/
|
|
705
734
|
valueExpressionTitle?: string | null;
|
|
735
|
+
/**
|
|
736
|
+
* Name of a configured entry in [DataSeriesLayer.dataSeriesInfos](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/DataSeriesLayer/#dataSeriesInfos).
|
|
737
|
+
* When provided, the renderer creator reads the Arcade expression from the matching
|
|
738
|
+
* data series info and uses mapped fields to calculate statistics. Set this as an alternative to `field`
|
|
739
|
+
* or `valueExpression` when working with a layer that has data series configured.
|
|
740
|
+
* If all three of `field`, `valueExpression`, and `dataSeriesName` are provided, then the
|
|
741
|
+
* precedence is `dataSeriesName` over `valueExpression` over `field`.
|
|
742
|
+
*/
|
|
743
|
+
dataSeriesName?: string | null;
|
|
706
744
|
/**
|
|
707
745
|
* Indicates how the data is normalized.
|
|
708
746
|
* The data value obtained from the `field`
|
|
@@ -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 r}from"../../core/screenUtils.js";import{ensureClass as n}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as a}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 V,processRegenerateParams as T,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{errorCallback as U,getTitleAndExpressionForAgeRenderer as P,updateAgeRendererAuthoringInfoVV as M,getClassBreaks as C,getSummaryStatistics as W,createSymbol as $,getSymbolOutlineFromScheme as A,getSymbolSizeFromScheme as H,verifyBasicFieldValidity as L,getSizeRangeForAxis as J,getDataRange as K,getBasemapInfo as N}from"./support/utils.js";import{verifyDates as Q,supportedAgeUnits as X}from"../statistics/support/ageUtils.js";import{verifyBinningParams as Y}from"../support/binningUtils.js";import{getNormalizationType as Z,getFieldsList as _,isAnyDateField as ee}from"../support/utils.js";import{createLayerAdapter as ie,featureCapableLayerTypes as re,getLayerTypeLabels as ne,binningCapableLayerTypes as ae}from"../support/adapters/support/layerUtils.js";import{cloneScheme as se,getSchemes as le}from"../symbology/size.js";import{getColorFromSymbol as te}from"../../symbols/support/utils.js";const oe=2**53-1,ue=[5,112.5];async function me(e,r){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===e.theme&&!e.view&&!e.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===e.theme&&e.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");e.forBinning&&Y(e,"size-visual-variable");const n={...e},a=e.forBinning?ae:re,s=ie(n.layer,a,e.forBinning);if(!s)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));"height"===n.axis&&(n.sizeOptimizationEnabled=!1);const l=null!=n.signal?{signal:n.signal}:null;await s.load(l);const t=s.geometryType;if("mesh"===t)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(n.worldScale){if("polyline"===t||"polygon"===t)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&&!e.forBinning&&"polygon"!==t)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===n.theme&&!e.forBinning&&"polygon"!==t&&"point"!==t)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const o=await _({field:n.field,normalizationField:n.normalizationField,valueExpression:n.valueExpression}),u=L(s,o,"size-visual-variable:invalid-parameters");if(u)throw u;"spike"!==n.theme||n.spikeOptions?.symbolStyle||(n.spikeOptions??={},n.spikeOptions.symbolStyle=G);const m={...n,layer:s,referenceSizeResult:r};return await de(m),m}async function pe(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-continuous-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const n=e.forBinning?ae:re,a=ie(r.layer,n,e.forBinning);if(!a)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ne(n).join(", "));const s=null!=r.signal?{signal:r.signal}:null;await a.load(s);const l=a.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&"3d"!==r.view?.type)throw new i("size-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const o=await _({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),u=L(a,o,"size-continuous-renderer:invalid-parameters");if(u)throw u;"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G);const m={...r,layer:a};return await de(m),m}async function de(e){const i=e.layer,r=i.geometryType,n=i.layer,a=e.forBinning&&"featureReduction"in n&&"binning"===n.featureReduction?.type;if(("polygon"===r||a)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await z({layer:n,view:e.view,filter:e.filter,forBinning:e.forBinning,signal:e.signal})}catch{}!e.theme&&e.referenceSizeResult?.isGrid&&(e.theme="reference-size"),e.referenceSizeOptions?.symbolStyle||(e.referenceSizeOptions?e.referenceSizeOptions.symbolStyle="circle":e.referenceSizeOptions={symbolStyle:"circle"})}}async function ce(e){if(!e||!(e.layer&&e.view&&e.sizeStops))throw new i("update-renderer-with-reference-size:missing-parameters","'layer', 'view and 'sizeStops' parameters are required");const{view:r,forBinning:n}=e,a=e.forBinning?ae:re,s=ie(e.layer,a,e.forBinning);if(!s)throw new i("update-renderer-with-reference-size:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));const l=s.layer;let t=e.renderer;if(!t)if(e.forBinning){if(!("featureReduction"in l&&l.featureReduction&&"renderer"in l.featureReduction&&l.featureReduction.renderer)||"class-breaks"!==l.featureReduction.renderer.type&&"unique-value"!==l.featureReduction.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Feature reduction renderer is not supported");t=l.featureReduction.renderer}else{if(!("renderer"in l)||!l.renderer||"class-breaks"!==l.renderer.type&&"unique-value"!==l.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Renderer is not supported");t=l.renderer}const o=t.authoringInfo;if(!o||!o?.visualVariables?.some(e=>"reference-size"===e.theme))throw new i("update-renderer-with-reference-size:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'reference-size'");const u=e.isGrid??(await z({view:r,layer:l,forBinning:n}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function fe(e){if(!e||!e.layer||!e.sizeStops)throw new i("update-renderer-with-spike:missing-parameters","'layer' and 'sizeStops' parameters are required");const r=e.forBinning?ae:re,n=ie(e.layer,r,e.forBinning);if(!n)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+ne(r).join(", "));await n.load();const a=n.layer;let s=e.renderer;if(!s)if(e.forBinning){if(!("featureReduction"in a&&a.featureReduction&&"renderer"in a.featureReduction&&a.featureReduction.renderer)||"class-breaks"!==a.featureReduction.renderer.type&&"unique-value"!==a.featureReduction.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Feature reduction renderer is not supported");s=a.featureReduction.renderer}else{if(!("renderer"in a)||!a.renderer||"class-breaks"!==a.renderer.type&&"unique-value"!==a.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Renderer is not supported");s=a.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:n,spikeOptions:o}}async function ye(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("size-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("size-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-class-breaks-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=Z(r);const n=e.forBinning?ae:re,a=ie(r.layer,n,e.forBinning);if(!a)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ne(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 s=null!=r.signal?{signal:r.signal}:null;await a.load(s);const l=a.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&"3d"!==r.view?.type)throw new i("size-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const o=await _({field:r.field,normalizationField:r.normalizationField}),u=L(a,o,"size-class-breaks-renderer:invalid-parameters");if(u)throw u;return{...r,layer:a}}function ze(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const r=i;return r.analyzeData=!(null!=i.minValue&&null!=i.maxValue),r}function ve(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric"),n=i;return n.worldScale=r,r&&(n.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,n}async function we(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("size-age-renderer:missing-parameters","'layer', 'view', 'startTime', 'endTime' parameters are required");const r={...e};r.symbolType??="2d",r.defaultSymbolEnabled??=!0;const n=ie(r.layer,re);if(!n)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+ne(re).join(", "));const a=null!=r.signal?{signal:r.signal}:null;await n.load(a);const s=n.geometryType,l=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled,"mesh"===s)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(l&&("polyline"===s||"polygon"===s))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const t=Q(n,r.startTime,r.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(r.unit&&!X.includes(r.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${X.join(", ")}`);return{...r,layer:n}}async function he(e){const r="regenerate-size-visual-variables";T(e,r);const n=await k(e),a=O(n);if(!a||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const s=E(n,"size");if(!s)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=n.visualVariables?.find(V);if(!u&&!t&&!o)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable");let m=s.field,p=s.normalizationField,d=null,c=null;m||(u?.field?(m=u.field,p=u.normalizationField):n.field?(m=n.field,p=n.normalizationField):(d=u?.valueExpression??n.valueExpression,c=u?.valueExpressionTitle??n.valueExpressionTitle));const{layer:f,forBinning:y,filter:z,view:v,signal:w}=e,h=B(n),b=await me({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:h,forBinning:y,filter:z,view:v,signal:w},e.referenceSizeResult);return"reference-size"!==l||null==s.referenceSizeScale||!b.referenceSizeResult||b.referenceSizeResult.isGrid||b.sizeOptimizationEnabled||(b.sizeOptimizationEnabled=!0),{...e,creatorParameters:b,renderer:n}}async function be(e){const r="regenerate-size-continuous-renderer";T(e,r);const n=await k(e),a=O(n);if(!a||!["size-continuous","univariate-color-size"].includes(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=n,m=s?.visualVariables.find(e=>"size"===e.type),p=m.theme,{layer:d,forBinning:c,filter:f,view:y,signal:z}=e,v=I(n),w=B(n),h=await pe({layer:d,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:p,outlineOptimizationEnabled:v,sizeOptimizationEnabled:w,forBinning:c,filter:f,view:y,signal:z});return"reference-size"!==p||null==m.referenceSizeScale||!h.referenceSizeResult||h.referenceSizeResult.isGrid||h.sizeOptimizationEnabled||(h.sizeOptimizationEnabled=!0),{...e,creatorParameters:h,renderer:n}}async function ge(e){const r="regenerate-size-class-breaks-renderer";await T(e,r);const n=await k(e);if("size-class-breaks"!==O(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:a,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=n,{classificationMethod:p,standardDeviationInterval:d}=a,c=n.classBreakInfos.length,{layer:f,forBinning:y,filter:z,view:v,signal:w}=e,h=I(n),b=await ye({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:h,forBinning:y,filter:z,view:v,signal:w});return{...e,creatorParameters:b,renderer:n}}async function Se(e){const r="regenerate-size-age-renderer";await T(e,r);const n=await k(e);if("size-age"!==O(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:a}=n,s=a?.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(n),y=B(n),z=await we({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:p,view:d,signal:c});return{...e,creatorParameters:z,renderer:n}}async function xe(e){let i=e.sizeScheme,r=null,n=null;const a=await N(e.basemap,e.view);if(r=null!=a.basemapId?a.basemapId:null,n=null!=a.basemapTheme?a.basemapTheme:null,i)return{scheme:se(i),basemapId:r,basemapTheme:n};const s=le({basemapTheme:n,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,r=s.basemapId,n=s.basemapTheme),{scheme:i,basemapId:r,basemapTheme:n}}function Ee(e,i){switch(i){case"point":case"multipoint":{const i=e;return[p(i.minSize),p(i.maxSize)]}case"polyline":{const i=e;return[p(i.minWidth),p(i.maxWidth)]}case"polygon":{const i=e;return[p(i.marker.minSize),p(i.marker.maxSize)]}}}function Ve(e,i){"clamped-linear"===e.transformationType&&"below"===i&&e.flipSizes()}async function Te(e,i,r,n,a,s){const l=ke(e,i,r,n);return l||Ee(a,s)}function ke(e,i,r,n){return"spike"===n?[r?.minHeight??ue[0],r?.maxHeight??ue[1]]:"reference-size"===n&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function Oe(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,r=0,n=0,a=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>n&&l<a&&t<2*a&&u<.5,p=l>r&&l<i&&t<2*i&&u<.5;return{minDataValue:m?n:p?r:l,maxDataValue:m?a:p?i:s+2*o,defaultValuesUsed:!1}}const{theme:r,field:n}=i,a=i.layer,s=n&&!("function"==typeof n)?a.getField(n):null,l=ee(s);return K(e,r,l,"above"===r||"below"===r)}function Ie(e,r){if(("spike"===r||"reference-size"===r)&&null!=e.minDataValue&&null!=e.maxDataValue&&null!=e.minSize&&null!=e.maxSize&&"number"==typeof e.minSize&&"number"==typeof e.maxSize)return[new d({value:e.minDataValue,size:e.minSize}),new d({value:e.maxDataValue,size:e.maxSize})];throw new i("get-size-stops-for-theme","Invalid size variable or theme")}async function Be(e,r,a,s){const{theme:u,field:p,normalizationField:d,minValue:f,maxValue:y,axis:z}=e,v=e.layer.geometryType,w=await xe({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 Te(a,s,e.spikeOptions,u,h,v),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Oe(r,e),E=[],V="height"===z,T=V?z:void 0,k=b[0];let O=b[1];if(V&&"number"==typeof k&&"number"==typeof O){const e=J({minSize:k,maxSize:O},T);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:T,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:n(c,e.legendOptions)});Ve(I,u),E.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,sizeStops:Ie(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,referenceSizeScale:s?.isGrid||e.sizeOptimizationEnabled?e?.view?.scale:void 0,referenceSizeSymbolStyle:e.referenceSizeOptions?.symbolStyle,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:"spike"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,spikeSymbolStyle:e.spikeOptions?.symbolStyle,sizeStops:Ie(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:{type:"size",theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:E,statistics:r,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:se(h),authoringInfo:F}}async function Fe(e,i,r,n,l){const t=await a("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,p=l.defaultSymbolEnabled,d=se(e.sizeScheme),c="polygon"===m,f=c?d.marker:d,y=c?d.background:null,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 V=S?g({type:l.referenceSizeOptions?.symbolStyle||"circle",color:f.color,primitiveOverrides:h({view:l.view,field:u,normalizationField:n,sizeStops:Ie(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:n,sizeStops:Ie(e.visualVariables[0],b)}),symbolStyle:l.spikeOptions?.symbolStyle}):$(z,{type:l.symbolType,color:f.color,size:H(f,z),outline:A(f,z,v)});return{renderer:new s({backgroundFillSymbol:!w&&y?$(m,{type:l.symbolType,color:y.color,outline:A(y,m,v)}):null,classBreakInfos:[{minValue:-oe,maxValue:oe,symbol:V}],defaultLabel:p?t.other:null,defaultSymbol:!p||S||x?null:$(z,{type:l.symbolType,color:f.noDataColor,size:H(f,z,!0),outline:A(f,z,v)}),field:u,normalizationField:n,normalizationType:r,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:se(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function Re(e,i){const n=r(e.minSize),a=(r(e.maxSize)-n)/(i>=4?i-1:i),s=[];for(let r=0;r<i;r++)s.push(n+a*r);return s}async function je(e,i){const r=await a("esri/smartMapping/t9n/smartMapping"),n=e.layer,t=e.defaultSymbolEnabled,o=n.geometryType,m="polygon"===o,p=e.symbolType?.includes("3d-volumetric"),d=await xe({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:p,view:e.view}),c=d.scheme,{result:f,outlineResult:y}=i,z=f?.classBreakInfos??[],v=e.classificationMethod,w=e.normalizationType,h=m?c.marker:c,b=m?c.background:null,g=m?"point":o,S=Ee(h,g),x=p?J({minSize:S[0],maxSize:S[1]},"height"):null,E=Re({minSize:S[0],maxSize:x?x.maxSize:S[1]},z.length),V=y?.opacity,T=new s({backgroundFillSymbol:b&&$(o,{type:e.symbolType,color:b.color,outline:A(b,o,V)}),classBreakInfos:z.map((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:$(g,{type:e.symbolType,color:h.color,size:E[r],widthAndDepth:x?.minSize,outline:A(h,g,V)}),label:i.label})),defaultLabel:t?r.other:null,defaultSymbol:t?$(g,{type:e.symbolType,color:h.noDataColor,size:H(h,g,!0),widthAndDepth:x?.minSize,outline:A(h,g,V)}):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})});return"standard-deviation"!==v&&u({classBreakInfos:T.classBreakInfos,classificationMethod:v,normalizationType:w,round:!0}),y?.visualVariables?.length&&(T.visualVariables=y.visualVariables.map(e=>e.clone())),{renderer:T,sizeScheme:se(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function qe(e){const i=await me(e),{view:r,field:n,valueExpression:a,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:p}=i,d=o?"field":void 0,[c,f]=await Promise.all([m??W({layer:t,field:n,valueExpression:a,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:o,filter:p,minValue:s,maxValue:l,view:r,signal:u}),i.sizeOptimizationEnabled?v({view:r,layer:t,signal:u,filter:p}).catch(U):null]);return Be(i,c,f,i.referenceSizeResult)}async function De(e){const{view:i,filter:r,renderer:n,signal:a,creatorParameters:s}=await he(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:z}=s,w=o?"field":void 0,[h,b]=await Promise.all([W({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:w,filter:r,view:i,signal:a}),c&&!y?v({view:i,layer:d,signal:a,filter:r}).catch(U):null]),g=ke(b,y,f,p),{minDataValue:S,maxDataValue:x}=Oe(h,{theme:p,layer:d,field:l}),T=n.visualVariables?.find(V),k=(T?.stops?null:T)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:z,valueUnit:"unknown",normalizationField:o});g&&(k.minSize=g[0],k.maxSize=g[1]),k.minDataValue=S,k.maxDataValue=x,Ve(k,p);const O=E(n,"size");O.minSliderValue=h.min,O.maxSliderValue=h.max;const I="reference-size"===p;return(I||"spike"===p)&&(O.sizeStops=Ie(k,p).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),I&&(O.referenceSizeScale=y?.isGrid||c?i?.scale:void 0)),{visualVariables:"reference-size"===p||"spike"===p?[]:[k],isGrid:!!y?.isGrid,authoringInfo:n.authoringInfo?.clone(),statistics:h}}async function Ge(e){const i=await pe(e),r={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[n,a]=await Promise.all([qe(ve(i)),i.outlineOptimizationEnabled?y(r).catch(U):null]),s=i.normalizationField;return Fe(n,a,s?"field":void 0,s,i)}async function Ue(e){const{renderer:i,view:r,signal:n,filter:a,creatorParameters:s,forBinning:l}=await be(e),{layer:t,sizeOptimizationEnabled:o,outlineOptimizationEnabled:u,theme:m,referenceSizeResult:p}=s,[d,c]=await Promise.all([De({...e,referenceSizeResult:p}),u?y({layer:t,view:r,filter:a,signal:n}).catch(U):null]),f="reference-size"===m,z="spike"===m;S(i,d.visualVariables,F),S(i,c?.visualVariables,R),x(i,d.authoringInfo,"size");const v=d.statistics;if(!f&&!z)return{renderer:i,statistics:v};if(z){return{renderer:await Me({layer:t,renderer:i,forBinning:l,sizeStops:E(i,"size","spike")?.sizeStops}),statistics:v}}const w=d.isGrid;return{renderer:await Pe({layer:t,renderer:i,view:r,forBinning:l,sizeOptimizationEnabled:o,sizeStops:E(i,"size","reference-size")?.sizeStops,isGrid:w}),isGrid:w,statistics:v}}async function Pe(r){const{layer:n,referenceSizeOptions:a,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:p,isGrid:d}=await ce(r),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find(e=>"reference-size"===e.theme),y=r.field??f?.field,z=r.normalizationField??f?.normalizationField;if(!y)throw new i("update-renderer-with-reference-size:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const v=h({view:p,field:y,normalizationField:z,sizeStops:u,sizeByScaleEnabled:d||!!r.sizeOptimizationEnabled}),w=a?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in n?n.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach(i=>{const r=e?.color??te(i.symbol,1);"cim"===i.symbol.type?b(i.symbol,{type:w,color:r,primitiveOverrides:v}):r&&(i.symbol=g({type:w,color:r,primitiveOverrides:v}))})}else if("unique-value"===c.type){const i=c.uniqueValueGroups,r="polygon"===("geometryType"in n?n.geometryType:null)&&m&&"colors"in m?m.colors:null,a=r?e(r,c.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=a?a[s]:te(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:r})=>new t({label:e,size:i,value:r})),f.referenceSizeScale=d||r.sizeOptimizationEnabled?p.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Me(r){const{layer:n,renderer:a,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await fe(r),p=a.clone();p.authoringInfo??=new l;const d=p.authoringInfo.visualVariables.find(e=>"spike"===e.theme),c=r.field??d?.field,f=r.normalizationField??d?.normalizationField;if(!c)throw new i("update-renderer-with-spike:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const y=j({field:c,normalizationField:f,sizeStops:o}),z="geometryType"in n?n.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 xe({geometryType:z,sizeScheme:s,view:r.view}):null,i=e?.scheme,n="polygon"===z&&i&&"marker"in i?i.marker:i;if(s){const e=n&&"color"in n?n?.color:void 0;v.color=e}if(b){const e=n&&"outline"in n?n.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??te(e.symbol,1)??void 0;i&&(e.symbol=D({...v,color:i}))}})}else if("unique-value"===p.type){const i=p.uniqueValueGroups,n=p.uniqueValueInfos?.length??0;let a=null;if(u||b){const i=z&&n?await w({numColors:n,geometryType:z,typeScheme:u,view:r.view}):null,s=i?.scheme;if(u){const i=s&&"colors"in s?s.colors:null;a=i?e(i,n):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:a?.[s]});else{const e=a?.[s]??te(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:r})=>new t({label:e,size:i,value:r})),h&&(d.spikeSymbolStyle=h)),p}async function Ce(e){const i=await ye(e);return je(i,await C(ze(i),i.outlineOptimizationEnabled))}async function We(e){const{renderer:r,creatorParameters:n}=await ge(e),{outlineOptimizationEnabled:a,normalizationType:s,classificationMethod:l}=n,{result:t,outlineResult:o}=await C(ze(n),a),m=t.classBreakInfos;if(n.numClasses!==m.length)throw new i("regenerate-class-breaks-renderer:invalid-parameters","The number of class breaks generated does not match the number of class breaks in the renderer.");return r.classBreakInfos.forEach((e,i)=>{e.minValue=m[i].minValue,e.maxValue=m[i].maxValue,e.label=m[i].label}),r.normalizationTotal="percent-of-total"===s?t.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:r.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),S(r,o?.visualVariables,R),{renderer:r}}async function $e(e){const i=await we(e),{defaultSymbolEnabled:r,view:n,startTime:a,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:n,layer:p,startTime:a,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?y({layer:p,view:n,filter:m,signal:u}).catch(U):null]),{unit:z,statistics:v}=d,{valueExpression:w,title:h}=await P(i,z),b=await qe(ve({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:r,symbolType:l},S=await Fe(b,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach(e=>M(e,a,s,z)),{...S,unit:z}}async function Ae(e){const{renderer:i,creatorParameters:r}=await Se(e),{layer:n,outlineOptimizationEnabled:a,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:p}=r,[d,c]=await Promise.all([f({view:u,layer:n,startTime:l,endTime:t,signal:m,filter:p}),a?y({layer:n,view:u,filter:p,signal:m}).catch(U):null]),{unit:z,statistics:v}=d,{valueExpression:w,title:h}=await P(r,z),b=await qe(ve({layer:n,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=>M(e,l,t,z)),{renderer:i}}export{$e as createAgeRenderer,Ce as createClassBreaksRenderer,Ge as createContinuousRenderer,qe as createVisualVariables,Ie as getSizeStopsForTheme,Ae as regenerateAgeRenderer,We as regenerateClassBreaksRenderer,Ue as regenerateContinuousRenderer,De as regenerateVisualVariables,Pe as updateRendererWithReferenceSize,Me 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 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};
|
|
@@ -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(p),a=r?.find(y),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":null}function a(e){return!!e.visualVariables?.some(z)}function s(e){return!!e.visualVariables?.some(m)}function o(e){return e?.findIndex(z)??-1}function u(e){return e?.findIndex(y)??-1}function l(e){return e?.findIndex(p)??-1}function c(e){return e?.findIndex(d)??-1}function f(e){return e?.findIndex(m)??-1}function p(e){return"color"===e.type}function d(e){return"opacity"===e.type}function y(e){return"size"===e.type&&"outline"!==e.target&&"$view.scale"!==e.valueExpression}function z(e){return"size"===e.type&&"outline"===e.target}function m(e){return"size"===e.type&&"$view.scale"===e.valueExpression&&"outline"!==e.target&&Array.isArray(e.stops)}function h(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 v(e,n,r){const t=n?.visualVariables.find(e=>e.type===r),a=i(e,r);a&&t&&(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 findScaleDependentSizeVVIndex,u as findSizeVVIndex,i as getAuthoringInfoVisualVariable,r as getRendererToUpdate,t as getStyleType,a as hasOutlineVV,s as hasScaleDependentSizeVV,p as isColorVV,d as isOpacityVV,z as isOutlineVV,m as isScaleDependentSizeVV,y as isSizeVV,n as processRegenerateParams,h as spliceVisualVariables,v 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(p),a=r?.find(y),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":null}function a(e){return!!e.visualVariables?.some(z)}function s(e){return!!e.visualVariables?.some(m)}function o(e){return e?.findIndex(z)??-1}function u(e){return e?.findIndex(y)??-1}function l(e){return e?.findIndex(p)??-1}function c(e){return e?.findIndex(d)??-1}function f(e){return e?.findIndex(m)??-1}function p(e){return"color"===e.type}function d(e){return"opacity"===e.type}function y(e){return"size"===e.type&&"outline"!==e.target&&"$view.scale"!==e.valueExpression}function z(e){return"size"===e.type&&"outline"===e.target}function m(e){return"size"===e.type&&"$view.scale"===e.valueExpression&&"outline"!==e.target&&Array.isArray(e.stops)}function h(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 v(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 findScaleDependentSizeVVIndex,u as findSizeVVIndex,i as getAuthoringInfoVisualVariable,r as getRendererToUpdate,t as getStyleType,a as hasOutlineVV,s as hasScaleDependentSizeVV,p as isColorVV,d as isOpacityVV,z as isOutlineVV,m as isScaleDependentSizeVV,y as isSizeVV,n as processRegenerateParams,h as spliceVisualVariables,v as updateAuthoringInfoVisualVariable};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
+
import e from"../../../core/Error.js";import{getSourceLayer as s,getDataSeriesInfo as i}from"../../../layers/support/dataSeriesUtils.js";import{createTimeSeriesExpression as t}from"../../../layers/support/timeSeriesUtils.js";import r from"../../statistics/summaryStatistics.js";const a=new Set(["big-integer","double","integer","long","single","small-integer"]);function n(s,i){const t=i.fieldTimeMappings??[],r=[];for(const n of t){const t=n.fieldName;if(!t)throw new e("time-series-summary-statistics:invalid-parameters","Found a time series mapping with an empty 'fieldName'");const o=s.getField(t);if(!o)throw new e("time-series-summary-statistics:invalid-parameters",`Field '${t}' defined in time series '${i.name}' does not exist`);if(!a.has(o.type))throw new e("time-series-summary-statistics:invalid-parameters",`Field '${t}' in time series '${i.name}' has unsupported type '${o.type}'`);r.push(t)}return r}async function o(t){const a=s(t.layer);if(!a)throw new e("time-series-summary-statistics:invalid-parameters","'layer' must support dataSeriesInfos");const o=i(a,t.dataSeriesName);if(!o)throw new e("time-series-summary-statistics:invalid-parameters","'dataSeriesName' is not valid");if("time-series-fields"!==o.type)throw new e("time-series-summary-statistics:invalid-parameters","'dataSeriesName' has unsupported type");const m=n(a,o);return r({layer:t.layer,fields:m,view:t.view,filter:t.filter,signal:t.signal})}function m(r){if(!r.dataSeriesName||!r.layer)return r;const a=s(r.layer);if(!a)throw new e("resolve-data-series-info:invalid-parameters","'layer' must support dataSeriesInfos");const n=i(a,r.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=t(n);r.valueExpression=o;const m=a.dataSeriesInfos?.indexOf(n)??-1;return r.valueExpressionTitle=n.title||`${n.name} ${m}`,"field"in r&&(r.field=null),r}export{o as getTimeSeriesSummaryStatistics,m as resolveDataSeriesInfo};
|
|
@@ -76,8 +76,18 @@ import type { SymbolUnion } from "../../symbols/types.js";
|
|
|
76
76
|
* // when the promise resolves, apply the visual variables to the renderer
|
|
77
77
|
* typeRendererCreator.createRenderer(typeParams)
|
|
78
78
|
* .then(function(response){
|
|
79
|
-
* layer.renderer = renderer;
|
|
79
|
+
* layer.renderer = response.renderer;
|
|
80
80
|
* });
|
|
81
|
+
* @example
|
|
82
|
+
* // visualization based off time series definition
|
|
83
|
+
* const typeParams = {
|
|
84
|
+
* layer,
|
|
85
|
+
* dataSeriesName: "ts0",
|
|
86
|
+
* view,
|
|
87
|
+
* };
|
|
88
|
+
*
|
|
89
|
+
* const { renderer } = await typeRendererCreator.createRenderer(typeParams);
|
|
90
|
+
* layer.renderer = renderer;
|
|
81
91
|
*/
|
|
82
92
|
export function createRenderer(parameters: RendererParameters): Promise<RendererResult>;
|
|
83
93
|
|
|
@@ -163,6 +173,15 @@ export interface RendererParameters extends AbortOptions {
|
|
|
163
173
|
* This is used by the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/).
|
|
164
174
|
*/
|
|
165
175
|
valueExpressionTitle?: string | null;
|
|
176
|
+
/**
|
|
177
|
+
* Name of a configured entry in [DataSeriesLayer.dataSeriesInfos](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/DataSeriesLayer/#dataSeriesInfos).
|
|
178
|
+
* When provided, the renderer creator reads the Arcade expression from the matching
|
|
179
|
+
* data series info and uses mapped fields to calculate statistics. Set this as an alternative to `field`
|
|
180
|
+
* or `valueExpression` when working with a layer that has data series configured.
|
|
181
|
+
* If all three of `field`, `valueExpression`, and `dataSeriesName` are provided, then the
|
|
182
|
+
* precedence is `dataSeriesName` over `valueExpression` over `field`.
|
|
183
|
+
*/
|
|
184
|
+
dataSeriesName?: string | null;
|
|
166
185
|
/**
|
|
167
186
|
* Provides options for setting a title to a field that will override the field
|
|
168
187
|
* 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/).
|