UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 3.81 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import e from"./Dictionary.js";import{ArcadeExecutionError as n}from"./executionError.js";import t from"./ImmutablePathArray.js";import l from"./ImmutablePointArray.js";import{L as a,j as r,y as s,h as c,M as i}from"../chunks/languageUtils.js";import u from"../core/Accessor.js";import{isArray as o,isString as h,isNumber as f}from"../support/guards.js";const m={point:["hasZ","hasM","spatialReference","type","x","y","z","m"],multipoint:["hasZ","hasM","spatialReference","type","points"],polyline:["hasZ","hasM","spatialReference","type","paths"],polygon:["hasZ","hasM","spatialReference","type","rings"],extent:["hasZ","hasM","spatialReference","type","xmin","xmax","ymin","ymax","zmin","zmax","mmin","mmax"]};function p(e){return m[e.type]}function y(e,t,l,a){const r=g(e,t);if(r===w)throw new n(l,"InvalidMemberAccessKey",a);return r}const w=Symbol("keyNotFound");let d=0;function g(n,a){switch(a=a.toLowerCase()){case"hasz":return n.hasZ??!1;case"hasm":return n.hasM??!1;case"spatialreference":{let t=n.spatialReference._arcadeCacheId;null!=t||u.isFrozen(n.spatialReference)||(d++,n.spatialReference._arcadeCacheId=d,t=d);const l=new e({__proto__:null,wkt:n.spatialReference.wkt,wkid:n.spatialReference.wkid});return null!=t&&(l._arcadeCacheId="SPREF"+t.toString()),l}}switch(n.type){case"extent":switch(a){case"xmin":case"xmax":case"ymin":case"ymax":case"zmin":case"zmax":case"mmin":case"mmax":return n[a]??null;case"type":return"Extent"}break;case"polygon":switch(a){case"rings":{let e=n.cache._arcadeCacheId;return null==e&&(d++,e=d,n.cache._arcadeCacheId=e),new t(n.rings,n.spatialReference,!0===n.hasZ,!0===n.hasM,e)}case"type":return"Polygon"}break;case"point":switch(a){case"x":case"y":case"z":case"m":return n[a]??null;case"type":return"Point"}break;case"polyline":switch(a){case"paths":{let e=n.cache._arcadeCacheId;return null==e&&(d++,e=d,n.cache._arcadeCacheId=e),new t(n.paths,n.spatialReference,!0===n.hasZ,!0===n.hasM,e)}case"type":return"Polyline"}break;case"multipoint":switch(a){case"points":{let e=n.cache._arcadeCacheId;return null==e&&(d++,e=d,n.cache._arcadeCacheId=e),new l(n.points,n.spatialReference,!0===n.hasZ,!0===n.hasM,e,1)}case"type":return"Multipoint"}}return w}function b(e,n){let t,l=e;if(null==l)return null;if(o(n))t=n;else if(r(n))t=n.toArray();else{if(null==n)return null;t=[n]}for(const a of t)if(l=x(l,a),null==l)return null;return l}function I(e){return!!a(e)||(o(e)?0===e.length:r(e)?0===e.length():!!s(e)&&e.isEmpty())}function x(n,t){if(null==n)return null;if(n instanceof e||s(n))return h(t)&&n.hasField(t)?n.field(t):null;if(c(n)){if(!h(t))return null;const e=g(n,t);return e===w?null:e}return o(n)||h(n)?f(t)&&Number.isInteger(t)?(t<0&&(t=n.length+t),t>=n.length||t<0?null:n[t]):null:r(n)?f(t)&&Number.isInteger(t)?(t<0&&(t=n.length()+t),t>=n.length()||t<0?null:n.get(t)):null:i(n)&&h(t)&&n.hasGlobal(t)?n.global(t):null}function M(t,l){if(null==t)throw new n(null,"MemberOfNull",null);if(t instanceof e||s(t)){if(h(l))return t.field(l);throw new n(null,"InvalidMemberAccessKey",null)}if(c(t)){if(h(l))return y(t,l,null,null);throw new n(null,"InvalidMemberAccessKey",null)}if(o(t)||h(t)){if(f(l)&&Number.isInteger(l)){if(l<0&&(l=t.length+l),l>=t.length||l<0)throw new n(null,"OutOfBounds",null);return t[l]}throw new n(null,"InvalidMemberAccessKey",null)}if(r(t)){if(f(l)&&Number.isInteger(l)){if(l<0&&(l=t.length()+l),l>=t.length()||l<0)throw new n(null,"OutOfBounds",null);return t.get(l)}throw new n(null,"InvalidMemberAccessKey",null)}if(i(t)){if(h(l))return t.global(l);throw new n(null,"InvalidMemberAccessKey",null)}throw new n(null,"InvalidMemberAccessKey",null)}export{p as getGeometryKeys,y as getGeometryMember,M as getMember,b as getNestedOptionalValue,I as isEmpty,x as tryGetMember};