UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 4.11 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import t from"../../Graphic.js";import e from"../../core/Error.js";import r from"../../core/Logger.js";import{getMetersPerCartesianUnitForSR as a}from"../../core/unitUtils.js";import{parseData as o}from"../../core/urlUtils.js";import{isEqualBaseGCS as s,canProjectWithoutEngine as n,projectWithoutEngine as l}from"../../geometry/projection.js";import{fromJSON as i}from"../../geometry/support/jsonUtils.js";import u from"../../geometry/support/MeshTransform.js";import{equals as d}from"../../geometry/support/spatialReferenceUtils.js";import{isFeatureIdentifierArrayWithGlobalId as c,isFeatureIdentifierArrayWithObjectId as p}from"./editingSupport.js";async function m(t,e,r){const{geometry:o}=e,i={...e.attributes};if(null!=r&&"mesh"===o?.type){const{transformFieldRoles:e}=r,{origin:c,spatialReference:p,vertexSpace:m}=o,f=o.transform??new u,g="local"===m.type,b=t.spatialReference,y=b.isGeographic,R=d(b,p),h=s(p,b)&&n(p,b);if(!(g&&y&&h||!g&&!y&&R))return null;const I=l(c,p,b);if(null==I)return null;if(i[e.originX]=I.x,i[e.originY]=I.y,i[e.originZ]=I.z??0,null!=f){const{translation:t,scale:r,rotation:o}=f,s=g?1:a(p)/a(b);i[e.translationX]=t[0]*s,i[e.translationY]=t[2]*s,i[e.translationZ]=-t[1]*s,i[e.scaleX]=r[0],i[e.scaleY]=r[2],i[e.scaleZ]=r[1],i[e.rotationX]=o[0],i[e.rotationY]=o[2],i[e.rotationZ]=-o[1],i[e.rotationDeg]=o[3]}return{attributes:i}}return null==o?{attributes:i}:"mesh"===o.type||"extent"===o.type?null:{geometry:o.toJSON(),attributes:i}}async function f(t,e){const r=await Promise.all((e.addAttachments??[]).map((e=>g(t,e)))),a=await Promise.all((e.updateAttachments??[]).map((e=>g(t,e)))),o=e.deleteAttachments??[];return r.length||a.length||o.length?{adds:r,updates:a,deletes:[...o]}:null}async function g(t,e){const{feature:r,attachment:a}=e,{globalId:s,name:n,contentType:l,data:i,uploadId:u}=a,d={globalId:s};if(r&&("attributes"in r?d.parentGlobalId=r.attributes?.[t.globalIdField]:r.globalId&&(d.parentGlobalId=r.globalId)),u)d.uploadId=u;else if(i){const t=await o(i);t&&(d.contentType=t.mediaType,d.data=t.data),i instanceof File&&(d.name=i.name)}return n&&(d.name=n),l&&(d.contentType=l),d}function b(t,e,r){if(!e||0===e.length)return[];if(r&&c(e))return e.map((t=>t.globalId));if(p(e))return e.map((t=>t.objectId));const a=r?t.globalIdField:t.objectIdField;return a?e.map((t=>t.getAttribute(a))):[]}function y(t){const e=t?.assetMaps;if(e){for(const t of e.addResults)t.success||r.getLogger("esri.layers.graphics.sources.support.sourceUtils").error(`Failed to map asset to feature with globalId ${t.globalId}.`);for(const t of e.updateResults)t.success||r.getLogger("esri.layers.graphics.sources.support.sourceUtils").error(`Failed to map asset to feature with globalId ${t.globalId}.`)}const a=t?.attachments,o={addFeatureResults:t?.addResults?.map(R)??[],updateFeatureResults:t?.updateResults?.map(R)??[],deleteFeatureResults:t?.deleteResults?.map(R)??[],addAttachmentResults:a?.addResults?a.addResults.map(R):[],updateAttachmentResults:a?.updateResults?a.updateResults.map(R):[],deleteAttachmentResults:a?.deleteResults?a.deleteResults.map(R):[]};return t?.editMoment&&(o.editMoment=t.editMoment),o}function R(t){const r=!0===t.success?null:t.error||{code:void 0,description:void 0};return{objectId:t.objectId,globalId:t.globalId,error:r?new e("feature-layer-source:edit-failure",r.description,{code:r.code}):null}}function h(e,r){return new t({attributes:e.attributes,geometry:i({...e.geometry,spatialReference:r})})}function I(t,e){return{adds:t?.adds?.map((t=>h(t,e)))||[],updates:t?.updates?.map((t=>({original:h(t[0],e),current:h(t[1],e)})))||[],deletes:t?.deletes?.map((t=>h(t,e)))||[],spatialReference:e}}function j(t){const e=t.details.raw,r=+e.code,a=+e.extendedCode;return 500===r&&(-2147217144===a||-2147467261===a)}export{I as createEditedFeatures,R as createFeatureEditResult,f as getAttachmentEditsJSON,b as getFeatureIds,m as getFeatureJSON,j as isProtectedOrPrivateVersionError,y as unpackEditResultData};