UNPKG

@arcgis/core

Version:

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

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