UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) • 9.59 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{getGeometryKeys as e,getNestedOptionalValue as t}from"../containerUtils.js";import n from"../Dictionary.js";import{ArcadeExecutionError as r}from"../executionError.js";import{Feature as a}from"../Feature.js";import i from"../ImmutablePointArray.js";import{B as l,j as o,D as s,Y as f,C as c,k as u,v as m,n as p,h as w,s as h,e as R,g,f as y,i as d,d as P,K as v,Z as I,_ as b,y as O,w as j}from"../../chunks/languageUtils.js";import{angle2D as N,angleBetween2D as S,bearing2D as x,bearingBetween2D as J}from"./centroid.js";import{constructGeometryFromDictionary as F}from"../geometry/constructors.js";import k from"../../geometry/Extent.js";import Z from"../../geometry/Geometry.js";import z from"../../geometry/Multipoint.js";import W from"../../geometry/Point.js";import A from"../../geometry/Polygon.js";import q from"../../geometry/Polyline.js";import{isClockwise as D}from"../../geometry/support/coordsUtils.js";import{fromJSON as L}from"../../geometry/support/jsonUtils.js";import{isArray as M,isString as G,isNumber as C,isBoolean as U}from"../../support/guards.js";function _(_,E){_.ringisclockwise=function(e,t){return E(e,t,(n,a,s)=>{l(s,1,1,e,t);let f=[];if(null===s[0])return!1;if(M(s[0]))for(const i of s[0]){if(!(i instanceof W))throw new r(e,"InvalidParameter",t);f.push(i.hasZ?i.hasM?[i.x,i.y,i.z,i.m]:[i.x,i.y,i.z]:[i.x,i.y])}else if(s[0]instanceof i)f=s[0]._elements;else{if(!o(s[0]))throw new r(e,"InvalidParameter",t);for(const n of s[0].toArray()){if(!(n instanceof W))throw new r(e,"InvalidParameter",t);f.push(n.hasZ?n.hasM?[n.x,n.y,n.z,n.m]:[n.x,n.y,n.z]:[n.x,n.y])}}return!(f.length<3)&&D(f)})},_.polygon=function(e,t){return E(e,t,(a,i,o)=>{let c;if(l(o,1,1,e,t),o[0]instanceof n){const t=s(F(o[0],e.spatialReference,"polygon"),e.spatialReference);if(null==t)return null;c=t}else if(o[0]instanceof A)c=L(o[0].toJSON());else{const t=JSON.parse(o[0]);t&&!t.spatialReference&&(t.spatialReference=e.spatialReference),c=s(new A(t),e.spatialReference)}if(null!==c&&!1===c.spatialReference.equals(e.spatialReference))throw new r(e,"WrongSpatialReference",t);return f(c)})},_.polyline=function(e,t){return E(e,t,(a,i,o)=>{let c;if(l(o,1,1,e,t),o[0]instanceof n){const t=s(F(o[0],e.spatialReference,"polyline"),e.spatialReference);if(null==t)return null;c=t}else if(o[0]instanceof q)c=L(o[0].toJSON());else{const t=JSON.parse(o[0]);t&&!t.spatialReference&&(t.spatialReference=e.spatialReference),c=s(new q(t),e.spatialReference)}if(null!==c&&!1===c.spatialReference.equals(e.spatialReference))throw new r(e,"WrongSpatialReference",t);return f(c)})},_.point=function(e,t){return E(e,t,(a,i,o)=>{let c;if(l(o,1,1,e,t),o[0]instanceof n){const t=s(F(o[0],e.spatialReference,"point"),e.spatialReference);if(null==t)return null;c=t}else if(o[0]instanceof W)c=L(o[0].toJSON());else{const t=JSON.parse(o[0]);t&&!t.spatialReference&&(t.spatialReference=e.spatialReference),c=s(new W(t),e.spatialReference)}if(null!==c&&!1===c.spatialReference.equals(e.spatialReference))throw new r(e,"WrongSpatialReference",t);return f(c)})},_.multipoint=function(e,t){return E(e,t,(a,i,o)=>{let c;if(l(o,1,1,e,t),o[0]instanceof n){const t=s(F(o[0],e.spatialReference,"multipoint"),e.spatialReference);if(null==t)return null;c=t}else if(o[0]instanceof z)c=L(o[0].toJSON());else{const t=JSON.parse(o[0]);t&&!t.spatialReference&&(t.spatialReference=e.spatialReference),c=s(new z(t),e.spatialReference)}if(null!==c&&!1===c.spatialReference.equals(e.spatialReference))throw new r(e,"WrongSpatialReference",t);return f(c)})},_.extent=function(e,t){return E(e,t,(a,i,o)=>{o=c(o),l(o,1,1,e,t);let u=null;if(o[0]instanceof n)u=s(F(o[0],e.spatialReference),e.spatialReference);else if(o[0]instanceof W){const e={xmin:o[0].x,ymin:o[0].y,xmax:o[0].x,ymax:o[0].y,spatialReference:o[0].spatialReference.toJSON()},t=o[0];t.hasZ&&(e.zmin=t.z,e.zmax=t.z),t.hasM&&(e.mmin=t.m,e.mmax=t.m),u=L(e)}else if(o[0]instanceof A)u=L(o[0].extent?.toJSON());else if(o[0]instanceof q)u=L(o[0].extent?.toJSON());else if(o[0]instanceof z)u=L(o[0].extent?.toJSON());else if(o[0]instanceof k)u=L(o[0].toJSON());else{const t=JSON.parse(o[0]);t&&!t.spatialReference&&(t.spatialReference=e.spatialReference),u=s(new k(t),e.spatialReference)}if(null!==u&&!1===u.spatialReference.equals(e.spatialReference))throw new r(e,"WrongSpatialReference",t);return f(u)})},_.geometry=function(e,t){return E(e,t,(a,i,o)=>{l(o,1,1,e,t);let c=null;if(null===o[0])return null;if(u(o[0]))c=s(o[0].geometry(),e.spatialReference);else if(o[0]instanceof n)c=s(F(o[0],e.spatialReference),e.spatialReference);else{const t=JSON.parse(o[0]);t&&!t.spatialReference&&(t.spatialReference=e.spatialReference),c=s(L(t),e.spatialReference)}if(null!==c&&!1===c.spatialReference.equals(e.spatialReference))throw new r(e,"WrongSpatialReference",t);return f(c)})},_.setgeometry=function(e,t){return E(e,t,(n,a,i)=>{if(l(i,2,2,e,t),!u(i[0]))throw new r(e,"InvalidParameter",t);if(!0===i[0].immutable)throw new r(e,"Immutable",t);if(!(i[1]instanceof Z||null===i[1]))throw new r(e,"InvalidParameter",t);return i[0]._geometry=i[1],m})},_.feature=function(e,t){return E(e,t,(i,l,o)=>{if(0===o.length)throw new r(e,"WrongNumberOfParameters",t);let f;if(1===o.length)if(G(o[0]))f=a.fromJson(JSON.parse(o[0]),e.timeZone);else if(u(o[0]))f=a.createFromArcadeFeature(o[0]);else if(o[0]instanceof Z)f=a.createFromGraphicLikeObject(o[0],null,null,e.timeZone);else{if(!(o[0]instanceof n))throw new r(e,"InvalidParameter",t);{const n=o[0].hasField("geometry")?o[0].field("geometry"):null,i=o[0].hasField("attributes")?o[0].field("attributes"):null;let l,s;if(p(n))l=F(n,e.spatialReference);else{if(null!=n&&!w(n))throw new r(e,"InvalidParameter",t);l=n}if(p(i))s=a.parseAttributesFromDictionary(i);else{if(null!=i)throw new r(e,"InvalidParameter",t);s=null}f=a.createFromGraphicLikeObject(l,s,null,e.timeZone)}}else if(2===o.length){let i=null,l=null;if(null!==o[0])if(o[0]instanceof Z)i=o[0];else{if(!(o[0]instanceof n))throw new r(e,"InvalidParameter",t);i=F(o[0],e.spatialReference)}if(null!==o[1]){if(!(o[1]instanceof n))throw new r(e,"InvalidParameter",t);l=a.parseAttributesFromDictionary(o[1])}f=a.createFromGraphicLikeObject(i,l,null,e.timeZone)}else{let i=null;const l={};if(null!==o[0])if(o[0]instanceof Z)i=o[0];else{if(!(o[0]instanceof n))throw new r(e,"InvalidParameter",t);i=F(o[0],e.spatialReference)}for(let n=1;n<o.length;n+=2){const a=h(o[n]),i=o[n+1];if(!(null==i||G(i)||isNaN(i)||R(i)||C(i)||g(i)||y(i)||U(i)))throw new r(e,"InvalidParameter",t);if(d(i)||!1===P(i))throw new r(e,"InvalidParameter",t);l[a]=i===m?null:i}f=a.createFromGraphicLikeObject(i,l,null,e.timeZone)}return f._geometry=s(f.geometry(),e.spatialReference),f.immutable=!1,f})},_.dictionary=function(e,t){return E(e,t,(a,i,l)=>{if(0===l.length||1===l.length&&null===l[0]){const e=new n;return e.immutable=!1,e}if(1===l.length&&G(l[0]))try{const t=JSON.parse(l[0]),r=n.convertObjectToArcadeDictionary(t,v(e),!1);return r.immutable=!1,r}catch(c){throw new r(e,"InvalidParameter",t)}if(1===l.length&&l[0]instanceof Z)try{const t=l[0].toJSON();t.hasZ=!0===l[0].hasZ,t.hasM=!0===l[0].hasM;const r=n.convertObjectToArcadeDictionary(t,v(e),!1);return r.immutable=!1,r}catch(c){throw new r(e,"InvalidParameter",t)}if(1===l.length&&u(l[0]))try{const e=new n;e.immutable=!1,e.setField("geometry",l[0].geometry());const t=new n;t.immutable=!1,e.setField("attributes",t);for(const n of l[0].keys())t.setField(n,l[0].field(n));return e}catch(c){throw new r(e,"InvalidParameter",t)}if(1===l.length&&(p(l[0])||I(l[0])||b(l[0])))try{const e=new n;e.immutable=!1;for(const t of l[0].keys())e.setField(t,l[0].field(t));return e}catch(c){throw new r(e,"InvalidParameter",t)}if(2===l.length&&l[0]instanceof n&&U(l[1]))try{if(!(!0===l[1])){const e=new n;e.immutable=!1;for(const t of l[0].keys())e.setField(t,l[0].field(t));return e}return l[0].deepClone()}catch(c){throw new r(e,"InvalidParameter",t)}if(l.length%2!=0)throw new r(e,"WrongNumberOfParameters",t);const s=Object.create(null);for(let n=0;n<l.length;n+=2){const a=h(l[n]),i=l[n+1];if(!(null==i||G(i)||isNaN(i)||R(i)||C(i)||U(i)||y(i)||g(i)||M(i)||o(i)))throw new r(e,"InvalidParameter",t);if(d(i))throw new r(e,"InvalidParameter",t);s[a]=i===m?null:i}const f=new n(s);return f.immutable=!1,f})},_.haskey=function(t,a){return E(t,a,(i,o,s)=>{l(s,2,2,t,a);const f=h(s[1]);if(O(s[0])||s[0]instanceof n)return s[0].hasField(f);if(s[0]instanceof Z){const t=f.toLowerCase();for(const n of e(s[0]))if(n.toLowerCase()===t)return!0;return!1}throw new r(t,"InvalidParameter",a)})},_.hasvalue=function(e,n){return E(e,n,(r,a,i)=>(l(i,2,2,e,n),null!=t(i[0],i[1])))},_.indexof=function(e,t){return E(e,t,(n,a,i)=>{l(i,2,2,e,t);const s=i[1];if(M(i[0])){for(let e=0;e<i[0].length;e++)if(j(s,i[0][e]))return e;return-1}if(o(i[0])){const e=i[0].length();for(let t=0;t<e;t++)if(j(s,i[0].get(t)))return t;return-1}throw new r(e,"InvalidParameter",t)})},_.angle=function(e,t){return E(e,t,(n,a,i)=>{if(i=c(i),l(i,2,3,e,t),!(i[0]instanceof W))throw new r(e,"InvalidParameter",t);if(!(i[1]instanceof W))throw new r(e,"InvalidParameter",t);if(i.length>2&&!(i[2]instanceof W))throw new r(e,"InvalidParameter",t);return 2===i.length?N(i[0],i[1]):S(i[0],i[1],i[2])})},_.bearing=function(e,t){return E(e,t,(n,a,i)=>{if(i=c(i),l(i,2,3,e,t),!(i[0]instanceof W))throw new r(e,"InvalidParameter",t);if(!(i[1]instanceof W))throw new r(e,"InvalidParameter",t);if(i.length>2&&!(i[2]instanceof W))throw new r(e,"InvalidParameter",t);return 2===i.length?x(i[0],i[1]):J(i[0],i[1],i[2])})}}export{_ as registerFunctions};