UNPKG

@arcgis/core

Version:

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

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