@arcgis/core 4.24.0-next.20220511 → 4.24.0-next.20220512
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/assets/components/assets/icon/compactness16.json +1 -0
- package/assets/components/assets/icon/compactness24.json +1 -0
- package/assets/components/assets/icon/compactness32.json +1 -0
- package/assets/components/assets/icon/configure16.json +1 -0
- package/assets/components/assets/icon/configure24.json +1 -0
- package/assets/components/assets/icon/configure32.json +1 -0
- package/assets/components/assets/icon/debugScript16.json +1 -0
- package/assets/components/assets/icon/debugScript24.json +1 -0
- package/assets/components/assets/icon/debugScript32.json +1 -0
- package/assets/components/assets/icon/dissolveFeatures16.json +1 -0
- package/assets/components/assets/icon/dissolveFeatures24.json +1 -0
- package/assets/components/assets/icon/dissolveFeatures32.json +1 -0
- package/assets/components/assets/icon/distanceType16.json +1 -0
- package/assets/components/assets/icon/distanceType24.json +1 -0
- package/assets/components/assets/icon/distanceType32.json +1 -0
- package/assets/components/assets/icon/gridDiamond16.json +1 -0
- package/assets/components/assets/icon/gridDiamond24.json +1 -0
- package/assets/components/assets/icon/gridDiamond32.json +1 -0
- package/assets/components/assets/icon/gridHexagon16.json +1 -0
- package/assets/components/assets/icon/gridHexagon24.json +1 -0
- package/assets/components/assets/icon/gridHexagon32.json +1 -0
- package/assets/components/assets/icon/gridTriangle16.json +1 -0
- package/assets/components/assets/icon/gridTriangle24.json +1 -0
- package/assets/components/assets/icon/gridTriangle32.json +1 -0
- package/assets/components/assets/icon/insets16.json +1 -0
- package/assets/components/assets/icon/insets24.json +1 -0
- package/assets/components/assets/icon/insets32.json +1 -0
- package/assets/components/assets/icon/maximumTerritoryDistance16.json +1 -0
- package/assets/components/assets/icon/maximumTerritoryDistance24.json +1 -0
- package/assets/components/assets/icon/maximumTerritoryDistance32.json +1 -0
- package/assets/components/assets/icon/minDistanceBetweenCenters16.json +1 -0
- package/assets/components/assets/icon/minDistanceBetweenCenters24.json +1 -0
- package/assets/components/assets/icon/minDistanceBetweenCenters32.json +1 -0
- package/assets/components/assets/icon/numberOfTerritories16.json +1 -0
- package/assets/components/assets/icon/numberOfTerritories24.json +1 -0
- package/assets/components/assets/icon/numberOfTerritories32.json +1 -0
- package/assets/components/assets/icon/overlapFeatures16.json +1 -0
- package/assets/components/assets/icon/overlapFeatures24.json +1 -0
- package/assets/components/assets/icon/overlapFeatures32.json +1 -0
- package/assets/components/assets/icon/profileVariables16.json +1 -0
- package/assets/components/assets/icon/profileVariables24.json +1 -0
- package/assets/components/assets/icon/profileVariables32.json +1 -0
- package/assets/components/assets/icon/rasterAnalysis16.json +1 -0
- package/assets/components/assets/icon/rasterAnalysis24.json +1 -0
- package/assets/components/assets/icon/rasterAnalysis32.json +1 -0
- package/assets/components/assets/icon/recurrence16.json +1 -0
- package/assets/components/assets/icon/recurrence24.json +1 -0
- package/assets/components/assets/icon/recurrence32.json +1 -0
- package/assets/components/assets/icon/splitFeatures16.json +1 -0
- package/assets/components/assets/icon/splitFeatures24.json +1 -0
- package/assets/components/assets/icon/splitFeatures32.json +1 -0
- package/assets/components/assets/icon/territoryBufferDistance16.json +1 -0
- package/assets/components/assets/icon/territoryBufferDistance24.json +1 -0
- package/assets/components/assets/icon/territoryBufferDistance32.json +1 -0
- package/assets/components/assets/icon/testData16.json +1 -0
- package/assets/components/assets/icon/testData24.json +1 -0
- package/assets/components/assets/icon/testData32.json +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/07eda3e958d29f86b37e.js +1 -0
- package/assets/esri/core/workers/chunks/0ecaa28b8bff1d779d66.js +1 -0
- package/assets/esri/core/workers/chunks/{adae54f116f311d72d97.js → 1aba8c73c62a64e0658c.js} +1 -1
- package/assets/esri/core/workers/chunks/1d109cd048170e2d529a.js +1 -0
- package/assets/esri/core/workers/chunks/366e5c1abd1ab6d3e548.js +1 -0
- package/assets/esri/core/workers/chunks/3e94e35f44aadbb332ff.js +1 -0
- package/assets/esri/core/workers/chunks/46411f32b29a0e783105.js +1 -0
- package/assets/esri/core/workers/chunks/4d1c87e3e0a02efcc082.js +1 -0
- package/assets/esri/core/workers/chunks/{b089058b64db3912478f.js → 5e46e60fab93ad034d3a.js} +1 -1
- package/assets/esri/core/workers/chunks/6281b15009712a5dee3c.js +1 -0
- package/assets/esri/core/workers/chunks/66f627d68dbb0fdb725f.js +1 -0
- package/assets/esri/core/workers/chunks/672da24bbf86718bf48d.js +1 -0
- package/assets/esri/core/workers/chunks/733625d85602127d62cd.js +1 -0
- package/assets/esri/core/workers/chunks/{c51c9b5da855f84b9a48.js → 7391422fc51acb96a25d.js} +1 -1
- package/assets/esri/core/workers/chunks/{f435dc615fdc8917f6ca.js → 7cf3cff7b28ff007dbad.js} +1 -1
- package/assets/esri/core/workers/chunks/7ea06c86adfc827fda08.js +1 -0
- package/assets/esri/core/workers/chunks/{a054a52712a118c6d505.js → 82bc24bdc9c6ebaf58c0.js} +1 -1
- package/assets/esri/core/workers/chunks/8965ab74e03506e3475e.js +1 -0
- package/assets/esri/core/workers/chunks/{5405f478af3563580926.js → 8b497d9c37a8f577a467.js} +1 -1
- package/assets/esri/core/workers/chunks/919d0d8b1c2176760973.js +1 -0
- package/assets/esri/core/workers/chunks/ab2a0480dc2b608deda3.js +1 -0
- package/assets/esri/core/workers/chunks/ab97a35f7a7d5cf1da19.js +2 -0
- package/assets/esri/core/workers/chunks/{dcd0653191cd4a1ccaae.js.LICENSE.txt → ab97a35f7a7d5cf1da19.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/ae554c88e862a5761f2e.js +1 -0
- package/assets/esri/core/workers/chunks/ae5ce55cd1a32525f101.js +1 -0
- package/assets/esri/core/workers/chunks/b597c04a4abb98e29d1c.js +1 -0
- package/assets/esri/core/workers/chunks/{287c484fd40eee643f3a.js → b78c3e9d31c4a562cdf0.js} +1 -1
- package/assets/esri/core/workers/chunks/be4bf1e4cbe2a593f8b3.js +1 -0
- package/assets/esri/core/workers/chunks/{b7572b0921b23aef8b9d.js → c40d9caf5189be2c698e.js} +1 -1
- package/assets/esri/core/workers/chunks/{b28539c5a6bedb71b038.js → d63f736b3560c577a8a4.js} +1 -1
- package/assets/esri/core/workers/chunks/d869dabe937d3b60504e.js +1 -0
- package/assets/esri/core/workers/chunks/dd6c9a114ad38cf622ba.js +1 -0
- package/assets/esri/core/workers/chunks/e6b0f74226b9394bfa7a.js +1 -0
- package/assets/esri/themes/base/widgets/_Editor.scss +3 -2
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip.json +1 -0
- package/assets/esri/views/interactive/tooltip/t9n/Tooltip_en.json +1 -0
- package/chunks/EdgeShader.glsl.js +3 -4
- package/interfaces.d.ts +463 -30
- package/layers/FeatureLayer.js +1 -1
- package/layers/GeoJSONLayer.js +1 -1
- package/layers/OGCFeatureLayer.js +1 -1
- package/layers/RouteLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/StreamLayer.js +1 -1
- package/layers/SubtypeGroupLayer.js +1 -1
- package/layers/WFSLayer.js +1 -1
- package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/save/featureLayerUtils.js +1 -1
- package/layers/support/AggregateField.d.ts +4 -0
- package/layers/support/AggregateField.js +1 -1
- package/layers/support/FeatureReductionBinning.d.ts +4 -0
- package/layers/support/FeatureReductionBinning.js +1 -1
- package/layers/support/OutStatistic.d.ts +4 -0
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/layers/support/rasterDatasets/ImageServerRaster.js +1 -1
- package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
- package/layers/support/rasterFormats/TiffDecoder.js +1 -1
- package/package.json +3 -3
- package/portal/support/portalItemUtils.js +1 -1
- package/renderers/PieChartRenderer.d.ts +4 -0
- package/renderers/PieChartRenderer.js +5 -0
- package/renderers/Renderer.js +1 -1
- package/renderers/support/AuthoringInfo.js +1 -1
- package/renderers/support/RasterSymbolizer.js +1 -1
- package/renderers/support/clickToleranceUtils.js +1 -1
- package/renderers/support/rasterRendererHelper.js +1 -1
- package/renderers/support/types.js +1 -1
- package/renderers/support/utils.js +1 -1
- package/renderers.js +1 -1
- package/request.js +1 -1
- package/rest/imageService/fetchRasterInfo.js +5 -0
- package/rest/imageService/getCatalogItemRasterInfo.js +5 -0
- package/rest/print.js +1 -1
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/dotDensity.js +1 -1
- package/smartMapping/renderers/heatmap.js +1 -1
- package/smartMapping/renderers/location.js +1 -1
- package/smartMapping/renderers/size.js +1 -1
- package/smartMapping/renderers/type.js +1 -1
- package/support/arcadeUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/symbols/cim/CurveHelper.js +1 -1
- package/symbols/cim/ExpandedCIM.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/symbols/cim/placements/PlacementInsidePolygon.js +1 -1
- package/views/2d/engine/brushes.js +1 -1
- package/views/2d/engine/vectorTiles/GlyphSource.js +1 -1
- package/views/2d/engine/vectorTiles/style/Filter.js +1 -1
- package/views/2d/engine/vectorTiles/style/StyleRepository.js +1 -1
- package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
- package/views/2d/engine/webgl/Painter.js +1 -1
- package/views/2d/engine/webgl/Utils.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLBrushPieChart.js +5 -0
- package/views/2d/engine/webgl/brushes/WGLGeometryBrush.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLGeometryBrushFill.js +1 -1
- package/views/2d/engine/webgl/brushes/WGLGeometryBrushMarker.js +1 -1
- package/views/2d/engine/webgl/color.js +1 -1
- package/views/2d/engine/webgl/definitions.js +1 -1
- package/views/2d/engine/webgl/enums.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLBaseFillTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLBaseLineTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLDynamicFillTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLFillTemplate.js +1 -1
- package/views/2d/engine/webgl/mesh/templates/WGLMarkerTemplate.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/engine/webgl/techniques/dotDensity/TechniqueDotDensity.js +1 -1
- package/views/2d/engine/webgl/techniques/pieChart/TechniquePieChart.js +5 -0
- package/views/2d/engine/webgl/techniques/utils.js +1 -1
- package/views/2d/engine/webgl/util/Matcher.js +1 -1
- package/views/2d/layers/features/schemaUtils.js +1 -1
- package/views/2d/layers/features/support/AttributeStore.js +1 -1
- package/views/2d/layers/features/tileRenderers/SymbolTileRenderer.js +1 -1
- package/views/2d/layers/features/tileRenderers/support/WGLFeatureView.js +1 -1
- package/views/2d/layers/imagery/ImageryTileView2D.js +1 -1
- package/views/3d/analysis/Dimensioning/DimensioningTool.js +1 -1
- package/views/3d/analysis/Dimensioning/LengthDimensionVisualization.js +1 -1
- package/views/3d/environment/SnowyWeather.d.ts +4 -0
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/shader/ComponentData.glsl.js +5 -5
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeShaderTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeUtil.glsl.js +37 -31
- package/views/draw/DrawOperation.js +1 -1
- package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
- package/views/interactive/snapping/SceneSnappingEngine.js +5 -0
- package/views/interactive/snapping/SnappingManager.js +1 -1
- package/views/interactive/snapping/snappingFactory.js +5 -0
- package/views/interactive/tooltip/content/TooltipContent.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawPoint.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawPolygon.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawPolyline.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTranslateVertex.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/Popup/PopupViewModel.js +1 -1
- package/widgets/Popup/actionUtils.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/assets/esri/core/workers/chunks/0564f1cfa3d17ff1aad3.js +0 -1
- package/assets/esri/core/workers/chunks/0806d5d706a864542bfb.js +0 -1
- package/assets/esri/core/workers/chunks/52478ee2d2a1354b6900.js +0 -1
- package/assets/esri/core/workers/chunks/5759af97f96f24c40105.js +0 -1
- package/assets/esri/core/workers/chunks/7bc828fbdd54c0b28aac.js +0 -1
- package/assets/esri/core/workers/chunks/875f26ee040f3d75c0db.js +0 -1
- package/assets/esri/core/workers/chunks/88384e7cafbfd2348598.js +0 -1
- package/assets/esri/core/workers/chunks/89acd5f888d6b8df4aad.js +0 -1
- package/assets/esri/core/workers/chunks/9d7533aaeac3b8d145c4.js +0 -1
- package/assets/esri/core/workers/chunks/a3bb600bfcb0282622f1.js +0 -1
- package/assets/esri/core/workers/chunks/b50ae3dc7e43ff452568.js +0 -1
- package/assets/esri/core/workers/chunks/b5b7bcbc19b3430903ee.js +0 -1
- package/assets/esri/core/workers/chunks/b758f3c419edc2306784.js +0 -1
- package/assets/esri/core/workers/chunks/cf47b605c31063e88357.js +0 -1
- package/assets/esri/core/workers/chunks/cfbb332d144e65a4a55d.js +0 -1
- package/assets/esri/core/workers/chunks/db937849b2c1af87b481.js +0 -1
- package/assets/esri/core/workers/chunks/dc3ed59f450283d97a19.js +0 -1
- package/assets/esri/core/workers/chunks/dcd0653191cd4a1ccaae.js +0 -2
- package/assets/esri/core/workers/chunks/dfb6a28039e5d5ce6fd4.js +0 -1
- package/assets/esri/core/workers/chunks/e4fdd1eaf987977d0a51.js +0 -1
- package/assets/esri/core/workers/chunks/f7e0bb11ba3677069c94.js +0 -1
- package/assets/esri/core/workers/chunks/f7f3dde4c8f9c687cc1e.js +0 -1
- package/assets/esri/core/workers/chunks/fc6beaf9466ea3898549.js +0 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
|
+
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
|
+
*/
|
|
5
|
+
import e from"../../request.js";import t from"../../geometry/Extent.js";import a from"../../geometry/Point.js";import l from"../../geometry/SpatialReference.js";import i from"../../layers/support/RasterInfo.js";import{parseUrl as n,encode as s,asValidOptions as r}from"../utils.js";import o from"../support/FeatureSet.js";async function u(u,m,f){const p=n(u),{renderingRule:d,sourceJSON:c}=m||{},h=d?JSON.stringify(d.rasterFunctionDefinition||d):null,g=s({...p.query,renderingRule:h,f:"json"}),x=r(g,f);u=p.path;const S=c||await e(u,x).then((e=>e.data)),v=S.hasRasterAttributeTable?e(`${u}/rasterAttributeTable`,x):null,y=S.hasColormap?e(`${u}/colormap`,x):null,b=S.hasHistograms?e(`${u}/histograms`,x):null,R=S.currentVersion>=10.3?e(`${u}/keyProperties`,x):null,j=S.hasMultidimensions?e(`${u}/multidimensionalInfo`,x):null,V=await Promise.allSettled([v,y,b,R,j]);let w=null;if(S.minValues&&S.minValues.length===S.bandCount){w=[];for(let e=0;e<S.minValues.length;e++)w.push({min:S.minValues[e],max:S.maxValues[e],avg:S.meanValues[e],stddev:S.stdvValues[e]})}const J=t.fromJSON(S.extent),N=Math.ceil(J.width/S.pixelSizeX-.1),O=Math.ceil(J.height/S.pixelSizeY-.1),z=l.fromJSON(S.spatialReference||S.extent.spatialReference),C="fulfilled"===V[0].status&&V[0].value?o.fromJSON(V[0].value.data):null,T="fulfilled"===V[1].status?V[1].value?.data.colormap:null,$="fulfilled"===V[2].status?V[2].value?.data.histograms:null,I="fulfilled"===V[3].status?V[3].value?.data??{}:{},P="fulfilled"===V[4].status?V[4].value?.data.multidimensionalInfo:null;return P?.variables?.length&&P.variables.forEach((e=>{e.statistics?.length&&e.statistics.forEach((e=>{e.avg=e.mean,e.stddev=e.standardDeviation}))})),new i({width:N,height:O,bandCount:S.bandCount,extent:t.fromJSON(S.extent),spatialReference:z,pixelSize:new a({x:S.pixelSizeX,y:S.pixelSizeY,spatialReference:z}),pixelType:S.pixelType.toLowerCase(),statistics:w,attributeTable:C,colormap:T,histograms:$,keyProperties:I,multidimensionalInfo:P})}function m(e,t,a){return u(e,{sourceJSON:t},a)}function f(e,t,a){return u(e,{renderingRule:t},a)}export{m as fetchServiceRasterInfo,f as generateRasterInfo};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
|
+
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
|
+
*/
|
|
5
|
+
import e from"../../request.js";import t from"../../geometry/Extent.js";import i from"../../geometry/Point.js";import r from"../../layers/support/RasterInfo.js";import s from"../../layers/support/RasterStorageInfo.js";import{parseUrl as a,encode as l,asValidOptions as o}from"../utils.js";async function n(n,m,p){const f=a(n),u=l({...f.query,f:"json"}),h=o(u,p),d=`${f.path}/${m}/info`,c=e(`${d}`,h),g=e(`${d}/keyProperties`,h),x=await Promise.allSettled([c,g]),y="fulfilled"===x[0].status?x[0].value.data:null,v="fulfilled"===x[1].status?x[1].value.data:null;let P=null;y.statistics?.length&&(P=y.statistics.map((e=>({min:e[0],max:e[1],avg:e[2],stddev:e[3]}))));const S=t.fromJSON(y.extent),j=Math.ceil(S.width/y.pixelSizeX-.1),w=Math.ceil(S.height/y.pixelSizeY-.1),b=S.spatialReference,k=new i({x:y.pixelSizeX,y:y.pixelSizeY,spatialReference:b}),z=y.histograms?.length?y.histograms:null,L=new s({origin:y.origin,blockWidth:y.blockWidth,blockHeight:y.blockHeight,firstPyramidLevel:y.firstPyramidLevel,maximumPyramidLevel:y.maxPyramidLevel});return new r({width:j,height:w,bandCount:y.bandCount,extent:S,spatialReference:b,pixelSize:k,pixelType:y.pixelType.toLowerCase(),statistics:P,histograms:z,keyProperties:v,storageInfo:L})}export{n as getCatalogItemRasterInfo};
|
package/rest/print.js
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.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../config.js";import{id as t}from"../kernel.js";import i from"../request.js";import r from"../core/Error.js";import{JSONMap as a}from"../core/jsonMap.js";import{isSome as n}from"../core/maybe.js";import{createScreenPoint as s,pt2px as o,px2pt as l}from"../core/screenUtils.js";import{normalize as c,dataComponents as y}from"../core/urlUtils.js";import u from"../geometry/Polygon.js";import{collectLabelingFields as m}from"../layers/support/fieldUtils.js";import{getFloorFilterClause as f}from"../layers/support/floorFilterUtils.js";import{getSizeRangeAtScale as p}from"../renderers/visualVariables/support/visualVariableUtils.js";import{execute as d}from"./geoprocessor/execute.js";import{submitJob as g}from"./geoprocessor/submitJob.js";import{toJSON as b}from"./support/fileFormat.js";import{toJSON as h}from"./support/layoutTemplate.js";import{getVisibleLayerViews as w,isScreenshotRequired as S,isBingMapsLayer as x,isCSVLayer as v,isBlendLayer as D,applyVisualVariables as I,getContextBoundingBox as L,createPolygonLayer as T,createPolylineLayer as E,createPointLayer as M,createMultipointLayer as V}from"./support/printTaskUtils.js";import O from"./support/PrintTemplate.js";import{supportsApiKey as P}from"../support/apiKeyUtils.js";const F={Feet:"ft",Kilometers:"km",Meters:"m",Miles:"mi"},N=new a({esriFeet:"Feet",esriKilometers:"Kilometers",esriMeters:"Meters",esriMiles:"Miles"}),R=new a({esriExecutionTypeSynchronous:"sync",esriExecutionTypeAsynchronous:"async"}),U=new Map;async function j(e,t,r){const a=C(e);let n=U.get(a);return Promise.resolve().then((()=>n?{data:n.gpMetadata}:(n={gpServerUrl:a,is11xService:!1,legendLayerNameMap:{},legendLayers:[]},i(a,{query:{f:"json"}})))).then((e=>(n.gpMetadata=e.data,n.cimVersion=n.gpMetadata.cimVersion,n.is11xService=!!n.cimVersion,U.set(a,n),A(t,n)))).then((i=>{const a=me(n);let s;const o=e=>"sync"===a?e.results&&e.results[0]&&e.results[0].value:s.fetchResultData("Output_File",null,r).then((e=>e.value));return"async"===a?g(e,i,null,r).then((e=>(s=e,e.waitForJobCompletion({interval:t.updateDelay}).then(o)))):d(e,i,null,r).then(o)}))}async function J(e){const t=C(e);return me(U.get(t))}async function A(e,t){t=t||{is11xService:!1,legendLayerNameMap:{},legendLayers:[]};const i=e.template||new O;null==i.showLabels&&(i.showLabels=!0);const a=i.exportOptions;let n;const s=h(i.layout);if(a){if(n={dpi:a.dpi},"map_only"===s.toLowerCase()||""===s){const e=a.width,t=a.height;n.outputSize=[e,t]}}const o=i.layoutOptions;let l;if(o){let e,t;"Miles"===o.scalebarUnit||"Kilometers"===o.scalebarUnit?(e="Kilometers",t="Miles"):"Meters"!==o.scalebarUnit&&"Feet"!==o.scalebarUnit||(e="Meters",t="Feet"),l={titleText:o.titleText,authorText:o.authorText,copyrightText:o.copyrightText,customTextElements:o.customTextElements,scaleBarOptions:{metricUnit:N.toJSON(e),metricLabel:F[e],nonMetricUnit:N.toJSON(t),nonMetricLabel:F[t]}}}let c=null;o?.legendLayers&&(c=o.legendLayers.map((e=>{t.legendLayerNameMap[e.layerId]=e.title;const i={id:e.layerId};return e.subLayerIds&&(i.subLayerIds=e.subLayerIds),i})));const y=await k(e,i,t);if(y.operationalLayers){const e=new RegExp("[\\u4E00-\\u9FFF\\u0E00-\\u0E7F\\u0900-\\u097F\\u3040-\\u309F\\u30A0-\\u30FF\\u31F0-\\u31FF]"),i=/[\u0600-\u06FF]/,a=t=>{const r=t.text,a=t.font,n=a&&a.family&&a.family.toLowerCase();r&&a&&("arial"===n||"arial unicode ms"===n)&&(a.family=e.test(r)?"Arial Unicode MS":"Arial","normal"!==a.style&&i.test(r)&&(a.family="Arial Unicode MS"))},n=()=>{throw new r("print:cim-symbol-unsupported","CIMSymbol is not supported by a print service published from ArcMap")};y.operationalLayers.forEach((e=>{e.featureCollection?.layers?e.featureCollection.layers.forEach((e=>{if(e.layerDefinition?.drawingInfo?.renderer?.symbol){const i=e.layerDefinition.drawingInfo.renderer;"esriTS"===i.symbol.type?a(i.symbol):"CIMSymbolReference"!==i.symbol.type||t.is11xService||n()}e.featureSet?.features&&e.featureSet.features.forEach((e=>{e.symbol&&("esriTS"===e.symbol.type?a(e.symbol):"CIMSymbolReference"!==e.symbol.type||t.is11xService||n())}))})):!t.is11xService&&e.layerDefinition?.drawingInfo?.renderer&&JSON.stringify(e.layerDefinition.drawingInfo.renderer).includes('"type":"CIMSymbolReference"')&&n()}))}e.outSpatialReference&&(y.mapOptions.spatialReference=e.outSpatialReference.toJSON()),Object.assign(y,{exportOptions:n,layoutOptions:l||{}}),Object.assign(y.layoutOptions,{legendOptions:{operationalLayers:null!=c?c:t.legendLayers.slice()}}),t.legendLayers.length=0,U.set(t.gpServerUrl,t);const u={Web_Map_as_JSON:JSON.stringify(y),Format:b(i.format),Layout_Template:s};return e.extraParameters&&Object.assign(u,e.extraParameters),u}async function k(e,t,i){const r=e.view;let a=r.spatialReference;const s={operationalLayers:await z(r,t,i)};let o=i.ssExtent||e.extent||r.extent;if(a&&a.isWrappable&&(o=o.clone()._normalize(!0),a=o.spatialReference),s.mapOptions={extent:o&&o.toJSON(),spatialReference:a&&a.toJSON(),showAttribution:t.attributionVisible},i.ssExtent=null,r.background&&(s.background=r.background.toJSON()),r.rotation&&(s.mapOptions.rotation=-r.rotation),t.scalePreserved&&(s.mapOptions.scale=t.outScale||r.scale),n(r.timeExtent)){const e=n(r.timeExtent.start)?r.timeExtent.start.getTime():null,t=n(r.timeExtent.end)?r.timeExtent.end.getTime():null;s.mapOptions.time=[e,t]}return s}function C(e){let t=e;const i=t.lastIndexOf("/GPServer/");return i>0&&(t=t.slice(0,i+9)),t}async function z(e,t,i){const r=[],a={layerView:null,printTemplate:t,view:e};let n=0;t.scalePreserved&&(n=t.outScale||e.scale);const s=w(e,n);for(const o of s){const e=o.layer;if(!e.loaded||"group"===e?.type)continue;let t;a.layerView=o,t=S(o)?await ee(e,a,i):x(e)?$(e):v(e)?await K(e,a,i):"feature"===e?.type?await q(e,a,i):"geojson"===e?.type?await W(e,a,i):"graphics"===e?.type?await B(e,a,i):"imagery"===e?.type?G(e,i):"imagery-tile"===e?.type?await Q(e,a,i):"kml"===e?.type?await H(e,a,i):"map-image"===e?.type?X(e,a,i):"map-notes"===e?.type?await Y(a,i):"open-street-map"===e?.type?Z():"stream"===e?.type?await te(e,a,i):"tile"===e?.type?ie(e,i):"vector-tile"===e?.type?await re(e,a,i):"web-tile"===e?.type?ae(e):"wms"===e?.type?ne(e):"wmts"===e?.type?se(e):await ee(e,a,i),t&&(Array.isArray(t)?r.push(...t):(t.id=e.id,t.title=i.legendLayerNameMap[e.id]||e.title,t.opacity=e.opacity,t.minScale=e.minScale||0,t.maxScale=e.maxScale||0,D(e)&&e.blendMode&&"normal"!==e.blendMode&&(t.blendMode=e.blendMode),r.push(t)))}if(n&&r.forEach((e=>{e.minScale=0,e.maxScale=0})),e.graphics&&e.graphics.length){const a=await _(null,e.graphics,t,i);a&&r.push(a)}return r}function $(e){return{culture:e.culture,key:e.key,type:"BingMaps"+("aerial"===e.style?"Aerial":"hybrid"===e.style?"Hybrid":"Road")}}async function K(e,t,i){e.legendEnabled&&i.legendLayers.push({id:e.id});const r=t.layerView,a=t.printTemplate;let n;if(!i.is11xService||r.filter){return _(e,await ue(r),a,i)}return n={type:"CSV"},e.write(n,{origin:"web-map"}),delete n.popupInfo,delete n.layerType,n.showLabels=a.showLabels&&e.labelsVisible,n}async function _(e,t,i,r){let a;const n=T(),s=E(),o=M(),l=V(),c=M();if(c.layerDefinition.name="textLayer",delete c.layerDefinition.drawingInfo,e){if("esri.layers.FeatureLayer"===e.declaredClass||"esri.layers.StreamLayer"===e.declaredClass?n.layerDefinition.name=s.layerDefinition.name=o.layerDefinition.name=l.layerDefinition.name=r.legendLayerNameMap[e.id]||e.get("arcgisProps.title")||e.title:"esri.layers.GraphicsLayer"===e.declaredClass&&(t=e.graphics.items),e.renderer){const t=e.renderer.toJSON();n.layerDefinition.drawingInfo.renderer=t,s.layerDefinition.drawingInfo.renderer=t,o.layerDefinition.drawingInfo.renderer=t,l.layerDefinition.drawingInfo.renderer=t}if(i.showLabels&&e.labelsVisible&&"function"==typeof e.write){const t=e.write({},{origin:"web-map"}).layerDefinition?.drawingInfo?.labelingInfo;t&&(a=!0,n.layerDefinition.drawingInfo.labelingInfo=t,s.layerDefinition.drawingInfo.labelingInfo=t,o.layerDefinition.drawingInfo.labelingInfo=t,l.layerDefinition.drawingInfo.labelingInfo=t)}}let y;e?.renderer||a||(delete n.layerDefinition.drawingInfo,delete s.layerDefinition.drawingInfo,delete o.layerDefinition.drawingInfo,delete l.layerDefinition.drawingInfo);const f=e?.fieldsIndex,p=e?.renderer;if(f){const t=new Set;a&&await m(t,e),p&&"function"==typeof p.collectRequiredFields&&await p.collectRequiredFields(t,f),y=Array.from(t);const i=f.fields.map((e=>e.toJSON()));n.layerDefinition.fields=i,s.layerDefinition.fields=i,o.layerDefinition.fields=i,l.layerDefinition.fields=i}const d=t&&t.length;let g;for(let m=0;m<d;m++){const a=t[m]||t.getItemAt(m);if(!1===a.visible||!a.geometry)continue;if(g=a.toJSON(),g.hasOwnProperty("popupTemplate")&&delete g.popupTemplate,g.geometry&&g.geometry.z&&delete g.geometry.z,g.symbol&&g.symbol.outline&&"esriCLS"===g.symbol.outline.type&&!r.is11xService)continue;!r.is11xService&&g.symbol&&g.symbol.outline&&g.symbol.outline.color&&g.symbol.outline.color[3]&&(g.symbol.outline.color[3]=255);const f=e&&e.renderer&&("valueExpression"in e.renderer&&e.renderer.valueExpression||"hasVisualVariables"in e.renderer&&e.renderer.hasVisualVariables());if(!g.symbol&&e&&e.renderer&&f&&!r.is11xService){const t=e.renderer,i=await t.getSymbolAsync(a);if(!i)continue;g.symbol=i.toJSON(),"hasVisualVariables"in t&&t.hasVisualVariables()&&I(g.symbol,{renderer:t,graphic:a,symbol:i})}if(g.symbol&&(g.symbol.angle||delete g.symbol.angle,fe(g.symbol)?g.symbol=await ce(g.symbol,r):g.symbol.text&&delete g.attributes),(!i||!i.forceFeatureAttributes)&&y?.length){const e={};y.forEach((t=>{g.attributes&&g.attributes.hasOwnProperty(t)&&(e[t]=g.attributes[t])})),g.attributes=e}"polygon"===a.geometry.type?n.featureSet.features.push(g):"polyline"===a.geometry.type?s.featureSet.features.push(g):"point"===a.geometry.type?g.symbol&&g.symbol.text?c.featureSet.features.push(g):o.featureSet.features.push(g):"multipoint"===a.geometry.type?l.featureSet.features.push(g):"extent"===a.geometry.type&&(g.geometry=u.fromExtent(a.geometry).toJSON(),n.featureSet.features.push(g))}const b=[n,s,l,o,c].filter((e=>e.featureSet.features.length>0));for(const u of b){const e=u.featureSet.features.every((e=>e.symbol));!e||i&&i.forceFeatureAttributes||u.featureSet.features.forEach((e=>{delete e.attributes})),e&&delete u.layerDefinition.drawingInfo,u.layerDefinition.drawingInfo&&u.layerDefinition.drawingInfo.renderer&&await ye(u.layerDefinition.drawingInfo.renderer,r)}return b.length?{featureCollection:{layers:b},showLabels:a}:null}async function q(e,t,i){let r;const a=e.renderer,n=parseFloat(i.cimVersion);if(e.featureReduction&&(!i.is11xService||n<2.9)||"dot-density"===a?.type&&(!i.is11xService||n<2.6))return ee(e,t,i);e.legendEnabled&&i.legendLayers.push({id:e.id});const s=t.layerView,{printTemplate:o,view:l}=t,c=a&&("valueExpression"in a&&a.valueExpression||"hasVisualVariables"in a&&a.hasVisualVariables()),y="feature-layer"!==e.source?.type&&"ogc-feature"!==e.source?.type;if(!i.is11xService&&c||s.filter||y||!a||"field"in a&&null!=a.field&&("string"!=typeof a.field||!e.getField(a.field))){const t=await ue(s);r=await _(e,t,o,i)}else{if(r={id:(u=e.write()).id,title:u.title,opacity:u.opacity,minScale:u.minScale,maxScale:u.maxScale,url:u.url,layerType:u.layerType,customParameters:u.customParameters,layerDefinition:u.layerDefinition},r.showLabels=o.showLabels&&e.labelsVisible,oe(r,e),r.layerDefinition?.drawingInfo?.renderer&&(delete r.layerDefinition.minScale,delete r.layerDefinition.maxScale,await ye(r.layerDefinition.drawingInfo.renderer,i),"visualVariables"in a&&a.visualVariables&&a.visualVariables[0])){const e=a.visualVariables[0];if("size"===e.type&&e.maxSize&&"number"!=typeof e.maxSize&&e.minSize&&"number"!=typeof e.minSize){const t=p(e,l.scale);r.layerDefinition.drawingInfo.renderer.visualVariables[0].minSize=t.minSize,r.layerDefinition.drawingInfo.renderer.visualVariables[0].maxSize=t.maxSize}}const t=f(s);t&&(r.layerDefinition||(r.layerDefinition={}),r.layerDefinition.definitionExpression=r.layerDefinition.definitionExpression?`(${r.layerDefinition.definitionExpression}) AND (${t})`:t)}var u;return r}async function W(e,{layerView:t,printTemplate:i},r){e.legendEnabled&&r.legendLayers.push({id:e.id});return _(e,await ue(t),i,r)}async function B(e,{printTemplate:t},i){return _(e,null,t,i)}function G(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});const i={layerType:(r=e.write()).layerType,customParameters:r.customParameters};var r;if(i.bandIds=e.bandIds,i.compressionQuality=e.compressionQuality,i.format=e.format,i.interpolation=e.interpolation,(e.mosaicRule||e.definitionExpression)&&(i.mosaicRule=e.exportImageServiceParameters.mosaicRule.toJSON()),e.renderingRule||e.renderer)if(t.is11xService)e.renderingRule&&(i.renderingRule=e.renderingRule.toJSON()),e.renderer&&(i.layerDefinition=i.layerDefinition||{},i.layerDefinition.drawingInfo=i.layerDefinition.drawingInfo||{},i.layerDefinition.drawingInfo.renderer=e.renderer.toJSON());else{const t=e.exportImageServiceParameters.combineRendererWithRenderingRule();t&&(i.renderingRule=t.toJSON())}return oe(i,e),i}async function Q(e,t,i){if("flow"===e.renderer?.type)return ee(e,t,i);e.legendEnabled&&i.legendLayers.push({id:e.id});const r={bandIds:(a=e.write()||{}).bandIds,customParameters:a.customParameters,interpolation:a.interpolation,layerDefinition:a.layerDefinition};var a;return r.layerType="ArcGISImageServiceLayer",oe(r,e),r}async function H(e,t,i){const r=t.printTemplate;if(i.is11xService){const t={type:"kml"};return e.write(t,{origin:"web-map"}),delete t.layerType,t.url=c(e.url),t}{const a=[],n=t.layerView;n.allVisibleMapImages.forEach(((t,i)=>{const r={id:`${e.id}_image${i}`,type:"image",title:e.id,minScale:e.minScale||0,maxScale:e.maxScale||0,opacity:e.opacity,extent:t.extent};"data:image/png;base64,"===t.href.substr(0,22)?r.imageData=t.href.substr(22):r.url=t.href,a.push(r)}));const s=[...n.allVisiblePoints.items,...n.allVisiblePolylines.items,...n.allVisiblePolygons.items],o={id:e.id,...await _(null,s,r,i)};return a.push(o),a}}function X(e,{view:t},i){let r;const a={id:e.id,subLayerIds:[]};let n=[];const s=t.scale,o=e=>{const t=0===s,i=0===e.minScale||s<=e.minScale,r=0===e.maxScale||s>=e.maxScale;if(e.visible&&(t||i&&r))if(e.sublayers)e.sublayers.forEach(o);else{const t=e.toExportImageJSON(),i={id:e.id,name:e.title,layerDefinition:{drawingInfo:t.drawingInfo,definitionExpression:t.definitionExpression,source:t.source}};n.unshift(i),a.subLayerIds.push(e.id)}};var l;return e.sublayers&&e.sublayers.forEach(o),n.length&&(n=n.map((({id:e,name:t,layerDefinition:i})=>({id:e,name:t,layerDefinition:i}))),r={layerType:(l=e.write()).layerType,customParameters:l.customParameters},r.layers=n,r.visibleLayers=e.capabilities.exportMap.supportsDynamicLayers?void 0:a.subLayerIds,oe(r,e),e.legendEnabled&&i.legendLayers.push(a)),r}async function Y({layerView:e,printTemplate:t},i){const r=[],a=e.layer;if(n(a.featureCollections))for(const n of a.featureCollections){const e=await _(n,n.source,t,i);e&&r.push(...e.featureCollection.layers)}else if(n(a.sublayers))for(const n of a.sublayers){const e=await _(null,n.graphics,t,i);e&&r.push(...e.featureCollection.layers)}return{featureCollection:{layers:r}}}function Z(){return{type:"OpenStreetMap"}}async function ee(e,{printTemplate:t,view:i},r){const a={type:"image"},n={format:"png",ignoreBackground:!0,layers:[e],rotation:0},o=r.ssExtent||i.extent.clone();let l=96,c=!0,u=!0;if(t.exportOptions){const e=t.exportOptions;e.dpi>0&&(l=e.dpi),e.width>0&&(c=e.width%2==i.width%2),e.height>0&&(u=e.height%2==i.height%2)}if("map-only"===t.layout&&t.scalePreserved&&(!t.outScale||t.outScale===i.scale)&&96===l&&(!c||!u)&&(n.area={x:0,y:0,width:i.width,height:i.height},c||(n.area.width-=1),u||(n.area.height-=1),!r.ssExtent)){const e=i.toMap(s(n.area.width,n.area.height));o.ymin=e.y,o.xmax=e.x,r.ssExtent=o}a.extent=o.clone()._normalize(!0).toJSON();const m=await i.takeScreenshot(n),{data:f}=y(m.dataUrl);return a.imageData=f,a}async function te(e,{layerView:t,printTemplate:i},r){e.legendEnabled&&r.legendLayers.push({id:e.id});return _(e,await ue(t),i,r)}function ie(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});const i={layerType:(r=e.write()).layerType,customParameters:r.customParameters};var r;return oe(i,e),i}async function re(e,t,i){if(i.is11xService&&e.serviceUrl&&e.styleUrl){const t=le(e.styleUrl,e.apiKey),r=le(e.serviceUrl,e.apiKey);if(!t&&!r||"2.1.0"!==i.cimVersion){const i={type:"VectorTileLayer"};return i.styleUrl=c(e.styleUrl),i.token=t,r!==t&&(i.additionalTokens=[{url:e.serviceUrl,token:r}]),i}}return ee(e,t,i)}function ae(e){const t={type:"WebTiledLayer",urlTemplate:e.urlTemplate.replace(/\${/g,"{"),credits:e.copyright};return e.subDomains&&e.subDomains.length>0&&(t.subDomains=e.subDomains),t}function ne(e){let t;const i=[],r=e=>{e.visible&&(e.sublayers?e.sublayers.forEach(r):e.name&&i.unshift(e.name))};return e.sublayers&&e.sublayers.forEach(r),i.length&&(t={type:"wms",customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,transparentBackground:e.imageTransparency,visibleLayers:i,url:c(e.url),version:e.version}),t}function se(e){const t=e.activeLayer;return{type:"wmts",customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,format:t.imageFormat,layer:t.id,style:t.styleId,tileMatrixSet:t.tileMatrixSetId,url:c(e.url)}}function oe(e,t){t.url&&(e.url=c(e.url||t.url),e.token=le(e.url,t.apiKey))}function le(i,r){return P(i)&&(r||e.apiKey)?r||e.apiKey:t?.findCredential(i)?.token}async function ce(e,t){t.canvas||(t.canvas=document.createElement("canvas"));const r=1024;t.canvas.width=r,t.canvas.height=r;const a=t.canvas.getContext("2d");let n,s;if(e.path){const t=new Path2D(e.path);t.closePath(),a.fillStyle=Array.isArray(e.color)?`rgba(${e.color[0]},${e.color[1]},${e.color[2]},${e.color[3]/255})`:"rgb(0,0,0)",a.fill(t);const i=L(a);if(!i)return null;a.clearRect(0,0,r,r);const l=o(e.size)/Math.max(i.width,i.height);a.scale(l,l);const c=r/l,y=c/2-i.width/2-i.x,u=c/2-i.height/2-i.y;if(a.translate(y,u),Array.isArray(e.color)&&a.fill(t),e.outline?.width&&Array.isArray(e.outline.color)){const r=e.outline;a.lineWidth=o(r.width)/l,a.lineJoin="round",a.strokeStyle=`rgba(${r.color[0]},${r.color[1]},${r.color[2]},${r.color[3]/255})`,a.stroke(t),i.width+=a.lineWidth,i.height+=a.lineWidth}i.width*=l,i.height*=l;const m=a.getImageData(r/2-i.width/2,r/2-i.height/2,Math.ceil(i.width),Math.ceil(i.height));n=m.width,s=m.height,a.canvas.width=n,a.canvas.height=s,a.putImageData(m,0,0)}else{const t="image/svg+xml"===e.contentType?"data:image/svg+xml;base64,"+e.imageData:e.url,r=(await i(t,{responseType:"image"})).data;n=o(e.width),s=o(e.height),a.canvas.width=n,a.canvas.height=s,a.drawImage(r,0,0,a.canvas.width,a.canvas.height)}return{type:"esriPMS",imageData:a.canvas.toDataURL("image/png").substr(22),angle:e.angle,contentType:"image/png",height:l(s),width:l(n),xoffset:e.xoffset,yoffset:e.yoffset}}async function ye(e,t){const i=e.type;if("simple"===i&&fe(e.symbol))e.symbol=await ce(e.symbol,t);else if("uniqueValue"===i||"classBreaks"===i){fe(e.defaultSymbol)&&(e.defaultSymbol=await ce(e.defaultSymbol,t));const r=e["uniqueValue"===i?"uniqueValueInfos":"classBreakInfos"];if(r)for(const e of r)fe(e.symbol)&&(e.symbol=await ce(e.symbol,t))}}async function ue(e){return e.queryFeatures(e.createQuery()).then((e=>e.features))}function me(e){return e.gpMetadata&&e.gpMetadata.executionType?R.fromJSON(e.gpMetadata.executionType):"sync"}function fe(e){return e&&(e.path||"image/svg+xml"===e.contentType||e.url&&e.url.endsWith(".svg"))}export{j as execute,A as getGpPrintParams,C as getGpServerUrl,J as getMode,U as printCacheMap};
|
|
5
|
+
import e from"../config.js";import{id as t}from"../kernel.js";import i from"../request.js";import r from"../core/Error.js";import{JSONMap as a}from"../core/jsonMap.js";import{isSome as n}from"../core/maybe.js";import{createScreenPoint as s,pt2px as o,px2pt as l}from"../core/screenUtils.js";import{normalize as c,dataComponents as y}from"../core/urlUtils.js";import u from"../geometry/Polygon.js";import{collectLabelingFields as m}from"../layers/support/fieldUtils.js";import{getFloorFilterClause as f}from"../layers/support/floorFilterUtils.js";import{getSizeRangeAtScale as p}from"../renderers/visualVariables/support/visualVariableUtils.js";import{execute as d}from"./geoprocessor/execute.js";import{submitJob as g}from"./geoprocessor/submitJob.js";import{toJSON as b}from"./support/fileFormat.js";import{toJSON as h}from"./support/layoutTemplate.js";import{getVisibleLayerViews as w,isScreenshotRequired as S,isBingMapsLayer as x,isCSVLayer as v,isBlendLayer as D,applyVisualVariables as I,getContextBoundingBox as L,createPolygonLayer as T,createPolylineLayer as E,createPointLayer as M,createMultipointLayer as O}from"./support/printTaskUtils.js";import V from"./support/PrintTemplate.js";import{supportsApiKey as P}from"../support/apiKeyUtils.js";const F={Feet:"ft",Kilometers:"km",Meters:"m",Miles:"mi"},R=new a({esriFeet:"Feet",esriKilometers:"Kilometers",esriMeters:"Meters",esriMiles:"Miles"}),N=new a({esriExecutionTypeSynchronous:"sync",esriExecutionTypeAsynchronous:"async"}),U=new Map;async function j(e,t,r){const a=C(e);let n=U.get(a);return Promise.resolve().then((()=>n?{data:n.gpMetadata}:(n={gpServerUrl:a,is11xService:!1,legendLayerNameMap:{},legendLayers:[]},i(a,{query:{f:"json"}})))).then((e=>(n.gpMetadata=e.data,n.cimVersion=n.gpMetadata.cimVersion,n.is11xService=!!n.cimVersion,U.set(a,n),A(t,n)))).then((i=>{const a=me(n);let s;const o=e=>"sync"===a?e.results&&e.results[0]&&e.results[0].value:s.fetchResultData("Output_File",null,r).then((e=>e.value));return"async"===a?g(e,i,null,r).then((e=>(s=e,e.waitForJobCompletion({interval:t.updateDelay}).then(o)))):d(e,i,null,r).then(o)}))}async function J(e){const t=C(e);return me(U.get(t))}async function A(e,t){t=t||{is11xService:!1,legendLayerNameMap:{},legendLayers:[]};const i=e.template||new V;null==i.showLabels&&(i.showLabels=!0);const a=i.exportOptions;let n;const s=h(i.layout);if(a){if(n={dpi:a.dpi},"map_only"===s.toLowerCase()||""===s){const e=a.width,t=a.height;n.outputSize=[e,t]}}const o=i.layoutOptions;let l;if(o){let e,t;"Miles"===o.scalebarUnit||"Kilometers"===o.scalebarUnit?(e="Kilometers",t="Miles"):"Meters"!==o.scalebarUnit&&"Feet"!==o.scalebarUnit||(e="Meters",t="Feet"),l={titleText:o.titleText,authorText:o.authorText,copyrightText:o.copyrightText,customTextElements:o.customTextElements,elementOverrides:o.elementOverrides,scaleBarOptions:{metricUnit:R.toJSON(e),metricLabel:F[e],nonMetricUnit:R.toJSON(t),nonMetricLabel:F[t]}}}let c=null;o?.legendLayers&&(c=o.legendLayers.map((e=>{t.legendLayerNameMap[e.layerId]=e.title;const i={id:e.layerId};return e.subLayerIds&&(i.subLayerIds=e.subLayerIds),i})));const y=await k(e,i,t);if(y.operationalLayers){const e=new RegExp("[\\u4E00-\\u9FFF\\u0E00-\\u0E7F\\u0900-\\u097F\\u3040-\\u309F\\u30A0-\\u30FF\\u31F0-\\u31FF]"),i=/[\u0600-\u06FF]/,a=t=>{const r=t.text,a=t.font,n=a&&a.family&&a.family.toLowerCase();r&&a&&("arial"===n||"arial unicode ms"===n)&&(a.family=e.test(r)?"Arial Unicode MS":"Arial","normal"!==a.style&&i.test(r)&&(a.family="Arial Unicode MS"))},n=()=>{throw new r("print:cim-symbol-unsupported","CIMSymbol is not supported by a print service published from ArcMap")};y.operationalLayers.forEach((e=>{e.featureCollection?.layers?e.featureCollection.layers.forEach((e=>{if(e.layerDefinition?.drawingInfo?.renderer?.symbol){const i=e.layerDefinition.drawingInfo.renderer;"esriTS"===i.symbol.type?a(i.symbol):"CIMSymbolReference"!==i.symbol.type||t.is11xService||n()}e.featureSet?.features&&e.featureSet.features.forEach((e=>{e.symbol&&("esriTS"===e.symbol.type?a(e.symbol):"CIMSymbolReference"!==e.symbol.type||t.is11xService||n())}))})):!t.is11xService&&e.layerDefinition?.drawingInfo?.renderer&&JSON.stringify(e.layerDefinition.drawingInfo.renderer).includes('"type":"CIMSymbolReference"')&&n()}))}e.outSpatialReference&&(y.mapOptions.spatialReference=e.outSpatialReference.toJSON()),Object.assign(y,{exportOptions:n,layoutOptions:l||{}}),Object.assign(y.layoutOptions,{legendOptions:{operationalLayers:null!=c?c:t.legendLayers.slice()}}),t.legendLayers.length=0,U.set(t.gpServerUrl,t);const u={Web_Map_as_JSON:JSON.stringify(y),Format:b(i.format),Layout_Template:s};return e.extraParameters&&Object.assign(u,e.extraParameters),u}async function k(e,t,i){const r=e.view;let a=r.spatialReference;const s={operationalLayers:await z(r,t,i)};let o=i.ssExtent||e.extent||r.extent;if(a&&a.isWrappable&&(o=o.clone()._normalize(!0),a=o.spatialReference),s.mapOptions={extent:o&&o.toJSON(),spatialReference:a&&a.toJSON(),showAttribution:t.attributionVisible},i.ssExtent=null,r.background&&(s.background=r.background.toJSON()),r.rotation&&(s.mapOptions.rotation=-r.rotation),t.scalePreserved&&(s.mapOptions.scale=t.outScale||r.scale),n(r.timeExtent)){const e=n(r.timeExtent.start)?r.timeExtent.start.getTime():null,t=n(r.timeExtent.end)?r.timeExtent.end.getTime():null;s.mapOptions.time=[e,t]}return s}function C(e){let t=e;const i=t.lastIndexOf("/GPServer/");return i>0&&(t=t.slice(0,i+9)),t}async function z(e,t,i){const r=[],a={layerView:null,printTemplate:t,view:e};let n=0;t.scalePreserved&&(n=t.outScale||e.scale);const s=w(e,n);for(const o of s){const e=o.layer;if(!e.loaded||"group"===e?.type)continue;let t;a.layerView=o,t=S(o)?await ee(e,a,i):x(e)?$(e):v(e)?await K(e,a,i):"feature"===e?.type?await q(e,a,i):"geojson"===e?.type?await W(e,a,i):"graphics"===e?.type?await B(e,a,i):"imagery"===e?.type?G(e,i):"imagery-tile"===e?.type?await Q(e,a,i):"kml"===e?.type?await H(e,a,i):"map-image"===e?.type?X(e,a,i):"map-notes"===e?.type?await Y(a,i):"open-street-map"===e?.type?Z():"stream"===e?.type?await te(e,a,i):"tile"===e?.type?ie(e,i):"vector-tile"===e?.type?await re(e,a,i):"web-tile"===e?.type?ae(e):"wms"===e?.type?ne(e):"wmts"===e?.type?se(e):await ee(e,a,i),t&&(Array.isArray(t)?r.push(...t):(t.id=e.id,t.title=i.legendLayerNameMap[e.id]||e.title,t.opacity=e.opacity,t.minScale=e.minScale||0,t.maxScale=e.maxScale||0,D(e)&&e.blendMode&&"normal"!==e.blendMode&&(t.blendMode=e.blendMode),r.push(t)))}if(n&&r.forEach((e=>{e.minScale=0,e.maxScale=0})),e.graphics&&e.graphics.length){const a=await _(null,e.graphics,t,i);a&&r.push(a)}return r}function $(e){return{culture:e.culture,key:e.key,type:"BingMaps"+("aerial"===e.style?"Aerial":"hybrid"===e.style?"Hybrid":"Road")}}async function K(e,t,i){e.legendEnabled&&i.legendLayers.push({id:e.id});const r=t.layerView,a=t.printTemplate;let n;if(!i.is11xService||r.filter){return _(e,await ue(r),a,i)}return n={type:"CSV"},e.write(n,{origin:"web-map"}),delete n.popupInfo,delete n.layerType,n.showLabels=a.showLabels&&e.labelsVisible,n}async function _(e,t,i,r){let a;const n=T(),s=E(),o=M(),l=O(),c=M();if(c.layerDefinition.name="textLayer",delete c.layerDefinition.drawingInfo,e){if("esri.layers.FeatureLayer"===e.declaredClass||"esri.layers.StreamLayer"===e.declaredClass?n.layerDefinition.name=s.layerDefinition.name=o.layerDefinition.name=l.layerDefinition.name=r.legendLayerNameMap[e.id]||e.get("arcgisProps.title")||e.title:"esri.layers.GraphicsLayer"===e.declaredClass&&(t=e.graphics.items),e.renderer){const t=e.renderer.toJSON();n.layerDefinition.drawingInfo.renderer=t,s.layerDefinition.drawingInfo.renderer=t,o.layerDefinition.drawingInfo.renderer=t,l.layerDefinition.drawingInfo.renderer=t}if(i.showLabels&&e.labelsVisible&&"function"==typeof e.write){const t=e.write({},{origin:"web-map"}).layerDefinition?.drawingInfo?.labelingInfo;t&&(a=!0,n.layerDefinition.drawingInfo.labelingInfo=t,s.layerDefinition.drawingInfo.labelingInfo=t,o.layerDefinition.drawingInfo.labelingInfo=t,l.layerDefinition.drawingInfo.labelingInfo=t)}}let y;e?.renderer||a||(delete n.layerDefinition.drawingInfo,delete s.layerDefinition.drawingInfo,delete o.layerDefinition.drawingInfo,delete l.layerDefinition.drawingInfo);const f=e?.fieldsIndex,p=e?.renderer;if(f){const t=new Set;a&&await m(t,e),p&&"function"==typeof p.collectRequiredFields&&await p.collectRequiredFields(t,f),y=Array.from(t);const i=f.fields.map((e=>e.toJSON()));n.layerDefinition.fields=i,s.layerDefinition.fields=i,o.layerDefinition.fields=i,l.layerDefinition.fields=i}const d=t&&t.length;let g;for(let m=0;m<d;m++){const a=t[m]||t.getItemAt(m);if(!1===a.visible||!a.geometry)continue;if(g=a.toJSON(),g.hasOwnProperty("popupTemplate")&&delete g.popupTemplate,g.geometry&&g.geometry.z&&delete g.geometry.z,g.symbol&&g.symbol.outline&&"esriCLS"===g.symbol.outline.type&&!r.is11xService)continue;!r.is11xService&&g.symbol&&g.symbol.outline&&g.symbol.outline.color&&g.symbol.outline.color[3]&&(g.symbol.outline.color[3]=255);const f=e&&e.renderer&&("valueExpression"in e.renderer&&e.renderer.valueExpression||"hasVisualVariables"in e.renderer&&e.renderer.hasVisualVariables());if(!g.symbol&&e&&e.renderer&&f&&!r.is11xService){const t=e.renderer,i=await t.getSymbolAsync(a);if(!i)continue;g.symbol=i.toJSON(),"hasVisualVariables"in t&&t.hasVisualVariables()&&I(g.symbol,{renderer:t,graphic:a,symbol:i})}if(g.symbol&&(g.symbol.angle||delete g.symbol.angle,fe(g.symbol)?g.symbol=await ce(g.symbol,r):g.symbol.text&&delete g.attributes),(!i||!i.forceFeatureAttributes)&&y?.length){const e={};y.forEach((t=>{g.attributes&&g.attributes.hasOwnProperty(t)&&(e[t]=g.attributes[t])})),g.attributes=e}"polygon"===a.geometry.type?n.featureSet.features.push(g):"polyline"===a.geometry.type?s.featureSet.features.push(g):"point"===a.geometry.type?g.symbol&&g.symbol.text?c.featureSet.features.push(g):o.featureSet.features.push(g):"multipoint"===a.geometry.type?l.featureSet.features.push(g):"extent"===a.geometry.type&&(g.geometry=u.fromExtent(a.geometry).toJSON(),n.featureSet.features.push(g))}const b=[n,s,l,o,c].filter((e=>e.featureSet.features.length>0));for(const u of b){const e=u.featureSet.features.every((e=>e.symbol));!e||i&&i.forceFeatureAttributes||u.featureSet.features.forEach((e=>{delete e.attributes})),e&&delete u.layerDefinition.drawingInfo,u.layerDefinition.drawingInfo&&u.layerDefinition.drawingInfo.renderer&&await ye(u.layerDefinition.drawingInfo.renderer,r)}return b.length?{featureCollection:{layers:b},showLabels:a}:null}async function q(e,t,i){let r;const a=e.renderer,n=parseFloat(i.cimVersion);if("binning"===e.featureReduction?.type||"cluster"===e.featureReduction?.type&&(!i.is11xService||n<2.9)||"dot-density"===a?.type&&(!i.is11xService||n<2.6))return ee(e,t,i);e.legendEnabled&&i.legendLayers.push({id:e.id});const s=t.layerView,{printTemplate:o,view:l}=t,c=a&&("valueExpression"in a&&a.valueExpression||"hasVisualVariables"in a&&a.hasVisualVariables()),y="feature-layer"!==e.source?.type&&"ogc-feature"!==e.source?.type;if(!i.is11xService&&c||s.filter||y||!a||"field"in a&&null!=a.field&&("string"!=typeof a.field||!e.getField(a.field))){const t=await ue(s);r=await _(e,t,o,i)}else{if(r={id:(u=e.write()).id,title:u.title,opacity:u.opacity,minScale:u.minScale,maxScale:u.maxScale,url:u.url,layerType:u.layerType,customParameters:u.customParameters,layerDefinition:u.layerDefinition},r.showLabels=o.showLabels&&e.labelsVisible,oe(r,e),r.layerDefinition?.drawingInfo?.renderer&&(delete r.layerDefinition.minScale,delete r.layerDefinition.maxScale,await ye(r.layerDefinition.drawingInfo.renderer,i),"visualVariables"in a&&a.visualVariables&&a.visualVariables[0])){const e=a.visualVariables[0];if("size"===e.type&&e.maxSize&&"number"!=typeof e.maxSize&&e.minSize&&"number"!=typeof e.minSize){const t=p(e,l.scale);r.layerDefinition.drawingInfo.renderer.visualVariables[0].minSize=t.minSize,r.layerDefinition.drawingInfo.renderer.visualVariables[0].maxSize=t.maxSize}}const t=f(s);t&&(r.layerDefinition||(r.layerDefinition={}),r.layerDefinition.definitionExpression=r.layerDefinition.definitionExpression?`(${r.layerDefinition.definitionExpression}) AND (${t})`:t)}var u;return r}async function W(e,{layerView:t,printTemplate:i},r){e.legendEnabled&&r.legendLayers.push({id:e.id});return _(e,await ue(t),i,r)}async function B(e,{printTemplate:t},i){return _(e,null,t,i)}function G(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});const i={layerType:(r=e.write()).layerType,customParameters:r.customParameters};var r;if(i.bandIds=e.bandIds,i.compressionQuality=e.compressionQuality,i.format=e.format,i.interpolation=e.interpolation,(e.mosaicRule||e.definitionExpression)&&(i.mosaicRule=e.exportImageServiceParameters.mosaicRule.toJSON()),e.renderingRule||e.renderer)if(t.is11xService)e.renderingRule&&(i.renderingRule=e.renderingRule.toJSON()),e.renderer&&(i.layerDefinition=i.layerDefinition||{},i.layerDefinition.drawingInfo=i.layerDefinition.drawingInfo||{},i.layerDefinition.drawingInfo.renderer=e.renderer.toJSON());else{const t=e.exportImageServiceParameters.combineRendererWithRenderingRule();t&&(i.renderingRule=t.toJSON())}return oe(i,e),i}async function Q(e,t,i){if("flow"===e.renderer?.type)return ee(e,t,i);e.legendEnabled&&i.legendLayers.push({id:e.id});const r={bandIds:(a=e.write()||{}).bandIds,customParameters:a.customParameters,interpolation:a.interpolation,layerDefinition:a.layerDefinition};var a;return r.layerType="ArcGISImageServiceLayer",oe(r,e),r}async function H(e,t,i){const r=t.printTemplate;if(i.is11xService){const t={type:"kml"};return e.write(t,{origin:"web-map"}),delete t.layerType,t.url=c(e.url),t}{const a=[],n=t.layerView;n.allVisibleMapImages.forEach(((t,i)=>{const r={id:`${e.id}_image${i}`,type:"image",title:e.id,minScale:e.minScale||0,maxScale:e.maxScale||0,opacity:e.opacity,extent:t.extent};"data:image/png;base64,"===t.href.substr(0,22)?r.imageData=t.href.substr(22):r.url=t.href,a.push(r)}));const s=[...n.allVisiblePoints.items,...n.allVisiblePolylines.items,...n.allVisiblePolygons.items],o={id:e.id,...await _(null,s,r,i)};return a.push(o),a}}function X(e,{view:t},i){let r;const a={id:e.id,subLayerIds:[]};let n=[];const s=t.scale,o=e=>{const t=0===s,i=0===e.minScale||s<=e.minScale,r=0===e.maxScale||s>=e.maxScale;if(e.visible&&(t||i&&r))if(e.sublayers)e.sublayers.forEach(o);else{const t=e.toExportImageJSON(),i={id:e.id,name:e.title,layerDefinition:{drawingInfo:t.drawingInfo,definitionExpression:t.definitionExpression,source:t.source}};n.unshift(i),a.subLayerIds.push(e.id)}};var l;return e.sublayers&&e.sublayers.forEach(o),n.length&&(n=n.map((({id:e,name:t,layerDefinition:i})=>({id:e,name:t,layerDefinition:i}))),r={layerType:(l=e.write()).layerType,customParameters:l.customParameters},r.layers=n,r.visibleLayers=e.capabilities.exportMap.supportsDynamicLayers?void 0:a.subLayerIds,oe(r,e),e.legendEnabled&&i.legendLayers.push(a)),r}async function Y({layerView:e,printTemplate:t},i){const r=[],a=e.layer;if(n(a.featureCollections))for(const n of a.featureCollections){const e=await _(n,n.source,t,i);e&&r.push(...e.featureCollection.layers)}else if(n(a.sublayers))for(const n of a.sublayers){const e=await _(null,n.graphics,t,i);e&&r.push(...e.featureCollection.layers)}return{featureCollection:{layers:r}}}function Z(){return{type:"OpenStreetMap"}}async function ee(e,{printTemplate:t,view:i},r){const a={type:"image"},n={format:"png",ignoreBackground:!0,layers:[e],rotation:0},o=r.ssExtent||i.extent.clone();let l=96,c=!0,u=!0;if(t.exportOptions){const e=t.exportOptions;e.dpi>0&&(l=e.dpi),e.width>0&&(c=e.width%2==i.width%2),e.height>0&&(u=e.height%2==i.height%2)}if("map-only"===t.layout&&t.scalePreserved&&(!t.outScale||t.outScale===i.scale)&&96===l&&(!c||!u)&&(n.area={x:0,y:0,width:i.width,height:i.height},c||(n.area.width-=1),u||(n.area.height-=1),!r.ssExtent)){const e=i.toMap(s(n.area.width,n.area.height));o.ymin=e.y,o.xmax=e.x,r.ssExtent=o}a.extent=o.clone()._normalize(!0).toJSON();const m=await i.takeScreenshot(n),{data:f}=y(m.dataUrl);return a.imageData=f,a}async function te(e,{layerView:t,printTemplate:i},r){e.legendEnabled&&r.legendLayers.push({id:e.id});return _(e,await ue(t),i,r)}function ie(e,t){e.legendEnabled&&t.legendLayers.push({id:e.id});const i={layerType:(r=e.write()).layerType,customParameters:r.customParameters};var r;return oe(i,e),i}async function re(e,t,i){if(i.is11xService&&e.serviceUrl&&e.styleUrl){const t=le(e.styleUrl,e.apiKey),r=le(e.serviceUrl,e.apiKey);if(!t&&!r||"2.1.0"!==i.cimVersion){const i={type:"VectorTileLayer"};return i.styleUrl=c(e.styleUrl),i.token=t,r!==t&&(i.additionalTokens=[{url:e.serviceUrl,token:r}]),i}}return ee(e,t,i)}function ae(e){const t={type:"WebTiledLayer",urlTemplate:e.urlTemplate.replace(/\${/g,"{"),credits:e.copyright};return e.subDomains&&e.subDomains.length>0&&(t.subDomains=e.subDomains),t}function ne(e){let t;const i=[],r=e=>{e.visible&&(e.sublayers?e.sublayers.forEach(r):e.name&&i.unshift(e.name))};return e.sublayers&&e.sublayers.forEach(r),i.length&&(t={type:"wms",customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,transparentBackground:e.imageTransparency,visibleLayers:i,url:c(e.url),version:e.version}),t}function se(e){const t=e.activeLayer;return{type:"wmts",customLayerParameters:e.customLayerParameters,customParameters:e.customParameters,format:t.imageFormat,layer:t.id,style:t.styleId,tileMatrixSet:t.tileMatrixSetId,url:c(e.url)}}function oe(e,t){t.url&&(e.url=c(e.url||t.url),e.token=le(e.url,t.apiKey))}function le(i,r){return P(i)&&(r||e.apiKey)?r||e.apiKey:t?.findCredential(i)?.token}async function ce(e,t){t.canvas||(t.canvas=document.createElement("canvas"));const r=1024;t.canvas.width=r,t.canvas.height=r;const a=t.canvas.getContext("2d");let n,s;if(e.path){const t=new Path2D(e.path);t.closePath(),a.fillStyle=Array.isArray(e.color)?`rgba(${e.color[0]},${e.color[1]},${e.color[2]},${e.color[3]/255})`:"rgb(0,0,0)",a.fill(t);const i=L(a);if(!i)return null;a.clearRect(0,0,r,r);const l=o(e.size)/Math.max(i.width,i.height);a.scale(l,l);const c=r/l,y=c/2-i.width/2-i.x,u=c/2-i.height/2-i.y;if(a.translate(y,u),Array.isArray(e.color)&&a.fill(t),e.outline?.width&&Array.isArray(e.outline.color)){const r=e.outline;a.lineWidth=o(r.width)/l,a.lineJoin="round",a.strokeStyle=`rgba(${r.color[0]},${r.color[1]},${r.color[2]},${r.color[3]/255})`,a.stroke(t),i.width+=a.lineWidth,i.height+=a.lineWidth}i.width*=l,i.height*=l;const m=a.getImageData(r/2-i.width/2,r/2-i.height/2,Math.ceil(i.width),Math.ceil(i.height));n=m.width,s=m.height,a.canvas.width=n,a.canvas.height=s,a.putImageData(m,0,0)}else{const t="image/svg+xml"===e.contentType?"data:image/svg+xml;base64,"+e.imageData:e.url,r=(await i(t,{responseType:"image"})).data;n=o(e.width),s=o(e.height),a.canvas.width=n,a.canvas.height=s,a.drawImage(r,0,0,a.canvas.width,a.canvas.height)}return{type:"esriPMS",imageData:a.canvas.toDataURL("image/png").substr(22),angle:e.angle,contentType:"image/png",height:l(s),width:l(n),xoffset:e.xoffset,yoffset:e.yoffset}}async function ye(e,t){const i=e.type;if("simple"===i&&fe(e.symbol))e.symbol=await ce(e.symbol,t);else if("uniqueValue"===i||"classBreaks"===i){fe(e.defaultSymbol)&&(e.defaultSymbol=await ce(e.defaultSymbol,t));const r=e["uniqueValue"===i?"uniqueValueInfos":"classBreakInfos"];if(r)for(const e of r)fe(e.symbol)&&(e.symbol=await ce(e.symbol,t))}}async function ue(e){return e.queryFeatures(e.createQuery()).then((e=>e.features))}function me(e){return e.gpMetadata&&e.gpMetadata.executionType?N.fromJSON(e.gpMetadata.executionType):"sync"}function fe(e){return e&&(e.path||"image/svg+xml"===e.contentType||e.url&&e.url.endsWith(".svg"))}export{j as execute,A as getGpPrintParams,C as getGpServerUrl,J as getMode,U as printCacheMap};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import"../../renderers/PointCloudClassBreaksRenderer.js";import"../../renderers/PointCloudRenderer.js";import e from"../../renderers/PointCloudRGBRenderer.js";import o from"../../renderers/PointCloudStretchRenderer.js";import"../../renderers/PointCloudUniqueValueRenderer.js";import i from"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import r from"../../core/Error.js";import{isSome as a}from"../../core/maybe.js";import{fetchMessageBundle as l}from"../../intl/messages.js";import{substitute as n}from"../../intl/substitute.js";import s from"../../renderers/support/AuthoringInfo.js";import t from"../../renderers/support/AuthoringInfoVisualVariable.js";import{createColorStops as m,setLabelsForClassBreaks as d}from"../../renderers/support/utils.js";import u from"../../renderers/visualVariables/ColorVariable.js";import p from"../heuristics/ageUnit.js";import c from"../heuristics/outline.js";import y from"../heuristics/sizeRange.js";import{getSummaryStatistics as f,getClassBreaks as b,getPointSizeAlgorithm as h,formatDate as v,updateAgeRendererAuthoringInfoVV as w,createError as g,verifyBasicFieldValidity as T,isValidPointSize as x,createColors as E,getDefaultDataRange as V,createDefaultStopValues as z,createStopValues as S,getDataRange as M,createDataValues as I,createSymbol as j,getSymbolSizeFromScheme as q,getSymbolOutlineFromScheme as C,getBasemapInfo as O}from"./support/utils.js";import{getAgeExpressions as P,verifyDates as k,supportedAgeUnits as F}from"../statistics/support/ageUtils.js";import{getFieldsList as U,getNormalizationType as R}from"../support/utils.js";import{createLayerAdapter as B,featureCapableLayerTypes as D,getLayerTypeLabels as L,LayerType as A}from"../support/adapters/support/layerUtils.js";import{cloneScheme as G,getSchemes as W,getSchemeById as $}from"../symbology/color.js";const H="date",_="high-to-low",J=2**53-1,K=5;async function N(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new r("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new r("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");const o={...e};if("90-10"===o.theme)throw new r("color-visual-variable:not-supported","Only 'high-to-low', 'above-and-below', 'centered-on', 'extremes', 'above', 'below' themes are supported.");const i=B(o.layer,D);if(o.layer=i,!i)throw new r("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+L(D).join(", "));const l=a(o.signal)?{signal:o.signal}:null;await i.load(l);if("mesh"!==i.geometryType&&o.worldScale&&(!o.view||"3d"!==o.view.type))throw g("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const n=await U({field:o.field,normalizationField:o.normalizationField,valueExpression:o.valueExpression}),s=T(i,n,"color-visual-variable:invalid-parameters");if(s)throw s;return o}async function Q(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new r("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new r("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled=null==o.defaultSymbolEnabled||o.defaultSymbolEnabled;const i=B(o.layer,D);if(o.layer=i,!i)throw new r("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+L(D).join(", "));const l=a(o.signal)?{signal:o.signal}:null;await i.load(l);const n=i.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&o.sizeOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("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 U({field:o.field,normalizationField:o.normalizationField,valueExpression:o.valueExpression}),t=T(i,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return o}async function X(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new r("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new r("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled=null==o.defaultSymbolEnabled||o.defaultSymbolEnabled,o.classificationMethod=o.classificationMethod||"equal-interval",o.normalizationType=R(o);const i=B(o.layer,D);if(o.layer=i,!i)throw new r("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+L(D).join(", "));if(!(null!=o.minValue&&null!=o.maxValue)&&(null!=o.minValue||null!=o.maxValue))throw new r("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const l=a(o.signal)?{signal:o.signal}:null;await i.load(l);const n=i.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("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 U({field:o.field,normalizationField:o.normalizationField}),t=T(i,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return o}function Y(e){const o={...e};delete o.basemap,delete o.colorScheme,delete o.legendOptions,delete o.symbolType,delete o.defaultSymbolEnabled,delete o.colorMixMode,delete o.edgesType;const i=o;return i.analyzeData=!(null!=o.minValue&&null!=o.maxValue),i}function Z(e){if(!e||!e.layer)return Promise.reject(g("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required"));const o={...e},i=[A.PointCloudLayer],r=B(o.layer,i);if(o.layer=r,o.density=o.density||25,o.size=o.size||"100%",!x(o.size))return Promise.reject(g("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'"));if(!r)return Promise.reject(g("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+L(i).join(", ")));const l=a(o.signal)?{signal:o.signal}:null;return r.load(l).then((()=>o))}function ee(e){if(!(e&&e.layer&&e.field))return Promise.reject(g("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required"));const o=e.field.toLowerCase();if("intensity"!==o&&"elevation"!==o)return Promise.reject(g("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'"));const i={...e},r=[A.PointCloudLayer],l=B(i.layer,r);if(i.layer=l,i.density=i.density||25,i.size=i.size||"100%",!x(i.size))return Promise.reject(g("color-point-cloud-continuous-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'"));if(!l)return Promise.reject(g("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+L(r).join(", ")));const n=a(i.signal)?{signal:i.signal}:null;return l.load(n).then((()=>i))}function oe(e){const o={...e},i=o.symbolType.includes("3d-volumetric");delete o.symbolType,delete o.defaultSymbolEnabled,delete o.colorMixMode,delete o.edgesType;const r=o;return r.worldScale=i,r}async function ie(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new r("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled=null==o.defaultSymbolEnabled||o.defaultSymbolEnabled;const i=B(o.layer,D);if(o.layer=i,!i)throw new r("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+L(D).join(", "));const l=a(o.signal)?{signal:o.signal}:null;await i.load(l);const n=i.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&o.sizeOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const s=k(i,o.startTime,o.endTime,"color-age-renderer:invalid-parameters");if(s)throw s;if(o.unit&&!F.includes(o.unit))throw new r("color-age-renderer:invalid-unit",`Supported units are: ${F.join(", ")}`);return o}async function re(e,o){let i=e.colorScheme,r=null,l=null;const n=await O(e.basemap,e.view);if(r=a(n.basemapId)?n.basemapId:null,l=a(n.basemapTheme)?n.basemapTheme:null,i)return{scheme:G(i),basemapId:r,basemapTheme:l};const s=o||e.theme||_,t=W({theme:s,basemap:r,basemapTheme:l,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});if(t)if(r=t.basemapId,l=t.basemapTheme,e.schemeId){const o=s+"/"+r+"/"+e.schemeId;i=$({id:o,geometryType:e.geometryType})}else i=t.primaryScheme;return{scheme:i,basemapId:r,basemapTheme:l}}async function ae(e,o){const i=o.layer,r=await re({basemap:o.basemap,colorScheme:o.colorScheme,geometryType:i.geometryType,schemeId:"elevation"===o.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),a=r.scheme;if(!a)throw g("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const l=E(a.colors,K);if(l.length<K)throw g("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const n=V(e,!1,!0),s=n?z(n[0],n[1],5):S(e);return{stops:m({values:s,isDate:!1,dateFormatOptions:null,colors:l,labelIndexes:[0,2,4]}),basemapId:r.basemapId,basemapTheme:r.basemapTheme,statistics:e,defaultValuesUsed:!!n,colorScheme:G(a)}}async function le(e,o,i){const r=e.layer,{field:a,theme:l}=e,n=a&&!("function"==typeof a)?r.getField(a):null,m=n&&n.type===H,d=await re({basemap:e.basemap,theme:e.theme,geometryType:r.geometryType,colorScheme:e.colorScheme,worldScale:e.worldScale,view:e.view}),p=d.scheme;if(!p)throw g("color-visual-variable:insufficient-info","Unable to find color scheme");const c=E(p.colors,K);if(c.length<K)throw g("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const y=p.id.includes("seq-"),f=M(o,i,l,m,"90-10"!==l),b=I(f,o,l,y),h=E(c,K),v=new u({field:a,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationField:e.normalizationField,stops:b.map(((e,o)=>({value:e,color:h[o]}))),legendOptions:e.legendOptions}),w=new t({type:"color",minSliderValue:null!=e.minValue?e.minValue:o.min,maxSliderValue:null!=e.maxValue?e.maxValue:o.max,theme:p.theme}),T=new s({visualVariables:[w]});return{basemapId:d.basemapId,basemapTheme:d.basemapTheme,visualVariable:v,statistics:o,defaultValuesUsed:f.defaultValuesUsed,colorScheme:G(p),authoringInfo:T}}async function ne(e,o,r,a,n,s){const t=await l("esri/smartMapping/t9n/smartMapping"),m=s.layer,d=s.field,u=m.geometryType,p=s.defaultSymbolEnabled,c=G(e.colorScheme),y=o&&o.opacity,f=[e.visualVariable.clone()];o&&o.visualVariables&&o.visualVariables.length&&f.push(...o.visualVariables.map((e=>e.clone()))),r&&r.minSize&&f.push(r.minSize);return{renderer:new i({classBreakInfos:[{minValue:-J,maxValue:J,symbol:j(u,{type:s.symbolType,color:c.noDataColor,size:q(c,u),outline:C(c,u,y),meshInfo:{colorMixMode:s.colorMixMode,edgesType:s.edgesType}})}],defaultLabel:p?t.other:null,defaultSymbol:p?j(u,{type:s.symbolType,color:c.noDataColor,size:q(c,u),outline:C(c,u,y),meshInfo:{colorMixMode:s.colorMixMode,edgesType:s.edgesType}}):null,field:d,normalizationType:a,normalizationField:n,valueExpression:s.valueExpression,valueExpressionTitle:s.valueExpressionTitle,visualVariables:f,authoringInfo:e.authoringInfo&&e.authoringInfo.clone()}),visualVariable:e.visualVariable.clone(),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,colorScheme:G(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function se(e){const o=await N(e),{view:i,field:r,valueExpression:a,minValue:l,maxValue:n,layer:s,normalizationField:t,signal:m,statistics:d}=o,u=t?"field":void 0,[p,c]=await Promise.all([d||f({layer:s,field:r,valueExpression:a,sqlExpression:o.sqlExpression,sqlWhere:o.sqlWhere,normalizationType:u,normalizationField:t,minValue:l,maxValue:n,view:i,signal:m}),"90-10"===o.theme?b({layer:s,field:r,normalizationField:t,valueExpression:a,classificationMethod:"quantile",minValue:l,maxValue:n,view:i,numClasses:10,signal:m}):null]);return le(o,p,c?.result)}function te(e,o){const i=e.colorsForClassBreaks;let r;if(i&&i.length>0&&(i.some((e=>(e.numClasses===o&&(r=e.colors),!!r))),!r)){const e=i[i.length-1],a=o-e.numClasses;if(a>0){const o=e.colors[e.numClasses-1];r=e.colors.splice(0);for(let e=1;e<=a;e++)r.push(o)}}return r&&(r=E(r,r.length)),r}async function me(e,o){const a=await l("esri/smartMapping/t9n/smartMapping"),n=e.layer,t=e.defaultSymbolEnabled,m=n.geometryType,u=e.classificationMethod,p="standard-deviation"===u,c=await re({basemap:e.basemap,geometryType:m,theme:p?"above-and-below":null,colorScheme:e.colorScheme,worldScale:e.symbolType.includes("3d-volumetric"),view:e.view}),y=c.scheme,{result:f,outlineResult:b}=o,h=f.classBreakInfos,v=e.normalizationType;if(!y)throw new r("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const w=te(y,h.length);if(!w||w.length!==h.length)throw new r("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=b&&b.opacity,T=new i({classBreakInfos:h.map(((o,i)=>({minValue:o.minValue,maxValue:o.maxValue,symbol:j(m,{type:e.symbolType,color:w[i],size:q(y,m),outline:C(y,m,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:o.label}))),defaultLabel:t?a.other:null,defaultSymbol:t?j(m,{type:e.symbolType,color:y.noDataColor,size:q(y,m),outline:C(y,m,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:v,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===v?f.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new s({type:"class-breaks-color",classificationMethod:u,standardDeviationInterval:e.standardDeviationInterval})});return p||d({classBreakInfos:T.classBreakInfos,classificationMethod:u,normalizationType:v,round:!0}),b&&b.visualVariables&&b.visualVariables.length&&(T.visualVariables=b.visualVariables.map((e=>e.clone()))),{renderer:T,colorScheme:G(y),classBreaksResult:f,defaultValuesUsed:o.defaultValuesUsed,basemapId:c.basemapId,basemapTheme:c.basemapTheme}}async function de(e){const o=await Q(e),{layer:i,view:r,signal:a}=o,[l,n,s]=await Promise.all([se(oe(o)),o.outlineOptimizationEnabled?c({layer:i,view:r,signal:a}):null,o.sizeOptimizationEnabled?y({layer:i,view:r,signal:a}):null]),t=o.normalizationField;return ne(l,n,s,t?"field":void 0,t,o)}async function ue(e){const o=await X(e);return me(o,await b(Y(o),o.outlineOptimizationEnabled))}function pe(o){return Z(o).then((o=>({renderer:new e({field:"RGB",pointsPerInch:o.density,pointSizeAlgorithm:h(o.size)})})))}async function ce(e){const i=await ee(e),r=i.statistics?i.statistics:await f({layer:i.layer,field:i.field,signal:i.signal}),a=await ae(r,i);return{renderer:new o({field:i.field,pointsPerInch:i.density,pointSizeAlgorithm:h(i.size),stops:a.stops}),basemapId:a.basemapId,basemapTheme:a.basemapTheme,statistics:a.statistics,defaultValuesUsed:a.defaultValuesUsed,colorScheme:a.colorScheme}}async function ye(e){const o=await l("esri/smartMapping/t9n/smartMapping"),i=await ie(e),{defaultSymbolEnabled:r,view:a,startTime:s,endTime:t,symbolType:m,colorMixMode:d,edgesType:u,minValue:f,maxValue:b,signal:h}=i,g=i.layer,[T,x,E]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:p({view:a,layer:g,startTime:s,endTime:t,minValue:f,maxValue:b,signal:h}),i.outlineOptimizationEnabled?c({layer:g,view:a,signal:h}):null,i.sizeOptimizationEnabled?y({layer:g,view:a,signal:h}):null]),{unit:V,statistics:z}=T,S=P({layer:g,startTime:s,endTime:t,unit:V}).valueExpression,M=n(o[`ageInfo_${V}`],{unit:V,startTime:v(s,V,g),endTime:v(t,V,g)}),I=await se(oe({layer:g,basemap:i.basemap,valueExpression:S,symbolType:m,statistics:z,legendOptions:{title:M},colorScheme:i.colorScheme,theme:i.theme,view:a,minValue:i.minValue,maxValue:i.maxValue,signal:h})),j={layer:g,valueExpression:S,defaultSymbolEnabled:r,symbolType:m,colorMixMode:d,edgesType:u},q=await ne(I,x,E,null,null,j);return q.renderer.authoringInfo.visualVariables.forEach((e=>w(e,s,t,V))),{...q,unit:V}}export{ye as createAgeRenderer,ue as createClassBreaksRenderer,de as createContinuousRenderer,ce as createPCContinuousRenderer,pe as createPCTrueColorRenderer,se as createVisualVariable};
|
|
5
|
+
import"../../renderers/PointCloudClassBreaksRenderer.js";import"../../renderers/PointCloudRenderer.js";import e from"../../renderers/PointCloudRGBRenderer.js";import o from"../../renderers/PointCloudStretchRenderer.js";import"../../renderers/PointCloudUniqueValueRenderer.js";import i from"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import r from"../../core/Error.js";import{isSome as a}from"../../core/maybe.js";import{fetchMessageBundle as l}from"../../intl/messages.js";import{substitute as n}from"../../intl/substitute.js";import s from"../../renderers/support/AuthoringInfo.js";import t from"../../renderers/support/AuthoringInfoVisualVariable.js";import{createColorStops as m,setLabelsForClassBreaks as d}from"../../renderers/support/utils.js";import u from"../../renderers/visualVariables/ColorVariable.js";import p from"../heuristics/ageUnit.js";import c from"../heuristics/outline.js";import y from"../heuristics/sizeRange.js";import{getSummaryStatistics as f,getClassBreaks as b,getPointSizeAlgorithm as h,formatDate as v,updateAgeRendererAuthoringInfoVV as w,createError as g,verifyBasicFieldValidity as T,isValidPointSize as x,createColors as E,getDefaultDataRange as V,createDefaultStopValues as z,createStopValues as S,getDataRange as M,createDataValues as j,createSymbol as I,getSymbolSizeFromScheme as q,getSymbolOutlineFromScheme as C,getBasemapInfo as O}from"./support/utils.js";import{getAgeExpressions as P,verifyDates as k,supportedAgeUnits as F}from"../statistics/support/ageUtils.js";import{getFieldsList as R,getNormalizationType as U}from"../support/utils.js";import{createLayerAdapter as B,featureCapableLayerTypes as D,getLayerTypeLabels as L,LayerType as A}from"../support/adapters/support/layerUtils.js";import{cloneScheme as G,getSchemes as W,getSchemeById as $}from"../symbology/color.js";const H="date",_="high-to-low",J=2**53-1,K=5;async function N(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new r("color-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new r("color-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");const o={...e};if("90-10"===o.theme)throw new r("color-visual-variable:not-supported","Only 'high-to-low', 'above-and-below', 'centered-on', 'extremes', 'above', 'below' themes are supported.");const i=B(o.layer,D);if(o.layer=i,!i)throw new r("color-visual-variable:invalid-parameters","'layer' must be one of these types: "+L(D).join(", "));const l=a(o.signal)?{signal:o.signal}:null;await i.load(l);if("mesh"!==i.geometryType&&o.worldScale&&(!o.view||"3d"!==o.view.type))throw g("color-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true");const n=await R({field:o.field,normalizationField:o.normalizationField,valueExpression:o.valueExpression}),s=T(i,n,"color-visual-variable:invalid-parameters");if(s)throw s;return o}async function Q(e){if(!(e&&e.layer&&(e.field||e.valueExpression||e.sqlExpression)))throw new r("color-continuous-renderer:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(e.valueExpression&&!e.sqlExpression&&!e.view)throw new r("color-continuous-renderer:missing-parameters","View is required when 'valueExpression' is specified");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled=null==o.defaultSymbolEnabled||o.defaultSymbolEnabled;const i=B(o.layer,D);if(o.layer=i,!i)throw new r("color-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+L(D).join(", "));const l=a(o.signal)?{signal:o.signal}:null;await i.load(l);const n=i.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&o.sizeOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("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 R({field:o.field,normalizationField:o.normalizationField,valueExpression:o.valueExpression}),t=T(i,s,"color-continuous-renderer:invalid-parameters");if(t)throw t;return o}async function X(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new r("color-class-breaks-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new r("color-class-breaks-renderer:missing-parameters","View is required when 'valueExpression' is specified");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled=null==o.defaultSymbolEnabled||o.defaultSymbolEnabled,o.classificationMethod=o.classificationMethod||"equal-interval",o.normalizationType=U(o);const i=B(o.layer,D);if(o.layer=i,!i)throw new r("color-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+L(D).join(", "));if(!(null!=o.minValue&&null!=o.maxValue)&&(null!=o.minValue||null!=o.maxValue))throw new r("color-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const l=a(o.signal)?{signal:o.signal}:null;await i.load(l);const n=i.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("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 R({field:o.field,normalizationField:o.normalizationField}),t=T(i,s,"color-class-breaks-renderer:invalid-parameters");if(t)throw t;return o}function Y(e){const o={...e};delete o.basemap,delete o.colorScheme,delete o.legendOptions,delete o.symbolType,delete o.defaultSymbolEnabled,delete o.colorMixMode,delete o.edgesType;const i=o;return i.analyzeData=!(null!=o.minValue&&null!=o.maxValue),i}function Z(e){if(!e||!e.layer)return Promise.reject(g("color-point-cloud-true-color-renderer:missing-parameters","'layer' parameter is required"));const o={...e},i=[A.PointCloudLayer],r=B(o.layer,i);if(o.layer=r,o.density=o.density||25,o.size=o.size||"100%",!x(o.size))return Promise.reject(g("color-point-cloud-true-color-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'"));if(!r)return Promise.reject(g("color-point-cloud-true-color-renderer:invalid-parameters","'layer' must be one of these types: "+L(i).join(", ")));const l=a(o.signal)?{signal:o.signal}:null;return r.load(l).then((()=>o))}function ee(e){if(!(e&&e.layer&&e.field))return Promise.reject(g("color-point-cloud-continuous-renderer:missing-parameters","'layer' and 'field' parameters are required"));const o=e.field.toLowerCase();if("intensity"!==o&&"elevation"!==o)return Promise.reject(g("color-point-cloud-continuous-renderer:invalid-parameters","'field' should be either 'intensity' or 'elevation'"));const i={...e},r=[A.PointCloudLayer],l=B(i.layer,r);if(i.layer=l,i.density=i.density||25,i.size=i.size||"100%",!x(i.size))return Promise.reject(g("color-point-cloud-continuous-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'"));if(!l)return Promise.reject(g("color-point-cloud-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+L(r).join(", ")));const n=a(i.signal)?{signal:i.signal}:null;return l.load(n).then((()=>i))}function oe(e){const o={...e},i=o.symbolType.includes("3d-volumetric");delete o.symbolType,delete o.defaultSymbolEnabled,delete o.colorMixMode,delete o.edgesType;const r=o;return r.worldScale=i,r}async function ie(e){if(!(e&&e.layer&&e.view&&e.startTime&&e.endTime))throw new r("color-age-renderer:missing-parameters","'layer', 'view', startTime', 'endTime' parameters are required");const o={...e};o.symbolType=o.symbolType||"2d",o.defaultSymbolEnabled=null==o.defaultSymbolEnabled||o.defaultSymbolEnabled;const i=B(o.layer,D);if(o.layer=i,!i)throw new r("color-age-renderer:invalid-parameters","'layer' must be one of these types: "+L(D).join(", "));const l=a(o.signal)?{signal:o.signal}:null;await i.load(l);const n=i.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&o.sizeOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("color-continuous-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("color-age-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'");const s=k(i,o.startTime,o.endTime,"color-age-renderer:invalid-parameters");if(s)throw s;if(o.unit&&!F.includes(o.unit))throw new r("color-age-renderer:invalid-unit",`Supported units are: ${F.join(", ")}`);return o}async function re(e,o){let i=e.colorScheme,r=null,l=null;const n=await O(e.basemap,e.view);if(r=a(n.basemapId)?n.basemapId:null,l=a(n.basemapTheme)?n.basemapTheme:null,i)return{scheme:G(i),basemapId:r,basemapTheme:l};const s=o||e.theme||_,t=W({theme:s,basemap:r,basemapTheme:l,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});if(t)if(r=t.basemapId,l=t.basemapTheme,e.schemeId){const o=s+"/"+r+"/"+e.schemeId;i=$({id:o,geometryType:e.geometryType})}else i=t.primaryScheme;return{scheme:i,basemapId:r,basemapTheme:l}}async function ae(e,o){const i=o.layer,r=await re({basemap:o.basemap,colorScheme:o.colorScheme,geometryType:i.geometryType,schemeId:"elevation"===o.field.toLowerCase()?"point-cloud-elevation-scheme":"point-cloud-intensity-scheme"}),a=r.scheme;if(!a)throw g("color-point-cloud-continuous-renderer:insufficient-info","Unable to find color scheme");const l=E(a.colors,K);if(l.length<K)throw g("color-point-cloud-continuous-renderer:insufficient-info","Color scheme does not have enough colors");const n=V(e,!1,!0),s=n?z(n[0],n[1],5):S(e);return{stops:m({values:s,isDate:!1,dateFormatOptions:null,colors:l,labelIndexes:[0,2,4]}),basemapId:r.basemapId,basemapTheme:r.basemapTheme,statistics:e,defaultValuesUsed:!!n,colorScheme:G(a)}}async function le(e,o,i){const r=e.layer,{field:a,theme:l}=e,n=a&&!("function"==typeof a)?r.getField(a):null,m=n&&n.type===H,d=await re({basemap:e.basemap,theme:e.theme,geometryType:r.geometryType,colorScheme:e.colorScheme,worldScale:e.worldScale,view:e.view}),p=d.scheme;if(!p)throw g("color-visual-variable:insufficient-info","Unable to find color scheme");const c=E(p.colors,K);if(c.length<K)throw g("color-visual-variable:insufficient-info","Color scheme does not have enough colors");const y=p.id.includes("seq-"),f=M(o,i,l,m,"90-10"!==l),b=j(f,o,l,y),h=E(c,K),v=new u({field:a,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationField:e.normalizationField,stops:b.map(((e,o)=>({value:e,color:h[o]}))),legendOptions:e.legendOptions}),w=new t({type:"color",minSliderValue:null!=e.minValue?e.minValue:o.min,maxSliderValue:null!=e.maxValue?e.maxValue:o.max,theme:p.theme}),T=new s({visualVariables:[w]});return{basemapId:d.basemapId,basemapTheme:d.basemapTheme,visualVariable:v,statistics:o,defaultValuesUsed:f.defaultValuesUsed,colorScheme:G(p),authoringInfo:T}}async function ne(e,o,r,a,n,s){const t=await l("esri/smartMapping/t9n/smartMapping"),m=s.layer,d=s.field,u=m.geometryType,p=s.defaultSymbolEnabled,c=G(e.colorScheme),y=o&&o.opacity,f=[e.visualVariable.clone()];o&&o.visualVariables&&o.visualVariables.length&&f.push(...o.visualVariables.map((e=>e.clone()))),r&&r.minSize&&f.push(r.minSize);return{renderer:new i({classBreakInfos:[{minValue:-J,maxValue:J,symbol:I(u,{type:s.symbolType,color:c.noDataColor,size:q(c,u),outline:C(c,u,y),meshInfo:{colorMixMode:s.colorMixMode,edgesType:s.edgesType}})}],defaultLabel:p?t.other:null,defaultSymbol:p?I(u,{type:s.symbolType,color:c.noDataColor,size:q(c,u),outline:C(c,u,y),meshInfo:{colorMixMode:s.colorMixMode,edgesType:s.edgesType}}):null,field:d,normalizationType:a,normalizationField:n,valueExpression:s.valueExpression,valueExpressionTitle:s.valueExpressionTitle,visualVariables:f,authoringInfo:e.authoringInfo&&e.authoringInfo.clone()}),visualVariable:e.visualVariable.clone(),statistics:e.statistics,defaultValuesUsed:e.defaultValuesUsed,colorScheme:G(e.colorScheme),basemapId:e.basemapId,basemapTheme:e.basemapTheme}}async function se(e){const o=await N(e),{view:i,field:r,valueExpression:a,minValue:l,maxValue:n,layer:s,normalizationField:t,signal:m,statistics:d}=o,u=t?"field":void 0,[p,c]=await Promise.all([d||f({layer:s,field:r,valueExpression:a,sqlExpression:o.sqlExpression,sqlWhere:o.sqlWhere,normalizationType:u,normalizationField:t,minValue:l,maxValue:n,view:i,signal:m}),"90-10"===o.theme?b({layer:s,field:r,normalizationField:t,valueExpression:a,classificationMethod:"quantile",minValue:l,maxValue:n,view:i,numClasses:10,signal:m}):null]);return le(o,p,c?.result)}function te(e,o){const i=e.colorsForClassBreaks;let r;if(i&&i.length>0&&(i.some((e=>(e.numClasses===o&&(r=e.colors),!!r))),!r)){const e=i[i.length-1],a=o-e.numClasses;if(a>0){const o=e.colors[e.numClasses-1];r=e.colors.splice(0);for(let e=1;e<=a;e++)r.push(o)}}return r&&(r=E(r,r.length)),r}async function me(e,o){const a=await l("esri/smartMapping/t9n/smartMapping"),n=e.layer,t=e.defaultSymbolEnabled,m=n.geometryType,u=e.classificationMethod,p="standard-deviation"===u,c=await re({basemap:e.basemap,geometryType:m,theme:p?"above-and-below":null,colorScheme:e.colorScheme,worldScale:e.symbolType.includes("3d-volumetric"),view:e.view}),y=c.scheme,{result:f,outlineResult:b}=o,h=f.classBreakInfos,v=e.normalizationType;if(!y)throw new r("color-class-breaks-renderer:insufficient-info","Unable to find color scheme");const w=te(y,h.length);if(!w||w.length!==h.length)throw new r("color-class-breaks-renderer:insufficient-info","Color scheme does not have enough colors");const g=b&&b.opacity,T=new i({classBreakInfos:h.map(((o,i)=>({minValue:o.minValue,maxValue:o.maxValue,symbol:I(m,{type:e.symbolType,color:w[i],size:q(y,m),outline:C(y,m,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}),label:o.label}))),defaultLabel:t?a.other:null,defaultSymbol:t?I(m,{type:e.symbolType,color:y.noDataColor,size:q(y,m),outline:C(y,m,g),meshInfo:{colorMixMode:e.colorMixMode,edgesType:e.edgesType}}):null,field:e.field,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,normalizationType:v,normalizationField:e.normalizationField,normalizationTotal:"percent-of-total"===v?f.normalizationTotal:void 0,legendOptions:e.legendOptions,authoringInfo:new s({type:"class-breaks-color",classificationMethod:u,standardDeviationInterval:e.standardDeviationInterval})});return p||d({classBreakInfos:T.classBreakInfos,classificationMethod:u,normalizationType:v,round:!0}),b&&b.visualVariables&&b.visualVariables.length&&(T.visualVariables=b.visualVariables.map((e=>e.clone()))),{renderer:T,colorScheme:G(y),classBreaksResult:f,defaultValuesUsed:o.defaultValuesUsed,basemapId:c.basemapId,basemapTheme:c.basemapTheme}}async function de(e){const o=await Q(e),{layer:i,view:r,signal:a}=o,[l,n,s]=await Promise.all([se(oe(o)),o.outlineOptimizationEnabled?c({layer:i,view:r,signal:a}):null,o.sizeOptimizationEnabled?y({layer:i,view:r,signal:a}):null]),t=o.normalizationField;return ne(l,n,s,t?"field":void 0,t,o)}async function ue(e){const o=await X(e);return me(o,await b(Y(o),o.outlineOptimizationEnabled))}function pe(o){return Z(o).then((o=>({renderer:new e({field:"RGB",pointsPerInch:o.density,pointSizeAlgorithm:h(o.size)})})))}async function ce(e){const i=await ee(e),r=i.statistics?i.statistics:await f({layer:i.layer,field:i.field,signal:i.signal}),a=await ae(r,i);return{renderer:new o({field:i.field,pointsPerInch:i.density,pointSizeAlgorithm:h(i.size),stops:a.stops}),basemapId:a.basemapId,basemapTheme:a.basemapTheme,statistics:a.statistics,defaultValuesUsed:a.defaultValuesUsed,colorScheme:a.colorScheme}}async function ye(e){const o=await l("esri/smartMapping/t9n/smartMapping"),i=await ie(e),{defaultSymbolEnabled:r,view:a,startTime:s,endTime:t,symbolType:m,colorMixMode:d,edgesType:u,minValue:f,maxValue:b,signal:h}=i,g=i.layer,[T,x,E]=await Promise.all([i.unit?{unit:i.unit,statistics:null}:p({view:a,layer:g,startTime:s,endTime:t,minValue:f,maxValue:b,signal:h}),i.outlineOptimizationEnabled?c({layer:g,view:a,signal:h}):null,i.sizeOptimizationEnabled?y({layer:g,view:a,signal:h}):null]),{unit:V,statistics:z}=T,S=P({layer:g,startTime:s,endTime:t,unit:V}).valueExpression,M=n(o[`ageInfo_${V}`],{unit:V,startTime:v(s,V,g),endTime:v(t,V,g)}),j=await se(oe({layer:g,basemap:i.basemap,valueExpression:S,symbolType:m,statistics:z,legendOptions:{title:M},colorScheme:i.colorScheme,theme:i.theme,view:a,minValue:i.minValue,maxValue:i.maxValue,signal:h})),I={layer:g,valueExpression:S,defaultSymbolEnabled:r,symbolType:m,colorMixMode:d,edgesType:u},q=await ne(j,x,E,null,null,I);return q.renderer.authoringInfo.visualVariables.forEach((e=>w(e,s,t,V))),{...q,unit:V}}export{ye as createAgeRenderer,ue as createClassBreaksRenderer,de as createContinuousRenderer,ce as createPCContinuousRenderer,pe as createPCTrueColorRenderer,se as createVisualVariable};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import e from"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import t from"../../core/Error.js";import{isSome as r}from"../../core/maybe.js";import{getResolutionForScale as i}from"../../geometry/support/scaleUtils.js";import a from"../../renderers/support/AuthoringInfo.js";import s from"../heuristics/outline.js";import{roundValue as n}from"./support/dotDensityUtils.js";import{createColors as o,getSymbolOutlineFromScheme as l,getBasemapInfo as d}from"./support/utils.js";import m from"../statistics/spatialStatistics.js";import u from"../statistics/summaryStatisticsForAttributes.js";import p from"../statistics/support/attributeDensity.js";import{getFieldsList as y}from"../support/utils.js";import{LayerType as c,createLayerAdapter as f,getLayerTypeLabels as b}from"../support/adapters/support/layerUtils.js";import{cloneScheme as g,getSchemes as w}from"../symbology/dotDensity.js";const v=500;async function h(e){if(!(e&&e.layer&&e.view&&e.attributes&&e.attributes.length))throw new t("dot-density-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>8)throw new t("dot-density-renderer:invalid-parameters","Dot density renderer does not support more than 8 attributes");const i={...e},a=[c.FeatureLayer,c.OGCFeatureLayer,c.GeoJSONLayer,c.WFSLayer],s=f(i.layer,a);if(i.layer=s,i.dotBlendingEnabled=null==i.dotBlendingEnabled||i.dotBlendingEnabled,i.dotValueOptimizationEnabled=null==i.dotValueOptimizationEnabled||i.dotValueOptimizationEnabled,!s)throw new t("dot-density-renderer:invalid-parameters","'layer' must be one of these types: "+b(a).join(", "));const n=r(i.signal)?{signal:i.signal}:null;await Promise.all([i.view.when(),s.load(n)]);if("polygon"!==s.geometryType)throw new t("dot-density-renderer:not-supported","Dot density renderer is supported for polygon layers only");return i}async function S(e){let t=e.dotDensityScheme,i=null,a=null;const s=await d(e.basemap,e.view);if(i=r(s.basemapId)?s.basemapId:null,a=r(s.basemapTheme)?s.basemapTheme:null,t)return{scheme:g(t),basemapId:i,basemapTheme:a};const n=w({basemap:i,numColors:e.attributes.length,basemapTheme:a});return n&&(t=n.primaryScheme,i=n.basemapId,a=n.basemapTheme),{scheme:t,basemapId:i,basemapTheme:a}}async function j(e){const{view:r,layer:a,attributes:s,signal:o}=e,l=await a.getSampleFeatures({view:r,sampleSize:v,returnGeometry:!0,signal:o}),[d,p]=await Promise.all([m({features:l,geometryType:a.geometryType}),u({layer:a,attributes:s,includeZeros:!1,includeNegatives:!1,view:r,signal:o})]),y="avgSize"in d&&d.avgSize,c=p.avg;if(!y)throw new t("dot-density-renderer:insufficient-info","Average polygon size is invalid");if(!c)throw new t("dot-density-renderer:insufficient-info","Average attribute value is invalid");const f=i(r.scale,r.spatialReference);return{dotValue:n(c/(y*y/(f*f)*.1))||1,referenceScale:r.scale,minSliderValue:1,maxSliderValue:n(c)}}async function V(e){const{view:r,layer:a,attributes:s,signal:o}=e,l=[];for(const t of s){const e=await y({field:t.field,valueExpression:t.valueExpression});l.push(...e)}const d=await a.getSampleFeatures({view:r,sampleSize:v,requiredFields:l,returnGeometry:!0,signal:o}),m=await p({features:d,attributes:s,includeZeros:!1,includeNegatives:!1,view:r});if(!m.avgDensity||!m.minDensity||!m.maxDensity)throw new t("dot-density-renderer:insufficient-info","Invalid density values");const u=i(r.scale,r.spatialReference),c=u*u,f=n(m.minDensity*c),b=n(m.maxDensity*c),g=10;let w=n(m.avgDensity*c*g)||1;return w>b&&(w=b),{dotValue:w,referenceScale:r.scale,minSliderValue:f,maxSliderValue:b}}async function D(r){const i=await h(r),n=i.layer,d=n.geometryType,m=await S(i),u=m&&m.scheme;if(!u)throw new t("dot-density-renderer:insufficient-info","Unable to find dot-density scheme");const p={layer:n,view:i.view,attributes:i.attributes,signal:i.signal},y={layer:i.layer,view:i.view,signal:i.signal},[c,f]=await Promise.all([i.trueDensity?V(p):j(p),i.outlineOptimizationEnabled?s(y):null]),{dotValue:b,referenceScale:g,minSliderValue:w,maxSliderValue:v}=c,D=o(u.colors,i.attributes.length),E=i.attributes.map(((e,t)=>({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:D[t]}))),T=new e({attributes:E,dotBlendingEnabled:i.dotBlendingEnabled,outline:f?l(u,d,f.opacity):null,dotValue:b,referenceScale:i.dotValueOptimizationEnabled?g:null,legendOptions:i.legendOptions});return f&&f.visualVariables&&f.visualVariables.length&&(T.visualVariables=f.visualVariables.map((e=>e.clone()))),T.authoringInfo=new a({type:"dot-density",minSliderValue:w,maxSliderValue:v}),{renderer:T,dotDensityScheme:u,basemapId:m.basemapId,basemapTheme:m.basemapTheme}}export{D as createRenderer};
|
|
5
|
+
import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import e from"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import t from"../../core/Error.js";import{isSome as r}from"../../core/maybe.js";import{getResolutionForScale as i}from"../../geometry/support/scaleUtils.js";import a from"../../renderers/support/AuthoringInfo.js";import s from"../heuristics/outline.js";import{roundValue as n}from"./support/dotDensityUtils.js";import{createColors as o,getSymbolOutlineFromScheme as l,getBasemapInfo as d}from"./support/utils.js";import m from"../statistics/spatialStatistics.js";import u from"../statistics/summaryStatisticsForAttributes.js";import p from"../statistics/support/attributeDensity.js";import{getFieldsList as y}from"../support/utils.js";import{LayerType as c,createLayerAdapter as f,getLayerTypeLabels as b}from"../support/adapters/support/layerUtils.js";import{cloneScheme as g,getSchemes as w}from"../symbology/dotDensity.js";const v=500;async function h(e){if(!(e&&e.layer&&e.view&&e.attributes&&e.attributes.length))throw new t("dot-density-renderer:missing-parameters","'layer', 'view' and 'attributes' parameters are required");if(e.attributes.length>8)throw new t("dot-density-renderer:invalid-parameters","Dot density renderer does not support more than 8 attributes");const i={...e},a=[c.FeatureLayer,c.OGCFeatureLayer,c.GeoJSONLayer,c.WFSLayer],s=f(i.layer,a);if(i.layer=s,i.dotBlendingEnabled=null==i.dotBlendingEnabled||i.dotBlendingEnabled,i.dotValueOptimizationEnabled=null==i.dotValueOptimizationEnabled||i.dotValueOptimizationEnabled,!s)throw new t("dot-density-renderer:invalid-parameters","'layer' must be one of these types: "+b(a).join(", "));const n=r(i.signal)?{signal:i.signal}:null;await Promise.all([i.view.when(),s.load(n)]);if("polygon"!==s.geometryType)throw new t("dot-density-renderer:not-supported","Dot density renderer is supported for polygon layers only");return i}async function S(e){let t=e.dotDensityScheme,i=null,a=null;const s=await d(e.basemap,e.view);if(i=r(s.basemapId)?s.basemapId:null,a=r(s.basemapTheme)?s.basemapTheme:null,t)return{scheme:g(t),basemapId:i,basemapTheme:a};const n=w({basemap:i,numColors:e.attributes.length,basemapTheme:a});return n&&(t=n.primaryScheme,i=n.basemapId,a=n.basemapTheme),{scheme:t,basemapId:i,basemapTheme:a}}async function j(e){const{view:r,layer:a,attributes:s,signal:o}=e,l=await a.getSampleFeatures({view:r,sampleSize:v,returnGeometry:!0,signal:o}),[d,p]=await Promise.all([m({features:l,geometryType:a.geometryType}),u({layer:a,attributes:s,includeZeros:!1,includeNegatives:!1,view:r,signal:o})]),y="avgSize"in d&&d.avgSize,c=p.avg;if(!y)throw new t("dot-density-renderer:insufficient-info","Average polygon size is invalid");if(!c)throw new t("dot-density-renderer:insufficient-info","Average attribute value is invalid");const f=i(r.scale,r.spatialReference);return{dotValue:n(c/(y*y/(f*f)*.1))||1,referenceScale:r.scale,minSliderValue:1,maxSliderValue:n(c)}}async function V(e){const{view:r,layer:a,attributes:s,signal:o}=e,l=[];for(const t of s){const e=await y({field:t.field,valueExpression:t.valueExpression});l.push(...e)}const d=await a.getSampleFeatures({view:r,sampleSize:v,requiredFields:l,returnGeometry:!0,signal:o}),m=await p({features:d,attributes:s,includeZeros:!1,includeNegatives:!1,view:r});if(!m.avgDensity||!m.minDensity||!m.maxDensity)throw new t("dot-density-renderer:insufficient-info","Invalid density values");const u=i(r.scale,r.spatialReference),c=u*u,f=n(m.minDensity*c),b=n(m.maxDensity*c),g=10;let w=n(m.avgDensity*c*g)||1;return w>b&&(w=b),{dotValue:w,referenceScale:r.scale,minSliderValue:f,maxSliderValue:b}}async function D(r){const i=await h(r),n=i.layer,d=n.geometryType,m=await S(i),u=m&&m.scheme;if(!u)throw new t("dot-density-renderer:insufficient-info","Unable to find dot-density scheme");const p={layer:n,view:i.view,attributes:i.attributes,signal:i.signal},y={layer:i.layer,view:i.view,signal:i.signal},[c,f]=await Promise.all([i.trueDensity?V(p):j(p),i.outlineOptimizationEnabled?s(y):null]),{dotValue:b,referenceScale:g,minSliderValue:w,maxSliderValue:v}=c,D=o(u.colors,i.attributes.length),E=i.attributes.map(((e,t)=>({field:e.field,valueExpression:e.valueExpression,label:e.label,valueExpressionTitle:e.valueExpressionTitle,color:D[t]}))),T=new e({attributes:E,dotBlendingEnabled:i.dotBlendingEnabled,outline:f?l(u,d,f.opacity):null,dotValue:b,referenceScale:i.dotValueOptimizationEnabled?g:null,legendOptions:i.legendOptions});return f&&f.visualVariables&&f.visualVariables.length&&(T.visualVariables=f.visualVariables.map((e=>e.clone()))),T.authoringInfo=new a({type:"dot-density",minSliderValue:w,maxSliderValue:v}),{renderer:T,dotDensityScheme:u,basemapId:m.basemapId,basemapTheme:m.basemapTheme}}export{D as createRenderer};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../Color.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import r from"../../renderers/HeatmapRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import a from"../../core/Error.js";import{isSome as s}from"../../core/maybe.js";import t from"../../renderers/support/HeatmapColorStop.js";import{verifyBasicFieldValidity as i,createColors as n,getBasemapInfo as o}from"./support/utils.js";import m from"../statistics/heatmapStatistics.js";import{getFieldsList as l}from"../support/utils.js";import{LayerType as p,createLayerAdapter as d,getLayerTypeLabels as u}from"../support/adapters/support/layerUtils.js";import{cloneScheme as c,getSchemes as f}from"../symbology/heatmap.js";const b=.01;async function h(e){if(!(e&&e.layer&&e.view))throw new a("heatmap-renderer:missing-parameters","'layer' and 'view' parameters are required");const{blurRadius:r,minRatio:t,maxRatio:n,fadeToTransparent:o}=e,m={...e};m.blurRadius=null==r?10:r,m.minRatio=null==t?.01:t,m.maxRatio=null==n?1:n,m.fadeToTransparent=null==o||o;const c=[p.CSVLayer,p.FeatureLayer,p.OGCFeatureLayer,p.GeoJSONLayer,p.WFSLayer],f=d(m.layer,c);if(m.layer=f,!f)throw new a("heatmap-renderer:invalid-parameters","'layer' must be one of these types: "+u(c).join(", "));const b=s(m.signal)?{signal:m.signal}:null;await f.load(b);const h=await l({field:m.field}),y=i(f,h,"heatmap-renderer:invalid-parameters");if(y)throw y;return m}async function y(e){let r=e.scheme,a=null,t=null;const i=await o(e.basemap,e.view);if(a=s(i.basemapId)?i.basemapId:null,t=s(i.basemapTheme)?i.basemapTheme:null,r)return{scheme:c(r),basemapId:a,basemapTheme:t};const n=f({basemap:a,basemapTheme:t});return n&&(r=n.primaryScheme,a=n.basemapId,t=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:t}}async function w(a,s){const{fieldOffset:i}=a,{field:o,basemap:m,blurRadius:l,minRatio:p,maxRatio:d,fadeToTransparent:u,heatmapScheme:f,view:h}=s,{scheme:w,basemapId:j,basemapTheme:R}=await y({basemap:m,scheme:f,view:h}),T=w.colors,g=T.length,v=!a.count,I=v?[0,100]:[a.min,a.max],S=(d-p)/(g-1),x=T[0],
|
|
5
|
+
import e from"../../Color.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import r from"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import a from"../../core/Error.js";import{isSome as s}from"../../core/maybe.js";import t from"../../renderers/support/HeatmapColorStop.js";import{verifyBasicFieldValidity as i,createColors as n,getBasemapInfo as o}from"./support/utils.js";import m from"../statistics/heatmapStatistics.js";import{getFieldsList as l}from"../support/utils.js";import{LayerType as p,createLayerAdapter as d,getLayerTypeLabels as u}from"../support/adapters/support/layerUtils.js";import{cloneScheme as c,getSchemes as f}from"../symbology/heatmap.js";const b=.01;async function h(e){if(!(e&&e.layer&&e.view))throw new a("heatmap-renderer:missing-parameters","'layer' and 'view' parameters are required");const{blurRadius:r,minRatio:t,maxRatio:n,fadeToTransparent:o}=e,m={...e};m.blurRadius=null==r?10:r,m.minRatio=null==t?.01:t,m.maxRatio=null==n?1:n,m.fadeToTransparent=null==o||o;const c=[p.CSVLayer,p.FeatureLayer,p.OGCFeatureLayer,p.GeoJSONLayer,p.WFSLayer],f=d(m.layer,c);if(m.layer=f,!f)throw new a("heatmap-renderer:invalid-parameters","'layer' must be one of these types: "+u(c).join(", "));const b=s(m.signal)?{signal:m.signal}:null;await f.load(b);const h=await l({field:m.field}),y=i(f,h,"heatmap-renderer:invalid-parameters");if(y)throw y;return m}async function y(e){let r=e.scheme,a=null,t=null;const i=await o(e.basemap,e.view);if(a=s(i.basemapId)?i.basemapId:null,t=s(i.basemapTheme)?i.basemapTheme:null,r)return{scheme:c(r),basemapId:a,basemapTheme:t};const n=f({basemap:a,basemapTheme:t});return n&&(r=n.primaryScheme,a=n.basemapId,t=n.basemapTheme),{scheme:r,basemapId:a,basemapTheme:t}}async function w(a,s){const{fieldOffset:i}=a,{field:o,basemap:m,blurRadius:l,minRatio:p,maxRatio:d,fadeToTransparent:u,heatmapScheme:f,view:h}=s,{scheme:w,basemapId:j,basemapTheme:R}=await y({basemap:m,scheme:f,view:h}),T=w.colors,g=T.length,v=!a.count,I=v?[0,100]:[a.min,a.max],S=(d-p)/(g-1),x=T[0],C=[new t({ratio:0,color:new e([x.r,x.g,x.b,0])}),new t({ratio:b,color:new e([x.r,x.g,x.b,0])}),new t({ratio:u?p:b,color:x})];n(T,g).forEach(((e,r)=>{C.push(new t({ratio:p+S*r,color:e}))}));const O=new r({blurRadius:l,colorStops:C,field:o,minPixelIntensity:I[0],maxPixelIntensity:I[1]});return null!=i&&(O.fieldOffset=i),{renderer:O,statistics:a,defaultValuesUsed:v,scheme:c(w),basemapId:j,basemapTheme:R}}async function j(e){const r=await h(e);return w(r.statistics?r.statistics:await m({layer:r.layer,field:r.field,fieldOffset:r.fieldOffset,blurRadius:r.blurRadius,view:r.view,signal:r.signal}),r)}export{j as createRenderer};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/Renderer.js";import e from"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import r from"../../core/Error.js";import{isSome as i}from"../../core/maybe.js";import o from"../heuristics/outline.js";import a from"../heuristics/sizeRange.js";import{createSymbol as s,getSymbolSizeFromScheme as n,getSymbolOutlineFromScheme as
|
|
5
|
+
import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import e from"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import r from"../../core/Error.js";import{isSome as i}from"../../core/maybe.js";import o from"../heuristics/outline.js";import a from"../heuristics/sizeRange.js";import{createSymbol as s,getSymbolSizeFromScheme as n,getSymbolOutlineFromScheme as t,getBasemapInfo as l}from"./support/utils.js";import{createLayerAdapter as m,featureCapableLayerTypes as p,getLayerTypeLabels as d}from"../support/adapters/support/layerUtils.js";import{cloneScheme as c,getSchemes as u}from"../symbology/location.js";async function y(e){if(!e||!e.layer)throw new r("location-renderer:missing-parameters","'layer' parameter is required");const o={...e};o.symbolType=o.symbolType||"2d";const a=m(o.layer,p);if(o.layer=a,!a)throw new r("location-renderer:invalid-parameters","'layer' must be one of these types: "+d(p).join(", "));const s=i(o.signal)?{signal:o.signal}:null;await a.load(s);const n=a.geometryType;if(o.outlineOptimizationEnabled="polygon"===n&&o.outlineOptimizationEnabled,o.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&o.sizeOptimizationEnabled,"mesh"===n)o.symbolType="3d-volumetric",o.colorMixMode=o.colorMixMode||"replace",o.edgesType=o.edgesType||"none";else{if("3d-volumetric-uniform"===o.symbolType&&"point"!==n)throw new r("location-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(o.symbolType.includes("3d-volumetric")&&(!o.view||"3d"!==o.view.type))throw new r("location-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}return o}async function b(e,r){let o=e.locationScheme,a=null,s=null;const n=await l(e.basemap,e.view);if(a=i(n.basemapId)?n.basemapId:null,s=i(n.basemapTheme)?n.basemapTheme:null,o)return{scheme:c(o),basemapId:a,basemapTheme:s};const t=u({basemap:a,basemapTheme:s,geometryType:r,worldScale:e.symbolType.includes("3d-volumetric"),view:e.view});return t&&(o=t.primaryScheme,a=t.basemapId,s=t.basemapTheme),{scheme:o,basemapId:a,basemapTheme:s}}async function h(i){const l=await y(i),m=l.layer.geometryType,p=await b(l,m),d=p.scheme;if(!d)throw new r("location-renderer:insufficient-info","Unable to find location scheme");const{view:u,layer:h,signal:f}=l,[w,v]=await Promise.all([l.outlineOptimizationEnabled?o({view:u,layer:h,signal:f}):null,l.sizeOptimizationEnabled?a({view:u,layer:h,signal:f}):null]),T=w&&w.opacity,g=new e({symbol:s(m,{type:l.symbolType,color:d.color,size:n(d,m),outline:t(d,m,T),meshInfo:{colorMixMode:l.colorMixMode,edgesType:l.edgesType}})});return w&&w.visualVariables&&w.visualVariables.length&&(g.visualVariables=w.visualVariables.map((e=>e.clone()))),v&&v.minSize&&(g.visualVariables?g.visualVariables.push(v.minSize):g.visualVariables=[v.minSize]),{renderer:g,locationScheme:c(d),basemapId:p.basemapId,basemapTheme:p.basemapTheme}}export{h as createRenderer};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import i from"../../core/Error.js";import{isSome as a}from"../../core/maybe.js";import{toPt as s}from"../../core/screenUtils.js";import{fetchMessageBundle as l}from"../../intl/messages.js";import{substitute as n}from"../../intl/substitute.js";import r from"../../renderers/support/AuthoringInfo.js";import o from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as t}from"../../renderers/support/utils.js";import m from"../../renderers/visualVariables/SizeVariable.js";import{TransformationType as u}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import p from"../heuristics/ageUnit.js";import d from"../heuristics/outline.js";import y from"../heuristics/sizeRange.js";import{getSummaryStatistics as c,getClassBreaks as b,formatDate as f,updateAgeRendererAuthoringInfoVV as w,verifyBasicFieldValidity as v,getDataRange as h,getSizeRangeForAxis as z,createSymbol as g,getSymbolOutlineFromScheme as T,getSymbolSizeFromScheme as x,getBasemapInfo as S}from"./support/utils.js";import{getAgeExpressions as E,verifyDates as V,supportedAgeUnits as j}from"../statistics/support/ageUtils.js";import{getFieldsList as k,getNormalizationType as I}from"../support/utils.js";import{createLayerAdapter as q,featureCapableLayerTypes as O,getLayerTypeLabels as F}from"../support/adapters/support/layerUtils.js";import{cloneScheme as U,getSchemes as D}from"../symbology/size.js";const M="date",R=2**53-1;async function B(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");const s={...e};if("90-10"===s.theme)throw new i("size-visual-variable:not-supported","Only 'high-to-low', 'above', 'below' themes are supported.");const l=q(s.layer,O);if(s.layer=l,!l)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+F(O).join(", "));"height"===s.axis&&(s.sizeOptimizationEnabled=!1);const n=a(s.signal)?{signal:s.signal}:null;await l.load(n);const r=l.geometryType;if("mesh"===r)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(s.worldScale){if("polyline"===r||"polygon"===r)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if(!s.view||"3d"!==s.view.type)throw new i("size-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true")}const o=await k({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),t=v(l,o,"size-visual-variable:invalid-parameters");if(t)throw t;return s}async function C(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");const s={...e};s.symbolType=s.symbolType||"2d",s.defaultSymbolEnabled=null==s.defaultSymbolEnabled||s.defaultSymbolEnabled;const l=q(s.layer,O);if(s.layer=l,!l)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+F(O).join(", "));const n=a(s.signal)?{signal:s.signal}:null;await l.load(n);const r=l.geometryType,o=s.symbolType.includes("3d");if(s.outlineOptimizationEnabled="polygon"===r&&s.outlineOptimizationEnabled,"mesh"===r)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===r||"polygon"===r))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(s.symbolType.includes("3d-volumetric")&&(!s.view||"3d"!==s.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");const t=await k({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),m=v(l,t,"size-continuous-renderer:invalid-parameters");if(m)throw m;return s}async function A(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");const s={...e};s.symbolType=s.symbolType||"2d",s.defaultSymbolEnabled=null==s.defaultSymbolEnabled||s.defaultSymbolEnabled,s.classificationMethod=s.classificationMethod||"equal-interval",s.normalizationType=I(s);const l=q(s.layer,O);if(s.layer=l,!l)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+F(O).join(", "));if(!(null!=s.minValue&&null!=s.maxValue)&&(null!=s.minValue||null!=s.maxValue))throw new i("size-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=a(s.signal)?{signal:s.signal}:null;await l.load(n);const r=l.geometryType,o=s.symbolType.includes("3d");if(s.outlineOptimizationEnabled="polygon"===r&&s.outlineOptimizationEnabled,"mesh"===r)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===r||"polygon"===r))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(s.symbolType.includes("3d-volumetric")&&(!s.view||"3d"!==s.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 t=await k({field:s.field,normalizationField:s.normalizationField}),m=v(l,t,"size-class-breaks-renderer:invalid-parameters");if(m)throw m;return s}function W(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const a=i;return a.analyzeData=!(null!=i.minValue&&null!=i.maxValue),a}function L(e){const i={...e},a=i.symbolType.includes("3d-volumetric"),s=i;return s.worldScale=a,a&&(s.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,s}async function P(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 s={...e};s.symbolType=s.symbolType||"2d",s.defaultSymbolEnabled=null==s.defaultSymbolEnabled||s.defaultSymbolEnabled;const l=q(s.layer,O);if(s.layer=l,!l)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+F(O).join(", "));const n=a(s.signal)?{signal:s.signal}:null;await l.load(n);const r=l.geometryType,o=s.symbolType.includes("3d");if(s.outlineOptimizationEnabled="polygon"===r&&s.outlineOptimizationEnabled,"mesh"===r)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===r||"polygon"===r))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(s.symbolType.includes("3d-volumetric")&&(!s.view||"3d"!==s.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=V(l,s.startTime,s.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(s.unit&&!j.includes(s.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${j.join(", ")}`);return s}async function $(e){let i=e.sizeScheme,s=null,l=null;const n=await S(e.basemap,e.view);if(s=a(n.basemapId)?n.basemapId:null,l=a(n.basemapTheme)?n.basemapTheme:null,i)return{scheme:U(i),basemapId:s,basemapTheme:l};const r=D({basemap:s,basemapTheme:l,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return r&&(i=r.primaryScheme,s=r.basemapId,l=r.basemapTheme),{scheme:i,basemapId:s,basemapTheme:l}}function H(e,i){let a;switch(i){case"point":case"multipoint":{const i=e;a=[i.minSize,i.maxSize];break}case"polyline":{const i=e;a=[i.minWidth,i.maxWidth];break}case"polygon":{const i=e;a=[i.marker.minSize,i.marker.maxSize];break}}return a}function _(e,i){e.transformationType===u.ClampedLinear&&"below"===i&&e.flipSizes()}async function G(e,a,s,l){const{theme:n,field:t,normalizationField:u,minValue:p,maxValue:d,axis:y}=e,c=e.layer,b=t&&!("function"==typeof t)?c.getField(t):null,f=b&&b.type===M,w=c.geometryType,v=await $({basemap:e.basemap,geometryType:w,sizeScheme:e.sizeScheme,worldScale:e.worldScale,view:e.view}),g=v.scheme;if(!g)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const T=l&&[l.minSize,l.maxSize]||H(g,w),{minDataValue:x,maxDataValue:S,defaultValuesUsed:E}=h(a,s,n,f,"above"===n||"below"===n),V=[],j="height"===y,k=j?y:void 0,I=T[0];let q=T[1];if(j&&"number"==typeof I&&"number"==typeof q){const e=z({minSize:I,maxSize:q},k);V.push(new m({axis:"width-and-depth",minSize:e.minSize})),q=e.maxSize}const O=new m({field:t,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:u,axis:k,minSize:I,maxSize:q,minDataValue:x,maxDataValue:S,legendOptions:e.legendOptions});_(O,n),V.unshift(O);const F=new o({type:"size",theme:n,minSliderValue:null!=p?p:a.min,maxSliderValue:null!=d?d:a.max}),D=new r({visualVariables:[F]});return{basemapId:v.basemapId,basemapTheme:v.basemapTheme,visualVariables:V,statistics:a,defaultValuesUsed:E,sizeScheme:U(g),authoringInfo:D}}async function J(i,a,s,n,r){const o=await l("esri/smartMapping/t9n/smartMapping"),t=r.layer,m=r.field,u=t.geometryType,p=r.defaultSymbolEnabled,d=U(i.sizeScheme),y="polygon"===u,c=y?d.marker:d,b=y?d.background:null,f=y?"point":u,w=a&&a.opacity,v=i.visualVariables.map((e=>e.clone()));a&&a.visualVariables&&a.visualVariables.length&&v.push(...a.visualVariables.map((e=>e.clone())));return{renderer:new e({backgroundFillSymbol:b&&g(u,{type:r.symbolType,color:b.color,outline:T(b,u,w)}),classBreakInfos:[{minValue:-R,maxValue:R,symbol:g(f,{type:r.symbolType,color:c.color,size:x(c,f),outline:T(c,f,w)})}],defaultLabel:p?o.other:null,defaultSymbol:p?g(f,{type:r.symbolType,color:c.noDataColor,size:x(c,f,!0),outline:T(c,f,w)}):null,field:m,normalizationField:n,normalizationType:s,valueExpression:r.valueExpression,valueExpressionTitle:r.valueExpressionTitle,visualVariables:v,authoringInfo:i.authoringInfo&&i.authoringInfo.clone()}),visualVariables:i.visualVariables.map((e=>e.clone())),statistics:i.statistics,defaultValuesUsed:i.defaultValuesUsed,sizeScheme:U(i.sizeScheme),basemapId:i.basemapId,basemapTheme:i.basemapTheme}}function K(e,i){const a=s(e.minSize),l=(s(e.maxSize)-a)/(i>=4?i-1:i),n=[];for(let s=0;s<i;s++)n.push(a+l*s);return n}async function N(i,a){const s=await l("esri/smartMapping/t9n/smartMapping"),n=i.layer,o=i.defaultSymbolEnabled,m=n.geometryType,u="polygon"===m,p=i.symbolType.includes("3d-volumetric"),d=await $({basemap:i.basemap,geometryType:m,sizeScheme:i.sizeScheme,worldScale:p,view:i.view}),y=d.scheme,{result:c,outlineResult:b}=a,f=c.classBreakInfos,w=i.classificationMethod,v=i.normalizationType,h=u?y.marker:y,S=u?y.background:null,E=u?"point":m,V=H(h,E),j=p&&z({minSize:V[0],maxSize:V[1]},"height"),k=K({minSize:V[0],maxSize:p?j.maxSize:V[1]},f.length),I=b&&b.opacity,q=new e({backgroundFillSymbol:S&&g(m,{type:i.symbolType,color:S.color,outline:T(S,m,I)}),classBreakInfos:f.map(((e,a)=>({minValue:e.minValue,maxValue:e.maxValue,symbol:g(E,{type:i.symbolType,color:h.color,size:k[a],widthAndDepth:j&&j.minSize,outline:T(h,E,I)}),label:e.label}))),defaultLabel:o?s.other:null,defaultSymbol:o?g(E,{type:i.symbolType,color:h.noDataColor,size:x(h,E,!0),widthAndDepth:j&&j.minSize,outline:T(h,E,I)}):null,field:i.field,valueExpression:i.valueExpression,valueExpressionTitle:i.valueExpressionTitle,normalizationType:v,normalizationField:i.normalizationField,normalizationTotal:"percent-of-total"===v?c.normalizationTotal:void 0,legendOptions:i.legendOptions,authoringInfo:new r({type:"class-breaks-size",classificationMethod:w,standardDeviationInterval:i.standardDeviationInterval})});return"standard-deviation"!==w&&t({classBreakInfos:q.classBreakInfos,classificationMethod:w,normalizationType:v,round:!0}),b&&b.visualVariables&&b.visualVariables.length&&(q.visualVariables=b.visualVariables.map((e=>e.clone()))),{renderer:q,sizeScheme:U(y),classBreaksResult:c,defaultValuesUsed:a.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function Q(e){const i=await B(e),{view:a,field:s,valueExpression:l,minValue:n,maxValue:r,layer:o,normalizationField:t,signal:m,statistics:u}=i,p=t?"field":void 0,[d,f,w]=await Promise.all([u||c({layer:o,field:s,valueExpression:l,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:p,normalizationField:t,minValue:n,maxValue:r,view:a,signal:m}),"90-10"===i.theme?b({layer:o,field:s,normalizationField:t,valueExpression:l,classificationMethod:"quantile",minValue:n,maxValue:r,view:a,numClasses:10,signal:m}):null,i.sizeOptimizationEnabled?y({view:a,layer:o,signal:m}):null]);return G(i,d,f?.result,w)}async function X(e){const i=await C(e),a={layer:i.layer,view:i.view,signal:i.signal},[s,l]=await Promise.all([Q(L(i)),i.outlineOptimizationEnabled?d(a):null]),n=i.normalizationField;return J(s,l,n?"field":void 0,n,i)}async function Y(e){const i=await A(e);return N(i,await b(W(i),i.outlineOptimizationEnabled))}async function Z(e){const i=await P(e),{defaultSymbolEnabled:a,view:s,startTime:r,endTime:o,symbolType:t,minValue:m,maxValue:u,signal:y}=i,c=i.layer,b={layer:i.layer,view:i.view,signal:y},[v,h]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await p({view:s,layer:c,startTime:r,endTime:o,minValue:m,maxValue:u,signal:y}),i.outlineOptimizationEnabled?d(b):null]),{unit:z,statistics:g}=v,T=E({layer:c,startTime:r,endTime:o,unit:z}).valueExpression,x=await l("esri/smartMapping/t9n/smartMapping"),S=n(x[`ageInfo_${z}`],{unit:z,startTime:f(r,z,c),endTime:f(o,z,c)}),V=await Q(L({layer:c,basemap:i.basemap,valueExpression:T,symbolType:t,statistics:g,legendOptions:{title:S},theme:i.theme,sizeScheme:i.sizeScheme,sizeOptimizationEnabled:i.sizeOptimizationEnabled,view:i.view,minValue:m,maxValue:u,signal:y})),j={layer:c,valueExpression:T,defaultSymbolEnabled:a,symbolType:t},k=await J(V,h,null,null,j);return k.renderer.authoringInfo.visualVariables.forEach((e=>w(e,r,o,z))),{...k,unit:z}}export{Z as createAgeRenderer,Y as createClassBreaksRenderer,X as createContinuousRenderer,Q as createVisualVariables};
|
|
5
|
+
import e from"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import i from"../../core/Error.js";import{isSome as a}from"../../core/maybe.js";import{toPt as s}from"../../core/screenUtils.js";import{fetchMessageBundle as l}from"../../intl/messages.js";import{substitute as n}from"../../intl/substitute.js";import r from"../../renderers/support/AuthoringInfo.js";import o from"../../renderers/support/AuthoringInfoVisualVariable.js";import{setLabelsForClassBreaks as t}from"../../renderers/support/utils.js";import m from"../../renderers/visualVariables/SizeVariable.js";import{TransformationType as u}from"../../renderers/visualVariables/support/sizeVariableUtils.js";import p from"../heuristics/ageUnit.js";import d from"../heuristics/outline.js";import y from"../heuristics/sizeRange.js";import{getSummaryStatistics as c,getClassBreaks as b,formatDate as f,updateAgeRendererAuthoringInfoVV as w,verifyBasicFieldValidity as v,getDataRange as h,getSizeRangeForAxis as z,createSymbol as g,getSymbolOutlineFromScheme as T,getSymbolSizeFromScheme as x,getBasemapInfo as S}from"./support/utils.js";import{getAgeExpressions as E,verifyDates as V,supportedAgeUnits as j}from"../statistics/support/ageUtils.js";import{getFieldsList as k,getNormalizationType as I}from"../support/utils.js";import{createLayerAdapter as q,featureCapableLayerTypes as O,getLayerTypeLabels as F}from"../support/adapters/support/layerUtils.js";import{cloneScheme as U,getSchemes as D}from"../symbology/size.js";const M="date",R=2**53-1;async function B(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");const s={...e};if("90-10"===s.theme)throw new i("size-visual-variable:not-supported","Only 'high-to-low', 'above', 'below' themes are supported.");const l=q(s.layer,O);if(s.layer=l,!l)throw new i("size-visual-variable:invalid-parameters","'layer' must be one of these types: "+F(O).join(", "));"height"===s.axis&&(s.sizeOptimizationEnabled=!1);const n=a(s.signal)?{signal:s.signal}:null;await l.load(n);const r=l.geometryType;if("mesh"===r)throw new i("size-visual-variable:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(s.worldScale){if("polyline"===r||"polygon"===r)throw new i("size-visual-variable:not-supported","'worldScale' sizing is not supported for polyline and polygon layers");if(!s.view||"3d"!==s.view.type)throw new i("size-visual-variable:invalid-parameters","'view' parameter should be an instance of SceneView when 'worldScale' parameter is true")}const o=await k({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),t=v(l,o,"size-visual-variable:invalid-parameters");if(t)throw t;return s}async function C(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");const s={...e};s.symbolType=s.symbolType||"2d",s.defaultSymbolEnabled=null==s.defaultSymbolEnabled||s.defaultSymbolEnabled;const l=q(s.layer,O);if(s.layer=l,!l)throw new i("size-continuous-renderer:invalid-parameters","'layer' must be one of these types: "+F(O).join(", "));const n=a(s.signal)?{signal:s.signal}:null;await l.load(n);const r=l.geometryType,o=s.symbolType.includes("3d");if(s.outlineOptimizationEnabled="polygon"===r&&s.outlineOptimizationEnabled,"mesh"===r)throw new i("size-continuous-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===r||"polygon"===r))throw new i("size-continuous-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(s.symbolType.includes("3d-volumetric")&&(!s.view||"3d"!==s.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");const t=await k({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),m=v(l,t,"size-continuous-renderer:invalid-parameters");if(m)throw m;return s}async function A(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");const s={...e};s.symbolType=s.symbolType||"2d",s.defaultSymbolEnabled=null==s.defaultSymbolEnabled||s.defaultSymbolEnabled,s.classificationMethod=s.classificationMethod||"equal-interval",s.normalizationType=I(s);const l=q(s.layer,O);if(s.layer=l,!l)throw new i("size-class-breaks-renderer:invalid-parameters","'layer' must be one of these types: "+F(O).join(", "));if(!(null!=s.minValue&&null!=s.maxValue)&&(null!=s.minValue||null!=s.maxValue))throw new i("size-class-breaks-renderer:missing-parameters","Both 'minValue' and 'maxValue' are required when specifying custom data range");const n=a(s.signal)?{signal:s.signal}:null;await l.load(n);const r=l.geometryType,o=s.symbolType.includes("3d");if(s.outlineOptimizationEnabled="polygon"===r&&s.outlineOptimizationEnabled,"mesh"===r)throw new i("size-class-breaks-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===r||"polygon"===r))throw new i("size-class-breaks-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(s.symbolType.includes("3d-volumetric")&&(!s.view||"3d"!==s.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 t=await k({field:s.field,normalizationField:s.normalizationField}),m=v(l,t,"size-class-breaks-renderer:invalid-parameters");if(m)throw m;return s}function P(e){const i={...e};delete i.basemap,delete i.sizeScheme,delete i.legendOptions,delete i.symbolType,delete i.defaultSymbolEnabled;const a=i;return a.analyzeData=!(null!=i.minValue&&null!=i.maxValue),a}function W(e){const i={...e},a=i.symbolType.includes("3d-volumetric"),s=i;return s.worldScale=a,a&&(s.axis="3d-volumetric-uniform"===i.symbolType?"all":"height"),delete i.symbolType,delete i.defaultSymbolEnabled,s}async function L(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 s={...e};s.symbolType=s.symbolType||"2d",s.defaultSymbolEnabled=null==s.defaultSymbolEnabled||s.defaultSymbolEnabled;const l=q(s.layer,O);if(s.layer=l,!l)throw new i("size-age-renderer:invalid-parameters","'layer' must be one of these types: "+F(O).join(", "));const n=a(s.signal)?{signal:s.signal}:null;await l.load(n);const r=l.geometryType,o=s.symbolType.includes("3d");if(s.outlineOptimizationEnabled="polygon"===r&&s.outlineOptimizationEnabled,"mesh"===r)throw new i("size-age-renderer:invalid-parameters","Size visualization is not applicable to layers with 'mesh' geometry type");if(o&&("polyline"===r||"polygon"===r))throw new i("size-age-renderer:not-supported","3d symbols are not supported for polyline and polygon layers");if(s.symbolType.includes("3d-volumetric")&&(!s.view||"3d"!==s.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=V(l,s.startTime,s.endTime,"size-age-renderer:invalid-parameters");if(t)throw t;if(s.unit&&!j.includes(s.unit))throw new i("size-age-renderer:invalid-unit",`Supported units are: ${j.join(", ")}`);return s}async function $(e){let i=e.sizeScheme,s=null,l=null;const n=await S(e.basemap,e.view);if(s=a(n.basemapId)?n.basemapId:null,l=a(n.basemapTheme)?n.basemapTheme:null,i)return{scheme:U(i),basemapId:s,basemapTheme:l};const r=D({basemap:s,basemapTheme:l,geometryType:e.geometryType,worldScale:e.worldScale,view:e.view});return r&&(i=r.primaryScheme,s=r.basemapId,l=r.basemapTheme),{scheme:i,basemapId:s,basemapTheme:l}}function H(e,i){let a;switch(i){case"point":case"multipoint":{const i=e;a=[i.minSize,i.maxSize];break}case"polyline":{const i=e;a=[i.minWidth,i.maxWidth];break}case"polygon":{const i=e;a=[i.marker.minSize,i.marker.maxSize];break}}return a}function _(e,i){e.transformationType===u.ClampedLinear&&"below"===i&&e.flipSizes()}async function G(e,a,s,l){const{theme:n,field:t,normalizationField:u,minValue:p,maxValue:d,axis:y}=e,c=e.layer,b=t&&!("function"==typeof t)?c.getField(t):null,f=b&&b.type===M,w=c.geometryType,v=await $({basemap:e.basemap,geometryType:w,sizeScheme:e.sizeScheme,worldScale:e.worldScale,view:e.view}),g=v.scheme;if(!g)throw new i("size-visual-variable:insufficient-info","Unable to find size scheme");const T=l&&[l.minSize,l.maxSize]||H(g,w),{minDataValue:x,maxDataValue:S,defaultValuesUsed:E}=h(a,s,n,f,"above"===n||"below"===n),V=[],j="height"===y,k=j?y:void 0,I=T[0];let q=T[1];if(j&&"number"==typeof I&&"number"==typeof q){const e=z({minSize:I,maxSize:q},k);V.push(new m({axis:"width-and-depth",minSize:e.minSize})),q=e.maxSize}const O=new m({field:t,valueExpression:e.valueExpression,valueExpressionTitle:e.valueExpressionTitle,valueUnit:"unknown",normalizationField:u,axis:k,minSize:I,maxSize:q,minDataValue:x,maxDataValue:S,legendOptions:e.legendOptions});_(O,n),V.unshift(O);const F=new o({type:"size",theme:n,minSliderValue:null!=p?p:a.min,maxSliderValue:null!=d?d:a.max}),D=new r({visualVariables:[F]});return{basemapId:v.basemapId,basemapTheme:v.basemapTheme,visualVariables:V,statistics:a,defaultValuesUsed:E,sizeScheme:U(g),authoringInfo:D}}async function J(i,a,s,n,r){const o=await l("esri/smartMapping/t9n/smartMapping"),t=r.layer,m=r.field,u=t.geometryType,p=r.defaultSymbolEnabled,d=U(i.sizeScheme),y="polygon"===u,c=y?d.marker:d,b=y?d.background:null,f=y?"point":u,w=a&&a.opacity,v=i.visualVariables.map((e=>e.clone()));a&&a.visualVariables&&a.visualVariables.length&&v.push(...a.visualVariables.map((e=>e.clone())));return{renderer:new e({backgroundFillSymbol:b&&g(u,{type:r.symbolType,color:b.color,outline:T(b,u,w)}),classBreakInfos:[{minValue:-R,maxValue:R,symbol:g(f,{type:r.symbolType,color:c.color,size:x(c,f),outline:T(c,f,w)})}],defaultLabel:p?o.other:null,defaultSymbol:p?g(f,{type:r.symbolType,color:c.noDataColor,size:x(c,f,!0),outline:T(c,f,w)}):null,field:m,normalizationField:n,normalizationType:s,valueExpression:r.valueExpression,valueExpressionTitle:r.valueExpressionTitle,visualVariables:v,authoringInfo:i.authoringInfo&&i.authoringInfo.clone()}),visualVariables:i.visualVariables.map((e=>e.clone())),statistics:i.statistics,defaultValuesUsed:i.defaultValuesUsed,sizeScheme:U(i.sizeScheme),basemapId:i.basemapId,basemapTheme:i.basemapTheme}}function K(e,i){const a=s(e.minSize),l=(s(e.maxSize)-a)/(i>=4?i-1:i),n=[];for(let s=0;s<i;s++)n.push(a+l*s);return n}async function N(i,a){const s=await l("esri/smartMapping/t9n/smartMapping"),n=i.layer,o=i.defaultSymbolEnabled,m=n.geometryType,u="polygon"===m,p=i.symbolType.includes("3d-volumetric"),d=await $({basemap:i.basemap,geometryType:m,sizeScheme:i.sizeScheme,worldScale:p,view:i.view}),y=d.scheme,{result:c,outlineResult:b}=a,f=c.classBreakInfos,w=i.classificationMethod,v=i.normalizationType,h=u?y.marker:y,S=u?y.background:null,E=u?"point":m,V=H(h,E),j=p&&z({minSize:V[0],maxSize:V[1]},"height"),k=K({minSize:V[0],maxSize:p?j.maxSize:V[1]},f.length),I=b&&b.opacity,q=new e({backgroundFillSymbol:S&&g(m,{type:i.symbolType,color:S.color,outline:T(S,m,I)}),classBreakInfos:f.map(((e,a)=>({minValue:e.minValue,maxValue:e.maxValue,symbol:g(E,{type:i.symbolType,color:h.color,size:k[a],widthAndDepth:j&&j.minSize,outline:T(h,E,I)}),label:e.label}))),defaultLabel:o?s.other:null,defaultSymbol:o?g(E,{type:i.symbolType,color:h.noDataColor,size:x(h,E,!0),widthAndDepth:j&&j.minSize,outline:T(h,E,I)}):null,field:i.field,valueExpression:i.valueExpression,valueExpressionTitle:i.valueExpressionTitle,normalizationType:v,normalizationField:i.normalizationField,normalizationTotal:"percent-of-total"===v?c.normalizationTotal:void 0,legendOptions:i.legendOptions,authoringInfo:new r({type:"class-breaks-size",classificationMethod:w,standardDeviationInterval:i.standardDeviationInterval})});return"standard-deviation"!==w&&t({classBreakInfos:q.classBreakInfos,classificationMethod:w,normalizationType:v,round:!0}),b&&b.visualVariables&&b.visualVariables.length&&(q.visualVariables=b.visualVariables.map((e=>e.clone()))),{renderer:q,sizeScheme:U(y),classBreaksResult:c,defaultValuesUsed:a.defaultValuesUsed,basemapId:d.basemapId,basemapTheme:d.basemapTheme}}async function Q(e){const i=await B(e),{view:a,field:s,valueExpression:l,minValue:n,maxValue:r,layer:o,normalizationField:t,signal:m,statistics:u}=i,p=t?"field":void 0,[d,f,w]=await Promise.all([u||c({layer:o,field:s,valueExpression:l,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:p,normalizationField:t,minValue:n,maxValue:r,view:a,signal:m}),"90-10"===i.theme?b({layer:o,field:s,normalizationField:t,valueExpression:l,classificationMethod:"quantile",minValue:n,maxValue:r,view:a,numClasses:10,signal:m}):null,i.sizeOptimizationEnabled?y({view:a,layer:o,signal:m}):null]);return G(i,d,f?.result,w)}async function X(e){const i=await C(e),a={layer:i.layer,view:i.view,signal:i.signal},[s,l]=await Promise.all([Q(W(i)),i.outlineOptimizationEnabled?d(a):null]),n=i.normalizationField;return J(s,l,n?"field":void 0,n,i)}async function Y(e){const i=await A(e);return N(i,await b(P(i),i.outlineOptimizationEnabled))}async function Z(e){const i=await L(e),{defaultSymbolEnabled:a,view:s,startTime:r,endTime:o,symbolType:t,minValue:m,maxValue:u,signal:y}=i,c=i.layer,b={layer:i.layer,view:i.view,signal:y},[v,h]=await Promise.all([i.unit?{unit:i.unit,statistics:null,valueExpression:null}:await p({view:s,layer:c,startTime:r,endTime:o,minValue:m,maxValue:u,signal:y}),i.outlineOptimizationEnabled?d(b):null]),{unit:z,statistics:g}=v,T=E({layer:c,startTime:r,endTime:o,unit:z}).valueExpression,x=await l("esri/smartMapping/t9n/smartMapping"),S=n(x[`ageInfo_${z}`],{unit:z,startTime:f(r,z,c),endTime:f(o,z,c)}),V=await Q(W({layer:c,basemap:i.basemap,valueExpression:T,symbolType:t,statistics:g,legendOptions:{title:S},theme:i.theme,sizeScheme:i.sizeScheme,sizeOptimizationEnabled:i.sizeOptimizationEnabled,view:i.view,minValue:m,maxValue:u,signal:y})),j={layer:c,valueExpression:T,defaultSymbolEnabled:a,symbolType:t},k=await J(V,h,null,null,j);return k.renderer.authoringInfo.visualVariables.forEach((e=>w(e,r,o,z))),{...k,unit:z}}export{Z as createAgeRenderer,Y as createClassBreaksRenderer,X as createContinuousRenderer,Q as createVisualVariables};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import"../../renderers/PointCloudClassBreaksRenderer.js";import"../../renderers/PointCloudRenderer.js";import"../../renderers/PointCloudRGBRenderer.js";import"../../renderers/PointCloudStretchRenderer.js";import e from"../../renderers/PointCloudUniqueValueRenderer.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import r from"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import s from"../../core/Error.js";import{clone as l}from"../../core/lang.js";import{isSome as o}from"../../core/maybe.js";import{fetchMessageBundle as i}from"../../intl/messages.js";import{LegendOptions as t}from"../../renderers/support/LegendOptions.js";import{createUniqueValueLabel as n,calculateDateFormatInterval as a}from"../../renderers/support/utils.js";import p from"../heuristics/outline.js";import u from"../heuristics/sizeRange.js";import{getPointSizeAlgorithm as m,verifyBasicFieldValidity as d,isValidPointSize as c,createColors as y,getSymbolSizeFromScheme as f,getSymbolOutlineFromScheme as b,createSymbol as h,getBasemapInfo as v}from"./support/utils.js";import g from"../statistics/uniqueValues.js";import{getFieldsList as w}from"../support/utils.js";import{createLayerAdapter as T,featureCapableLayerTypes as
|
|
5
|
+
import"../../renderers/PointCloudClassBreaksRenderer.js";import"../../renderers/PointCloudRenderer.js";import"../../renderers/PointCloudRGBRenderer.js";import"../../renderers/PointCloudStretchRenderer.js";import e from"../../renderers/PointCloudUniqueValueRenderer.js";import"../../renderers/ClassBreaksRenderer.js";import"../../renderers/DictionaryRenderer.js";import"../../renderers/DotDensityRenderer.js";import"../../renderers/HeatmapRenderer.js";import"../../renderers/PieChartRenderer.js";import"../../renderers/Renderer.js";import"../../renderers/SimpleRenderer.js";import r from"../../renderers/UniqueValueRenderer.js";import"../../renderers/support/jsonUtils.js";import s from"../../core/Error.js";import{clone as l}from"../../core/lang.js";import{isSome as o}from"../../core/maybe.js";import{fetchMessageBundle as i}from"../../intl/messages.js";import{LegendOptions as t}from"../../renderers/support/LegendOptions.js";import{createUniqueValueLabel as n,calculateDateFormatInterval as a}from"../../renderers/support/utils.js";import p from"../heuristics/outline.js";import u from"../heuristics/sizeRange.js";import{getPointSizeAlgorithm as m,verifyBasicFieldValidity as d,isValidPointSize as c,createColors as y,getSymbolSizeFromScheme as f,getSymbolOutlineFromScheme as b,createSymbol as h,getBasemapInfo as v}from"./support/utils.js";import g from"../statistics/uniqueValues.js";import{getFieldsList as w}from"../support/utils.js";import{createLayerAdapter as T,featureCapableLayerTypes as j,getLayerTypeLabels as E,LayerType as x}from"../support/adapters/support/layerUtils.js";import{cloneScheme as I,getSchemes as V}from"../symbology/type.js";const z="date";async function M(e){if(!e||!e.layer||!e.field&&!e.valueExpression)throw new s("type-renderer:missing-parameters","'layer' and 'field' or 'valueExpression' parameters are required");if(e.valueExpression&&!e.view)throw new s("type-renderer:missing-parameters","View is required when 'valueExpression' is specified");const r={...e};r.symbolType=r.symbolType||"2d",r.numTypes=null==r.numTypes?10:r.numTypes,r.defaultSymbolEnabled=null==r.defaultSymbolEnabled||r.defaultSymbolEnabled,r.sortBy=null==r.sortBy?"count":r.sortBy,r.sortEnabled=null==r.sortEnabled||r.sortEnabled,r.statistics=l(r.statistics);const i=T(r.layer,j);if(r.layer=i,!i)throw new s("type-renderer:invalid-parameters","'layer' must be one of these types: "+E(j).join(", "));const t=o(r.signal)?{signal:r.signal}:null;await i.load(t);const n=i.geometryType;if(r.outlineOptimizationEnabled="polygon"===n&&r.outlineOptimizationEnabled,r.sizeOptimizationEnabled=("point"===n||"multipoint"===n||"polyline"===n)&&r.sizeOptimizationEnabled,"mesh"===n)r.symbolType="3d-volumetric",r.colorMixMode=r.colorMixMode||"replace",r.edgesType=r.edgesType||"none";else{if("3d-volumetric-uniform"===r.symbolType&&"point"!==n)throw new s("type-renderer:not-supported","3d-volumetric-uniform symbols are supported for point layers only");if(r.symbolType.includes("3d-volumetric")&&(!r.view||"3d"!==r.view.type))throw new s("type-renderer:invalid-parameters","'view' parameter should be an instance of SceneView when 'symbolType' parameter is '3d-volumetric' or '3d-volumetric-uniform'")}const a=await w({field:r.field,valueExpression:r.valueExpression}),p=d(i,a,"type-renderer:invalid-parameters");if(p)throw p;return r}async function S(e){if(!(e&&e.layer&&e.field))throw new s("type-point-cloud-class-renderer:missing-parameters","'layer' and 'field' parameters are required");const r={...e};r.statistics=l(r.statistics);const i=[x.PointCloudLayer],t=T(r.layer,i);if(r.layer=t,r.density=r.density||25,r.size=r.size||"100%",!c(r.size))throw new s("type-point-cloud-class-renderer:invalid-parameters","Invalid 'size' parameter. It should be a string of the form '100%'");if(!t)throw new s("type-point-cloud-class-renderer:invalid-parameters","'layer' must be one of these types: "+E(i).join(", "));const n=o(r.signal)?{signal:r.signal}:null;await t.load(n);const a=await w({field:r.field}),p=d(t,a,"type-point-cloud-class-renderer:invalid-parameters");if(p)throw p;return r}async function R(e){let r=e.typeScheme,s=null,l=null;const i=await v(e.basemap,e.view);if(s=o(i.basemapId)?i.basemapId:null,l=o(i.basemapTheme)?i.basemapTheme:null,r)return{scheme:I(r),basemapId:s,basemapTheme:l};const t=V({basemap:s,basemapTheme:l,geometryType:e.geometryType,theme:e.theme,worldScale:e.worldScale,view:e.view});return t&&(r=t.primaryScheme,s=t.basemapId,l=t.basemapTheme),{scheme:r,basemapId:s,basemapTheme:l}}function q(e,r){let s;return s=e.label<r.label?-1:e.label>r.label?1:0,s}function C(e,r){let s;return s=e.value<r.value?-1:e.value>r.value?1:0,s}function O(e,r){let s=r.count-e.count;return 0===s&&(s=q(e,r)),s}function P(e,r){let s=r.count-e.count;return 0===s&&(s=C(e,r)),s}function B(e,r,s){let l;"count"===r?(l=P,s&&s.codedValues&&(l=O)):"value"===r&&(l=C,s&&s.codedValues&&(l=q)),l&&e.sort(l)}async function U(e,s,l,o){const p=await i("esri/smartMapping/t9n/smartMapping"),u=e.uniqueValueInfos,m=s.layer,d=s.field,c=d?m.getField(d):null,v=c?m.getFieldDomain(c.name):null,g=-1===s.numTypes?u.length:s.numTypes,w=m.geometryType,T=await R({basemap:s.basemap,geometryType:w,typeScheme:s.typeScheme,worldScale:s.symbolType.includes("3d-volumetric"),view:s.view}),j=T.scheme,E=new r({field:d});let x,V=-1;const M={value:null,domain:v,fieldInfo:c};if(u.forEach(((e,r)=>{M.value=e.value,e.label=n(M),null===e.value&&(V=r)})),V>-1&&(x=u.splice(V,1)[0]),!1!==s.sortEnabled&&B(u,s.sortBy,v),c&&c.type===z){const e=u.filter(((e,r)=>r<g)).map((e=>e.value));M.dateFormatInterval=a(e)}const S=l&&l.opacity;let q=y(j.colors,u.length);const C=f(j,w),O=b(j,w,S);u.forEach(((e,r)=>{M.value=e.value,e.label=n(M),e.symbol=h(w,{type:s.symbolType,color:q[r],size:C,outline:O,meshInfo:{colorMixMode:s.colorMixMode,edgesType:s.edgesType}})})),s.valueExpression&&(E.valueExpression=s.valueExpression,E.valueExpressionTitle=s.valueExpressionTitle),s.legendOptions&&(E.legendOptions=new t(s.legendOptions)),q=y(j.colors,g);for(let r=0;r<g;r++){const e=u[r];e&&E.addUniqueValueInfo({value:e.value,label:e.label,symbol:h(w,{type:s.symbolType,color:q[r],size:C,outline:O,meshInfo:{colorMixMode:s.colorMixMode,edgesType:s.edgesType}})})}s.defaultSymbolEnabled&&(E.defaultSymbol=h(w,{type:s.symbolType,color:j.noDataColor,size:C,outline:O,meshInfo:{colorMixMode:s.colorMixMode,edgesType:s.edgesType}}),E.defaultLabel=p.other),x&&(x.symbol=h(w,{type:s.symbolType,color:j.noDataColor,size:C,outline:O,meshInfo:{colorMixMode:s.colorMixMode,edgesType:s.edgesType}}),u.push(x));const P=[],U=E.uniqueValueInfos.length===u.length?-1:E.uniqueValueInfos.length;if(U>-1)for(let r=U;r<u.length;r++)P.push({...u[r]});return l&&l.visualVariables&&l.visualVariables.length&&(E.visualVariables=l.visualVariables.map((e=>e.clone()))),o&&o.minSize&&(E.visualVariables?E.visualVariables.push(o.minSize):E.visualVariables=[o.minSize]),{renderer:E,uniqueValueInfos:u,excludedUniqueValueInfos:P,typeScheme:I(j),basemapId:T.basemapId,basemapTheme:T.basemapTheme}}async function D(e,r){const s=e.uniqueValueInfos,l=await R({basemap:"gray",theme:"point-cloud-class",geometryType:"point",typeScheme:r}),o=l&&l.scheme,i="point-cloud-class"===o.theme,t=i?o.colors:y(o.colors,s.length);return B(s,"value"),s.map(((e,r)=>{const s=e.value;let l=null;return i?(l=t[s],l||(l=t[t.length-1])):l=t[r],{values:[s],color:l,label:e.label}}))}async function A(e){const r=await M(e),{layer:s,view:l,signal:o}=r,i={layer:s,field:r.field,valueExpression:r.valueExpression,returnAllCodedValues:r.returnAllCodedValues,view:l,signal:o},[t,n,a]=await Promise.all([null!=r.statistics?r.statistics:g(i),r.outlineOptimizationEnabled?p({layer:s,view:l,signal:o}):null,r.sizeOptimizationEnabled?u({layer:s,view:l,signal:o}):null]);return U(t,r,n,a)}async function F(r){const s=await S(r),l=null!=s.statistics?s.statistics:await g({layer:s.layer,field:s.field,signal:s.signal});return{renderer:new e({field:s.field,pointsPerInch:s.density,pointSizeAlgorithm:m(s.size),colorUniqueValueInfos:await D(l,s.typeScheme)})}}export{F as createPCClassRenderer,A as createRenderer};
|
package/support/arcadeUtils.js
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.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{p as e,c as r,e as n,a as t,r as s,l as i,b as u,d as a,f as o,s as
|
|
5
|
+
import{p as e,c as r,e as n,a as t,r as s,l as i,b as u,d as a,f as o,s as c,g as l}from"../chunks/arcade.js";export{h as arcade}from"../chunks/arcade.js";import f from"../arcade/Dictionary.js";export{default as Dictionary}from"../arcade/Dictionary.js";import p from"../arcade/Feature.js";export{default as arcadeFeature}from"../arcade/Feature.js";import{clone as m}from"../core/lang.js";import{isSizeVariable as y}from"../renderers/visualVariables/support/sizeVariableUtils.js";const d=/^\$(feature|aggregatedFeatures)\./i,v={vars:{$feature:"any",$view:"any"},spatialReference:null};function x(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")}function g(r){if(!r)return null;try{return e(r)}catch(n){}return null}function w(e,n){const t="string"==typeof e?g(e):e;if(!t)return null;try{return n=n||m(v),r(t,n)}catch(s){}return null}function E(e,r){return{vars:{$feature:null==e?new p:p.createFromGraphic(e),$view:r&&r.view},spatialReference:r&&r.sr}}function F(e,r,n){return p.createFromGraphicLikeObject(r,e,n)}function $(e,r){e.vars.$feature=r}function b(e,r){let t;try{t=n(e,r)}catch(s){t=null}return t}function j(e,r){let n;try{n=e?e(r):null}catch(t){n=null}return n}function S(e,r){try{return e?e(r):Promise.resolve(null)}catch(n){return Promise.resolve(null)}}function R(e,r){if(!e)return[];const n="string"==typeof e?g(e):e;if(!n)return[];const s=t(n);let i=new Array;s.forEach((e=>{d.test(e)&&(e=e.replace(d,""),i.push(e))}));const u=i.filter((e=>e.includes("*")));return i=i.filter((e=>!u.includes(e))),r&&u.forEach((e=>{const n=new RegExp(`^${e.split(/\*+/).map(x).join(".*")}$`,"i");r.forEach((e=>n.test(e)?i.push(e):null))})),[...new Set(i.sort())]}function z(e){return s(e,"$view")}function C(e,r){return!!e&&s(e,r)}function I(e){if(!e||null==e.spatialReference&&(null==e.scale||null==e.viewingMode))return;return{view:e.viewingMode&&null!=e.scale?new f({viewingMode:e.viewingMode,scale:e.scale}):null,sr:e.spatialReference}}function M({url:e,spatialReference:r,lrucache:n,interceptor:t}){const s=o();return s?s.createFeatureSetCollectionFromService(e,r,n,t):null}function k({layer:e,spatialReference:r,outFields:n,returnGeometry:t,lrucache:s,interceptor:i}){if(null===e)return null;const u=o();return u?u.constructFeatureSet(e,r,n,t??!0,s,i):null}function A(e){if(null===e?.map)return null;const r=o();return r?r.createFeatureSetCollectionFromMap(e.map,e.spatialReference,e.lrucache,e.interceptor):null}function D(e,r,n=[]){return i(e,r,n)}function G(){return u()}function P(){return a()}function V(e){return"simple"===e.type||"class-breaks"===e.type||"unique-value"===e.type||"dot-density"===e.type||"dictionary"===e.type||"pie-chart"===e.type}function L(e){return"esri.layers.support.LabelClass"===e.declaredClass}function q(e){return"esri.PopupTemplate"===e.declaredClass}function O(e,r){if(!e)return!1;if("string"==typeof e)return r(e);const n=e;if(V(n)){if("dot-density"===n.type){const e=n.attributes.some((e=>r(e.valueExpression)));if(e)return e}const e=n.visualVariables,t=!!e&&e.some((e=>{let n=r(e.valueExpression);return"size"===e.type&&(y(e.minSize)&&(n=n||r(e.minSize.valueExpression)),y(e.maxSize)&&(n=n||r(e.maxSize.valueExpression))),n}));return!(!("valueExpression"in n)||!r(n.valueExpression))||t}if(L(n)){const e=n.labelExpressionInfo&&n.labelExpressionInfo.expression;return!(!e||!r(e))||!1}return!!q(n)&&(!!n.expressionInfos&&n.expressionInfos.some((e=>r(e.expression)))||Array.isArray(n.content)&&n.content.some((e=>"expression"===e.type&&r(e.expressionInfo?.expression))))}function T(e){const r=g(e);return!!r&&c(r)}function U(e){return O(e,T)}function B(e){const r=g(e);return!!r&&l(r)}function H(e){return O(e,B)}export{k as convertFeatureLayerToFeatureSet,A as convertMapToFeatureSetCollection,M as convertServiceUrlToWorkspace,E as createExecContext,F as createFeature,w as createFunction,g as createSyntaxTree,z as dependsOnView,P as enableFeatureSetOperations,G as enableGeometryOperations,b as evalSyntaxTree,S as executeAsyncFunction,j as executeFunction,R as extractFieldNames,I as getViewInfo,U as hasGeometryFunctions,H as hasGeometryOperations,C as hasVariable,D as loadScriptDependencies,$ as updateExecContext};
|
package/support/revision.js
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.24/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
const
|
|
5
|
+
const c="20220512",b="0f57d6b45cf089c671a55b1c31f55ecb1c0e67ab";export{c as buildDate,b as commitHash};
|