UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 2.89 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{createVisualVariableUniforms as e,noVisualVariables as i}from"./VisualVariablesSchema.js";import{createPieChartMeshSchemas as a,createHeatmapMeshSchemas as n,createSymbolMeshSchemas as s,createDotDensityMeshSchemas as t}from"./symbols/SymbolSchema.js";async function l(e,i){if(!i)return{type:"simple",meshes:[]};switch(i.type){case"simple":return o(e,i);case"dot-density":return r(e,i);case"class-breaks":return u(e,i);case"unique-value":return m(e,i);case"dictionary":return c(i);case"heatmap":return p(e,i);case"pie-chart":return f(e,i)}}async function o(i,a){const n=a.symbols,t=n.length?n[0]:null,l=e(a);return{type:"simple",meshes:await s(t,{schemaOptions:i,uniforms:l})}}async function r(i,a){const n=e(a);return{type:"dot-density",meshes:await t(a,{schemaOptions:i,uniforms:n})}}async function u(a,n){const t=e(n),l=n.backgroundFillSymbol,o=n.normalizationType,r="log"===o?"esriNormalizeByLog":"percent-of-total"===o?"esriNormalizeByPercentOfTotal":"field"===o?"esriNormalizeByField":null,u=n.classBreakInfos.map((async e=>({meshes:await s(e.symbol,{path:`renderer-stop-${e.minValue}-${e.maxValue}`,schemaOptions:a,uniforms:t}),min:e.minValue,max:e.maxValue}))),m=(await Promise.all(u)).sort(((e,i)=>e.min-i.min)),c=await s(l,{schemaOptions:a,uniforms:{...i,visualVariableSizeOutlineScaleStops:t.visualVariableSizeOutlineScaleStops}}),p=await s(n.defaultSymbol,{schemaOptions:a,uniforms:t});return{type:"interval",field:n.field,expression:n.valueExpression,backgroundFill:c,defaultSymbol:p,intervals:m,normalizationField:n.normalizationField,normalizationTotal:n.normalizationTotal,normalizationType:r,isMaxInclusive:n.isMaxInclusive}}async function m(a,n){const t=[],l=e(n),o=await s(n.backgroundFillSymbol,{schemaOptions:a,uniforms:{...i,visualVariableSizeOutlineScaleStops:l.visualVariableSizeOutlineScaleStops}}),r=await s(n.defaultSymbol,{schemaOptions:a,uniforms:l});for(const e of n.uniqueValueInfos??[]){const i=await s(e.symbol,{path:`renderer-unique-value-${e.value}`,schemaOptions:a,uniforms:l});t.push({value:""+e.value,symbol:i})}return{type:"map",field:n.field,expression:n.valueExpression,field2:n.field2,field3:n.field3,fieldDelimiter:n.fieldDelimiter,backgroundFill:o,defaultSymbol:r,map:t}}async function c(i){const a=e(i),n=await i.getDictionaryInfo(),s=i.scaleExpression,t=null!=s&&"1"!==s?{valueExpressionInfo:{type:"CIMExpressionInfo",expression:i.scaleExpression,returnType:"Numeric"},defaultValue:1}:void 0;return{type:"dictionary",dictionaryInfo:n,userConfig:i.config??{},fieldMap:i.fieldMap??{},scaleExpression:t,visualVariableUniforms:a}}async function p(e,i){return{type:"heatmap",meshes:await n(i,e)}}async function f(e,i){return{type:"pie-chart",meshes:await a(i,e)}}export{l as createMatcherSchema};