@arcgis/core 4.34.0-next.23 → 4.34.0-next.25
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/Basemap.js +1 -1
- package/analysis/VolumeMeasurement/CutFillOptions.d.ts +4 -0
- package/analysis/VolumeMeasurement/CutFillOptions.js +1 -1
- package/analysis/VolumeMeasurementAnalysis.js +1 -1
- package/applications/Components/imageryUtils.d.ts +4 -0
- package/applications/Components/imageryUtils.js +5 -0
- package/arcade/parser.js +1 -1
- package/arcade/validation/arcadeValidator.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/026fbeb0ff5b9e6c74df.js +1 -0
- package/assets/esri/core/workers/chunks/{0867aa688fa8938906da.js → 03bef3f4b6b09b1e864b.js} +1 -1
- package/assets/esri/core/workers/chunks/06cdbccc9f325dcc303d.js +1 -0
- package/assets/esri/core/workers/chunks/07613c89255bdab6b7c6.js +1 -0
- package/assets/esri/core/workers/chunks/09618761df5c4fdd52a0.js +1 -0
- package/assets/esri/core/workers/chunks/0ae00339991f5387203e.js +1 -0
- package/assets/esri/core/workers/chunks/0b4b294f3ce74fde5620.js +1 -0
- package/assets/esri/core/workers/chunks/{146520d263b910b5bdc7.js → 0e96a3b7228f1ff8e6c5.js} +1 -1
- package/assets/esri/core/workers/chunks/109ef17dd4f9430bb686.js +1 -0
- package/assets/esri/core/workers/chunks/1597aca21334cab3b802.js +1 -0
- package/assets/esri/core/workers/chunks/196564ad230bef6b59cf.js +1 -0
- package/assets/esri/core/workers/chunks/19f8d551cbebc11db1eb.js +1 -0
- package/assets/esri/core/workers/chunks/1ceee047e3fa617b0600.js +1 -0
- package/assets/esri/core/workers/chunks/1d27701832ea139fcc20.js +1 -0
- package/assets/esri/core/workers/chunks/1f296f85becf1ca6714d.js +1 -0
- package/assets/esri/core/workers/chunks/1f8d7bd44d53c30df383.js +1 -0
- package/assets/esri/core/workers/chunks/1fabb5ec59da698c1618.js +1 -0
- package/assets/esri/core/workers/chunks/{919d2fd7ebc0c840a759.js → 219b2911668db120452b.js} +1 -1
- package/assets/esri/core/workers/chunks/234cbc290b074eeb5dd6.js +1 -0
- package/assets/esri/core/workers/chunks/29ae5723fa35aa73ff9b.js +1 -0
- package/assets/esri/core/workers/chunks/2b4b073254fe8b6a081c.js +1 -0
- package/assets/esri/core/workers/chunks/30293b88501b5d6162fc.js +1 -0
- package/assets/esri/core/workers/chunks/31533f5e8b76b307f61c.js +1 -0
- package/assets/esri/core/workers/chunks/347117e61e1c6edd074f.js +1 -0
- package/assets/esri/core/workers/chunks/3616eb2607843524483f.js +1 -0
- package/assets/esri/core/workers/chunks/36648facd56ee91afc7c.js +1 -0
- package/assets/esri/core/workers/chunks/394477e88be0c6790f02.js +1 -0
- package/assets/esri/core/workers/chunks/3b80b01551d124534a1b.js +1 -0
- package/assets/esri/core/workers/chunks/{89d91ce2f566dd3f57f7.js → 3be9ec0503a669bcfce6.js} +1 -1
- package/assets/esri/core/workers/chunks/3c9cf06ac6aa1db6c4f6.js +1 -0
- package/assets/esri/core/workers/chunks/40fc7c43feaeef8b814d.js +1 -0
- package/assets/esri/core/workers/chunks/42cddc8f8c8d73e22ee2.js +1 -0
- package/assets/esri/core/workers/chunks/437a4100a837ee16df7c.js +1 -0
- package/assets/esri/core/workers/chunks/{63cc4647b7775ff8aedf.js → 44d28849e59f62616e72.js} +1 -1
- package/assets/esri/core/workers/chunks/453e536f566d80a9863b.js +1 -0
- package/assets/esri/core/workers/chunks/472c677a74d779ce62d7.js +1 -0
- package/assets/esri/core/workers/chunks/4b68b6985430c42316b7.js +1 -0
- package/assets/esri/core/workers/chunks/{6bb1ecaa0afc2c7de79e.js → 4cc3eeb0b824c53793d0.js} +1 -1
- package/assets/esri/core/workers/chunks/4ce671bc4d36387b55fa.js +1 -0
- package/assets/esri/core/workers/chunks/51cfa2f70ec222e1582b.js +1 -0
- package/assets/esri/core/workers/chunks/5284d46aecd6fe0345b8.js +1 -0
- package/assets/esri/core/workers/chunks/567385709e18ace93b1e.js +1 -0
- package/assets/esri/core/workers/chunks/5a9b27f2b343cd5b0852.js +1 -0
- package/assets/esri/core/workers/chunks/{4c2f3e43992a918e4c2d.js → 5ef3256c32c4b622bd11.js} +1 -1
- package/assets/esri/core/workers/chunks/{5ce62d9fff80d014d186.js → 60aeb7a5ccd8bc71be02.js} +1 -1
- package/assets/esri/core/workers/chunks/{55e9b02d70812f7cdac2.js → 63966066a963e9a1fb14.js} +1 -1
- package/assets/esri/core/workers/chunks/63f50ff2ae94f684d56b.js +1 -0
- package/assets/esri/core/workers/chunks/{8bf04be4052bf148777a.js → 6a1cf6b0ffdf6080b5c4.js} +1 -1
- package/assets/esri/core/workers/chunks/6deaa08e3a61a455e564.js +1 -0
- package/assets/esri/core/workers/chunks/6e9b4bfe2a1497c96100.js +1 -0
- package/assets/esri/core/workers/chunks/6efc3d120c9c2c09cb06.js +1 -0
- package/assets/esri/core/workers/chunks/7338ce95bceb2c7fab87.js +1 -0
- package/assets/esri/core/workers/chunks/{c64fa94cba71ba2794e2.js → 771012f129890f9a089c.js} +1 -1
- package/assets/esri/core/workers/chunks/{d1b363c418a67b087306.js → 780ff9314f26ae62f75f.js} +1 -1
- package/assets/esri/core/workers/chunks/820cf4337b248a0cb63c.js +1 -0
- package/assets/esri/core/workers/chunks/{b57c0ef7bc57e3c91257.js → 865fccacf44ae5b70eba.js} +1 -1
- package/assets/esri/core/workers/chunks/{fedbf639a0788417a70f.js → 86abfce1f2ac93cc4d54.js} +1 -1
- package/assets/esri/core/workers/chunks/{c94cc026c4ed330408fb.js → 8894483b91bcda845b6f.js} +1 -1
- package/assets/esri/core/workers/chunks/{f050ab9d100012b77bb9.js → 8c5b1114cc2a58305a81.js} +1 -1
- package/assets/esri/core/workers/chunks/{6ca764b4baadef5c1515.js → 92737419b66894799a34.js} +1 -1
- package/assets/esri/core/workers/chunks/9511e55e4fabb3235eac.js +1 -0
- package/assets/esri/core/workers/chunks/{f43110391f124b8a179c.js → 9a78cb291c966f8ddda6.js} +2 -2
- package/assets/esri/core/workers/chunks/9f8341caab3b1d02f387.js +1 -0
- package/assets/esri/core/workers/chunks/a08d018d8c137fc4ca17.js +1 -0
- package/assets/esri/core/workers/chunks/{7051bcc178eb512819f6.js → a55338add265d330124b.js} +1 -1
- package/assets/esri/core/workers/chunks/afe4fd3b1b3521712edd.js +1 -0
- package/assets/esri/core/workers/chunks/{9991bd3c7991bffd8260.js → b37f3c416cefc1a6ea2c.js} +1 -1
- package/assets/esri/core/workers/chunks/{6782114a752b9cc59168.js → b6b8272a74a5c24a6b86.js} +1 -1
- package/assets/esri/core/workers/chunks/b9f66d735a7e63417b3d.js +1 -0
- package/assets/esri/core/workers/chunks/bb50b4a3af627f91d789.js +1 -0
- package/assets/esri/core/workers/chunks/{f42155b7a4e6c5e80757.js → bbc2a4976d044b990193.js} +1 -1
- package/assets/esri/core/workers/chunks/bbf2c31d217de1b8ba6e.js +1 -0
- package/assets/esri/core/workers/chunks/be3977f7fe0c46a1b493.js +1 -0
- package/assets/esri/core/workers/chunks/befba7ceeb26a38732c1.js +1 -0
- package/assets/esri/core/workers/chunks/bf3fc71881aa559fc931.js +1 -0
- package/assets/esri/core/workers/chunks/c19421707257fc93acb9.js +1 -0
- package/assets/esri/core/workers/chunks/c1fb5290e0e259b74389.js +1 -0
- package/assets/esri/core/workers/chunks/c361bf4d41a1843d4640.js +1 -0
- package/assets/esri/core/workers/chunks/c51099eab5a99c88e5de.js +1 -0
- package/assets/esri/core/workers/chunks/c56b05a8be498b6f3ee7.js +1 -0
- package/assets/esri/core/workers/chunks/c82e78590c2fabc67609.js +1 -0
- package/assets/esri/core/workers/chunks/{cab1a1067f44ce374673.js → c9e580867f7ac17be329.js} +1 -1
- package/assets/esri/core/workers/chunks/{92ad9098006568358550.js → cafcb46d723d38b377a9.js} +1 -1
- package/assets/esri/core/workers/chunks/{1d75cb1747ffb7b8b050.js → cb81d448ed6bad205346.js} +1 -1
- package/assets/esri/core/workers/chunks/{0f6203ae32663b2b52db.js → d08a523b548e892e1222.js} +1 -1
- package/assets/esri/core/workers/chunks/d29ae64703a947bfb83b.js +1 -0
- package/assets/esri/core/workers/chunks/d2ce360961ca4b58666c.js +1 -0
- package/assets/esri/core/workers/chunks/{04c17957c15234ca0321.js → d81260303a11d3fbe940.js} +1 -1
- package/assets/esri/core/workers/chunks/de1457b07f4e263f1524.js +1 -0
- package/assets/esri/core/workers/chunks/{6bf43bc3714d7b3878fa.js → e547318638c8f496c1a0.js} +1 -1
- package/assets/esri/core/workers/chunks/e8e993fb8697b8f3e0c7.js +346 -0
- package/assets/esri/core/workers/chunks/{53781ccca16e53d4a8c3.js → f291ccf9da6aa7d7ae23.js} +1 -1
- package/assets/esri/core/workers/chunks/f61a8cc7e2b198e521ba.js +1 -0
- package/assets/esri/core/workers/chunks/f9442a281cb91c64c7cd.js +1 -0
- package/assets/esri/core/workers/chunks/fb785bc38323cce6e549.js +1 -0
- package/assets/esri/core/workers/chunks/{c3213b487c11076985af.js → fbf3240b36718fa5dc76.js} +1 -1
- package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core-simd.wasm +0 -0
- package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core.wasm +0 -0
- package/chunks/Bufferer-Dw9Qi4T1.js +1 -1
- package/chunks/ComponentShader.glsl.js +36 -36
- package/chunks/Envelope.js +1 -1
- package/chunks/MultiPathImpl.js +1 -1
- package/chunks/OperatorClip.js +1 -1
- package/chunks/ProjectionTransformation.js +1 -1
- package/chunks/RibbonLine.glsl.js +40 -33
- package/chunks/index.js +1 -1
- package/chunks/persistableUrlUtils.js +1 -1
- package/config.js +1 -1
- package/core/AsyncUpdate.js +1 -1
- package/core/Clonable.js +1 -1
- package/core/Evented.js +1 -1
- package/core/Identifiable.js +1 -1
- package/core/JSONSupport.js +1 -1
- package/core/Loadable.js +1 -1
- package/core/MapUtils.js +1 -1
- package/core/MemCache.js +1 -1
- package/core/MemCachePool.js +1 -1
- package/core/MultiOriginJSONSupport.js +1 -1
- package/core/ObjectPool.js +1 -1
- package/core/Promise.js +1 -1
- package/core/ReadOnlyMultiOriginJSONSupport.js +1 -1
- package/core/accessorSupport/overrideDefaultsFrom.js +1 -1
- package/core/quantity.d.ts +1 -0
- package/geometry/operators/gx/operatorOffset.js +1 -1
- package/geometry/operators/support/jsonConverter.js +1 -1
- package/geometry/support/buffer/BufferPool.js +1 -1
- package/geometry/support/meshUtils/loadGLTFMesh.js +1 -1
- package/interfaces.d.ts +211 -8
- package/kernel.js +1 -1
- package/layers/CatalogLayer.js +1 -1
- package/layers/FeatureLayer.js +1 -1
- package/layers/GeoJSONLayer.js +1 -1
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphSublayerBase.js +1 -1
- package/layers/mixins/APIKeyMixin.js +1 -1
- package/layers/mixins/ArcGISCachedService.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/mixins/ArcGISMapService.js +1 -1
- package/layers/mixins/ArcGISService.js +1 -1
- package/layers/mixins/BlendLayer.js +1 -1
- package/layers/mixins/CustomParametersMixin.js +1 -1
- package/layers/mixins/DisplayFilteredLayer.js +1 -1
- package/layers/mixins/EditBusLayer.js +1 -1
- package/layers/mixins/FeatureEffectLayer.js +1 -1
- package/layers/mixins/FeatureLayerBase.js +1 -1
- package/layers/mixins/FeatureReductionLayer.js +1 -1
- package/layers/mixins/ImageryTileMixin.js +1 -1
- package/layers/mixins/OperationalLayer.js +1 -1
- package/layers/mixins/OrderedLayer.js +1 -1
- package/layers/mixins/PortalLayer.js +1 -1
- package/layers/mixins/PublishableLayer.js +1 -1
- package/layers/mixins/RasterJobHandlerMixin.js +1 -1
- package/layers/mixins/RasterPresetRendererMixin.js +1 -1
- package/layers/mixins/RefreshableLayer.js +1 -1
- package/layers/mixins/ScaleRangeLayer.js +1 -1
- package/layers/mixins/SceneService.js +1 -1
- package/layers/mixins/SublayersOwner.js +1 -1
- package/layers/mixins/TemporalLayer.js +1 -1
- package/layers/mixins/TemporalSceneLayer.js +1 -1
- package/layers/mixins/TrackableLayer.js +1 -1
- package/layers/ogc/wfsUtils.js +1 -1
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/orientedImagery/core/bestImageUtils.js +1 -1
- package/layers/support/ControlPointsGeoreference.js +1 -1
- package/layers/support/PixelBlock.js +1 -1
- package/layers/support/RasterJobHandler.js +1 -1
- package/layers/support/RasterWorker.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/arcgisLayerUrl.js +1 -1
- package/layers/support/multiLayerServiceUtils.js +1 -1
- package/layers/support/rasterDatasets/pixelReader.js +5 -0
- package/layers/support/rasterFormats/pixelRangeUtils.js +1 -1
- package/layers/support/rasterFunctions/clipUtils.js +1 -1
- package/layers/support/rasterFunctions/pixelUtils.js +1 -1
- package/layers/support/rasterFunctions/rasterFunctionHelper.js +1 -1
- package/layers/video/VideoController.js +1 -1
- package/networks/support/UtilityNetworkLookupHelper.js +1 -1
- package/package.json +1 -1
- package/renderers/mixins/VisualVariablesMixin.js +1 -1
- package/renderers/support/DictionaryControlString.js +1 -1
- package/rest/support/CameraInfoMixin.js +1 -1
- package/rest/support/NormalizationBinParametersMixin.js +1 -1
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/heatmap.js +1 -1
- package/smartMapping/renderers/pieChart.js +1 -1
- package/smartMapping/renderers/size.js +1 -1
- package/smartMapping/renderers/support/regenerateUtils.js +1 -1
- package/smartMapping/renderers/support/rendererUtils.js +1 -1
- package/smartMapping/renderers/type.js +1 -1
- package/smartMapping/symbology/color.js +1 -1
- package/smartMapping/symbology/support/utils.js +1 -1
- package/support/LayersMixin.js +1 -1
- package/support/TablesMixin.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/symbols/support/utils.js +1 -1
- package/views/2d/engine/ParentChildStage.js +1 -1
- package/views/2d/engine/webgl/VideoScreenRenderer.js +1 -1
- package/views/2d/engine/webgl/meshing/Mesh.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriterInputEvaluator.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/MultiRasterMixin.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/videoScreenRenderer/VideoScreenTechnique.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/typed/TypedShaderProgram.js +1 -1
- package/views/2d/engine/webgl/textureUtils.js +1 -1
- package/views/2d/layers/BitmapTileLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/layers/features/FeatureContainer.js +1 -1
- package/views/2d/layers/features/processor/ClusterStrategy.js +1 -1
- package/views/2d/layers/features/processor/TrackStrategy.js +1 -1
- package/views/2d/layers/features/sources/strategies/chunks/Overrides.js +1 -1
- package/views/2d/layers/features/support/AttributeStore.js +1 -1
- package/views/2d/layers/features/support/FeatureFilterEvaluator.js +1 -1
- package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
- package/views/2d/layers/support/DebugOverlay.js +1 -1
- package/views/3d/analysis/AnalysisView3D.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/CutFillVolumeMeasurementController.js +5 -0
- package/views/3d/analysis/VolumeMeasurementAnalysisView3D.js +1 -1
- package/views/3d/analysis/images/heading-rotate-svg.js +1 -1
- package/views/3d/analysis/images/tilt-rotate-svg.js +1 -1
- package/views/3d/glTF/DefaultLoadingContext.js +1 -1
- package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
- package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js +1 -1
- package/views/3d/layers/BuildingSublayerView3D.js +1 -1
- package/views/3d/layers/ElevationLayerView3D.js +1 -1
- package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
- package/views/3d/layers/FlowSubView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/ImageryLayerView3D.js +1 -1
- package/views/3d/layers/ImageryTileLayerView3D.js +1 -1
- package/views/3d/layers/LayerView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/StreamLayerView3D.js +1 -1
- package/views/3d/layers/TiledLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DWaterSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/graphics/StreamController.js +5 -0
- package/views/3d/layers/graphics/StreamGraphics3DGraphicsPipeline.js +1 -1
- package/views/3d/layers/graphics/defaultSymbolComplexity.js +1 -1
- package/views/3d/layers/graphics/pipeline/Tile3DManager.js +1 -1
- package/views/3d/layers/graphics/wosrLoader.js +1 -1
- package/views/3d/layers/i3s/I3SIndex.js +1 -1
- package/views/3d/layers/i3s/I3SNodeLoader.js +1 -1
- package/views/3d/layers/support/DefinitionExpressionSceneLayerView.js +1 -1
- package/views/3d/layers/support/PopupSceneLayerView.js +1 -1
- package/views/3d/layers/support/TemporalSceneLayerView.js +1 -1
- package/views/3d/layers/support/fetchTile.js +1 -1
- package/views/3d/state/ViewStateManager.js +1 -1
- package/views/3d/support/MemoryController.js +1 -1
- package/views/3d/support/ResourceController.js +1 -1
- package/views/3d/support/StreamDataLoader.js +1 -1
- package/views/3d/support/StreamDataRequester.js +5 -0
- package/views/3d/support/StreamTextureCollection.js +1 -1
- package/views/3d/support/engineContent/line.js +1 -1
- package/views/3d/support/flow/FlowSubViewExtent3D.js +1 -1
- package/views/3d/support/flow/FlowSubViewTiles3D.js +1 -1
- package/views/3d/support/flow/StreamlinesResources3D.js +1 -1
- package/views/3d/support/flow/geometryUtils.js +1 -1
- package/views/3d/support/index.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/shader/ComponentShader.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +3 -3
- package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
- package/views/3d/webgl-engine/lib/DrapedHeatmapRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/SortedRenderGeometryRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
- package/views/3d/webgl-engine/lib/VertexAttribute.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultLayouts.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
- package/views/3d/webgl-engine/shaders/AnimatedLine.glsl.js +17 -0
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechniqueConfiguration.js +1 -1
- package/views/BreakpointsOwner.js +1 -1
- package/views/DOMContainer.js +1 -1
- package/views/PopupView.js +1 -1
- package/views/VideoView.js +1 -1
- package/views/Viewport2DBaseMixin.js +1 -1
- package/views/Viewport2DMixin.js +1 -1
- package/views/draw/DrawGraphicTool.js +1 -1
- package/views/draw/DrawScreenTool.js +1 -1
- package/views/draw/DrawTool.js +1 -1
- package/views/draw/MultipointDrawAction.js +1 -1
- package/views/draw/PointDrawAction.js +1 -1
- package/views/draw/PolygonDrawAction.js +1 -1
- package/views/draw/PolylineDrawAction.js +1 -1
- package/views/interactive/tooltip/infos/TooltipInfoWithCoordinates.js +1 -1
- package/views/layers/CatalogDynamicGroupLayerView.js +1 -1
- package/views/layers/CatalogFootprintLayerView.js +1 -1
- package/views/layers/CatalogLayerView.js +1 -1
- package/views/layers/DimensionLayerView.js +1 -1
- package/views/layers/FeatureLayerView.js +1 -1
- package/views/layers/ImageryLayerView.js +1 -1
- package/views/layers/ImageryTileLayerView.js +1 -1
- package/views/layers/LineOfSightLayerView.js +1 -1
- package/views/layers/MapImageLayerView.js +1 -1
- package/views/layers/MediaLayerView.js +1 -1
- package/views/layers/OGCFeatureLayerView.js +1 -1
- package/views/layers/PointCloudLayerView.js +1 -1
- package/views/layers/RefreshableLayerView.js +1 -1
- package/views/layers/StreamLayerView.js +1 -1
- package/views/layers/ViewshedLayerView.js +1 -1
- package/views/layers/WMSLayerView.js +1 -1
- package/views/magnifier/mask-svg.js +1 -1
- package/views/magnifier/overlay-svg.js +1 -1
- package/views/support/Scheduler.js +1 -1
- package/views/video/VideoOperationalDataView.js +1 -1
- package/views/webgl/BufferObject.js +1 -1
- package/views/webgl/Program.js +1 -1
- package/views/webgl/Renderbuffer.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/views/webgl/Util.js +1 -1
- package/webmap/Bookmark.js +1 -1
- package/webscene/SunLighting.js +1 -1
- package/webscene/VirtualLighting.js +1 -1
- package/webscene/spec-certification/spec.js +1 -1
- package/widgets/BasemapGallery/support/PortalBasemapsSource.js +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/BatchAttributeForm/BatchAttributeFormViewModel.js +1 -1
- package/widgets/Directions/DirectionsSearchTool.js +1 -1
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/UpdateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/components/UpdateFeaturePanelContent.js +1 -1
- package/widgets/Editor/support/SketchController.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/Feature/FeatureExpression/FeatureExpressionViewModel.js +1 -1
- package/widgets/Feature/support/FeatureContentMixin.js +1 -1
- package/widgets/Feature/support/arcadeFeatureUtils.js +1 -1
- package/widgets/FeatureTable/support/EditableColumnTemplateMixin.js +1 -1
- package/widgets/LayerList.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/components/ImageViewer.js +1 -1
- package/widgets/OrientedImageryViewer/components/ImageViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/mixins/ImageMeasurementMixin.js +1 -1
- package/widgets/OrientedImageryViewer/mixins/SketchHandlerMixin.js +1 -1
- package/widgets/OrientedImageryViewer/mixins/TriangulatedImageMeasurementMixin.js +1 -1
- package/widgets/OrientedImageryViewer/mixins/TriangulatedSketchHandlerMixin.js +1 -1
- package/widgets/OrientedImageryViewer/navigation/NavigationManager.js +1 -1
- package/widgets/OrientedImageryViewer/navigation/queries.js +1 -1
- package/widgets/OrientedImageryViewer/navigation/utils.js +1 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/PanoramicViewer/PanoramicViewerViewModel.js +1 -1
- package/widgets/PanoramicViewer/PanoramicZoomConditions.js +1 -1
- package/widgets/PanoramicViewer.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/Sketch/support/ResponsiveToolbar/ToolbarGroupBase.js +1 -1
- package/widgets/Slider/SliderViewModel.js +1 -1
- package/widgets/support/GoTo.js +1 -1
- package/widgets/support/SelectionList.js +1 -1
- package/assets/esri/core/workers/chunks/00eef04fd026adaf0df8.js +0 -1
- package/assets/esri/core/workers/chunks/0202c2ac73354e3970b2.js +0 -1
- package/assets/esri/core/workers/chunks/02dc6e31b1244e5bb785.js +0 -1
- package/assets/esri/core/workers/chunks/080c79d6caca3b6a2db2.js +0 -1
- package/assets/esri/core/workers/chunks/084236ca316aad980192.js +0 -1
- package/assets/esri/core/workers/chunks/0b484224a92b52c34330.js +0 -1
- package/assets/esri/core/workers/chunks/0ba6177ba118a0f032e2.js +0 -1
- package/assets/esri/core/workers/chunks/16a78f5a82f5ca163816.js +0 -1
- package/assets/esri/core/workers/chunks/19ae76283a0cb0fe4dee.js +0 -346
- package/assets/esri/core/workers/chunks/1cc30073f8200b67cff6.js +0 -1
- package/assets/esri/core/workers/chunks/242b216d61940aebe8e1.js +0 -1
- package/assets/esri/core/workers/chunks/32756905bcf11699b3f7.js +0 -1
- package/assets/esri/core/workers/chunks/35d238a5a6501f89bed7.js +0 -1
- package/assets/esri/core/workers/chunks/3fcd73ba832cb53d3a07.js +0 -1
- package/assets/esri/core/workers/chunks/40c1d65039c8f1d6afa0.js +0 -1
- package/assets/esri/core/workers/chunks/496e02cfe3d84010f675.js +0 -1
- package/assets/esri/core/workers/chunks/49dce142ad1ea4c01d00.js +0 -1
- package/assets/esri/core/workers/chunks/4b89d5b9e35bf79b321e.js +0 -1
- package/assets/esri/core/workers/chunks/54a49a25845897a15ab1.js +0 -1
- package/assets/esri/core/workers/chunks/573a8393bec916dcf16f.js +0 -1
- package/assets/esri/core/workers/chunks/576e408fb0834f3948e8.js +0 -1
- package/assets/esri/core/workers/chunks/5e805c9e9012dd39ec86.js +0 -1
- package/assets/esri/core/workers/chunks/6136bf09950adc46bc33.js +0 -1
- package/assets/esri/core/workers/chunks/666afe669866c44830bd.js +0 -1
- package/assets/esri/core/workers/chunks/6a0fbc54638f7de138c1.js +0 -1
- package/assets/esri/core/workers/chunks/81006d9eed65bbb82962.js +0 -1
- package/assets/esri/core/workers/chunks/843b6029d4c13115e1ac.js +0 -1
- package/assets/esri/core/workers/chunks/86d6007c45f2aa643ac8.js +0 -1
- package/assets/esri/core/workers/chunks/8ea34878a1ef24b4ded3.js +0 -1
- package/assets/esri/core/workers/chunks/8eea6251aa09725e654e.js +0 -1
- package/assets/esri/core/workers/chunks/90145d49a0cec902435c.js +0 -1
- package/assets/esri/core/workers/chunks/916691122d7fb38497d6.js +0 -1
- package/assets/esri/core/workers/chunks/9ae18a17f62d91167202.js +0 -1
- package/assets/esri/core/workers/chunks/9c510df592befb9ff892.js +0 -1
- package/assets/esri/core/workers/chunks/9f91d519da67714f915f.js +0 -1
- package/assets/esri/core/workers/chunks/a6a7279b09d7962147ec.js +0 -1
- package/assets/esri/core/workers/chunks/aba520714efc01bead36.js +0 -1
- package/assets/esri/core/workers/chunks/acb9c166259872828646.js +0 -1
- package/assets/esri/core/workers/chunks/accff253af360c34e8a8.js +0 -1
- package/assets/esri/core/workers/chunks/ad3871f497ecea1a08c9.js +0 -1
- package/assets/esri/core/workers/chunks/ae6eed26fc932bc08356.js +0 -1
- package/assets/esri/core/workers/chunks/b4bb461955a4c2bce072.js +0 -1
- package/assets/esri/core/workers/chunks/b98279213f45a0c27600.js +0 -1
- package/assets/esri/core/workers/chunks/ba5b24beebeb703b5919.js +0 -1
- package/assets/esri/core/workers/chunks/bd7d19ba0c7d9143a455.js +0 -1
- package/assets/esri/core/workers/chunks/bffaf1f20f18c75fad4e.js +0 -1
- package/assets/esri/core/workers/chunks/c4f8da6c238eb5e91f91.js +0 -1
- package/assets/esri/core/workers/chunks/cd64181298d82c8d0e9d.js +0 -1
- package/assets/esri/core/workers/chunks/cdabea4718a7e7d34cb8.js +0 -1
- package/assets/esri/core/workers/chunks/ce7155ae63e7bb74be00.js +0 -1
- package/assets/esri/core/workers/chunks/d45383d76ba99718b6d9.js +0 -1
- package/assets/esri/core/workers/chunks/d915d0a30d9beb24bd3a.js +0 -1
- package/assets/esri/core/workers/chunks/dc6538a2d5a1e60d0209.js +0 -1
- package/assets/esri/core/workers/chunks/dca633ae3bfd4a3f9bb3.js +0 -1
- package/assets/esri/core/workers/chunks/def8a854a05f17d3538e.js +0 -1
- package/assets/esri/core/workers/chunks/dfa7976085f7408a366c.js +0 -1
- package/assets/esri/core/workers/chunks/e0a5b499b3ae38c21278.js +0 -1
- package/assets/esri/core/workers/chunks/e1a20ba7d6279f59adc0.js +0 -1
- package/assets/esri/core/workers/chunks/e49a135a2933306a6105.js +0 -1
- package/assets/esri/core/workers/chunks/e9a9174c4d1a0a9effb6.js +0 -1
- package/assets/esri/core/workers/chunks/edead1a123860cc74b1b.js +0 -1
- package/assets/esri/core/workers/chunks/f3d5d92e0aefc2593208.js +0 -1
- package/assets/esri/core/workers/chunks/f90573c9dc36e51cd588.js +0 -1
- package/assets/esri/core/workers/chunks/fa9658dbfb921f9c13af.js +0 -1
- package/assets/esri/core/workers/chunks/fb5e2b1ced03eef28e96.js +0 -1
- package/assets/esri/core/workers/chunks/fd8f4eabb8bbc593dd9c.js +0 -1
- package/layers/graphics/controllers/StreamController.js +0 -5
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import o from"../../core/Error.js";import t from"../../core/Loadable.js";import{getOrCreateMapValue as s}from"../../core/MapUtils.js";import r from"../../core/Promise.js";import{throwIfAborted as u}from"../../core/promiseUtils.js";import n from"../../core/ReactiveMap.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import{isSubtypeSublayer as p}from"../../layers/support/layerUtils.js";import{RuleType as l}from"./typeUtils.js";function c(e){return`${e.networkSource?.sourceId??""}-${e.assetGroup?.assetGroupCode??""}-${e.assetType?.assetTypeCode??""}`}let d=class extends(t.LoadableMixin(r)){constructor(e){super(e),this.layerIdToSourceIdLookup=new n,this.sourceIdToLayerIdLookup=new n,this.sourceIdToNetworkInfo=new n,this._rulesBySourceId=new Map,this._terminalConfigurationsBySourceId=new Map}async load(e){return this.addResolvingPromise(this._load(e)),this}agatFromRule(e,o){let t;switch(o){case"to":t={networkSource:e.toNetworkSource??null,assetGroup:e.toAssetGroup??null,assetType:e.toAssetType??null};break;case"from":t={networkSource:e.fromNetworkSource??null,assetGroup:e.fromAssetGroup??null,assetType:e.fromAssetType??null};break;case"via":t={networkSource:e.viaNetworkSource??null,assetGroup:e.viaAssetGroup??null,assetType:e.viaAssetType??null}}return null===t.networkSource?null:t}agatToFullDefinition({assetGroup:e,assetType:o,networkSourceId:t}){if(null===t||null===e||null===o)return null;const s={networkSource:null,assetGroup:null,assetType:null},r=this.sourceIdToNetworkInfo.get(t);if(!r)return null;s.networkSource=r;const u=r.assetGroupLookup.get(e);return u?(s.assetGroup=u,s.assetType=u.assetTypeLookup.get(o)??null,null===s.assetType?null:s):null}findAgat(e,t){const s=p(t)?t.parent:t;if(!s)throw new o("utility-network:missing-layer","Unable to find asset group/asset type for layer. The given layer is a `SubtypeSublayer` with no parent.");if(this.utilityNetwork.featureServiceUrl!==s.url)return null;const r=this.getNetworkSourceIdForLayer(s);if(null===r)return null;const u=s.fieldsIndex.get("assettype")?.name??"";if(""===u)return null;const n=s.fieldsIndex.get("assetgroup")?.name??"";if(""===n)return null;const a=e.attributes[u],i=e.attributes[n];return null==a||null==i?null:{assetGroup:i,assetType:a,networkSourceId:r}}findAgatFullDefinition(e,o){const t=this.findAgat(e,o);return t?this.agatToFullDefinition(t):null}findRules({networkSourceId:e,assetGroup:o,assetType:t}){const s=[];if(null===e||null===o)return s;const r=this._rulesBySourceId.get(e)?.get(o);if(!r)return s;for(const u of r.generalRules)s.push(u);if(null!=t){const e=r.typeSpecificRules.get(t);if(e)for(const o of e)s.push(o)}return s}getNetworkSourceIdForLayer(e){const o=p(e)?e.parent:e;return o&&this.utilityNetwork.featureServiceUrl===o.url?this.layerIdToSourceIdLookup.get(o.layerId)??null:null}ruleMatchesAgat(e,o,t){switch(t){case"to":return!(e.toNetworkSource?.sourceId!==o.networkSourceId||e.toAssetGroup&&e.toAssetGroup.assetGroupCode!==o.assetGroup||e.toAssetType&&e.toAssetType.assetTypeCode!==o.assetType);case"from":return!(e.fromNetworkSource?.sourceId!==o.networkSourceId||e.fromAssetGroup&&e.fromAssetGroup.assetGroupCode!==o.assetGroup||e.fromAssetType&&e.fromAssetType.assetTypeCode!==o.assetType);case"via":return!(e.viaNetworkSource?.sourceId!==o.networkSourceId||e.viaAssetGroup&&e.viaAssetGroup.assetGroupCode!==o.assetGroup||e.viaAssetType&&e.viaAssetType.assetTypeCode!==o.assetType)}}ruleMatchesFullDefinitionAgat(e,o,t){switch(t){case"to":return!(e.toNetworkSource?.sourceId!==o.networkSource?.sourceId||e.toAssetGroup&&e.toAssetGroup.assetGroupCode!==o.assetGroup?.assetGroupCode||e.toAssetType&&e.toAssetType.assetTypeCode!==o.assetType?.assetTypeCode);case"from":return!(e.fromNetworkSource?.sourceId!==o.networkSource?.sourceId||e.fromAssetGroup&&e.fromAssetGroup.assetGroupCode!==o.assetGroup?.assetGroupCode||e.fromAssetType&&e.fromAssetType.assetTypeCode!==o.assetType?.assetTypeCode);case"via":return!(e.viaNetworkSource?.sourceId!==o.networkSource?.sourceId||e.viaAssetGroup&&e.viaAssetGroup.assetGroupCode!==o.assetGroup?.assetGroupCode||e.viaAssetType&&e.viaAssetType.assetTypeCode!==o.assetType?.assetTypeCode)}}terminalConfiguration(e,o,t){const s=this._terminalConfigurationsBySourceId.get(e);if(!s)return null;const r=s.get(o);if(!r)return null;const u=r.get(t);return u||null}async _load(e){await this.utilityNetwork.load(),u(e);const{dataElement:t}=this.utilityNetwork;if(!t)throw new o("utility-network:no-data-element","No data element found on utility network");for(const o of t.domainNetworks)for(const e of[...o.edgeSources??[],...o.junctionSources??[]]){this.layerIdToSourceIdLookup.set(e.layerId,e.sourceId),this.sourceIdToLayerIdLookup.set(e.sourceId,e.layerId);const o=(e.assetGroups??[]).map(e=>{const o=new n;for(const t of e.assetTypes??[])o.set(t.assetTypeCode,t);return{...e,assetTypeLookup:o}}),t=new n;for(const e of o)t.set(e.assetGroupCode,e);const s={...e,assetGroupLookup:t,assetGroups:o};this.sourceIdToNetworkInfo.set(s.sourceId,s)}const s=await this.utilityNetwork.getRulesTable();u(e);for(const o of s?.rules??[])switch(o.ruleType){case l.RTAttachment:case l.RTContainment:this._registerRule(o.fromNetworkSource.sourceId,o.fromAssetGroup.assetGroupCode,o.fromAssetType.assetTypeCode,o),this._registerRule(o.toNetworkSource.sourceId,o.toAssetGroup.assetGroupCode,o.toAssetType.assetTypeCode,o);break;case l.RTEdgeJunctionEdgeConnectivity:this._registerRule(o.fromNetworkSource.sourceId,o.fromAssetGroup.assetGroupCode,o.fromAssetType.assetTypeCode,o),this._registerRule(o.toNetworkSource.sourceId,o.toAssetGroup.assetGroupCode,o.toAssetType.assetTypeCode,o),this._registerRule(o.viaNetworkSource.sourceId,o.viaAssetGroup.assetGroupCode,o.viaAssetType.assetTypeCode,o);break;case l.RTJunctionEdgeConnectivity:case l.RTJunctionJunctionConnectivity:this._registerRule(o.fromNetworkSource.sourceId,o.fromAssetGroup.assetGroupCode,o.fromAssetType.assetTypeCode,o),this._registerRule(o.toNetworkSource.sourceId,o.toAssetGroup.assetGroupCode,o.toAssetType.assetTypeCode,o)}this._makeTerminalConfigurationLookups(t)}_makeTerminalConfigurationLookups(e){const o={};for(const t of e.terminalConfigurations??[])o[t.terminalConfigurationId]=t;for(const t of e.domainNetworks??[])for(const e of t.junctionSources)if("esriUNFCUTJunctionObject"===e.utilityNetworkFeatureClassUsageType||"esriUNFCUTDevice"===e.utilityNetworkFeatureClassUsageType)for(const t of e.assetGroups??[])for(const r of t.assetTypes??[])if(null!=r.terminalConfigurationId&&r.terminalConfigurationId>=0){const u=o[r.terminalConfigurationId];if(u){const o=s(this._terminalConfigurationsBySourceId,e.sourceId,()=>new Map);s(o,t.assetGroupCode,()=>new Map).set(r.assetTypeCode,u)}}}_registerRule(e,o,t,r){const u=s(this._rulesBySourceId,e,()=>new Map),n=s(u,o,()=>({generalRules:[],typeSpecificRules:new Map}));if(-1
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import o from"../../core/Error.js";import t from"../../core/Loadable.js";import{getOrCreateMapValue as s}from"../../core/MapUtils.js";import r from"../../core/Promise.js";import{throwIfAborted as u}from"../../core/promiseUtils.js";import n from"../../core/ReactiveMap.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import{isSubtypeSublayer as p}from"../../layers/support/layerUtils.js";import{RuleType as l}from"./typeUtils.js";function c(e){return`${e.networkSource?.sourceId??""}-${e.assetGroup?.assetGroupCode??""}-${e.assetType?.assetTypeCode??""}`}let d=class extends(t.LoadableMixin(r)){constructor(e){super(e),this.layerIdToSourceIdLookup=new n,this.sourceIdToLayerIdLookup=new n,this.sourceIdToNetworkInfo=new n,this._rulesBySourceId=new Map,this._terminalConfigurationsBySourceId=new Map}async load(e){return this.addResolvingPromise(this._load(e)),this}agatFromRule(e,o){let t;switch(o){case"to":t={networkSource:e.toNetworkSource??null,assetGroup:e.toAssetGroup??null,assetType:e.toAssetType??null};break;case"from":t={networkSource:e.fromNetworkSource??null,assetGroup:e.fromAssetGroup??null,assetType:e.fromAssetType??null};break;case"via":t={networkSource:e.viaNetworkSource??null,assetGroup:e.viaAssetGroup??null,assetType:e.viaAssetType??null}}return null===t.networkSource?null:t}agatToFullDefinition({assetGroup:e,assetType:o,networkSourceId:t}){if(null===t||null===e||null===o)return null;const s={networkSource:null,assetGroup:null,assetType:null},r=this.sourceIdToNetworkInfo.get(t);if(!r)return null;s.networkSource=r;const u=r.assetGroupLookup.get(e);return u?(s.assetGroup=u,s.assetType=u.assetTypeLookup.get(o)??null,null===s.assetType?null:s):null}findAgat(e,t){const s=p(t)?t.parent:t;if(!s)throw new o("utility-network:missing-layer","Unable to find asset group/asset type for layer. The given layer is a `SubtypeSublayer` with no parent.");if(this.utilityNetwork.featureServiceUrl!==s.url)return null;const r=this.getNetworkSourceIdForLayer(s);if(null===r)return null;const u=s.fieldsIndex.get("assettype")?.name??"";if(""===u)return null;const n=s.fieldsIndex.get("assetgroup")?.name??"";if(""===n)return null;const a=e.attributes[u],i=e.attributes[n];return null==a||null==i?null:{assetGroup:i,assetType:a,networkSourceId:r}}findAgatFullDefinition(e,o){const t=this.findAgat(e,o);return t?this.agatToFullDefinition(t):null}findRules({networkSourceId:e,assetGroup:o,assetType:t}){const s=[];if(null===e||null===o)return s;const r=this._rulesBySourceId.get(e)?.get(o);if(!r)return s;for(const u of r.generalRules)s.push(u);if(null!=t){const e=r.typeSpecificRules.get(t);if(e)for(const o of e)s.push(o)}return s}getNetworkSourceIdForLayer(e){const o=p(e)?e.parent:e;return o&&this.utilityNetwork.featureServiceUrl===o.url?this.layerIdToSourceIdLookup.get(o.layerId)??null:null}ruleMatchesAgat(e,o,t){switch(t){case"to":return!(e.toNetworkSource?.sourceId!==o.networkSourceId||e.toAssetGroup&&e.toAssetGroup.assetGroupCode!==o.assetGroup||e.toAssetType&&e.toAssetType.assetTypeCode!==o.assetType);case"from":return!(e.fromNetworkSource?.sourceId!==o.networkSourceId||e.fromAssetGroup&&e.fromAssetGroup.assetGroupCode!==o.assetGroup||e.fromAssetType&&e.fromAssetType.assetTypeCode!==o.assetType);case"via":return!(e.viaNetworkSource?.sourceId!==o.networkSourceId||e.viaAssetGroup&&e.viaAssetGroup.assetGroupCode!==o.assetGroup||e.viaAssetType&&e.viaAssetType.assetTypeCode!==o.assetType)}}ruleMatchesFullDefinitionAgat(e,o,t){switch(t){case"to":return!(e.toNetworkSource?.sourceId!==o.networkSource?.sourceId||e.toAssetGroup&&e.toAssetGroup.assetGroupCode!==o.assetGroup?.assetGroupCode||e.toAssetType&&e.toAssetType.assetTypeCode!==o.assetType?.assetTypeCode);case"from":return!(e.fromNetworkSource?.sourceId!==o.networkSource?.sourceId||e.fromAssetGroup&&e.fromAssetGroup.assetGroupCode!==o.assetGroup?.assetGroupCode||e.fromAssetType&&e.fromAssetType.assetTypeCode!==o.assetType?.assetTypeCode);case"via":return!(e.viaNetworkSource?.sourceId!==o.networkSource?.sourceId||e.viaAssetGroup&&e.viaAssetGroup.assetGroupCode!==o.assetGroup?.assetGroupCode||e.viaAssetType&&e.viaAssetType.assetTypeCode!==o.assetType?.assetTypeCode)}}terminalConfiguration(e,o,t){const s=this._terminalConfigurationsBySourceId.get(e);if(!s)return null;const r=s.get(o);if(!r)return null;const u=r.get(t);return u||null}async _load(e){await this.utilityNetwork.load(),u(e);const{dataElement:t}=this.utilityNetwork;if(!t)throw new o("utility-network:no-data-element","No data element found on utility network");for(const o of t.domainNetworks)for(const e of[...o.edgeSources??[],...o.junctionSources??[]]){this.layerIdToSourceIdLookup.set(e.layerId,e.sourceId),this.sourceIdToLayerIdLookup.set(e.sourceId,e.layerId);const o=(e.assetGroups??[]).map(e=>{const o=new n;for(const t of e.assetTypes??[])o.set(t.assetTypeCode,t);return{...e,assetTypeLookup:o}}),t=new n;for(const e of o)t.set(e.assetGroupCode,e);const s={...e,assetGroupLookup:t,assetGroups:o};this.sourceIdToNetworkInfo.set(s.sourceId,s)}const s=await this.utilityNetwork.getRulesTable();u(e);for(const o of s?.rules??[])switch(o.ruleType){case l.RTAttachment:case l.RTContainment:this._registerRule(o.fromNetworkSource.sourceId,o.fromAssetGroup.assetGroupCode,o.fromAssetType.assetTypeCode,o),this._registerRule(o.toNetworkSource.sourceId,o.toAssetGroup.assetGroupCode,o.toAssetType.assetTypeCode,o);break;case l.RTEdgeJunctionEdgeConnectivity:this._registerRule(o.fromNetworkSource.sourceId,o.fromAssetGroup.assetGroupCode,o.fromAssetType.assetTypeCode,o),this._registerRule(o.toNetworkSource.sourceId,o.toAssetGroup.assetGroupCode,o.toAssetType.assetTypeCode,o),this._registerRule(o.viaNetworkSource.sourceId,o.viaAssetGroup.assetGroupCode,o.viaAssetType.assetTypeCode,o);break;case l.RTJunctionEdgeConnectivity:case l.RTJunctionJunctionConnectivity:this._registerRule(o.fromNetworkSource.sourceId,o.fromAssetGroup.assetGroupCode,o.fromAssetType.assetTypeCode,o),this._registerRule(o.toNetworkSource.sourceId,o.toAssetGroup.assetGroupCode,o.toAssetType.assetTypeCode,o)}this._makeTerminalConfigurationLookups(t)}_makeTerminalConfigurationLookups(e){const o={};for(const t of e.terminalConfigurations??[])o[t.terminalConfigurationId]=t;for(const t of e.domainNetworks??[])for(const e of t.junctionSources)if("esriUNFCUTJunctionObject"===e.utilityNetworkFeatureClassUsageType||"esriUNFCUTDevice"===e.utilityNetworkFeatureClassUsageType)for(const t of e.assetGroups??[])for(const r of t.assetTypes??[])if(null!=r.terminalConfigurationId&&r.terminalConfigurationId>=0){const u=o[r.terminalConfigurationId];if(u){const o=s(this._terminalConfigurationsBySourceId,e.sourceId,()=>new Map);s(o,t.assetGroupCode,()=>new Map).set(r.assetTypeCode,u)}}}_registerRule(e,o,t,r){const u=s(this._rulesBySourceId,e,()=>new Map),n=s(u,o,()=>({generalRules:[],typeSpecificRules:new Map}));if(-1!==t){return void s(n.typeSpecificRules,t,()=>[]).push(r)}n.generalRules.push(r)}};e([a()],d.prototype,"layerIdToSourceIdLookup",void 0),e([a()],d.prototype,"sourceIdToLayerIdLookup",void 0),e([a()],d.prototype,"sourceIdToNetworkInfo",void 0),e([a()],d.prototype,"utilityNetwork",void 0),d=e([i("esri.networks.support.UtilityNetworkLookupHelper")],d);export{d as UtilityNetworkLookupHelper,c as hashAgat};
|
package/package.json
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as r}from"../../chunks/tslib.es6.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{reader as s}from"../../core/accessorSupport/decorators/reader.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import{writer as e}from"../../core/accessorSupport/decorators/writer.js";import{collectField as t,collectArcadeFieldNames as o}from"../../layers/support/fieldUtils.js";import l from"../visualVariables/ColorVariable.js";import u from"../visualVariables/OpacityVariable.js";import p from"../visualVariables/RotationVariable.js";import V from"../visualVariables/SizeVariable.js";import c from"../visualVariables/VisualVariable.js";import n from"../visualVariables/VisualVariableFactory.js";import{matchRandomRotationExpression as b}from"../../support/arcadeExpressionUtils.js";const m={base:c,key:"type",typeMap:{opacity:u,color:l,rotation:p,size:V}},v=l=>{
|
|
5
|
+
import{_ as r}from"../../chunks/tslib.es6.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{reader as s}from"../../core/accessorSupport/decorators/reader.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";import{writer as e}from"../../core/accessorSupport/decorators/writer.js";import{collectField as t,collectArcadeFieldNames as o}from"../../layers/support/fieldUtils.js";import l from"../visualVariables/ColorVariable.js";import u from"../visualVariables/OpacityVariable.js";import p from"../visualVariables/RotationVariable.js";import V from"../visualVariables/SizeVariable.js";import c from"../visualVariables/VisualVariable.js";import n from"../visualVariables/VisualVariableFactory.js";import{matchRandomRotationExpression as b}from"../../support/arcadeExpressionUtils.js";const m={base:c,key:"type",typeMap:{opacity:u,color:l,rotation:p,size:V}},v=l=>{const u=l;let p=class extends u{constructor(){super(...arguments),this._vvFactory=new n}set visualVariables(r){this._vvFactory.visualVariables=r,this._set("visualVariables",this._vvFactory.visualVariables)}readVisualVariables(r,a,s){return this._vvFactory.readVariables(r,a,s)}writeVisualVariables(r,a,s,i){a[s]=this._vvFactory.writeVariables(r,i)}get arcadeRequiredForVisualVariables(){return this.visualVariables?.some(({arcadeRequired:r})=>r)??!1}hasVisualVariables(r,a){return r?this.getVisualVariablesForType(r,a).length>0:this.getVisualVariablesForType("size",a).length>0||this.getVisualVariablesForType("color",a).length>0||this.getVisualVariablesForType("opacity",a).length>0||this.getVisualVariablesForType("rotation",a).length>0}getVisualVariablesForType(r,a){return this.visualVariables?.filter(s=>s.type===r&&("string"==typeof a?s.target===a:!1!==a||!s.target))??[]}async collectVVRequiredFields(r,a){let s=[];this.visualVariables&&(s=s.concat(this.visualVariables));for(const i of s)i&&(i.field&&t(r,a,i.field),i.normalizationField&&t(r,a,i.normalizationField),i.valueExpression&&(y(i.valueExpression,r,a)||await o(r,a,i.valueExpression)))}};return r([a({types:[m],value:null,json:{write:!0}})],p.prototype,"visualVariables",null),r([s("visualVariables",["visualVariables","rotationType","rotationExpression"])],p.prototype,"readVisualVariables",null),r([e("visualVariables")],p.prototype,"writeVisualVariables",null),p=r([i("esri.renderers.mixins.VisualVariablesMixin")],p),p};function y(r,a,s){const i=b(r);return null!=i&&(t(a,s,i),!0)}export{v as VisualVariablesMixin};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Color.js";class t{static parse(e,r,
|
|
5
|
+
import e from"../../Color.js";class t{static parse(e,r,i){const o=[],l=[],u=e.split(";");for(let t=0;t<u.length;t++){const e=u[t];if(e){if(e.includes("po:")){const t=e.slice(3).split("|");if(3===t.length){const[e,r,n]=t,i=s(e,r,n);i&&l.push(i)}continue}if(e.includes("|")){for(const t of e.split("|"))if(r.has(t)){o.push(t);break}}else if(r.has(e))o.push(e);else if(0===t){o.length=0,o.push(n(i));break}}}return new t(o,l)}constructor(e,t){this.partNames=e,this.overrides=t}}function r(t,r){if("DashTemplate"===t)return r.split(" ").map(e=>Number(e));if("Color"===t){const t=new e(r).toRgba();return[t[0],t[1],t[2],255*t[3]]}return Number(r)}function s(e,t,s){return{primitiveName:e,propertyName:t,value:r(t,s),defaultValue:null}}function n(e){switch(e){case"esriGeometryPolyline":return"Invalid_L";case"esriGeometryPolygon":return"Invalid_A";default:return"Invalid_P"}}export{t as DictionaryControlString};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as o}from"../../chunks/tslib.es6.js";import{property as r}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as t}from"../../core/accessorSupport/decorators/subclass.js";const s=s=>{
|
|
5
|
+
import{_ as o}from"../../chunks/tslib.es6.js";import{property as r}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as t}from"../../core/accessorSupport/decorators/subclass.js";const s=s=>{const e=s;let i=class extends e{constructor(){super(...arguments),this.make=null,this.model=null,this.focalLength=null,this.pixelSize=null,this.rows=null,this.cols=null}};return o([r({json:{write:!0}})],i.prototype,"make",void 0),o([r({json:{write:!0}})],i.prototype,"model",void 0),o([r({json:{write:!0}})],i.prototype,"focalLength",void 0),o([r({json:{write:!0}})],i.prototype,"pixelSize",void 0),o([r({json:{write:!0}})],i.prototype,"rows",void 0),o([r({json:{write:!0}})],i.prototype,"cols",void 0),i=o([t("esri.rest.support.CameraInfoMixin")],i),i};export{s as CameraInfoMixin};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as o}from"../../chunks/tslib.es6.js";import{strict as t}from"../../core/jsonMap.js";import r from"../../core/Logger.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/RandomLCG.js";import{enumeration as e}from"../../core/accessorSupport/decorators/enumeration.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";const n=t()({naturalLog:"natural-log",squareRoot:"square-root",percentOfTotal:"percent-of-total",log:"log",field:"field"}),l="percent-of-total",s="field",m=t=>{
|
|
5
|
+
import{_ as o}from"../../chunks/tslib.es6.js";import{strict as t}from"../../core/jsonMap.js";import r from"../../core/Logger.js";import{property as a}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/RandomLCG.js";import{enumeration as e}from"../../core/accessorSupport/decorators/enumeration.js";import{subclass as i}from"../../core/accessorSupport/decorators/subclass.js";const n=t()({naturalLog:"natural-log",squareRoot:"square-root",percentOfTotal:"percent-of-total",log:"log",field:"field"}),l="percent-of-total",s="field",m=t=>{const m=t;let p=class extends m{constructor(){super(...arguments),this.normalizationField=null,this.normalizationMaxValue=null,this.normalizationMinValue=null,this.normalizationTotal=null}get normalizationType(){let o=this._get("normalizationType");const t=!!this.normalizationField,a=null!=this.normalizationTotal;return t||a?(o=t&&s||a&&l||null,t&&a&&r.getLogger(this).warn("warning: both normalizationField and normalizationTotal are set!")):o!==s&&o!==l||(o=null),o}set normalizationType(o){this._set("normalizationType",o)}};return o([a({type:String,json:{name:"parameters.normalizationField",write:!0}})],p.prototype,"normalizationField",void 0),o([a({type:Number,json:{name:"parameters.normalizationMaxValue",write:!0}})],p.prototype,"normalizationMaxValue",void 0),o([a({type:Number,json:{name:"parameters.normalizationMinValue",write:!0}})],p.prototype,"normalizationMinValue",void 0),o([a({type:Number,json:{name:"parameters.normalizationTotal",write:!0}})],p.prototype,"normalizationTotal",void 0),o([e(n,{name:"parameters.normalizationType"})],p.prototype,"normalizationType",null),p=o([i("esri.rest.support.NormalizationBinParametersMixin")],p),p};export{m as NormalizationBinParametersMixin,n as normalizationTypeJsonMap};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{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 z,hasScaleDependentSizeVV as E,findColorVVIndex as V,findOutlineVVIndex as I,findScaleDependentSizeVVIndex as S}from"./support/regenerateUtils.js";import{getSummaryStatistics as M,errorCallback as O,getClassBreaks as B,getPointSizeAlgorithm as j,getTitleAndExpressionForAgeRenderer as k,updateAgeRendererAuthoringInfoVV as F,verifyBasicFieldValidity as q,getDataRange as C,createDataValues as U,createSymbol as P,getSymbolOutlineFromScheme as R,getSymbolSizeFromScheme as D,isValidPointSize as L,getDefaultDataRange as $,createDefaultStopValues as A,createStopValues 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,getFieldsList as Q,getNormalizationType as X}from"../support/utils.js";import{binningCapableLayerTypes as Y,featureCapableLayerTypes as Z,createLayerAdapter as _,getLayerTypeLabels as ee,LayerType as ie}from"../support/adapters/support/layerUtils.js";import{cloneScheme as ae,getSchemes as re,getSchemeById as oe}from"../symbology/color.js";const ne="high-to-low",le=2**53-1,se=5;async function te(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?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);if("mesh"!==o.geometryType&&a.worldScale&&(!a.view||"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 Q({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),s=q(o,l,"color-visual-variable:invalid-parameters");if(s)throw s;return{...a,layer:o}}async function ue(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?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);const l=o.geometryType;if(a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=("point"===l||"multipoint"===l||"polyline"===l)&&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")&&(!a.view||"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 s=await Q({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),t=q(o,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return{...a,layer:o}}async function me(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=X(a);const r=e.forBinning?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ee(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")&&(!a.view||"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 Q({field:a.field,normalizationField:a.normalizationField}),t=q(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 ce(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=[ie.PointCloudLayer],o=_(a.layer,r);if(!o)throw new i("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));if(a.layer=o,a.density=a.density||25,a.size=a.size||"100%",!L(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 pe(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=[ie.PointCloudLayer],n=_(r.layer,o);if(!n)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(o).join(", "));if(r.layer=n,r.density=r.density||25,r.size=r.size||"100%",!L(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 fe(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 ye(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,Z);if(!r)throw new i("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+ee(Z).join(", "));const o=null!=a.signal?{signal:a.signal}:null;await r.load(o);const n=r.geometryType;if(a.outlineOptimizationEnabled="polygon"===n&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&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 l=H(r,a.startTime,a.endTime,"color-age-renderer:invalid-parameters");if(l)throw l;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 ve(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=await te({layer:c,field:s,valueExpression:u,valueExpressionTitle:m,normalizationField:t,theme:d,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:r}}async function he(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=z(r),w=E(r),b=await ue({layer:c,field:l,valueExpression:t,valueExpressionTitle:u,normalizationField:s,theme:d,outlineOptimizationEnabled:h,sizeOptimizationEnabled:w,forBinning:p,filter:f,view:y,signal:v});return{...e,creatorParameters:b,renderer:r}}async function we(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=z(r),E=await me({layer:f,field:n,valueExpression:u,valueExpressionTitle:m,normalizationType:s,normalizationField:l,normalizationTotal:t,classificationMethod:d,standardDeviationInterval:c,numClasses:p,outlineOptimizationEnabled:b,forBinning:y,filter:v,view:h,signal:w});return{...e,creatorParameters:E,renderer:r}}async function be(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=z(r),y=E(r),v=await ye({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 ge(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:ae(a),basemapId:r,basemapTheme:o};const s=e.theme||ne,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}}async function Te(a,r){const o=r.layer,n=await ge({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,se);if(s.length<se)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const t=$(a,!1,!0),u=t?A(t[0],t[1],5):G(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:ae(l)}}function xe(e,i,a,r){const o=C(e,i,a,!0);return{values:U(o,e,i,r),defaultValuesUsed:o.defaultValuesUsed}}async function ze(a,o,n,l){const{field:s,theme:m}=a,d=await ge({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,se);if(v.length<se)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}=xe(o,m,l,h),g=e(v,se),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}),z=new t({visualVariables:[x]});return{basemapId:d.basemapId,basemapTheme:d.basemapTheme,visualVariable:T,statistics:o,defaultValuesUsed:b,colorScheme:ae(y),authoringInfo:z}}async function Ee(e,i,a,r,l,s,t){const u=await o("esri/smartMapping/t9n/smartMapping"),{field:m,defaultSymbolEnabled:d}=t,c=ae(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:-le,maxValue:le,symbol:P(s,{type:t.symbolType,color:c.noDataColor,size:D(c,s),outline:R(c,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:d?u.other:null,defaultSymbol:d?P(s,{type:t.symbolType,color:c.noDataColor,size:D(c,s),outline:R(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:ae(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function Ve(e){const i=await te(e),{view:a,field:r,valueExpression:o,minValue:n,maxValue:l,layer:s,normalizationField:t,signal:u,filter:m,statistics:d}=i,c=t?"field":void 0,p=await(d??M({layer:s,field:r,valueExpression:o,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:c,normalizationField:t,minValue:n,maxValue:l,filter:m,view:a,signal:u})),f=s,y=r&&"function"!=typeof r?f.getField(r):null;return ze(i,p,f.geometryType,N(y))}async function Ie(e){const{view:a,filter:r,creatorParameters:o,renderer:n,signal:l}=await ve(e),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,theme:p,layer:f}=o,y=await M({layer:f,field:m,valueExpression:c,normalizationField:d,filter:r,view:a,signal:l}),v=m&&"function"!=typeof m?f.getField(m):null,{values:h}=xe(y,p,N(v),"high-to-low"===p);if(h.length!==u.stops.length)throw new i("regenerate-color-visual-variable:invalid-parameters","Visual variable is invalid");return u.stops.forEach((e,i)=>e.value=h[i]),t&&(t.minSliderValue=y.min,t.maxSliderValue=y.max),{visualVariable:u,authoringInfo:s,statistics:y}}function Se(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 Me(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 ge({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=Se(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:P(u,{type:e.symbolType,color:b[a],size:D(f,u),outline:R(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:i.label})),defaultLabel:s?r.other:null,defaultSymbol:s?P(u,{type:e.symbolType,color:f.noDataColor,size:D(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:d,standardDeviationInterval:e.standardDeviationInterval})});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:ae(f),classBreaksResult:y,defaultValuesUsed:a.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function Oe(e){const i=await ue(e),{layer:a,view:r,signal:o,filter:n}=i,[l,s,t]=await Promise.all([Ve(fe(i)),i.outlineOptimizationEnabled?v({layer:a,view:r,signal:o,filter:n}).catch(O):null,i.sizeOptimizationEnabled?h({layer:a,view:r,signal:o,filter:n}).catch(O):null]),u=i.normalizationField;return Ee(l,s,t,u?"field":void 0,u,a.geometryType,i)}async function Be(e){const{renderer:i,view:a,signal:r,filter:o,creatorParameters:n}=await he(e),{layer:l,outlineOptimizationEnabled:s,sizeOptimizationEnabled:t}=n,[u,m,d]=await Promise.all([Ie(e),s?v({layer:l,view:a,signal:r,filter:o}).catch(O):null,t?h({layer:l,view:a,signal:r,filter:o}).catch(O):null]);return w(i,u.visualVariable,V),w(i,m?.visualVariables,I),w(i,d?.minSize,S),b(i,u.authoringInfo,"color"),{renderer:i}}async function je(e){const i=await me(e);return Me(i,await B(de(i),i.outlineOptimizationEnabled))}async function ke(e){const{renderer:a,creatorParameters:r}=await we(e),{normalizationType:o,outlineOptimizationEnabled:n,classificationMethod:l}=r,{result:s,outlineResult:t}=await B(de(r),n),u=s.classBreakInfos;if(r.numClasses!==u.length)throw new i("regenerate-color-class-breaks-renderer:insufficient-info","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=u[i].minValue,e.maxValue=u[i].maxValue,e.label=u[i].label}),a.normalizationTotal="percent-of-total"===o?s.normalizationTotal:void 0,"standard-deviation"!==l&&m({classBreakInfos:a.classBreakInfos,classificationMethod:l,normalizationType:o,round:!0}),w(a,t?.visualVariables,I),{renderer:a}}function Fe(e){return ce(e).then(e=>({renderer:new l({field:"RGB",pointsPerInch:e.density??void 0,pointSizeAlgorithm:j(e.size)})}))}async function qe(e){const i=await pe(e),a=i.statistics??await M({layer:i.layer,field:i.field,signal:i.signal}),r=await Te(a,i);return{renderer:new s({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:j(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 ye(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(O):null,i.sizeOptimizationEnabled?h({layer:p,view:r,signal:d,filter:c}).catch(O):null]),{unit:g,statistics:T}=f,{valueExpression:x,title:z}=await k(i,g),E=await Ve(fe({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:c,signal:d})),V={valueExpression:x,defaultSymbolEnabled:a,symbolType:l,colorMixMode:s,edgesType:t},I=await Ee(E,w,b,null,null,p.geometryType,V),S=I.renderer.authoringInfo?.visualVariables;return S?.forEach(e=>F(e,o,n,g)),{...I,unit:g}}async function Ue(e){const{renderer:i,creatorParameters:a}=await be(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(O):null,n?h({layer:r,view:u,signal:m,filter:d}).catch(O):null]),{unit:b,statistics:g}=c,{valueExpression:T,title:x}=await k(a,b),z=await Ve(fe({layer:r,valueExpression:T,statistics:g,legendOptions:{title:x},theme:t,view:u,filter:d,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=>F(e,l,s,b)),{renderer:i}}export{Ce as createAgeRenderer,je as createClassBreaksRenderer,Oe as createContinuousRenderer,qe as createPCContinuousRenderer,Fe as createPCTrueColorRenderer,Ve as createVisualVariable,Ue as regenerateAgeRenderer,ke as regenerateClassBreaksRenderer,Be as regenerateContinuousRenderer,Ie as regenerateVisualVariable};
|
|
5
|
+
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{getSummaryStatistics as M,errorCallback as B,getClassBreaks as O,getPointSizeAlgorithm as j,getTitleAndExpressionForAgeRenderer as k,updateAgeRendererAuthoringInfoVV as F,verifyBasicFieldValidity as q,getDataRange as C,createDataValues as U,createSymbol as P,getSymbolOutlineFromScheme as R,getSymbolSizeFromScheme as D,isValidPointSize as L,getDefaultDataRange as $,createDefaultStopValues as A,createStopValues 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,getFieldsList as Q,getNormalizationType as X}from"../support/utils.js";import{binningCapableLayerTypes as Y,featureCapableLayerTypes as Z,createLayerAdapter as _,getLayerTypeLabels as ee,LayerType as ie}from"../support/adapters/support/layerUtils.js";import{cloneScheme as ae,createScheme as re,getSchemes as oe,getSchemeById as ne}from"../symbology/color.js";import{getColorSchemeDefinition as le}from"../symbology/support/utils.js";const se="high-to-low",te=2**53-1,ue=5;async function me(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?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);if("mesh"!==o.geometryType&&a.worldScale&&(!a.view||"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 Q({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),s=q(o,l,"color-visual-variable:invalid-parameters");if(s)throw s;return{...a,layer:o}}async function ce(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?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));const n=null!=a.signal?{signal:a.signal}:null;await o.load(n);const l=o.geometryType;if(a.outlineOptimizationEnabled="polygon"===l&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=("point"===l||"multipoint"===l||"polyline"===l)&&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")&&(!a.view||"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 s=await Q({field:a.field,normalizationField:a.normalizationField,valueExpression:a.valueExpression}),t=q(o,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return{...a,layer:o}}async function de(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=X(a);const r=e.forBinning?Y:Z,o=_(a.layer,r,e.forBinning);if(!o)throw new i("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ee(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")&&(!a.view||"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 Q({field:a.field,normalizationField:a.normalizationField}),t=q(o,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return{...a,layer:o}}function pe(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 fe(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=[ie.PointCloudLayer],o=_(a.layer,r);if(!o)throw new i("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+ee(r).join(", "));if(a.layer=o,a.density=a.density||25,a.size=a.size||"100%",!L(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 ye(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=[ie.PointCloudLayer],n=_(r.layer,o);if(!n)throw new i("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ee(o).join(", "));if(r.layer=n,r.density=r.density||25,r.size=r.size||"100%",!L(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 ve(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 he(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,Z);if(!r)throw new i("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+ee(Z).join(", "));const o=null!=a.signal?{signal:a.signal}:null;await r.load(o);const n=r.geometryType;if(a.outlineOptimizationEnabled="polygon"===n&&a.outlineOptimizationEnabled,a.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&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 l=H(r,a.startTime,a.endTime,"color-age-renderer:invalid-parameters");if(l)throw l;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 we(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 me({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 be(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 ce({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 ge(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 de({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 Te(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 he({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 xe(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:ae(a),basemapId:r,basemapTheme:o};const s=e.theme||se,t=oe({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=ne({id:i,geometryType:e.geometryType})}else a=t.primaryScheme;return{scheme:a,basemapId:r,basemapTheme:o}}function ze(e,i){const a=le(e);return re({geometryType:i},void 0,a.commonProps,a.colorRampInfo)}async function Ee(a,r){const o=r.layer,n=await xe({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,ue);if(s.length<ue)throw new i("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const t=$(a,!1,!0),u=t?A(t[0],t[1],5):G(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:ae(l)}}function Ve(e,i,a,r){const o=C(e,i,a,!0);return{values:U(o,e,i,r),defaultValuesUsed:o.defaultValuesUsed}}async function Ie(a,o,n,l){const{field:s,theme:m}=a,c=await xe({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,ue);if(v.length<ue)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}=Ve(o,m,l,h),g=e(v,ue),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:ae(y),authoringInfo:z}}async function Se(e,i,a,r,l,s,t){const u=await o("esri/smartMapping/t9n/smartMapping"),{field:m,defaultSymbolEnabled:c}=t,d=ae(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:-te,maxValue:te,symbol:P(s,{type:t.symbolType,color:d.noDataColor,size:D(d,s),outline:R(d,s,p),meshInfo:{colorMixMode:t.colorMixMode,edgesType:t.edgesType}})}],defaultLabel:c?u.other:null,defaultSymbol:c?P(s,{type:t.symbolType,color:d.noDataColor,size:D(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:ae(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function Me(e){const i=await me(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??M({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 Ie(i,p,f.geometryType,N(y))}async function Be(i){const{view:a,filter:r,creatorParameters:o,renderer:n,signal:l}=await we(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 M({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}=Ve(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,ue);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 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 je(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 xe({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=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:P(u,{type:e.symbolType,color:b[a],size:D(f,u),outline:R(f,u,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:i.label})),defaultLabel:s?r.other:null,defaultSymbol:s?P(u,{type:e.symbolType,color:f.noDataColor,size:D(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:ae(f),classBreaksResult:y,defaultValuesUsed:a.defaultValuesUsed,basemapId:p.basemapId,basemapTheme:p.basemapTheme}}async function ke(e){const i=await ce(e),{layer:a,view:r,signal:o,filter:n}=i,[l,s,t]=await Promise.all([Me(ve(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 Se(l,s,t,u?"field":void 0,u,a.geometryType,i)}async function Fe(e){const{renderer:i,view:a,signal:r,filter:o,creatorParameters:n}=await be(e),{layer:l,outlineOptimizationEnabled:s,sizeOptimizationEnabled:t}=n,[u,m,c]=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,u.visualVariable,V),w(i,m?.visualVariables,I),w(i,c?.minSize,S),b(i,u.authoringInfo,"color"),{renderer:i}}async function qe(e){const i=await de(e);return je(i,await O(pe(i),i.outlineOptimizationEnabled))}async function Ce(e){const{renderer:i,creatorParameters:a}=await ge(e),{normalizationType:r,outlineOptimizationEnabled:o,classificationMethod:n}=a;if("manual"===n)return{renderer:i};const l=await O(pe(a),o),s=l.result.classBreakInfos;if(a.numClasses!==s.length){const e=ze(i.classBreakInfos.map(e=>e.symbol),a.layer.geometryType);return{renderer:(await je({...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 Ue(e){return fe(e).then(e=>({renderer:new l({field:"RGB",pointsPerInch:e.density??void 0,pointSizeAlgorithm:j(e.size)})}))}async function Pe(e){const i=await ye(e),a=i.statistics??await M({layer:i.layer,field:i.field,signal:i.signal}),r=await Ee(a,i);return{renderer:new s({field:i.field,pointsPerInch:i.density??void 0,pointSizeAlgorithm:j(i.size),stops:r.stops}),basemapId:r.basemapId,basemapTheme:r.basemapTheme,statistics:r.statistics,defaultValuesUsed:r.defaultValuesUsed,colorScheme:r.colorScheme}}async function Re(e){const i=await he(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(B):null,i.sizeOptimizationEnabled?h({layer:p,view:r,signal:c,filter:d}).catch(B):null]),{unit:g,statistics:T}=f,{valueExpression:x,title:z}=await k(i,g),E=await Me(ve({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 Se(E,w,b,null,null,p.geometryType,V),S=I.renderer.authoringInfo?.visualVariables;return S?.forEach(e=>F(e,o,n,g)),{...I,unit:g}}async function De(e){const{renderer:i,creatorParameters:a}=await Te(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(B):null,n?h({layer:r,view:u,signal:m,filter:c}).catch(B):null]),{unit:b,statistics:g}=d,{valueExpression:T,title:x}=await k(a,b),z=await Me(ve({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=>F(e,l,s,b)),{renderer:i}}export{Re as createAgeRenderer,qe as createClassBreaksRenderer,ke as createContinuousRenderer,Pe as createPCContinuousRenderer,Ue as createPCTrueColorRenderer,Me as createVisualVariable,De as regenerateAgeRenderer,Ce as regenerateClassBreaksRenderer,Fe as regenerateContinuousRenderer,Be as regenerateVisualVariable};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Color.js";import{createUniqueColors as a}from"../../core/colorUtils.js";import r from"../../core/Error.js";import t from"../../renderers/HeatmapRenderer.js";import
|
|
5
|
+
import e from"../../Color.js";import{createUniqueColors as a}from"../../core/colorUtils.js";import r from"../../core/Error.js";import t from"../../renderers/HeatmapRenderer.js";import i from"../../renderers/support/AuthoringInfo.js";import n from"../../renderers/support/HeatmapColorStop.js";import{gaussianBlurRadiusPxToKernelDensityRadiusPt as o}from"../../renderers/support/heatmapUtils.js";import{processRegenerateParams as s,getRendererToUpdate as m,getStyleType as l}from"./support/regenerateUtils.js";import{verifyBasicFieldValidity as p,getBasemapInfo as d}from"./support/utils.js";import f from"../statistics/heatmapStatistics.js";import{getFieldsList as u}from"../support/utils.js";import{LayerType as c,createLayerAdapter as h,getLayerTypeLabels as w}from"../support/adapters/support/layerUtils.js";import{cloneScheme as y,getSchemes as g}from"../symbology/heatmap.js";const b=.01,R=[0,.04];async function v(e){if(!e?.layer||!e.view)throw new r("heatmap-renderer:missing-parameters","'layer' and 'view' parameters are required");const a={...e,layer:e.layer,view:e.view};a.radius??=null==a.blurRadius?18:o(a.blurRadius),a.minRatio??=.01,a.maxRatio??=1,a.fadeRatio??=.2,a.fadeToTransparent??=!0;const t=[c.CSVLayer,c.FeatureLayer,c.GeoJSONLayer,c.KnowledgeGraphSublayer,c.OGCFeatureLayer,c.OrientedImageryLayer,c.ParquetLayer,c.StreamLayer,c.WFSLayer],i=h(a.layer,t);if(!i)throw new r("heatmap-renderer:invalid-parameters","'layer' must be one of these types: "+w(t).join(", "));a.layer=i;const n=null!=a.signal?{signal:a.signal}:null;await i.load(n);const s=await u({field:a.field}),m=p(i,s,"heatmap-renderer:invalid-parameters");if(m)throw m;return a}async function I(e){const a="regenerate-heatmap-renderer";await s(e,a);const t=await m(e);if("heatmap"!==l(t))throw new r(`${a}:invalid-parameters`,"Renderer is invalid");const{layer:i,filter:n,view:o,signal:p}=e,d=await v({layer:i,field:t.field,radius:t.radius,fadeRatio:t.authoringInfo?.fadeRatio,filter:n,view:o,signal:p});return{...e,creatorParameters:d,renderer:t}}async function j(e){let a=e.scheme,r=null,t=null;const i=await d(e.basemap,e.view);if(r=null!=i.basemapId?i.basemapId:null,t=null!=i.basemapTheme?i.basemapTheme:null,a)return{scheme:y(a),basemapId:r,basemapTheme:t};const n=g({basemapTheme:t});return n&&(a=n.primaryScheme,r=n.basemapId,t=n.basemapTheme),{scheme:a,basemapId:r,basemapTheme:t}}async function T(r,o){const{field:s,basemap:m,radius:l,fadeToTransparent:p,heatmapScheme:d,view:f}=o,{scheme:u,basemapId:c,basemapTheme:h}=await j({basemap:m,scheme:d,view:f}),w=u.colors,g=w.length,v=null==r.min,I=v?R:[r.min,r.max];let T;const x=o.fadeRatio??0,L=o.maxRatio??0,U=o.minRatio??0,C=(L-U)/(g-1),D=w[0],E=p?U:b,F=[new n({ratio:0,color:new e([D.r,D.g,D.b,0])}),new n({ratio:b,color:new e([D.r,D.g,D.b,0])}),new n({ratio:E,color:new e([D.r,D.g,D.b,E])})];a(w,g).forEach((e,a)=>{const r=U+C*a;F.push(new n({ratio:r,color:e}))}),p&&(S(F,x),T=new i({fadeRatio:x}));return{renderer:new t({authoringInfo:T,radius:l,colorStops:F,field:s,minDensity:I[0],maxDensity:I[1]}),statistics:r,defaultValuesUsed:v,scheme:y(u),basemapId:c,basemapTheme:h}}function S(e,a){const r=10*(1-a)+1,t=e.length-3,i=e[2].color.a;e.forEach((e,n)=>{if(n<=2)return;const{color:o}=e,s=(n-3)/t;o.a=0===a?1:Math.min(Math.max(s*r+s+i,i),1)})}async function x(e){const a=await v(e);return T(a.statistics??await f({layer:a.layer,field:a.field,radius:a.radius,view:a.view,filter:a.filter,signal:a.signal}),a)}async function L(e){const{creatorParameters:a,renderer:r}=await I(e),t=await f({layer:a.layer,field:a.field,radius:a.radius,view:a.view,filter:a.filter,signal:a.signal}),i=null==t.min?R:[t.min,t.max];return r.minDensity=i[0],r.maxDensity=i[1],{renderer:U({renderer:r,fadeRatio:a.fadeRatio})}}function U(e){const{fadeRatio:a,renderer:r}=e,t=r.clone(),n=a??(t?.authoringInfo?.fadeRatio||0);return S(t.colorStops,n),t.authoringInfo?t.authoringInfo.fadeRatio=n:t.authoringInfo=new i({fadeRatio:n}),t}export{x as createRenderer,L as regenerateRenderer,U as updateRenderer};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Color.js";import{isSome as r}from"../../core/arrayUtils.js";import{createUniqueColors as a}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as t}from"../../core/screenUtils.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../layers/support/AggregateField.js";import l from"../../layers/support/ExpressionInfo.js";import o from"../../renderers/PieChartRenderer.js";import u from"../../renderers/support/AttributeColorInfo.js";import{OthersCategory as p}from"../../renderers/support/OthersCategory.js";import c from"../../renderers/support/RendererLegendOptions.js";import m from"../heuristics/outline.js";import d from"../heuristics/sizeRange.js";import{createVisualVariables as f}from"./size.js";import{spliceVisualVariables as b,updateAuthoringInfoVisualVariable as h,processRegenerateParams as y,getRendererToUpdate as w,getStyleType as g,hasOutlineVV as v,hasScaleDependentSizeVV as z,isSizeVV as S,findSizeVVIndex as E,findOutlineVVIndex as V,findScaleDependentSizeVVIndex as x}from"./support/regenerateUtils.js";import{errorCallback as C,createSymbol as j,getSymbolOutlineFromScheme as T,verifyBasicFieldValidity as $,getBasemapInfo as I}from"./support/utils.js";import O from"../statistics/predominantCategories.js";import{getSumOfAttributesExpr as k}from"../statistics/support/utils.js";import{verifyBinningParams as q}from"../support/binningUtils.js";import{getFieldsList as L}from"../support/utils.js";import{LayerType as P,binningCapableLayerTypes as B,createLayerAdapter as U,getLayerTypeLabels as F,getLayerTypes as R}from"../support/adapters/support/layerUtils.js";import{cloneScheme as M,getSchemes as N}from"../symbology/pieChart.js";import _ from"../../symbols/SimpleLineSymbol.js";import{getCIMSymbolColor as A}from"../../symbols/support/cimSymbolUtils.js";const G=[P.CSVLayer,P.FeatureLayer,P.GeoJSONLayer,P.KnowledgeGraphSublayer,P.OGCFeatureLayer,P.OrientedImageryLayer,P.ParquetLayer,P.StreamLayer,P.WFSLayer];async function W(e){if(!(e?.layer&&e.view&&e.attributes?.length))throw new i("pie-chart-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>10)throw new i("pie-chart-renderer:invalid-parameters","PieChart renderer does not support more than 10 attributes");e.forBinning&&q(e,"pie-chart-renderer");const r={...e,layer:e.layer,view:e.view,attributes:e.attributes};r.shape=r.shape||"pie",r.othersCategoryEnabled??=!0,r.includeSizeVariable=e.includeSizeVariable||!1;const a=e.forBinning?B:G,t=U(r.layer,a,e.forBinning);if(!t)throw new i("pie-chart-renderer:invalid-parameters","'layer' must be one of these types: "+F(a).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await Promise.all([e.view.when(),t.load(n)]);const s=t.geometryType,l="polygon"===s,o="point"===s||"multipoint"===s||l;if(r.outlineOptimizationEnabled=!!l&&r.outlineOptimizationEnabled,r.sizeOptimizationEnabled=!!o&&r.sizeOptimizationEnabled,!o)throw new i("pie-chart-renderer:not-supported","PieChart renderer is only supported for point and polygon layers");const u=[],p=r.attributes;for(const i of p){const e=await L({field:i.field,valueExpression:i.valueExpression});u.push(...e)}const c=$(t,u.filter(Boolean),"pie-chart-renderer:invalid-parameters");if(c)throw c;return{...r,layer:t}}async function J(e){const r="regenerate-pie-chart-renderer",a=e.includedParts?.includes("size-variable")??!0;await y(e,r);const t=await w(e);if("pie-chart"!==g(t))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{visualVariables:n}=t,{layer:s,forBinning:l,filter:o,view:u,signal:p}=e,c=v(t),m=z(t),d=a&&n?.some(S),f=t.attributes.map(e=>({field:e.field,label:e.label,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle})),b=await W({layer:s,attributes:f,outlineOptimizationEnabled:c,sizeOptimizationEnabled:m,includeSizeVariable:d,forBinning:l,filter:o,view:u,signal:p});return{...e,creatorParameters:b,renderer:t}}async function K(e){let r=e.pieChartScheme,a=null,i=null;const t=await I(e.basemap,e.view);if(a=null!=t.basemapId?t.basemapId:null,i=null!=t.basemapTheme?t.basemapTheme:null,r)return{scheme:M(r),basemapId:a,basemapTheme:i};const n=N({numColors:e.attributes.length,geometryType:e.layer.geometryType,basemapTheme:i});return n&&(r=n.primaryScheme,a=n.basemapId,i=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:i}}async function Z(e,r){const{valueExpression:a,sqlExpression:i,sqlWhere:t}=k(e.attributes),s=await n("esri/smartMapping/t9n/smartMapping");return f({layer:e.layer,basemap:e.basemap,valueExpression:a,sqlExpression:i,sqlWhere:t,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,legendOptions:{title:s.sumOfCategories},view:e.view,signal:e.signal})}async function D(e){const[s,l]=await Promise.all([W(e),n("esri/smartMapping/t9n/smartMapping")]),f=await K(s),b=f?.scheme;if(!b)throw new i("pie-chart-renderer:insufficient-info","Unable to find pie-chart scheme");const{layer:h,includeSizeVariable:y,sizeOptimizationEnabled:w,outlineOptimizationEnabled:g,view:v,signal:z,filter:S}=s,E=b.sizeScheme,V=s.attributes,x=V.map(e=>e.field).filter(r),[$,I,k,q]=await Promise.all([x.length>1?O({layer:h,fields:x,view:v,signal:z,filter:S}):null,y?Z(s,E):null,!y&&w?d({layer:h,view:v,signal:z,filter:S}).catch(C):null,g?m({layer:h,view:v,signal:z,filter:S}).catch(C):null]),L=$?.predominantCategoryInfos?{uniqueValueInfos:$.predominantCategoryInfos}:{uniqueValueInfos:x.map(e=>({value:e,count:0}))},P=a(b.colors,V.length),B=V.map((e,r)=>new u({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:P[r]})),U=h.geometryType,F=null!=E&&"background"in E&&E.background,R=new o({attributes:B,othersCategory:new p({label:l.other,color:s.othersCategoryEnabled?b.colorForOthersCategory:null,threshold:.04}),holePercentage:"donut"===s.shape?.45:0,backgroundFillSymbol:F?j(U,{type:"2d",color:F.color,outline:T(F,U,q?.opacity)}):null,size:t(b.size),outline:new _(T(b,"point",q?.opacity)),legendOptions:c.from(s.legendOptions)});if(I&&(Q(I,w,U),R.authoringInfo=I.authoringInfo.clone(),R.visualVariables=I.visualVariables?.map(e=>e.clone())),q?.visualVariables?.length){const e=q.visualVariables.map(e=>e.clone()).filter(e=>"color"!==e.type&&"rotation"!==e.type);R.visualVariables?R.visualVariables.push(...e):R.visualVariables=e}return k?.minSize&&(X(k,U),R.visualVariables?R.visualVariables.push(k.minSize):R.visualVariables=[k.minSize]),{renderer:R,pieChartScheme:M(b),size:I,basemapId:f.basemapId,basemapTheme:f.basemapTheme,statistics:L}}async function H(e){const{creatorParameters:r,view:a,signal:i,filter:t,renderer:n}=await J(e),{layer:s,outlineOptimizationEnabled:l,includeSizeVariable:o,sizeOptimizationEnabled:u}=r,p=await K(r),c=p?.scheme?.sizeScheme,[f,y,w]=await Promise.all([l?m({layer:s,view:a,signal:i,filter:t}).catch(C):null,o?Z(r,c):null,!o&&u?d({layer:s,view:a,signal:i,filter:t}).catch(C):null]),g=s.geometryType;if(y&&(Q(y,u,g),b(n,y?.visualVariables,E),h(n,y?.authoringInfo,"size")),f?.visualVariables?.length){const e=f.visualVariables.map(e=>e.clone()).filter(e=>"color"!==e.type&&"rotation"!==e.type);b(n,e,V)}return w?.minSize&&(X(w,g),b(n,w?.minSize,x)),{renderer:n}}function Q(e,r,a){r||e.visualVariables.forEach(e=>{"number"==typeof e.minSize&&"number"==typeof e.maxSize&&(e.minSize*=2.5,e.maxSize*=1.8)}),r&&"point"===a&&e.visualVariables.forEach(e=>{e?.minSize&&"object"==typeof e.minSize&&e.minSize?.stops?.forEach(e=>{e.size*=1.8})})}function X(e,r){"point"===r&&e.minSize.stops?.forEach(e=>{e.size*=2.5}),"polygon"===r&&e.minSize.stops?.forEach(e=>{e.size*=1.8})}const Y=new Set(["unique-value","class-breaks"]),ee=new e("#aaaaaa"),re=new e("#5c5c5c"),ae=[new e("#e60049"),new e("#0bb4ff"),new e("#50e991"),new e("#e6d800"),new e("#9b19f5"),new e("#ffa300"),new e("#dc0ab4"),new e("#b3d4ff"),new e("#00bfa0"),new e("#f0cccc")];async function ie(e){if(!e||!e.layer)throw new i("pie-chart-cluster-renderer:missing-parameters","'layer' parameter is required");const r={...e};r.shape=r.shape||"pie",r.defaultSymbolEnabled??=!0;const a=e.layer;if(!R(G).includes(a.type))throw new i("pie-chart-cluster-renderer:invalid-parameters","'layer' must be one of these types: "+F(G).join(", "));const t=null!=r.signal?{signal:r.signal}:null;await a.load(t);if(!("point"===a.geometryType))throw new i("pie-chart-cluster-renderer:invalid-parameters","Cluster renderers are only supported for point layers");const n="renderer"in a?a.renderer:void 0;if(!n)throw new i("pie-chart-cluster-renderer:invalid-parameters","input layer does not have a renderer.");if(!Y.has(n.type))throw new i("pie-chart-cluster-renderer:invalid-parameters",`Cannot create a pie chart renderer for clusters based on a ${n.type} renderer.`);if("valueExpression"in n&&n.valueExpression)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer whose renderer contains a valueExpression.");if("unique-value"===n.type){if(n.field2)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a UniqueValueRenderer using more than one field.");if(null!=n.uniqueValueInfos&&n.uniqueValueInfos.length>10)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer cannot be created from a UniqueValueRenderer with more than 10 unique value infos.")}if("class-breaks"===n.type){if(n.classBreakInfos.length<2)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer renderer with a continuous color or size gradient.");if(n.classBreakInfos.length>10)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with more than 10 class break infos.");if("class-breaks-size"===n?.authoringInfo?.type)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with breaks varied by size instead of color.")}return r}async function te(e){const r=await ie(e),{layer:a,shape:i,defaultSymbolEnabled:t,legendOptions:s}=r,l="renderer"in a?a.renderer:void 0,p=(await n("esri/smartMapping/t9n/smartMapping")).other;let m=[];"unique-value"===l?.type&&(m=ne({renderer:l,defaultSymbolEnabled:t,defaultLabelBackup:p})),"class-breaks"===l?.type&&(m=se({renderer:l,defaultSymbolEnabled:t,defaultLabelBackup:p}));const d=[],f=[];for(const n of m){const{field:e,color:r}=n;d.push(e),f.push(new u({color:r,field:e.name,label:e.alias}))}return{fields:d,renderer:new o({attributes:f,legendOptions:c.from(s),holePercentage:"donut"===i?.45:0,outline:null,size:9,othersCategory:null})}}function ne(e){const{renderer:r,defaultSymbolEnabled:i,defaultLabelBackup:t}=e,{field:n,defaultSymbol:o,defaultLabel:u}=r,p=r.uniqueValueInfos??[],c=o&&i,m=c?9:10,d=a(ae,m),f=(n?p.slice(0,m).map((e,r)=>{const a=e.label,i=d[r];return{field:new s({name:le(e.value?.toString()),alias:a,onStatisticExpression:new l({title:`Field definition - ${a}`,expression:ue(n,e),returnType:"number"}),statisticType:"sum"}),color:oe(e.symbol,i)}}):null)??[];if(c){const e="cluster_default",r=u||t;f.push({field:new s({name:le(e),alias:r,onStatisticExpression:new l({title:`Field definition - ${r}`,expression:pe(n,p),returnType:"number"}),statisticType:"sum"}),color:oe(o,re)})}return f}function se(e){const{renderer:r,defaultSymbolEnabled:i,defaultLabelBackup:t}=e,{field:n,classBreakInfos:o,defaultSymbol:u,defaultLabel:p}=r,c=u&&i,m=c?9:10,d=a(ae,m),f=o.slice(0,m).map((e,r)=>{const a=e.label||`${e.minValue} - ${e.maxValue}`,i=d[r];return{field:new s({name:le(a),alias:a,onStatisticExpression:new l({title:`Field definition - ${a}`,expression:ce(n,e),returnType:"number"}),statisticType:"sum"}),color:oe(e.symbol,i)}});if(c){const e="cluster_default",r=p||t;f.push({field:new s({name:le(e),alias:r,onStatisticExpression:new l({title:`Field definition - ${r}`,expression:me(n,o),returnType:"number"}),statisticType:"sum"}),color:oe(u,re)})}return f}function le(e){return"SUM_"+(e+"").replaceAll(/[^a-zA-Z0-9_]/g,"_")}function oe(e,r){if("simple-marker"===e?.type&&e.color)return e.color.clone();if("cim"===e?.type){const r=A(e);if(r)return r.clone()}return r?r.clone():ee.clone()}function ue(e,r){return`Number(Text($feature["${e}"]) == "${r.value+""}")`}function pe(e,r){return`Number(!(${r.map(r=>`(Text($feature["${e}"]) == "${r.value+""}")`).join(" || ")}))`}function ce(e,r){return`Number($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`}function me(e,r){return`Number(!(${r.map(r=>`($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`).join(" || ")}))`}export{D as createRenderer,te as createRendererForClustering,H as regenerateRenderer};
|
|
5
|
+
import e from"../../Color.js";import{isSome as r}from"../../core/arrayUtils.js";import{createUniqueColors as a}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as t}from"../../core/screenUtils.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../layers/support/AggregateField.js";import l from"../../layers/support/ExpressionInfo.js";import o from"../../renderers/PieChartRenderer.js";import u from"../../renderers/support/AttributeColorInfo.js";import{OthersCategory as p}from"../../renderers/support/OthersCategory.js";import c from"../../renderers/support/RendererLegendOptions.js";import m from"../heuristics/outline.js";import f from"../heuristics/sizeRange.js";import{createVisualVariables as d}from"./size.js";import{spliceVisualVariables as b,updateAuthoringInfoVisualVariable as h,processRegenerateParams as y,getRendererToUpdate as w,getStyleType as g,hasOutlineVV as v,hasScaleDependentSizeVV as z,isSizeVV as S,findSizeVVIndex as E,findOutlineVVIndex as V,findScaleDependentSizeVVIndex as x}from"./support/regenerateUtils.js";import{errorCallback as C,createSymbol as j,getSymbolOutlineFromScheme as T,verifyBasicFieldValidity as $,getBasemapInfo as I}from"./support/utils.js";import O from"../statistics/predominantCategories.js";import{getSumOfAttributesExpr as k}from"../statistics/support/utils.js";import{verifyBinningParams as q}from"../support/binningUtils.js";import{getFieldsList as L}from"../support/utils.js";import{LayerType as P,binningCapableLayerTypes as B,createLayerAdapter as U,getLayerTypeLabels as F,getLayerTypes as R}from"../support/adapters/support/layerUtils.js";import{cloneScheme as M,getSchemes as N}from"../symbology/pieChart.js";import _ from"../../symbols/SimpleLineSymbol.js";import{getCIMSymbolColor as A}from"../../symbols/support/cimSymbolUtils.js";const G=[P.CSVLayer,P.FeatureLayer,P.GeoJSONLayer,P.KnowledgeGraphSublayer,P.OGCFeatureLayer,P.OrientedImageryLayer,P.ParquetLayer,P.StreamLayer,P.WFSLayer];async function W(e){if(!(e?.layer&&e.view&&e.attributes?.length))throw new i("pie-chart-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>10)throw new i("pie-chart-renderer:invalid-parameters","PieChart renderer does not support more than 10 attributes");e.forBinning&&q(e,"pie-chart-renderer");const r={...e,layer:e.layer,view:e.view,attributes:e.attributes};r.shape=r.shape||"pie",r.othersCategoryEnabled??=!0,r.includeSizeVariable=e.includeSizeVariable||!1;const a=e.forBinning?B:G,t=U(r.layer,a,e.forBinning);if(!t)throw new i("pie-chart-renderer:invalid-parameters","'layer' must be one of these types: "+F(a).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await Promise.all([e.view.when(),t.load(n)]);const s=t.geometryType,l="polygon"===s,o="point"===s||"multipoint"===s||l;if(r.outlineOptimizationEnabled=!!l&&r.outlineOptimizationEnabled,r.sizeOptimizationEnabled=!!o&&r.sizeOptimizationEnabled,!o)throw new i("pie-chart-renderer:not-supported","PieChart renderer is only supported for point and polygon layers");const u=[],p=r.attributes;for(const i of p){const e=await L({field:i.field,valueExpression:i.valueExpression});u.push(...e)}const c=$(t,u.filter(Boolean),"pie-chart-renderer:invalid-parameters");if(c)throw c;return{...r,layer:t}}async function J(e){const r="regenerate-pie-chart-renderer",a=e.includedParts?.includes("size-variable")??!0;await y(e,r);const t=await w(e);if("pie-chart"!==g(t))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{visualVariables:n}=t,{layer:s,forBinning:l,filter:o,view:u,signal:p}=e,c=v(t),m=z(t),f=a&&n?.some(S),d=t.attributes.map(e=>({field:e.field,label:e.label,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle})),b=await W({layer:s,attributes:d,outlineOptimizationEnabled:c,sizeOptimizationEnabled:m,includeSizeVariable:f,forBinning:l,filter:o,view:u,signal:p});return{...e,creatorParameters:b,renderer:t}}async function K(e){let r=e.pieChartScheme,a=null,i=null;const t=await I(e.basemap,e.view);if(a=null!=t.basemapId?t.basemapId:null,i=null!=t.basemapTheme?t.basemapTheme:null,r)return{scheme:M(r),basemapId:a,basemapTheme:i};const n=N({numColors:e.attributes.length,geometryType:e.layer.geometryType,basemapTheme:i});return n&&(r=n.primaryScheme,a=n.basemapId,i=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:i}}async function Z(e,r){const{valueExpression:a,sqlExpression:i,sqlWhere:t}=k(e.attributes),s=await n("esri/smartMapping/t9n/smartMapping");return d({layer:e.layer,basemap:e.basemap,valueExpression:a,sqlExpression:i,sqlWhere:t,sizeScheme:r,sizeOptimizationEnabled:e.sizeOptimizationEnabled,legendOptions:{title:s.sumOfCategories},filter:e.filter,view:e.view,signal:e.signal})}async function D(e){const[s,l]=await Promise.all([W(e),n("esri/smartMapping/t9n/smartMapping")]),d=await K(s),b=d?.scheme;if(!b)throw new i("pie-chart-renderer:insufficient-info","Unable to find pie-chart scheme");const{layer:h,includeSizeVariable:y,sizeOptimizationEnabled:w,outlineOptimizationEnabled:g,view:v,signal:z,filter:S}=s,E=b.sizeScheme,V=s.attributes,x=V.map(e=>e.field).filter(r),[$,I,k,q]=await Promise.all([x.length>1?O({layer:h,fields:x,view:v,signal:z,filter:S}):null,y?Z(s,E):null,!y&&w?f({layer:h,view:v,signal:z,filter:S}).catch(C):null,g?m({layer:h,view:v,signal:z,filter:S}).catch(C):null]),L=$?.predominantCategoryInfos?{uniqueValueInfos:$.predominantCategoryInfos}:{uniqueValueInfos:x.map(e=>({value:e,count:0}))},P=a(b.colors,V.length),B=V.map((e,r)=>new u({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:P[r]})),U=h.geometryType,F=null!=E&&"background"in E&&E.background,R=new o({attributes:B,othersCategory:new p({label:l.other,color:s.othersCategoryEnabled?b.colorForOthersCategory:null,threshold:.04}),holePercentage:"donut"===s.shape?.45:0,backgroundFillSymbol:F?j(U,{type:"2d",color:F.color,outline:T(F,U,q?.opacity)}):null,size:t(b.size),outline:new _(T(b,"point",q?.opacity)),legendOptions:c.from(s.legendOptions)});if(I&&(Q(I,w,U),R.authoringInfo=I.authoringInfo.clone(),R.visualVariables=I.visualVariables?.map(e=>e.clone())),q?.visualVariables?.length){const e=q.visualVariables.map(e=>e.clone()).filter(e=>"color"!==e.type&&"rotation"!==e.type);R.visualVariables?R.visualVariables.push(...e):R.visualVariables=e}return k?.minSize&&(X(k,U),R.visualVariables?R.visualVariables.push(k.minSize):R.visualVariables=[k.minSize]),{renderer:R,pieChartScheme:M(b),size:I,basemapId:d.basemapId,basemapTheme:d.basemapTheme,statistics:L}}async function H(e){const{creatorParameters:r,view:a,signal:i,filter:t,renderer:n}=await J(e),{layer:s,outlineOptimizationEnabled:l,includeSizeVariable:o,sizeOptimizationEnabled:u}=r,p=await K(r),c=p?.scheme?.sizeScheme,[d,y,w]=await Promise.all([l?m({layer:s,view:a,signal:i,filter:t}).catch(C):null,o?Z(r,c):null,!o&&u?f({layer:s,view:a,signal:i,filter:t}).catch(C):null]),g=s.geometryType;if(y&&(Q(y,u,g),b(n,y?.visualVariables,E),h(n,y?.authoringInfo,"size")),d?.visualVariables?.length){const e=d.visualVariables.map(e=>e.clone()).filter(e=>"color"!==e.type&&"rotation"!==e.type);b(n,e,V)}return w?.minSize&&(X(w,g),b(n,w?.minSize,x)),{renderer:n}}function Q(e,r,a){r||e.visualVariables.forEach(e=>{"number"==typeof e.minSize&&"number"==typeof e.maxSize&&(e.minSize*=2.5,e.maxSize*=1.8)}),r&&"point"===a&&e.visualVariables.forEach(e=>{e?.minSize&&"object"==typeof e.minSize&&e.minSize?.stops?.forEach(e=>{e.size*=1.8})})}function X(e,r){"point"===r&&e.minSize.stops?.forEach(e=>{e.size*=2.5}),"polygon"===r&&e.minSize.stops?.forEach(e=>{e.size*=1.8})}const Y=new Set(["unique-value","class-breaks"]),ee=new e("#aaaaaa"),re=new e("#5c5c5c"),ae=[new e("#e60049"),new e("#0bb4ff"),new e("#50e991"),new e("#e6d800"),new e("#9b19f5"),new e("#ffa300"),new e("#dc0ab4"),new e("#b3d4ff"),new e("#00bfa0"),new e("#f0cccc")];async function ie(e){if(!e||!e.layer)throw new i("pie-chart-cluster-renderer:missing-parameters","'layer' parameter is required");const r={...e};r.shape=r.shape||"pie",r.defaultSymbolEnabled??=!0;const a=e.layer;if(!R(G).includes(a.type))throw new i("pie-chart-cluster-renderer:invalid-parameters","'layer' must be one of these types: "+F(G).join(", "));const t=null!=r.signal?{signal:r.signal}:null;await a.load(t);if(!("point"===a.geometryType))throw new i("pie-chart-cluster-renderer:invalid-parameters","Cluster renderers are only supported for point layers");const n="renderer"in a?a.renderer:void 0;if(!n)throw new i("pie-chart-cluster-renderer:invalid-parameters","input layer does not have a renderer.");if(!Y.has(n.type))throw new i("pie-chart-cluster-renderer:invalid-parameters",`Cannot create a pie chart renderer for clusters based on a ${n.type} renderer.`);if("valueExpression"in n&&n.valueExpression)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer whose renderer contains a valueExpression.");if("unique-value"===n.type){if(n.field2)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a UniqueValueRenderer using more than one field.");if(null!=n.uniqueValueInfos&&n.uniqueValueInfos.length>10)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer cannot be created from a UniqueValueRenderer with more than 10 unique value infos.")}if("class-breaks"===n.type){if(n.classBreakInfos.length<2)throw new i("pie-chart-cluster-renderer:invalid-parameters","Cannot create a pie chart renderer for clusters from a layer renderer with a continuous color or size gradient.");if(n.classBreakInfos.length>10)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with more than 10 class break infos.");if("class-breaks-size"===n?.authoringInfo?.type)throw new i("pie-chart-cluster-renderer:invalid-parameters","PieChart cluster renderer can not be created from a ClassBreaksRenderer with breaks varied by size instead of color.")}return r}async function te(e){const r=await ie(e),{layer:a,shape:i,defaultSymbolEnabled:t,legendOptions:s}=r,l="renderer"in a?a.renderer:void 0,p=(await n("esri/smartMapping/t9n/smartMapping")).other;let m=[];"unique-value"===l?.type&&(m=ne({renderer:l,defaultSymbolEnabled:t,defaultLabelBackup:p})),"class-breaks"===l?.type&&(m=se({renderer:l,defaultSymbolEnabled:t,defaultLabelBackup:p}));const f=[],d=[];for(const n of m){const{field:e,color:r}=n;f.push(e),d.push(new u({color:r,field:e.name,label:e.alias}))}return{fields:f,renderer:new o({attributes:d,legendOptions:c.from(s),holePercentage:"donut"===i?.45:0,outline:null,size:9,othersCategory:null})}}function ne(e){const{renderer:r,defaultSymbolEnabled:i,defaultLabelBackup:t}=e,{field:n,defaultSymbol:o,defaultLabel:u}=r,p=r.uniqueValueInfos??[],c=o&&i,m=c?9:10,f=a(ae,m),d=(n?p.slice(0,m).map((e,r)=>{const a=e.label,i=f[r];return{field:new s({name:le(e.value?.toString()),alias:a,onStatisticExpression:new l({title:`Field definition - ${a}`,expression:ue(n,e),returnType:"number"}),statisticType:"sum"}),color:oe(e.symbol,i)}}):null)??[];if(c){const e="cluster_default",r=u||t;d.push({field:new s({name:le(e),alias:r,onStatisticExpression:new l({title:`Field definition - ${r}`,expression:pe(n,p),returnType:"number"}),statisticType:"sum"}),color:oe(o,re)})}return d}function se(e){const{renderer:r,defaultSymbolEnabled:i,defaultLabelBackup:t}=e,{field:n,classBreakInfos:o,defaultSymbol:u,defaultLabel:p}=r,c=u&&i,m=c?9:10,f=a(ae,m),d=o.slice(0,m).map((e,r)=>{const a=e.label||`${e.minValue} - ${e.maxValue}`,i=f[r];return{field:new s({name:le(a),alias:a,onStatisticExpression:new l({title:`Field definition - ${a}`,expression:ce(n,e),returnType:"number"}),statisticType:"sum"}),color:oe(e.symbol,i)}});if(c){const e="cluster_default",r=p||t;d.push({field:new s({name:le(e),alias:r,onStatisticExpression:new l({title:`Field definition - ${r}`,expression:me(n,o),returnType:"number"}),statisticType:"sum"}),color:oe(u,re)})}return d}function le(e){return"SUM_"+(e+"").replaceAll(/[^a-zA-Z0-9_]/g,"_")}function oe(e,r){if("simple-marker"===e?.type&&e.color)return e.color.clone();if("cim"===e?.type){const r=A(e);if(r)return r.clone()}return r?r.clone():ee.clone()}function ue(e,r){return`Number(Text($feature["${e}"]) == "${r.value+""}")`}function pe(e,r){return`Number(!(${r.map(r=>`(Text($feature["${e}"]) == "${r.value+""}")`).join(" || ")}))`}function ce(e,r){return`Number($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`}function me(e,r){return`Number(!(${r.map(r=>`($feature["${e}"] >= ${r.minValue} && $feature["${e}"] < ${r.maxValue})`).join(" || ")}))`}export{D as createRenderer,te as createRendererForClustering,H as regenerateRenderer};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as r}from"../../core/screenUtils.js";import{ensureClass as a}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/support/AuthoringInfo.js";import t from"../../renderers/support/AuthoringInfoSizeStop.js";import o from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as u}from"../../renderers/support/utils.js";import m from"../../renderers/visualVariables/SizeVariable.js";import{castSizeFromStringOrNumber as p}from"../../renderers/visualVariables/support/castSizeVariable.js";import d from"../../renderers/visualVariables/support/SizeStop.js";import c from"../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{TransformationType as f}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import z from"../heuristics/referenceSize.js";import w from"../heuristics/sizeRange.js";import{createPrimitiveOverrides as h,updateReferenceSizeSymbol as b,createReferenceSizeSymbol as g}from"./support/referenceSizeUtils.js";import{isSizeVV as S,getAuthoringInfoVisualVariable as x,spliceVisualVariables as V,updateAuthoringInfoVisualVariable as T,processRegenerateParams as E,getRendererToUpdate as k,getStyleType as O,hasScaleDependentSizeVV as I,hasOutlineVV as B,findSizeVVIndex as F,findOutlineVVIndex as j}from"./support/regenerateUtils.js";import{createPrimitiveOverrides as q,updateSpikeSymbol as R,createSpikeSymbol as D,defaultSpikeSymbolStyle as G}from"./support/spikeUtils.js";import{getSummaryStatistics as U,errorCallback as P,getClassBreaks as M,getTitleAndExpressionForAgeRenderer as W,updateAgeRendererAuthoringInfoVV as C,verifyBasicFieldValidity as $,getSizeRangeForAxis as A,getDataRange as H,createSymbol as L,getSymbolOutlineFromScheme as J,getSymbolSizeFromScheme as K,getBasemapInfo as N}from"./support/utils.js";import{verifyDates as Q,supportedAgeUnits as X}from"../statistics/support/ageUtils.js";import{verifyBinningParams as Y}from"../support/binningUtils.js";import{getFieldsList as Z,isAnyDateField as _,getNormalizationType as ee}from"../support/utils.js";import{binningCapableLayerTypes as ie,featureCapableLayerTypes as re,createLayerAdapter as ae,getLayerTypeLabels as ne}from"../support/adapters/support/layerUtils.js";import{cloneScheme as se,getSchemes as le}from"../symbology/size.js";import{getColorFromSymbol as te}from"../../symbols/support/utils.js";const oe=2**53-1,ue=[5,112.5];async function me(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===e.theme&&!e.view&&!e.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===e.theme&&e.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");e.forBinning&&Y(e,"size-visual-variable");const r={...e},a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));"height"===r.axis&&(r.sizeOptimizationEnabled=!1);const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType;if("mesh"===l)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(r.worldScale){if("polyline"===l||"polygon"===l)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if(!r.view||"3d"!==r.view.type)throw new i("size-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true")}if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const t=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),o=$(n,t,"size-visual-variable:invalid-parameters");if(o)throw o;return"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G),await de(r),{...r,layer:n}}async function pe(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-continuous-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const o=await Z({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),u=$(n,o,"size-continuous-renderer:invalid-parameters");if(u)throw u;return"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=G),await de(r),{...r,layer:n}}async function de(e){const i=e.layer;if(("polygon"===i.geometryType||e.forBinning)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await z({layer:i,view:e.view,filter:e.filter,forBinning:e.forBinning,signal:e.signal})}catch{}!e.theme&&e.referenceSizeResult?.isGrid&&(e.theme="reference-size"),e.referenceSizeOptions?.symbolStyle||(e.referenceSizeOptions?e.referenceSizeOptions.symbolStyle="circle":e.referenceSizeOptions={symbolStyle:"circle"})}}async function ce(e){if(!e||!(e.layer&&e.view&&e.sizeStops))throw new i("update-renderer-with-reference-size:missing-parameters","'layer', 'view and 'sizeStops' parameters are required");const{view:r,forBinning:a}=e,n=e.forBinning?ie:re,s=ae(e.layer,n,e.forBinning);if(!s)throw new i("update-renderer-with-reference-size:invalid-parameters","'layer' must be one of these types: "+ne(n).join(", "));const l=s.layer;let t=e.renderer;if(!t)if(e.forBinning){if(!("featureReduction"in l&&l.featureReduction&&"renderer"in l.featureReduction&&l.featureReduction.renderer)||"class-breaks"!==l.featureReduction.renderer.type&&"unique-value"!==l.featureReduction.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Feature reduction renderer is not supported");t=l.featureReduction.renderer}else{if(!("renderer"in l)||!l.renderer||"class-breaks"!==l.renderer.type&&"unique-value"!==l.renderer.type)throw new i("update-renderer-with-reference-size:invalid-parameters","Renderer is not supported");t=l.renderer}const o=t.authoringInfo;if(!o||!o?.visualVariables?.some(e=>"reference-size"===e.theme))throw new i("update-renderer-with-reference-size:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'reference-size'");const u=e.isGrid??(await z({view:r,layer:l,forBinning:a}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function fe(e){if(!e||!e.layer||!e.sizeStops)throw new i("update-renderer-with-spike:missing-parameters","'layer' and 'sizeStops' parameters are required");const r=e.forBinning?ie:re,a=ae(e.layer,r,e.forBinning);if(!a)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+ne(r).join(", "));const n=a.layer;let s=e.renderer;if(!s)if(e.forBinning){if(!("featureReduction"in n&&n.featureReduction&&"renderer"in n.featureReduction&&n.featureReduction.renderer)||"class-breaks"!==n.featureReduction.renderer.type&&"unique-value"!==n.featureReduction.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Feature reduction renderer is not supported");s=n.featureReduction.renderer}else{if(!("renderer"in n)||!n.renderer||"class-breaks"!==n.renderer.type&&"unique-value"!==n.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Renderer is not supported");s=n.renderer}const l=s.authoringInfo,t=l?.visualVariables.find(e=>"spike"===e.theme);if(!t)throw new i("update-renderer-with-spike:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'spike'");const o=e.spikeOptions??{};return o.symbolStyle??=t?.spikeSymbolStyle?void 0:G,{...e,renderer:s,layer:a,spikeOptions:o}}async function ye(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new i("size-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new i("size-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");e.forBinning&&Y(e,"size-class-breaks-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=ee(r);const a=e.forBinning?ie:re,n=ae(r.layer,a,e.forBinning);if(!n)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+ne(a).join(", "));if(!(null!=r.minValue&&null!=r.maxValue)&&(null!=r.minValue||null!=r.maxValue))throw new i("size-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const o=await Z({field:r.field,normalizationField:r.normalizationField}),u=$(n,o,"size-class-breaks-renderer:invalid-parameters");if(u)throw u;return{...r,layer:n}}function ve(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const r=i;return r.analyzeData=!(null!=i.minValue&&null!=i.maxValue),r}function ze(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric"),a=i;return a.worldScale=r,r&&(a.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,a}async function we(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("size-age-renderer:missing-parameters","'layer', 'view', 'startTime', 'endTime' parameters are required");const r={...e};r.symbolType??="2d",r.defaultSymbolEnabled??=!0;const a=ae(r.layer,re);if(!a)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+ne(re).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await a.load(n);const s=a.geometryType,l=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled,"mesh"===s)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(l&&("polyline"===s||"polygon"===s))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const t=Q(a,r.startTime,r.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(r.unit&&!X.includes(r.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${X.join(", ")}`);return{...r,layer:a}}async function he(e){const r="regenerate-size-visual-variables";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const s=x(a,"size");if(!s)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=a.visualVariables?.find(S);if(!u&&!t&&!o)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable");let m=s.field,p=s.normalizationField,d=null,c=null;m||(u?.field?(m=u.field,p=u.normalizationField):a.field?(m=a.field,p=a.normalizationField):(d=u?.valueExpression??a.valueExpression,c=u?.valueExpressionTitle??a.valueExpressionTitle));const{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=I(a),b=await me({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function be(e){const r="regenerate-size-continuous-renderer";E(e,r);const a=await k(e),n=O(a);if(!n||!["size-continuous","univariate-color-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=a,m=s?.visualVariables.find(e=>"size"===e.type),p=m.theme,{layer:d,forBinning:c,filter:f,view:y,signal:v}=e,z=B(a),w=I(a),h=await pe({layer:d,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:p,outlineOptimizationEnabled:z,sizeOptimizationEnabled:w,forBinning:c,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:a}}async function ge(e){const r="regenerate-size-class-breaks-renderer";await E(e,r);const a=await k(e);if("size-class-breaks"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=a,{classificationMethod:p,standardDeviationInterval:d}=n,c=a.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=B(a),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:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function Se(e){const r="regenerate-size-age-renderer";await E(e,r);const a=await k(e);if("size-age"!==O(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n}=a,s=n?.visualVariables.find(e=>"size"===e.type),l=s.startTime,t=s.endTime,o=s.units,u=s.theme,{layer:m,filter:p,view:d,signal:c}=e,f=B(a),y=I(a),v=await we({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:p,view:d,signal:c});return{...e,creatorParameters:v,renderer:a}}async function xe(e){let i=e.sizeScheme,r=null,a=null;const n=await N(e.basemap,e.view);if(r=null!=n.basemapId?n.basemapId:null,a=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:se(i),basemapId:r,basemapTheme:a};const s=le({basemapTheme:a,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,r=s.basemapId,a=s.basemapTheme),{scheme:i,basemapId:r,basemapTheme:a}}function Ve(e,i){switch(i){case"point":case"multipoint":{const i=e;return[p(i.minSize),p(i.maxSize)]}case"polyline":{const i=e;return[p(i.minWidth),p(i.maxWidth)]}case"polygon":{const i=e;return[p(i.marker.minSize),p(i.marker.maxSize)]}}}function Te(e,i){e.transformationType===f.ClampedLinear&&"below"===i&&e.flipSizes()}async function Ee(e,i,r,a,n,s){const l=ke(e,i,r,a);return l||Ve(n,s)}function ke(e,i,r,a){return"spike"===a?[r?.minHeight??ue[0],r?.maxHeight??ue[1]]:"reference-size"===a&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function Oe(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,r=0,a=0,n=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>a&&l<n&&t<2*n&&u<.5,p=l>r&&l<i&&t<2*i&&u<.5;return{minDataValue:m?a:p?r:l,maxDataValue:m?n:p?i:s+2*o,defaultValuesUsed:!1}}const{theme:r,field:a}=i,n=i.layer,s=a&&!("function"==typeof a)?n.getField(a):null,l=_(s);return H(e,r,l,"above"===r||"below"===r)}function Ie(e,r){if(("spike"===r||"reference-size"===r)&&null!=e.minDataValue&&null!=e.maxDataValue&&null!=e.minSize&&null!=e.maxSize&&"number"==typeof e.minSize&&"number"==typeof e.maxSize)return[new d({value:e.minDataValue,size:e.minSize}),new d({value:e.maxDataValue,size:e.maxSize})];throw new i("get-size-stops-for-theme","Invalid size variable or theme")}async function Be(e,r,n,s){const{theme:u,field:p,normalizationField:d,minValue:f,maxValue:y,axis:v}=e,z=e.layer.geometryType,w=await xe({basemap:e.basemap,geometryType:z,sizeScheme:e.sizeScheme,worldScale:e.worldScale,view:e.view}),h=w.scheme;if(!h)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const b=await Ee(n,s,e.spikeOptions,u,h,z),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Oe(r,e),V=[],T="height"===v,E=T?v:void 0,k=b[0];let O=b[1];if(T&&"number"==typeof k&&"number"==typeof O){const e=A({minSize:k,maxSize:O},E);V.push(new m({axis:"width-and-depth",minSize:e.minSize})),O=e.maxSize}const I=new m({field:p??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:d,axis:E,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:a(c,e.legendOptions)});Te(I,u),V.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,sizeStops:Ie(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,referenceSizeScale:s?.isGrid||e.sizeOptimizationEnabled?e?.view?.scale:void 0,referenceSizeSymbolStyle:e.referenceSizeOptions?.symbolStyle,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:"spike"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,spikeSymbolStyle:e.spikeOptions?.symbolStyle,sizeStops:Ie(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:{type:"size",theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:V,statistics:r,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:se(h),authoringInfo:F}}async function Fe(e,i,r,a,l){const t=await n("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,p=l.defaultSymbolEnabled,d=se(e.sizeScheme),c="polygon"===m,f=c?d.marker:d,y=c?d.background:null,v=c?"point":m,z=i?.opacity,w=e.isGrid,b=l.theme,S="reference-size"===b,x="spike"===b,V=S||x?[]:e.visualVariables.map(e=>e.clone());i?.visualVariables?.length&&V.push(...i.visualVariables.map(e=>e.clone()));const T=S?g({type:l.referenceSizeOptions?.symbolStyle||"circle",color:f.color,primitiveOverrides:h({view:l.view,field:u,normalizationField:a,sizeStops: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:q({field:u,normalizationField:a,sizeStops:Ie(e.visualVariables[0],b)}),symbolStyle:l.spikeOptions?.symbolStyle}):L(v,{type:l.symbolType,color:f.color,size:K(f,v),outline:J(f,v,z)});return{renderer:new s({backgroundFillSymbol:!w&&y?L(m,{type:l.symbolType,color:y.color,outline:J(y,m,z)}):null,classBreakInfos:[{minValue:-oe,maxValue:oe,symbol:T}],defaultLabel:p?t.other:null,defaultSymbol:!p||S||x?null:L(v,{type:l.symbolType,color:f.noDataColor,size:K(f,v,!0),outline:J(f,v,z)}),field:u,normalizationField:a,normalizationType:r,valueExpression:l.valueExpression,valueExpressionTitle:l.valueExpressionTitle,visualVariables:V,authoringInfo:e.authoringInfo?.clone()}),visualVariables:e.visualVariables.map(e=>e.clone()),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,isGrid:w,sizeScheme:se(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function je(e,i){const a=r(e.minSize),n=(r(e.maxSize)-a)/(i>=4?i-1:i),s=[];for(let r=0;r<i;r++)s.push(a+n*r);return s}async function qe(e,i){const r=await n("esri/smartMapping/t9n/smartMapping"),a=e.layer,t=e.defaultSymbolEnabled,o=a.geometryType,m="polygon"===o,p=e.symbolType?.includes("3d-volumetric"),d=await xe({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:p,view:e.view}),c=d.scheme,{result:f,outlineResult:y}=i,v=f?.classBreakInfos??[],z=e.classificationMethod,w=e.normalizationType,h=m?c.marker:c,b=m?c.background:null,g=m?"point":o,S=Ve(h,g),x=p?A({minSize:S[0],maxSize:S[1]},"height"):null,V=je({minSize:S[0],maxSize:x?x.maxSize:S[1]},v.length),T=y?.opacity,E=new s({backgroundFillSymbol:b&&L(o,{type:e.symbolType,color:b.color,outline:J(b,o,T)}),classBreakInfos:v.map((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:L(g,{type:e.symbolType,color:h.color,size:V[r],widthAndDepth:x?.minSize,outline:J(h,g,T)}),label:i.label})),defaultLabel:t?r.other:null,defaultSymbol:t?L(g,{type:e.symbolType,color:h.noDataColor,size:K(h,g,!0),widthAndDepth:x?.minSize,outline:J(h,g,T)}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?f?.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new l({type:"class-breaks-size",classificationMethod:z,standardDeviationInterval:e.standardDeviationInterval})});return"standard-deviation"!==z&&u({classBreakInfos:E.classBreakInfos,classificationMethod:z,normalizationType:w,round:!0}),y?.visualVariables?.length&&(E.visualVariables=y.visualVariables.map(e=>e.clone())),{renderer:E,sizeScheme:se(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function Re(e){const i=await me(e),{view:r,field:a,valueExpression:n,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:p}=i,d=o?"field":void 0,[c,f]=await Promise.all([m??U({layer:t,field:a,valueExpression:n,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:o,filter:p,minValue:s,maxValue:l,view:r,signal:u}),i.sizeOptimizationEnabled?w({view:r,layer:t,signal:u,filter:p}).catch(P):null]);return Be(i,c,f,i.referenceSizeResult)}async function De(e){const{view:i,filter:r,renderer:a,signal:n,creatorParameters:s}=await he(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:v}=s,z=o?"field":void 0,[h,b]=await Promise.all([U({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:z,filter:r,view:i,signal:n}),c?w({view:i,layer:d,signal:n,filter:r}).catch(P):null]),g=ke(b,y,f,p),{minDataValue:V,maxDataValue:T}=Oe(h,{theme:p,layer:d,field:l}),E=a.visualVariables?.find(S),k=(E?.stops?null:E)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:v,valueUnit:"unknown",normalizationField:o});g&&(k.minSize=g[0],k.maxSize=g[1]),k.minDataValue=V,k.maxDataValue=T,Te(k,p);const O=x(a,"size");O.minSliderValue=h.min,O.maxSliderValue=h.max;const I="reference-size"===p;return(I||"spike"===p)&&(O.sizeStops=Ie(k,p).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),I&&(O.referenceSizeScale=y?.isGrid||c?i?.scale:void 0)),{visualVariables:"reference-size"===p||"spike"===p?[]:[k],isGrid:!!y?.isGrid,authoringInfo:a.authoringInfo?.clone(),statistics:h}}async function Ge(e){const i=await pe(e),r={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[a,n]=await Promise.all([Re(ze(i)),i.outlineOptimizationEnabled?v(r).catch(P):null]),s=i.normalizationField;return Fe(a,n,s?"field":void 0,s,i)}async function Ue(e){const{renderer:i,view:r,signal:a,filter:n,creatorParameters:s,forBinning:l}=await be(e),{layer:t,outlineOptimizationEnabled:o,theme:u,referenceSizeResult:m}=s,[p,d]=await Promise.all([De({...e,referenceSizeResult:m}),o?v({layer:t,view:r,filter:n,signal:a}).catch(P):null]),c="reference-size"===u,f="spike"===u;V(i,p.visualVariables,F),V(i,d?.visualVariables,j),T(i,p.authoringInfo,"size");const y=p.statistics;if(!c&&!f)return{renderer:i,statistics:y};if(f){return{renderer:await Me({layer:t,renderer:i,forBinning:l,sizeStops:x(i,"size","spike")?.sizeStops}),statistics:y}}const z=p.isGrid;return{renderer:await Pe({layer:t,renderer:i,view:r,forBinning:l,sizeStops:x(i,"size","reference-size")?.sizeStops,isGrid:z}),isGrid:z,statistics:y}}async function Pe(r){const{layer:a,referenceSizeOptions:n,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:p,isGrid:d}=await ce(r),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find(e=>"reference-size"===e.theme),y=r.field??f?.field,v=r.normalizationField??f?.normalizationField;if(!y)throw new i("update-renderer-with-reference-size:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const z=h({view:p,field:y,normalizationField:v,sizeStops:u,sizeByScaleEnabled:d||!!r.sizeOptimizationEnabled}),w=n?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach(i=>{const r=e?.color??te(i.symbol,1);"cim"===i.symbol.type?b(i.symbol,{type:w,color:r,primitiveOverrides:z}):r&&(i.symbol=g({type:w,color:r,primitiveOverrides:z}))})}else if("unique-value"===c.type){const i=c.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&m&&"colors"in m?m.colors:null,n=r?e(r,c.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:te(i.symbol,1);"cim"===i.symbol?.type?b(i.symbol,{type:w,color:e,primitiveOverrides:z}):e&&(i.symbol=g({type:w,color:e,primitiveOverrides:z})),s++}c.uniqueValueGroups=i}}return f&&(f.field=y,f.normalizationField=v,f.sizeStops=u.map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),f.referenceSizeScale=d||r.sizeOptimizationEnabled?p.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Me(r){const{layer:a,renderer:n,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await fe(r),p=n.clone();p.authoringInfo??=new l;const d=p.authoringInfo.visualVariables.find(e=>"spike"===e.theme),c=r.field??d?.field,f=r.normalizationField??d?.normalizationField;if(!c)throw new i("update-renderer-with-spike:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const y=q({field:c,normalizationField:f,sizeStops:o}),v=m?.symbolStyle;if("class-breaks"===p.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&s&&"marker"in s?s.marker:null;p.classBreakInfos.forEach(i=>{if("cim"===i.symbol.type){const r=e?.color;R(i.symbol,{color:r,primitiveOverrides:y,...m,symbolStyle:v})}else{const r=e?.color??te(i.symbol,1)??void 0;r&&(i.symbol=D({color:r,primitiveOverrides:y,...m,symbolStyle:v}))}})}else if("unique-value"===p.type){const i=p.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&u&&"colors"in u?u.colors:null,n=r?e(r,p.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:te(i.symbol,1)??void 0;"cim"===i.symbol?.type?R(i.symbol,{color:e,primitiveOverrides:y,...m,symbolStyle:v}):e&&(i.symbol=D({color:e,primitiveOverrides:y,...m,symbolStyle:v})),s++}p.uniqueValueGroups=i}}return d&&(d.field=c,d.normalizationField=f,d.sizeStops=o.map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),v&&(d.spikeSymbolStyle=v)),p}async function We(e){const i=await ye(e);return qe(i,await M(ve(i),i.outlineOptimizationEnabled))}async function Ce(e){const{renderer:r,creatorParameters:a}=await ge(e),{outlineOptimizationEnabled:n,normalizationType:s,classificationMethod:l}=a,{result:t,outlineResult:o}=await M(ve(a),n),m=t.classBreakInfos;if(a.numClasses!==m.length)throw new i("regenerate-class-breaks-renderer:invalid-parameters","The number of class breaks generated does not match the number of class breaks in the renderer.");return r.classBreakInfos.forEach((e,i)=>{e.minValue=m[i].minValue,e.maxValue=m[i].maxValue,e.label=m[i].label}),r.normalizationTotal="percent-of-total"===s?t.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:r.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),V(r,o?.visualVariables,j),{renderer:r}}async function $e(e){const i=await we(e),{defaultSymbolEnabled:r,view:a,startTime:n,endTime:s,symbolType:l,minValue:t,maxValue:o,signal:u,filter:m,layer:p}=i,[d,c]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await y({view:a,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?v({layer:p,view:a,filter:m,signal:u}).catch(P):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:h}=await W(i,f),b=await Re(ze({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:z,legendOptions:{title:h},theme:i.theme,sizeScheme:i.sizeScheme,sizeOptimizationEnabled:i.sizeOptimizationEnabled,view:i.view,minValue:t,maxValue:o,filter:m,signal:u})),g={layer:p,valueExpression:w,defaultSymbolEnabled:r,symbolType:l},S=await Fe(b,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach(e=>C(e,n,s,f)),{...S,unit:f}}async function Ae(e){const{renderer:i,creatorParameters:r}=await Se(e),{layer:a,outlineOptimizationEnabled:n,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:p}=r,[d,c]=await Promise.all([y({view:u,layer:a,startTime:l,endTime:t,signal:m,filter:p}),n?v({layer:a,view:u,filter:p,signal:m}).catch(P):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:h}=await W(r,f),b=await Re(ze({layer:a,valueExpression:w,statistics:z,legendOptions:{title:h},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));V(i,b.visualVariables,F),V(i,c?.visualVariables,j),i.authoringInfo=b.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach(e=>C(e,l,t,f)),{renderer:i}}export{$e as createAgeRenderer,We as createClassBreaksRenderer,Ge as createContinuousRenderer,Re as createVisualVariables,Ie as getSizeStopsForTheme,Ae as regenerateAgeRenderer,Ce as regenerateClassBreaksRenderer,Ue as regenerateContinuousRenderer,De as regenerateVisualVariables,Pe as updateRendererWithReferenceSize,Me as updateRendererWithSpike};
|
|
5
|
+
import{createUniqueColors as e}from"../../core/colorUtils.js";import i from"../../core/Error.js";import{toPt as r}from"../../core/screenUtils.js";import{ensureClass as a}from"../../core/accessorSupport/ensureType.js";import{fetchMessageBundle as n}from"../../intl/messages.js";import s from"../../renderers/ClassBreaksRenderer.js";import l from"../../renderers/support/AuthoringInfo.js";import t from"../../renderers/support/AuthoringInfoSizeStop.js";import o from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as u}from"../../renderers/support/utils.js";import m from"../../renderers/visualVariables/SizeVariable.js";import{castSizeFromStringOrNumber as p}from"../../renderers/visualVariables/support/castSizeVariable.js";import d from"../../renderers/visualVariables/support/SizeStop.js";import c from"../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{TransformationType as f}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import y from"../heuristics/ageUnit.js";import v from"../heuristics/outline.js";import z from"../heuristics/referenceSize.js";import w from"../heuristics/sizeRange.js";import{getTypeSchemeData as h}from"./type.js";import{createPrimitiveOverrides as b,updateReferenceSizeSymbol as g,createReferenceSizeSymbol as S}from"./support/referenceSizeUtils.js";import{isSizeVV as x,getAuthoringInfoVisualVariable as V,spliceVisualVariables as T,updateAuthoringInfoVisualVariable as E,processRegenerateParams as k,getRendererToUpdate as O,getStyleType as I,hasScaleDependentSizeVV as B,hasOutlineVV as F,findSizeVVIndex as j,findOutlineVVIndex as q}from"./support/regenerateUtils.js";import{createPrimitiveOverrides as R,updateSpikeSymbol as D,createSpikeSymbol as G,defaultSpikeSymbolStyle as U}from"./support/spikeUtils.js";import{getSummaryStatistics as P,errorCallback as M,getClassBreaks as C,getTitleAndExpressionForAgeRenderer as W,updateAgeRendererAuthoringInfoVV as $,verifyBasicFieldValidity as A,getSizeRangeForAxis as H,getDataRange as L,createSymbol as J,getSymbolOutlineFromScheme as K,getSymbolSizeFromScheme as N,getBasemapInfo as Q}from"./support/utils.js";import{verifyDates as X,supportedAgeUnits as Y}from"../statistics/support/ageUtils.js";import{verifyBinningParams as Z}from"../support/binningUtils.js";import{getFieldsList as _,isAnyDateField as ee,getNormalizationType as ie}from"../support/utils.js";import{binningCapableLayerTypes as re,featureCapableLayerTypes as ae,createLayerAdapter as ne,getLayerTypeLabels as se}from"../support/adapters/support/layerUtils.js";import{cloneScheme as le,getSchemes as te}from"../symbology/size.js";import{getColorFromSymbol as oe}from"../../symbols/support/utils.js";const ue=2**53-1,me=[5,112.5];async function pe(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new i("size-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new i("size-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");if("reference-size"===e.theme&&!e.view&&!e.field)throw new i("size-visual-variable:missing-parameters","'view' and 'field' are required when 'theme' is 'reference-size'");if("reference-size"===e.theme&&e.valueExpression)throw new i("size-visual-variable:missing-parameters","'valueExpression' is not supported when 'theme' is 'reference-size'");e.forBinning&&Z(e,"size-visual-variable");const r={...e},a=e.forBinning?re:ae,n=ne(r.layer,a,e.forBinning);if(!n)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+se(a).join(", "));"height"===r.axis&&(r.sizeOptimizationEnabled=!1);const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType;if("mesh"===l)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(r.worldScale){if("polyline"===l||"polygon"===l)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if(!r.view||"3d"!==r.view.type)throw new i("size-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true")}if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-visual-variable:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-visual-variable:invalid-parameters","Spike is only supported for point and polygon layers");const t=await _({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),o=A(n,t,"size-visual-variable:invalid-parameters");if(o)throw o;return"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=U),await ce(r),{...r,layer:n}}async function de(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&&Z(e,"size-continuous-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0;const a=e.forBinning?re:ae,n=ne(r.layer,a,e.forBinning);if(!n)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+se(a).join(", "));const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="reference-size"!==r.theme&&"spike"!==r.theme&&"polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-continuous-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");if("reference-size"===r.theme&&!e.forBinning&&"polygon"!==l)throw new i("size-continuous-renderer:invalid-parameters","Reference size is only supported for polygon layers");if("spike"===r.theme&&!e.forBinning&&"polygon"!==l&&"point"!==l)throw new i("size-continuous-renderer:invalid-parameters","Spike is only supported for point and polygon layers");const o=await _({field:r.field,normalizationField:r.normalizationField,valueExpression:r.valueExpression}),u=A(n,o,"size-continuous-renderer:invalid-parameters");if(u)throw u;return"spike"!==r.theme||r.spikeOptions?.symbolStyle||(r.spikeOptions??={},r.spikeOptions.symbolStyle=U),await ce(r),{...r,layer:n}}async function ce(e){const i=e.layer;if(("polygon"===i.geometryType||e.forBinning)&&e.view&&e.field&&!e.valueExpression&&(!e.theme||"reference-size"===e.theme)){try{e.referenceSizeResult=e.referenceSizeResult??await z({layer:i,view:e.view,filter:e.filter,forBinning:e.forBinning,signal:e.signal})}catch{}!e.theme&&e.referenceSizeResult?.isGrid&&(e.theme="reference-size"),e.referenceSizeOptions?.symbolStyle||(e.referenceSizeOptions?e.referenceSizeOptions.symbolStyle="circle":e.referenceSizeOptions={symbolStyle:"circle"})}}async function fe(e){if(!e||!(e.layer&&e.view&&e.sizeStops))throw new i("update-renderer-with-reference-size:missing-parameters","'layer', 'view and 'sizeStops' parameters are required");const{view:r,forBinning:a}=e,n=e.forBinning?re:ae,s=ne(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:r,layer:l,forBinning:a}))?.isGrid;return{...e,isGrid:u,renderer:t,layer:s}}async function ye(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?re:ae,a=ne(e.layer,r,e.forBinning);if(!a)throw new i("update-renderer-with-spike:invalid-parameters","'layer' must be one of these types: "+se(r).join(", "));await a.load();const n=a.layer;let s=e.renderer;if(!s)if(e.forBinning){if(!("featureReduction"in n&&n.featureReduction&&"renderer"in n.featureReduction&&n.featureReduction.renderer)||"class-breaks"!==n.featureReduction.renderer.type&&"unique-value"!==n.featureReduction.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Feature reduction renderer is not supported");s=n.featureReduction.renderer}else{if(!("renderer"in n)||!n.renderer||"class-breaks"!==n.renderer.type&&"unique-value"!==n.renderer.type)throw new i("update-renderer-with-spike:invalid-parameters","Renderer is not supported");s=n.renderer}const l=s.authoringInfo,t=l?.visualVariables.find(e=>"spike"===e.theme);if(!t)throw new i("update-renderer-with-spike:invalid-parameters","'renderer.authoringInfo.visualVariables' should have an authoringInfoVisualVariable with 'theme' set to 'spike'");const o=e.spikeOptions??{};return o.symbolStyle??=t?.spikeSymbolStyle?void 0:U,{...e,renderer:s,layer:a,spikeOptions:o}}async function ve(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&&Z(e,"size-class-breaks-renderer");const r={...e};r.symbolType=r.symbolType||"2d",r.defaultSymbolEnabled??=!0,r.classificationMethod??="equal-interval",r.normalizationType=ie(r);const a=e.forBinning?re:ae,n=ne(r.layer,a,e.forBinning);if(!n)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+se(a).join(", "));if(!(null!=r.minValue&&null!=r.maxValue)&&(null!=r.minValue||null!=r.maxValue))throw new i("size-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const s=null!=r.signal?{signal:r.signal}:null;await n.load(s);const l=n.geometryType,t=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===l&&r.outlineOptimizationEnabled,"mesh"===l)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(t&&("polyline"===l||"polygon"===l))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-class-breaks-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const o=await _({field:r.field,normalizationField:r.normalizationField}),u=A(n,o,"size-class-breaks-renderer:invalid-parameters");if(u)throw u;return{...r,layer:n}}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 we(e){const i={...e},r=!!i.symbolType?.includes("3d-volumetric"),a=i;return a.worldScale=r,r&&(a.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,a}async function he(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new i("size-age-renderer:missing-parameters","'layer', 'view', 'startTime', 'endTime' parameters are required");const r={...e};r.symbolType??="2d",r.defaultSymbolEnabled??=!0;const a=ne(r.layer,ae);if(!a)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+se(ae).join(", "));const n=null!=r.signal?{signal:r.signal}:null;await a.load(n);const s=a.geometryType,l=r.symbolType.includes("3d");if(r.outlineOptimizationEnabled="polygon"===s&&r.outlineOptimizationEnabled,"mesh"===s)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(l&&("polyline"===s||"polygon"===s))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new i("size-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or 3d-volumetric-uniform");const t=X(a,r.startTime,r.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(r.unit&&!Y.includes(r.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${Y.join(", ")}`);return{...r,layer:a}}async function be(e){const r="regenerate-size-visual-variables";k(e,r);const a=await O(e),n=I(a);if(!n||!["size-continuous","univariate-color-size","color-size","relationship-size","type-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const s=V(a,"size");if(!s)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable authoringInfo");const l=s.theme,t="reference-size"===l,o="spike"===l,u=a.visualVariables?.find(x);if(!u&&!t&&!o)throw new i(`${r}:invalid-parameters`,"Renderer does not have a size visual variable");let m=s.field,p=s.normalizationField,d=null,c=null;m||(u?.field?(m=u.field,p=u.normalizationField):a.field?(m=a.field,p=a.normalizationField):(d=u?.valueExpression??a.valueExpression,c=u?.valueExpressionTitle??a.valueExpressionTitle));const{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=B(a),b=await pe({layer:f,field:m,valueExpression:d,valueExpressionTitle:c,normalizationField:p,theme:l,sizeOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function ge(e){const r="regenerate-size-continuous-renderer";k(e,r);const a=await O(e),n=I(a);if(!n||!["size-continuous","univariate-color-size"].includes(n))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:s,field:l,normalizationField:t,valueExpression:o,valueExpressionTitle:u}=a,m=s?.visualVariables.find(e=>"size"===e.type),p=m.theme,{layer:d,forBinning:c,filter:f,view:y,signal:v}=e,z=F(a),w=B(a),h=await de({layer:d,field:l,valueExpression:o,valueExpressionTitle:u,normalizationField:t,theme:p,outlineOptimizationEnabled:z,sizeOptimizationEnabled:w,forBinning:c,filter:f,view:y,signal:v});return{...e,creatorParameters:h,renderer:a}}async function Se(e){const r="regenerate-size-class-breaks-renderer";await k(e,r);const a=await O(e);if("size-class-breaks"!==I(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n,field:s,normalizationField:l,normalizationType:t,normalizationTotal:o,valueExpression:u,valueExpressionTitle:m}=a,{classificationMethod:p,standardDeviationInterval:d}=n,c=a.classBreakInfos.length,{layer:f,forBinning:y,filter:v,view:z,signal:w}=e,h=F(a),b=await ve({layer:f,field:s,valueExpression:u,valueExpressionTitle:m,normalizationType:t,normalizationField:l,normalizationTotal:o,classificationMethod:p,standardDeviationInterval:d,numClasses:c,outlineOptimizationEnabled:h,forBinning:y,filter:v,view:z,signal:w});return{...e,creatorParameters:b,renderer:a}}async function xe(e){const r="regenerate-size-age-renderer";await k(e,r);const a=await O(e);if("size-age"!==I(a))throw new i(`${r}:invalid-parameters`,"Renderer is invalid");const{authoringInfo:n}=a,s=n?.visualVariables.find(e=>"size"===e.type),l=s.startTime,t=s.endTime,o=s.units,u=s.theme,{layer:m,filter:p,view:d,signal:c}=e,f=F(a),y=B(a),v=await he({layer:m,startTime:l,endTime:t,unit:o,theme:u,outlineOptimizationEnabled:f,sizeOptimizationEnabled:y,filter:p,view:d,signal:c});return{...e,creatorParameters:v,renderer:a}}async function Ve(e){let i=e.sizeScheme,r=null,a=null;const n=await Q(e.basemap,e.view);if(r=null!=n.basemapId?n.basemapId:null,a=null!=n.basemapTheme?n.basemapTheme:null,i)return{scheme:le(i),basemapId:r,basemapTheme:a};const s=te({basemapTheme:a,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return s&&(i=s.primaryScheme,r=s.basemapId,a=s.basemapTheme),{scheme:i,basemapId:r,basemapTheme:a}}function Te(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 Ee(e,i){e.transformationType===f.ClampedLinear&&"below"===i&&e.flipSizes()}async function ke(e,i,r,a,n,s){const l=Oe(e,i,r,a);return l||Te(n,s)}function Oe(e,i,r,a){return"spike"===a?[r?.minHeight??me[0],r?.maxHeight??me[1]]:"reference-size"===a&&i?[1,i.size]:e?[e.minSize,e.maxSize]:null}function Ie(e,i){if("reference-size"===i.theme&&null!=e.min&&null!=e.max&&null!=e.avg&&null!=e.stddev){const i=100,r=0,a=0,n=1,s=e.avg,l=e.min,t=e.max,o=e.stddev,u=0!==s?o/s:0,m=l>a&&l<n&&t<2*n&&u<.5,p=l>r&&l<i&&t<2*i&&u<.5;return{minDataValue:m?a:p?r:l,maxDataValue:m?n:p?i:s+2*o,defaultValuesUsed:!1}}const{theme:r,field:a}=i,n=i.layer,s=a&&!("function"==typeof a)?n.getField(a):null,l=ee(s);return L(e,r,l,"above"===r||"below"===r)}function Be(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 Fe(e,r,n,s){const{theme:u,field:p,normalizationField:d,minValue:f,maxValue:y,axis:v}=e,z=e.layer.geometryType,w=await Ve({basemap:e.basemap,geometryType:z,sizeScheme:e.sizeScheme,worldScale:e.worldScale,view:e.view}),h=w.scheme;if(!h)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const b=await ke(n,s,e.spikeOptions,u,h,z),{minDataValue:g,maxDataValue:S,defaultValuesUsed:x}=Ie(r,e),V=[],T="height"===v,E=T?v:void 0,k=b[0];let O=b[1];if(T&&"number"==typeof k&&"number"==typeof O){const e=H({minSize:k,maxSize:O},E);V.push(new m({axis:"width-and-depth",minSize:e.minSize})),O=e.maxSize}const I=new m({field:p??void 0,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:d,axis:E,minSize:k,maxSize:O,minDataValue:g,maxDataValue:S,legendOptions:a(c,e.legendOptions)});Ee(I,u),V.unshift(I);const B=new o("reference-size"===u?{type:"size",field:e.field,normalizationField:e.normalizationField,sizeStops:Be(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:Be(I,u).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}:{type:"size",theme:u,minSliderValue:null!=f?f:r.min,maxSliderValue:null!=y?y:r.max}),F=new l({visualVariables:[B]});return{basemapId:w.basemapId,basemapTheme:w.basemapTheme,visualVariables:V,statistics:r,isGrid:s?.isGrid,defaultValuesUsed:x,sizeScheme:le(h),authoringInfo:F}}async function je(e,i,r,a,l){const t=await n("esri/smartMapping/t9n/smartMapping"),o=l.layer,u=l.field,m=o.geometryType,p=l.defaultSymbolEnabled,d=le(e.sizeScheme),c="polygon"===m,f=c?d.marker:d,y=c?d.background:null,v=c?"point":m,z=i?.opacity,w=e.isGrid,h=l.theme,g="reference-size"===h,x="spike"===h,V=g||x?[]:e.visualVariables.map(e=>e.clone());i?.visualVariables?.length&&V.push(...i.visualVariables.map(e=>e.clone()));const T=g?S({type:l.referenceSizeOptions?.symbolStyle||"circle",color:f.color,primitiveOverrides:b({view:l.view,field:u,normalizationField:a,sizeStops:Be(e.visualVariables[0],h),sizeByScaleEnabled:w||!!l.sizeOptimizationEnabled})}):x?G({color:f.color,strokeColor:f.outline.color,baseWidth:l.spikeOptions?.baseWidth,strokeWidth:l.spikeOptions?.strokeWidth,defaultHeight:l.spikeOptions?.defaultHeight,primitiveOverrides:R({field:u,normalizationField:a,sizeStops:Be(e.visualVariables[0],h)}),symbolStyle:l.spikeOptions?.symbolStyle}):J(v,{type:l.symbolType,color:f.color,size:N(f,v),outline:K(f,v,z)});return{renderer:new s({backgroundFillSymbol:!w&&y?J(m,{type:l.symbolType,color:y.color,outline:K(y,m,z)}):null,classBreakInfos:[{minValue:-ue,maxValue:ue,symbol:T}],defaultLabel:p?t.other:null,defaultSymbol:!p||g||x?null:J(v,{type:l.symbolType,color:f.noDataColor,size:N(f,v,!0),outline:K(f,v,z)}),field:u,normalizationField:a,normalizationType:r,valueExpression:l.valueExpression,valueExpressionTitle:l.valueExpressionTitle,visualVariables:V,authoringInfo:e.authoringInfo?.clone()}),visualVariables:e.visualVariables.map(e=>e.clone()),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,isGrid:w,sizeScheme:le(e.sizeScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}function qe(e,i){const a=r(e.minSize),n=(r(e.maxSize)-a)/(i>=4?i-1:i),s=[];for(let r=0;r<i;r++)s.push(a+n*r);return s}async function Re(e,i){const r=await n("esri/smartMapping/t9n/smartMapping"),a=e.layer,t=e.defaultSymbolEnabled,o=a.geometryType,m="polygon"===o,p=e.symbolType?.includes("3d-volumetric"),d=await Ve({basemap:e.basemap,geometryType:o,sizeScheme:e.sizeScheme,worldScale:p,view:e.view}),c=d.scheme,{result:f,outlineResult:y}=i,v=f?.classBreakInfos??[],z=e.classificationMethod,w=e.normalizationType,h=m?c.marker:c,b=m?c.background:null,g=m?"point":o,S=Te(h,g),x=p?H({minSize:S[0],maxSize:S[1]},"height"):null,V=qe({minSize:S[0],maxSize:x?x.maxSize:S[1]},v.length),T=y?.opacity,E=new s({backgroundFillSymbol:b&&J(o,{type:e.symbolType,color:b.color,outline:K(b,o,T)}),classBreakInfos:v.map((i,r)=>({minValue:i.minValue,maxValue:i.maxValue,symbol:J(g,{type:e.symbolType,color:h.color,size:V[r],widthAndDepth:x?.minSize,outline:K(h,g,T)}),label:i.label})),defaultLabel:t?r.other:null,defaultSymbol:t?J(g,{type:e.symbolType,color:h.noDataColor,size:N(h,g,!0),widthAndDepth:x?.minSize,outline:K(h,g,T)}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:w,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===w?f?.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new l({type:"class-breaks-size",classificationMethod:z,standardDeviationInterval:e.standardDeviationInterval})});return"standard-deviation"!==z&&u({classBreakInfos:E.classBreakInfos,classificationMethod:z,normalizationType:w,round:!0}),y?.visualVariables?.length&&(E.visualVariables=y.visualVariables.map(e=>e.clone())),{renderer:E,sizeScheme:le(c),classBreaksResult:f,defaultValuesUsed:!!i.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function De(e){const i=await pe(e),{view:r,field:a,valueExpression:n,minValue:s,maxValue:l,layer:t,normalizationField:o,signal:u,statistics:m,filter:p}=i,d=o?"field":void 0,[c,f]=await Promise.all([m??P({layer:t,field:a,valueExpression:n,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:d,normalizationField:o,filter:p,minValue:s,maxValue:l,view:r,signal:u}),i.sizeOptimizationEnabled?w({view:r,layer:t,signal:u,filter:p}).catch(M):null]);return Fe(i,c,f,i.referenceSizeResult)}async function Ge(e){const{view:i,filter:r,renderer:a,signal:n,creatorParameters:s}=await be(e),{field:l,normalizationField:o,valueExpression:u,theme:p,layer:d,sizeOptimizationEnabled:c,spikeOptions:f,referenceSizeResult:y,valueExpressionTitle:v}=s,z=o?"field":void 0,[h,b]=await Promise.all([P({layer:d,field:l,valueExpression:u,normalizationField:o,normalizationType:z,filter:r,view:i,signal:n}),c?w({view:i,layer:d,signal:n,filter:r}).catch(M):null]),g=Oe(b,y,f,p),{minDataValue:S,maxDataValue:T}=Ie(h,{theme:p,layer:d,field:l}),E=a.visualVariables?.find(x),k=(E?.stops?null:E)??new m({field:l??void 0,valueExpression:u,valueExpressionTitle:v,valueUnit:"unknown",normalizationField:o});g&&(k.minSize=g[0],k.maxSize=g[1]),k.minDataValue=S,k.maxDataValue=T,Ee(k,p);const O=V(a,"size");O.minSliderValue=h.min,O.maxSliderValue=h.max;const I="reference-size"===p;return(I||"spike"===p)&&(O.sizeStops=Be(k,p).map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),I&&(O.referenceSizeScale=y?.isGrid||c?i?.scale:void 0)),{visualVariables:"reference-size"===p||"spike"===p?[]:[k],isGrid:!!y?.isGrid,authoringInfo:a.authoringInfo?.clone(),statistics:h}}async function Ue(e){const i=await de(e),r={layer:i.layer,view:i.view,filter:i.filter,signal:i.signal},[a,n]=await Promise.all([De(we(i)),i.outlineOptimizationEnabled?v(r).catch(M):null]),s=i.normalizationField;return je(a,n,s?"field":void 0,s,i)}async function Pe(e){const{renderer:i,view:r,signal:a,filter:n,creatorParameters:s,forBinning:l}=await ge(e),{layer:t,outlineOptimizationEnabled:o,theme:u,referenceSizeResult:m}=s,[p,d]=await Promise.all([Ge({...e,referenceSizeResult:m}),o?v({layer:t,view:r,filter:n,signal:a}).catch(M):null]),c="reference-size"===u,f="spike"===u;T(i,p.visualVariables,j),T(i,d?.visualVariables,q),E(i,p.authoringInfo,"size");const y=p.statistics;if(!c&&!f)return{renderer:i,statistics:y};if(f){return{renderer:await Ce({layer:t,renderer:i,forBinning:l,sizeStops:V(i,"size","spike")?.sizeStops}),statistics:y}}const z=p.isGrid;return{renderer:await Me({layer:t,renderer:i,view:r,forBinning:l,sizeStops:V(i,"size","reference-size")?.sizeStops,isGrid:z}),isGrid:z,statistics:y}}async function Me(r){const{layer:a,referenceSizeOptions:n,renderer:s,sizeScheme:o,sizeStops:u,typeScheme:m,view:p,isGrid:d}=await fe(r),c=s.clone();c.authoringInfo??=new l;const f=c.authoringInfo.visualVariables.find(e=>"reference-size"===e.theme),y=r.field??f?.field,v=r.normalizationField??f?.normalizationField;if(!y)throw new i("update-renderer-with-reference-size:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const z=b({view:p,field:y,normalizationField:v,sizeStops:u,sizeByScaleEnabled:d||!!r.sizeOptimizationEnabled}),w=n?.symbolStyle||f?.referenceSizeSymbolStyle||"circle";if("class-breaks"===c.type){const e="polygon"===("geometryType"in a?a.geometryType:null)&&o&&"marker"in o?o.marker:null;c.classBreakInfos.forEach(i=>{const r=e?.color??oe(i.symbol,1);"cim"===i.symbol.type?g(i.symbol,{type:w,color:r,primitiveOverrides:z}):r&&(i.symbol=S({type:w,color:r,primitiveOverrides:z}))})}else if("unique-value"===c.type){const i=c.uniqueValueGroups,r="polygon"===("geometryType"in a?a.geometryType:null)&&m&&"colors"in m?m.colors:null,n=r?e(r,c.uniqueValueInfos?.length??0):null;let s=0;if(i){for(const e of i)for(const i of e.classes??[]){const e=n?n[s]:oe(i.symbol,1);"cim"===i.symbol?.type?g(i.symbol,{type:w,color:e,primitiveOverrides:z}):e&&(i.symbol=S({type:w,color:e,primitiveOverrides:z})),s++}c.uniqueValueGroups=i}}return f&&(f.field=y,f.normalizationField=v,f.sizeStops=u.map(({label:e,size:i,value:r})=>new t({label:e,size:i,value:r})),f.referenceSizeScale=d||r.sizeOptimizationEnabled?p.scale:void 0,f.referenceSizeSymbolStyle=w),c}async function Ce(r){const{layer:a,renderer:n,sizeScheme:s,sizeStops:o,typeScheme:u,spikeOptions:m}=await ye(r),p=n.clone();p.authoringInfo??=new l;const d=p.authoringInfo.visualVariables.find(e=>"spike"===e.theme),c=r.field??d?.field,f=r.normalizationField??d?.normalizationField;if(!c)throw new i("update-renderer-with-spike:invalid-parameters","'field' parameter or authoring info with 'field' is required.");const y=R({field:c,normalizationField:f,sizeStops:o}),v="geometryType"in a?a.geometryType:null,z={primitiveOverrides:y,...m},w=m?.symbolStyle;if("class-breaks"===p.type){if(w){const e=v?await Ve({geometryType:v,sizeScheme:s,view:r.view}):null,i=e?.scheme,a="polygon"===v&&i&&"marker"in i?i.marker:i,n=a&&"color"in a?a?.color:void 0,l=a&&"outline"in a?a.outline.color:void 0;z.color=n,z.strokeColor=l}p.classBreakInfos.forEach(e=>{if("cim"===e.symbol.type)D(e.symbol,z);else{const i=z.color??oe(e.symbol,1)??void 0;i&&(e.symbol=G({...z,color:i}))}})}else if("unique-value"===p.type){const i=p.uniqueValueGroups,a=p.uniqueValueInfos?.length??0;let n=null;if(w){const i=v&&a?await h({numColors:a,geometryType:v,typeScheme:u,view:r.view}):null,s=i?.scheme,l=s&&"colors"in s?s.colors:null;n=l?e(l,a):null;const t=s&&"outline"in s?s.outline.color:void 0;z.strokeColor=t}let s=0;if(i){for(const e of i)for(const i of e.classes??[]){if("cim"===i.symbol?.type)D(i.symbol,{...z,color:n?.[s]});else{const e=n?.[s]??oe(i.symbol,1)??void 0;e&&(i.symbol=G({...z,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})),w&&(d.spikeSymbolStyle=w)),p}async function We(e){const i=await ve(e);return Re(i,await C(ze(i),i.outlineOptimizationEnabled))}async function $e(e){const{renderer:r,creatorParameters:a}=await Se(e),{outlineOptimizationEnabled:n,normalizationType:s,classificationMethod:l}=a,{result:t,outlineResult:o}=await C(ze(a),n),m=t.classBreakInfos;if(a.numClasses!==m.length)throw new i("regenerate-class-breaks-renderer:invalid-parameters","The number of class breaks generated does not match the number of class breaks in the renderer.");return r.classBreakInfos.forEach((e,i)=>{e.minValue=m[i].minValue,e.maxValue=m[i].maxValue,e.label=m[i].label}),r.normalizationTotal="percent-of-total"===s?t.normalizationTotal:void 0,"standard-deviation"!==l&&u({classBreakInfos:r.classBreakInfos,classificationMethod:l,normalizationType:s,round:!0}),T(r,o?.visualVariables,q),{renderer:r}}async function Ae(e){const i=await he(e),{defaultSymbolEnabled:r,view:a,startTime:n,endTime:s,symbolType:l,minValue:t,maxValue:o,signal:u,filter:m,layer:p}=i,[d,c]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await y({view:a,layer:p,startTime:n,endTime:s,minValue:t,maxValue:o,signal:u,filter:m}),i.outlineOptimizationEnabled?v({layer:p,view:a,filter:m,signal:u}).catch(M):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:h}=await W(i,f),b=await De(we({layer:p,basemap:i.basemap,valueExpression:w,symbolType:l,statistics:z,legendOptions:{title:h},theme:i.theme,sizeScheme:i.sizeScheme,sizeOptimizationEnabled:i.sizeOptimizationEnabled,view:i.view,minValue:t,maxValue:o,filter:m,signal:u})),g={layer:p,valueExpression:w,defaultSymbolEnabled:r,symbolType:l},S=await je(b,c,null,null,g),x=S.renderer.authoringInfo?.visualVariables;return x?.forEach(e=>$(e,n,s,f)),{...S,unit:f}}async function He(e){const{renderer:i,creatorParameters:r}=await xe(e),{layer:a,outlineOptimizationEnabled:n,sizeOptimizationEnabled:s,startTime:l,endTime:t,theme:o,view:u,signal:m,filter:p}=r,[d,c]=await Promise.all([y({view:u,layer:a,startTime:l,endTime:t,signal:m,filter:p}),n?v({layer:a,view:u,filter:p,signal:m}).catch(M):null]),{unit:f,statistics:z}=d,{valueExpression:w,title:h}=await W(r,f),b=await De(we({layer:a,valueExpression:w,statistics:z,legendOptions:{title:h},sizeOptimizationEnabled:s,theme:o,view:u,filter:p,signal:m}));T(i,b.visualVariables,j),T(i,c?.visualVariables,q),i.authoringInfo=b.authoringInfo.clone();const g=i.authoringInfo?.visualVariables;return g?.forEach(e=>$(e,l,t,f)),{renderer:i}}export{Ae as createAgeRenderer,We as createClassBreaksRenderer,Ue as createContinuousRenderer,De as createVisualVariables,Be as getSizeStopsForTheme,He as regenerateAgeRenderer,$e as regenerateClassBreaksRenderer,Pe as regenerateContinuousRenderer,Ge as regenerateVisualVariables,Me as updateRendererWithReferenceSize,Ce as updateRendererWithSpike};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../core/Error.js";async function n(n,r){const{layer:i,view:t,forBinning:
|
|
5
|
+
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,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.34/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../core/Error.js";import{getRendererToUpdate as r,getStyleType as
|
|
5
|
+
import e from"../../../core/Error.js";import{getRendererToUpdate as r,getStyleType as a,spliceVisualVariables as t,findSizeVVIndex as n,updateAuthoringInfoVisualVariable as i,getAuthoringInfoVisualVariable as s,hasScaleDependentSizeVV as o}from"./regenerateUtils.js";async function c(t){const n=await r(t),i=a(n),s=t.includedParts,o=s?.includes("size-variable")??!0,c=s?.includes("color-variable")??!0,u=s?.includes("class-breaks")??!0;switch(i){case"color-continuous":{if(!c)return n;const{regenerateContinuousRenderer:e}=await import("../color.js");return(await e(t)).renderer}case"color-class-breaks":{if(!u)return n;const{regenerateClassBreaksRenderer:e}=await import("../color.js");return(await e(t)).renderer}case"color-age":{if(!c)return n;const{regenerateAgeRenderer:e}=await import("../color.js");return(await e(t)).renderer}case"size-continuous":{if(!o)return n;const{regenerateContinuousRenderer:e}=await import("../size.js");return(await e(t)).renderer}case"size-class-breaks":{if(!u)return n;const{regenerateClassBreaksRenderer:e}=await import("../size.js");return(await e(t)).renderer}case"size-age":{if(!o)return n;const{regenerateAgeRenderer:e}=await import("../size.js");return(await e(t)).renderer}case"color-size":{let e=n;if(c){const{regenerateContinuousRenderer:r}=await import("../color.js");e=(await r(t)).renderer}return o?await d(t,e):e}case"type":{const{regenerateRenderer:e}=await import("../type.js");return(await e(t)).renderer}case"type-size":{const{regenerateRenderer:e}=await import("../type.js"),{renderer:r}=await e(t);return o?await d(t,r):r}case"predominance":{const{regenerateRenderer:e}=await import("../predominance.js");return(await e(t)).renderer}case"relationship":{if(!u)return n;const{regenerateRenderer:e}=await import("../relationship.js");return(await e(t)).renderer}case"relationship-size":{let e=n;if(u){const{regenerateRenderer:r}=await import("../relationship.js"),{renderer:a}=await r(t);e=a}return o?await d(t,e):e}case"pie-chart":{const{regenerateRenderer:e}=await import("../pieChart.js");return(await e(t)).renderer}case"dot-density":{const{regenerateRenderer:e}=await import("../dotDensity.js");return(await e(t)).renderer}case"heatmap":{const{regenerateRenderer:e}=await import("../heatmap.js");return(await e(t)).renderer}case"univariate-color-size":{const{regenerateRenderer:e}=await import("../univariateColorSize.js");return(await e(t)).renderer}default:throw new e("regenerate-renderer:invalid-parameters","renderer type not supported")}}async function d(e,r){const{regenerateVisualVariables:a,updateRendererWithReferenceSize:c,updateRendererWithSpike:d}=await import("../size.js"),{visualVariables:u,authoringInfo:p,isGrid:w}=await a({...e,renderer:r});t(r,u,n),i(r,p,"size");const l=s(r,"size","reference-size"),g=s(r,"size","spike");return l||g?g?await d({layer:e.layer,renderer:r,sizeStops:g.sizeStops,forBinning:e.forBinning}):await c({layer:e.layer,renderer:r,sizeStops:l.sizeStops,view:e.view,forBinning:e.forBinning,sizeOptimizationEnabled:o(r),isGrid:w}):r}export{c as regenerateRenderer};
|