hydratedFeatures.js 2.4 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import"../../geometry.js";import e from"../../Graphic.js";import"../../core/has.js";import{clone as t}from"../../core/lang.js";import{isNone as r}from"../../core/maybe.js";import{toArray as n,isFloat32Array as s,isFloat64Array as a}from"../../core/typedArrayUtil.js";import{fromJSON as i}from"../../geometry/support/jsonUtils.js";import{makeDehydratedPoint as o}from"./dehydratedFeatures.js";import m from"../../geometry/SpatialReference.js";function l(e){return"declaredClass"in e}function u(e){return"declaredClass"in e}function c(e){return"declaredClass"in e}function f(r,n){if(!r)return null;if(c(r))return r;const s=new e({layer:n,sourceLayer:n});return s.visible=r.visible,s.symbol=t(r.symbol),s.attributes=t(r.attributes),s.geometry=p(r.geometry),s}function p(e){return r(e)?null:l(e)?e:i(h(e))}function h(e){const{wkid:t,wkt:r,latestWkid:n}=e.spatialReference,s={wkid:t,wkt:r,latestWkid:n};switch(e.type){case"point":{const{x:t,y:r,z:n,m:a}=e;return{x:t,y:r,z:n,m:a,spatialReference:s}}case"polygon":{const{rings:t,hasZ:r,hasM:n}=e;return{rings:y(t),hasZ:r,hasM:n,spatialReference:s}}case"polyline":{const{paths:t,hasZ:r,hasM:n}=e;return{paths:y(t),hasZ:r,hasM:n,spatialReference:s}}case"extent":{const{xmin:t,xmax:r,ymin:n,ymax:a,zmin:i,zmax:o,mmin:m,mmax:l,hasZ:u,hasM:c}=e;return{xmin:t,xmax:r,ymin:n,ymax:a,zmin:i,zmax:o,mmin:m,mmax:l,hasZ:u,hasM:c,spatialReference:s}}case"multipoint":{const{points:t,hasZ:r,hasM:n}=e;return{points:M(t)?d(t):t,hasZ:r,hasM:n,spatialReference:s}}default:return}}function y(e){return x(e)?e.map((e=>d(e))):e}function d(e){return e.map((e=>n(e)))}function x(e){for(const t of e)if(0!==t.length)return M(t);return!1}function M(e){return e.length&&(s(e[0])||a(e[0]))}function k(e,t){if(!e)return null;let r;if(u(e)){if(null==t)return e.clone();if(u(t))return t.copy(e)}return null!=t?(r=t,r.x=e.x,r.y=e.y,r.spatialReference=e.spatialReference,e.hasZ?(r.z=e.z,r.hasZ=e.hasZ):(r.z=null,r.hasZ=!1),e.hasM?(r.m=e.m,r.hasM=!0):(r.m=null,r.hasM=!1)):(r=o(e.x,e.y,e.z,e.spatialReference),e.hasM&&(r.m=e.m,r.hasM=!0)),r}function Z(e){const{wkid:t,wkt:r,latestWkid:n}=e,s={wkid:t,wkt:r,latestWkid:n};return m.fromJSON(s)}export{k as clonePoint,p as hydrateGeometry,f as hydrateGraphic,Z as hydratedSpatialReference,l as isHydratedGeometry,c as isHydratedGraphic,u as isHydratedPoint};