UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) • 5.3 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{ArcadeExecutionError as n,ExecutionErrorCodes as r}from"../executionError.js";import{n as e,j as t}from"../../chunks/languageUtils.js";import{ensureNumber as l}from"../../core/accessorSupport/ensureType.js";import s from"../../geometry/Point.js";import{fromJSON as a}from"../../geometry/support/jsonUtils.js";function u(e,t,l=null){const s=i(e,!0);if(void 0!==s.hasm&&(s.hasM=s.hasm,delete s.hasm),void 0!==s.hasz&&(s.hasZ=s.hasz,delete s.hasz),void 0!==s.spatialreference&&(s.spatialReference=s.spatialreference,delete s.spatialreference),s.spatialReference||(s.spatialReference=t),void 0!==s.curverings){const n=T(s.curverings,s.hasZ,s.hasM,S);if(null==n)return null;s.curveRings=n.arrays,delete s.curverings,delete s.rings,s.hasZ=n.hasZ,s.hasM=n.hasM}else if(void 0!==s.rings){const n=T(s.rings,s.hasZ,s.hasM,k);if(null==n)return null;s.rings=n.arrays,s.hasZ=n.hasZ,s.hasM=n.hasM}if(void 0!==s.curvepaths){const n=T(s.curvepaths,s.hasZ,s.hasM,S);if(null==n)return null;s.curvePaths=n.arrays,delete s.curvepaths,delete s.paths,s.hasZ=n.hasZ,s.hasM=n.hasM}else if(void 0!==s.paths){const n=T(s.paths,s.hasZ,s.hasM,k);if(null==n)return null;s.paths=n.arrays,s.hasZ=n.hasZ,s.hasM=n.hasM}if(void 0!==s.points){const n=L(s.points,s.hasZ,s.hasM);if(null==n)return null;s.points=n.array,s.hasZ=n.hasZ,s.hasM=n.hasM}const u=a(s);if(null!=l&&u?.type!==l)throw new n(null,r.InvalidParameter,null);return u}function i(n,r=!1){const t={};for(const l of n.keys()){const s=r?l.toLowerCase():l,a=n.attributes[l];t[s]=e(a)?i(a):a}return t}const o=Symbol("NoValue");function h(n){return Array.isArray(n)&&n.length>0?n[0]:t(n)&&n.length()>0?n.get(0):o}function f(n){const r=h(h(n));return r===o||Array.isArray(r)||t(r)||r instanceof s?n:[n]}const c=0;function y(n){return l(n,c)??c}function m(n){return"number"==typeof n&&!Number.isNaN(n)}const p=null;function d(n){return l(n,p)??p}function g(n){return"number"==typeof n&&!Number.isNaN(n)||null===n}function v(n){return!(n.length<2)&&("number"==typeof n[0]&&!Number.isNaN(n[0])&&("number"==typeof n[1]&&!Number.isNaN(n[1])))}function M(n){return v(n)?n.length>2?n.slice(0,2):n:null}function Z(n){return v(n)?m(n[2])?n.length>3?n.slice(0,3):n:[n[0],n[1],y(n[2])]:null}function A(n){return v(n)?n.length>=3&&!g(n[2])?[n[0],n[1],d(n[2])]:n.length>3?n.slice(0,3):n:null}function N(n){return v(n)?m(n[2])&&g(n[3])?n.length>4?n.slice(0,4):n:[n[0],n[1],y(n[2]),d(n[3])]:null}function b(n){return[n.x,n.y]}function w(n){return[n.x,n.y,n.z??c]}function P(n){return[n.x,n.y,n.m??p]}function I(n){return[n.x,n.y,n.z??c,n.m??p]}function j(e,l,s){if(t(e)&&(e=e.toArray()),!Array.isArray(e)||2!==e.length)throw new n(null,r.InvalidParameter,null);const a=k(e[0],l,s);if(null==a)return null;const u=k(e[1],b,M);return null==u?null:{c:[a,u]}}function x(e,l,s){if(t(e)&&(e=e.toArray()),!Array.isArray(e)||4!==e.length&&7!==e.length)throw new n(null,r.InvalidParameter,null);const a=k(e[0],l,s);if(null==a)return null;const u=k(e[1],b,M);if(null==u)return null;const i=e[2];if(0!==i&&1!==i)throw new n(null,r.InvalidParameter,null);const o=e[3];if(0!==o&&1!==o)throw new n(null,r.InvalidParameter,null);if(4===e.length)return{a:[a,u,i,o]};const h=e[4];if("number"!=typeof h)throw new n(null,r.InvalidParameter,null);if(Number.isNaN(h))return null;const f=e[5];if("number"!=typeof f)throw new n(null,r.InvalidParameter,null);if(Number.isNaN(f))return null;const c=e[6];if("number"!=typeof c)throw new n(null,r.InvalidParameter,null);return Number.isNaN(c)?null:{a:[a,u,i,o,h,f,c]}}function z(e,l,s){if(t(e)&&(e=e.toArray()),!Array.isArray(e)||3!==e.length)throw new n(null,r.InvalidParameter,null);const a=k(e[0],l,s);if(null==a)return null;const u=k(e[1],b,M);if(null==u)return null;const i=k(e[2],b,M);return null==i?null:{b:[a,u,i]}}function R(n,r){return n?r?N:Z:r?A:M}function F(n,r){return n?r?I:w:r?P:b}function k(n,r,e){return Array.isArray(n)?e(n):n instanceof s?r(n):t(n)?e(n.toArray()):null}function S(n,r,l){return Array.isArray(n)?l(n):e(n)?n.hasField("c")?j(n.field("c"),r,l):n.hasField("a")?x(n.field("a"),r,l):n.hasField("b")?z(n.field("b"),r,l):null:n instanceof s?r(n):t(n)?l(n.toArray()):null}function U(n,r,e,l){const s=[];if(Array.isArray(n))for(const t of n){const n=r(t,e,l);null!=n&&s.push(n)}else if(t(n))for(let t=0;t<n.length();t++){const a=r(n.get(t),e,l);null!=a&&s.push(a)}return s}function C(n,r,e){return Array.isArray(n)?n.length>=r:t(n)?n.length()>=r:n instanceof s&&n[e]}function E(n,r,e){return void 0===n&&void 0===r?{hasZ:C(e,3,"hasZ"),hasM:C(e,4,"hasM")}:void 0===n?!0===r?{hasZ:C(e,4,"hasZ"),hasM:!0}:{hasZ:C(e,3,"hasZ"),hasM:!1}:void 0===r?!0===n?{hasZ:!0,hasM:C(e,4,"hasM")}:{hasZ:!1,hasM:C(e,3,"hasM")}:{hasZ:!0===n,hasM:!0===r}}function L(n,r,e){const t=h(n);if(t===o)return null;const{hasZ:l,hasM:s}=E(r,e,t);return{array:U(n,k,F(l,s),R(l,s)),hasZ:l,hasM:s}}function T(n,r,e,l){const s=h(h(n=f(n)));if(s===o)return null;const{hasZ:a,hasM:u}=E(r,e,s),i=F(a,u),c=R(a,u),y=[];if(Array.isArray(n))for(let t=0;t<n.length;t++)y.push(U(n[t],l,i,c));else if(t(n))for(let t=0;t<n.length();t++)y.push(U(n.get(t),l,i,c));return{arrays:y,hasZ:a,hasM:u}}export{u as constructGeometryFromDictionary};