UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 2.61 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{internalTrackPartField as e}from"../../../../../layers/support/streamLayerUtils.js";import{DictionaryMatcher as t}from"./DictionaryMatcher.js";import{IntervalMatcher as r}from"./IntervalMatcher.js";import{LabelMatcher as a}from"./LabelMatcher.js";import{MapMatcher as s}from"./MapMatcher.js";import{FeatureMatcher as c}from"./Matcher.js";async function n(e,n){switch(n.type){case"simple":case"heatmap":case"dot-density":case"pie-chart":return c.from(e,n);case"interval":return r.fromIntervalSchema(e,n);case"dictionary":return t.fromDictionaryRenderer(e,n);case"label":return a.fromLabelSchema(e,n);case"map":return s.fromMatcherSchema(e,n);case"subtype":return h.fromSubtypes(e,n);case"cluster":return i.fromClusterSchema(e,n);case"track":return o.fromTrackSchema(e,n);default:throw new Error("Impl")}}class h extends c{constructor(e,t){super(),this._subMatchers=e,this._subtypeField=t}static async fromSubtypes(e,t){const r=new Map,a=[];for(const s in t.renderers){const c=parseInt(s,10),h=n(e,t.renderers[s]).then(e=>r.set(c,e));a.push(h)}return await Promise.all(a),new h(r,t.subtypeField)}match(e,t,r){const a=e.readAttribute(this._subtypeField),s=this._subMatchers.get(a);return s?s.match(e,t,r):null}hasArcadeDependency(e){for(const t of this._subMatchers.values())if(t.hasArcadeDependency(e))return!0;return!1}}class i extends c{static async fromClusterSchema(e,t){const[r,a]=await Promise.all([n(e,t.feature),n(e,t.cluster)]);return new i(r,a)}constructor(e,t){super(),this._featureMatcher=e,this._clusterMatcher=t}match(e,t,r){return 1===e.readAttribute("cluster_count")?this._featureMatcher.match(e,t,r):this._clusterMatcher.match(e,t,r)}hasArcadeDependency(e){return this._featureMatcher.hasArcadeDependency(e)||this._clusterMatcher.hasArcadeDependency(e)}}class o extends c{static async fromTrackSchema(e,t){const[r,a,s]=await Promise.all([n(e,t.previousObservation),n(e,t.latestObservation),n(e,t.trackLine)]);return new o(r,a,s)}constructor(e,t,r){super(),this._previousObservationMatcher=e,this._latestObservationMatcher=t,this._trackLineMatcher=r}match(t,r,a){switch(t.readAttribute(e)){case 0:return this._trackLineMatcher.match(t,r,a);case 1:return this._latestObservationMatcher.match(t,r,a);case 2:return this._previousObservationMatcher.match(t,r,a)}return null}hasArcadeDependency(e){return this._trackLineMatcher.hasArcadeDependency(e)||this._latestObservationMatcher.hasArcadeDependency(e)||this._previousObservationMatcher.hasArcadeDependency(e)}}export{i as ClusterMatcher,h as SubtypeMatcher,n as createMatcher};