@vertigis/arcgis-extensions 51.7.0 → 51.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/convert.js +1 -1
- package/docs/html/assets/navigation.js +1 -1
- package/docs/html/assets/search.js +1 -1
- package/docs/html/functions/utilities_renderers.isRenderer.html +3 -0
- package/docs/html/modules/utilities_renderers.html +1 -0
- package/docs/html/variables/version.version.html +1 -1
- package/package.json +1 -1
- package/utilities/renderers.d.ts +6 -0
- package/utilities/renderers.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/data/convert.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@arcgis/core/Color.js";import t from"@arcgis/core/Graphic.js";import r from"@arcgis/core/geometry/Point";import o from"@arcgis/core/geometry/Polygon.js";import n from"@arcgis/core/geometry/Polyline.js";import a from"@arcgis/core/geometry/SpatialReference";import i from"@arcgis/core/layers/FeatureLayer.js";import s from"@arcgis/core/layers/GroupLayer.js";import c from"@arcgis/core/layers/support/Field.js";import l from"@arcgis/core/renderers/SimpleRenderer.js";import m from"@arcgis/core/symbols/MeshSymbol3D.js";import u from"@arcgis/core/symbols/PictureMarkerSymbol.js";import f from"@arcgis/core/symbols/SimpleFillSymbol.js";import y from"@arcgis/core/symbols/SimpleLineSymbol.js";import d from"@arcgis/core/symbols/SimpleMarkerSymbol.js";import{geometryTypeToJson as p}from"../json/GeometryJson.js";import{translate as g}from"../locale/language.js";import{INVARIANT as w}from"../locale.js";import{FeatureCollectionLayerExtension as h}from"../mapping/FeatureCollectionLayerExtension.js";import{GroupLayerExtension as F}from"../mapping/GroupLayerExtension.js";import{Time as S}from"../utilities/Time.js";import{checkArg as T,assertNever as N}from"../utilities/checkArg.js";import{isPoint as O,isMultipoint as D,isPolyline as M,isPolygon as x,isExtent as E}from"../utilities/esri.js";import{parse as R,format as b,DEFAULT_PARSING_FORMATS as A,INVALID_DATE as G}from"../utilities/format/date.js";import{DateFormat as _,NumberFormat as I,TimeFormat as L}from"../utilities/format/formats.js";import{parse as C,format as v}from"../utilities/format/number.js";import{parse as P,format as j,DEFAULT_PARSING_FORMATS as U}from"../utilities/format/time.js";import{project as $,esriToWKT as H,wktToEsri as B,esriWkidToWkt as k,esriWktToWkid as z,esriToGeoJSON as J,geoJSONToEsri as W}from"../utilities/geometry.js";import{getLogger as X}from"../utilities/log.js";import{isNumeric as Y}from"../utilities/number.js";import{caseInsensitiveEquals as q}from"../utilities/string.js";import{Feature as K}from"./Feature.js";import{FeatureSet as Z}from"./FeatureSet.js";const V=["=","-","+","@"],Q='"',ee="\r\n",te="\n",re=[...A.map(Ce),"M/d/yy"],oe=[...U.map(Pe).map((e=>e.replace("AM/PM","tt")))],ne=/(\w+)_(point|multipoint|polyline|polygon)z?/;var ae;function ie(){return X("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(ae||(ae={}));export const FIELD_NAME_REGEX=/[^a-zA-Z\d_]/g;export var GeometryFormat;!function(e){e.NONE="NONE",e.WKT="WKT",e.XY="XY",e.XYZ="XYZ",e.LAT_LON="LAT_LONG",e.GEO_JSON="GEO_JSON",e.ARCGIS_JSON="ARCGIS_JSON"}(GeometryFormat||(GeometryFormat={}));export const geometryTypeHeaders={[GeometryFormat.XYZ]:[["x","y","z"]],[GeometryFormat.XY]:[["x","y"]],[GeometryFormat.LAT_LON]:[["latitude","longitude"],["lat","lon"],["lat","long"]],[GeometryFormat.ARCGIS_JSON]:[["geometry"]],[GeometryFormat.GEO_JSON]:[["geometry"]],[GeometryFormat.WKT]:[["geometry"]]};const se=[[GeometryFormat.ARCGIS_JSON,Me],[GeometryFormat.GEO_JSON,xe],[GeometryFormat.WKT,Ee]],ce=new Map(se);export async function uploadDataToFeatureSet(e){const t=await async function(e){const{data:t,includeHeaderRow:o,geometryFormat:n,geometryFields:a,locale:i,numberFormat:s,inSpatialReference:c}=e,l=o?t.slice(1):t;if(n===GeometryFormat.NONE)return{columnIndices:[]};const m=e=>Ae(e,i,s),u=(e,t)=>{const o=t===GeometryFormat.XYZ,n=t===GeometryFormat.LAT_LON;return{columnIndices:e,geometries:l.map((t=>{if(t.length>=Math.max(...e)&&Y(t[e[0]]?.raw,i)&&Y(t[e[1]]?.raw,i)&&(!o||Y(t[e[2]]?.raw,i)))return new r({x:m(n?t[e[1]].raw:t[e[0]].raw),y:m(n?t[e[0]].raw:t[e[1]].raw),z:o?m(t[e[2]].raw):0,spatialReference:c})}))}},f=async(e,t)=>({columnIndices:[e],geometries:await Promise.all(l.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),c)})))}),y=async(e,t)=>{switch(t){case GeometryFormat.NONE:return{columnIndices:[0]};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return u(e,t);case GeometryFormat.ARCGIS_JSON:return f(e[0],Me);case GeometryFormat.GEO_JSON:return f(e[0],xe);case GeometryFormat.WKT:return f(e[0],Ee);default:return N(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=Re(o?t[0]:t[0].map(((e,t)=>({raw:t.toString()}))),n,o?a:a.map((e=>""+(parseInt(e.match(/\d+/g)[0])-1))));if(o&&void 0===e)throw new Error(`Error parsing file data: Expected geometry columns ${geometryTypeHeaders[n][0].join(",")} are missing for GeometryType.${n}`);return y(e??[0],n)}const[d,p]=await Ge(t,c,o);if(d===GeometryFormat.NONE)return{columnIndices:[]};return p.length>1?u(p,d):f(p[0],ce.get(d))}(e),o=function(e,t){const{data:r,displayField:o,includeHeaderRow:n,inSpatialReference:a,outSpatialReference:i,generatePrimaryKey:s}=e,c={fields:[]},l=e=>!(!t.columnIndices||0===t.columnIndices.length)&&t.columnIndices.includes(e);let{primaryKeyField:m}=e,u=0;for(let t=0;t<r[0].length;t++){if(l(t))continue;const o=Ie(e,t,!s&&!m&&!c.fields.find((e=>"esriFieldTypeOID"===e.type)));let a=r[0][t]?.raw?.toString(),i=a?.replace(FIELD_NAME_REGEX,"_");n&&i||(i="field"+ ++u,a=g("gcx.api.data.convert.import-field-alias",u)),c.fields.push({alias:a,name:i,type:o}),"esriFieldTypeOID"===o&&(m=i)}if(c.spatialReference=i??t.geometries?.[0]?.spatialReference??a,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),r=e[0];c.geometryType=e.every((e=>e===r))?p(r):void 0}if(!c.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=c.fields.length+1,t=!!c.fields.find((e=>"objectid"===e.name.toLowerCase()));m=t?`OBJECTID_${e}`:"OBJECTID",c.fields.push({name:m,alias:m,type:"esriFieldTypeOID"})}return c.displayField=o??c.fields.find((e=>!q(e.name,m)&&"esriFieldTypeString"===e.type))?.name??c.fields.find((e=>!q(e.name,m)))?.name??m,c.primaryKeyField=m,c}(e,t),n=await async function(e,t,r){const{data:o,includeHeaderRow:n,outFields:a,escapeFormulaChars:i,locale:s,numberFormat:c,dateFormat:l,timeFormat:m}=e,{spatialReference:u}=r,f=[],y=n?o.slice(1):o,d=(e,r)=>!t.columnIndices||0===t.columnIndices.length||!t.columnIndices.includes(r);return await Promise.all(y.map((async(e,o)=>{const n=new K;for(let t=0;t<r.fields.length;t++){const u=r.fields[t],f=e.filter(d);if(a.includes("*")||a.filter((e=>q(e,u.name))).length>0){let e=await Le(f[t]?.raw,u,{escapeFormulaChars:i,dateFormat:l,numberFormat:c,timeFormat:m,locale:s});"esriFieldTypeOID"===u.type&&null===e&&(e=o),n.attributes.set(u.name,e)}}t.geometries&&(n.geometry=await we(t.geometries[o],u)),f.push(n)}))),f}(e,t,o);return new Z({features:n,schema:o})}export async function toCsv(e,t){T("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:_.ROUND_TRIP,timeFormat:L.ROUND_TRIP,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:a.WGS84,includeHeaderRow:!0,outFields:pe(e.source),rowDelimiter:navigator.platform?.startsWith("Win")?ee:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:i,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=ye(r,o),f=de(r,c,e.schema,!0),y=de(r,c,e.schema,!1);if(i){const e=[];for(const t of u)e.push(he(t,o));for(const t of f)e.push(he(t,o));for(const t of y)e.push(he(t,o));const t=e.join(s)+l;m.push(t)}await Promise.all(r.map((async e=>{const t=[],r=(t,r)=>{const o=Se(e,t,r),n=e.schema.findFieldByName(t)?.type;return he(Fe(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await ge(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":Fe(e,t))));return r.map((e=>""===e?"":he(e,t)))}(e.geometry,o)),t.push(...f.map((e=>r(e,o)))),t.push(...y.map((e=>r(e,o))));const n=`${t.join(s)}${l}`;m.push(n)})));return new Blob(m,{type:"text/plain",endings:"\n"===l||l===ee?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(T("csvData",e).isNotMissing(),e instanceof Blob){const t=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsText(e)}));r=await t}else r=e;const o=me(t),n=o.rowDelimiter||function(e){let t=te;return De(e,ee,((r,o)=>(0===r&&o===e.length||(t=ee),!1))),t}(r),a=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(De(e,t,((t,r)=>(r!==e.length||t!==r)&&(n.push(e.substring(t,r)),n.length<3))),0===n.length)return o;let a=[{delimiter:",",rowsDelimiterOccurrences:[],rowsNumberAdjacentOccurrences:[]},{delimiter:";",rowsDelimiterOccurrences:[]},{delimiter:"|",rowsDelimiterOccurrences:[]},{delimiter:"\t",rowsDelimiterOccurrences:[]},{delimiter:" ",rowsDelimiterOccurrences:[]}].filter((e=>n[0].includes(e.delimiter)));if(0===a.length)return o;for(const e of n)for(const t of a){let o=0,n=0;De(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);Y(t,r)&&Y(o,r)&&n++}return!0})),t.rowsDelimiterOccurrences.push(o),","===t.delimiter&&t.rowsNumberAdjacentOccurrences.push(n)}if(a=a.filter((e=>e.rowsDelimiterOccurrences.every((t=>e.rowsDelimiterOccurrences[0]===t)))).sort(((e,t)=>t.rowsDelimiterOccurrences[0]-e.rowsDelimiterOccurrences[0])),a.length>1&&","===a[0].delimiter&&null!=r&&r!==w){const e=a[0];if(null!=e&&","===e.delimiter&&","===Intl.NumberFormat(r).formatToParts(1.1).find((e=>"decimal"===e.type))?.value)for(let t=0;t<e.rowsDelimiterOccurrences.length;t++)if(e.rowsDelimiterOccurrences[t]<=e.rowsNumberAdjacentOccurrences[t]){a=a.filter((e=>","!==e.delimiter));break}}if(0===a.length)return o;return a[0].delimiter}(r,n,t.locale),i=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return De(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:Oe(a,t,o.length)}),!0})),o};if(De(e,t,((t,r)=>{const a=e.substring(t,r);return a.length>0&&o.push(n(a,o.length)),!0})),o.length){const e=o[0].length;o.forEach(((t,r)=>{if(t.length!==e)throw new Error(`Detected invalid CSV: Row ${r} does not have expected number of columns: ${e}`)}))}return o}(r,n,a);let{geometryFormat:s,geometryFields:c}=t;if(!s){const[e,t]=await Ge(i,o.inSpatialReference,o.includeHeaderRow);s=e,c=t.map((e=>o.includeHeaderRow?i[0][e]?.raw??g("gcx.api.data.convert.import-field-alias",(e+1).toString()):g("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:i,...o,geometryFormat:s,geometryFields:c}}export async function csvToFeatureSet(e,t){const r=me(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toXLSX(e,t){T("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:pe(e.source),outSpatialReference:a.WGS84,dateFormat:_.DEFAULT,timeFormat:L.DEFAULT,numberFormat:I.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:i,dateFormat:s,timeFormat:c,numberFormat:l}=o,m=ye(r,o),u=de(r,n,e.schema,!0),f=de(r,n,e.schema,!1),y=await import("xlsx"),d=y.utils.sheet_new();let p=!1;if(i){const t=m.concat(u).concat(function(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>q(t.name,e)))?.alias??e))}(f,e.source));p=!0,y.utils.sheet_add_aoa(d,[t],{cellDates:!0})}await Promise.all(r.map((async e=>{const t=[],r=new Set,n=new Set;t.push(...await ge(e.geometry,o));for(const r of u){const n=Ue(e.attributes.get(r),o);t.push(n)}for(const a of f){const i=Se(e,a,o);if(i instanceof S){const o=e.schema.findFieldByName(a);"time-only"===o?.type&&r.add(t.length)}else if(i instanceof Date){const r=e.schema.findFieldByName(a);"date-only"===r?.type&&n.add(t.length)}const s=Ue(i,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void ie().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`);y.utils.sheet_add_aoa(d,[t],{cellDates:!0,origin:p?-1:void 0}),p=!0;const a=y.utils.decode_range(d["!ref"]);for(let e=a.s.c;e<=a.e.c;e++){const t=d[y.utils.encode_cell({r:a.e.r,c:e})];"d"===t.t?r.has(e)?t.z=Pe(c??L.ROUND_TRIP):n.has(e)?t.z=ve(s??_.ROUND_TRIP):t.z=Ce(s??_.ROUND_TRIP):"n"===t.t&&(t.z=je(l))}})));const g={SheetNames:[],Sheets:{}};g.SheetNames.push(o.sheetName),g.Sheets[o.sheetName]=d;const w=y.write(g,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),h=new Uint8Array(w.length);for(let e=0;e<w.length;e++)h[e]=w.charCodeAt(e);return new Blob([h.buffer],{type:"text/plain"})}export async function xlsxToUploadData(e,t){T("xlsxData",e).isNotMissing();const r=ue(t),o=await async function(e,t){const r=await import("xlsx"),o=new Promise(((o,n)=>{const a=new FileReader;a.onload=()=>{const e=new Uint8Array(a.result);let n="";for(const t of e)n+=String.fromCharCode(t);const i=r.read(n,{type:"binary",cellDates:!0}),s=t.sheetName||i.SheetNames[0],c=i.Sheets[s];o(c)},a.onerror=()=>{n(a.error)},a.readAsArrayBuffer(e)})),n=await o,a=r.utils.decode_range(n["!ref"]),i=[];for(let e=a.s.r;e<=a.e.r;e++){const t=[];for(let o=a.s.c;o<=a.e.c;o++){const a=n[`${r.utils.encode_cell({r:e,c:o})}`];a&&"d"===a.t&&a.v instanceof Date&&(a.v=new Date(a.v.getTime()+6e4*a.v.getTimezoneOffset())),t.push(a?{raw:a.v,formatted:"s"===a.t?void 0:a.w}:{raw:""})}i.push(t)}return i}(e,r);let{geometryFormat:n,geometryFields:a}=t;if(!n){const[e,t]=await Ge(o,r.inSpatialReference,r.includeHeaderRow);n=e,a=t.map((e=>r.includeHeaderRow?o[0][e]?.raw.toString()??g("gcx.api.data.convert.import-field-alias",(e+1).toString()):g("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:o,...r,geometryFormat:n,geometryFields:a}}export async function xlsxToFeatureSet(e,t){T("xlsxData",e).isNotMissing();const r=ue(t);return uploadDataToFeatureSet(await xlsxToUploadData(e,r))}export function kmlHexToEsriColor(t){return e.fromHex(`#${t.match(/.{2}/g).reverse().join("")}`)}export function parseKMLCoordinates(e){return e.trim().split(/\s+/).map((e=>{const[t,r,o]=e.split(",").map(Number);return{x:t,y:r,z:o}}))}export function parseKMLSymbol(t,r,o){if(t){const r=t.querySelector("IconStyle > Icon > href")?.textContent;if(r)return new u({url:r,width:32,height:32});const o=t.querySelector("PolyStyle");if(o){const t=o.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]);return new f({color:r,outline:{color:[0,0,0,.5],width:1}})}const n=t.querySelector("LineStyle");if(n){const t=n.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]),o=parseFloat(n.querySelector("width")?.textContent||"1");return new y({color:r,width:o})}}return getDefaultSymbol(o,"polygon"===r?"polygon":"point"===r?"point":"polyline")}export async function toShapefile(e,t){T("featureSet",e).isNotMissing();const[{default:r},o]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),n=Array.from(e),i={...{useFormattedValues:!1,outFields:pe(e.source),fileName:e.title||"export"},...t},{outFields:s,outSpatialReference:c,fileName:l}=i,m=e=>e.geometry.hasZ||e.geometry.hasM,u=new Map,f=n.filter((e=>O(e.geometry)));u.set("POINTZ",f.filter(m)),u.set("POINT",f.filter((e=>!m(e))));const y=n.filter((e=>D(e.geometry)));u.set("MULTIPOINTZ",y.filter(m)),u.set("MULTIPOINT",y.filter((e=>!m(e))));const d=n.filter((e=>M(e.geometry)));u.set("POLYLINEZ",d.filter(m)),u.set("POLYLINE",d.filter((e=>!m(e))));const p=n.filter((e=>x(e.geometry)||E(e.geometry)));u.set("POLYGONZ",p.filter(m)),u.set("POLYGON",p.filter((e=>!m(e))));const g=de(n,s,e.schema,!0);let w=de(n,s,e.schema,!1);w=g.concat(w);const h=new r,F=Array.from(u.keys()).filter((e=>u.get(e).length>0));await Promise.all(F.map((async t=>{const r=u.get(t),n=await Promise.all(r.map((e=>we(e.geometry,c)))),s=await async function(e){const{wkid:t,wkt:r}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===t&&e.spatialReference.wkt===r)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return r??await k(t??a.WGS84.wkid)}(n),m=i.useFormattedValues?Object.assign({},...w.map((e=>({[e]:ae.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>Te(e,a)))){n[a]=ae.STRING;continue}const t=r?r.fields.find((e=>q(e.name,a))):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":case"big-integer":n[a]=ae.NUMBER;break;case"date":case"timestamp-offset":n[a]=o?ae.NUMBER:ae.DATE;break;default:n[a]=ae.STRING}continue}const i=(e,t)=>e.attributes.get(t)??e.presentableAttributes.get(t);e.every((e=>i(e,a)instanceof Date||void 0===i(e,a)))&&e.some((e=>i(e,a)instanceof Date))?n[a]=o?ae.NUMBER:ae.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=ae.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=ae.BOOLEAN:n[a]=ae.STRING}return n}(r,w,e.schema,"timestamp"===i.dateFormat),f=function(e){return e.map((e=>{if(O(e)){const{x:t,y:r,z:o,m:n}=e,a=[t,r];return e.hasZ&&a.push(o),e.hasM&&a.push(n),$e(a,e)}if(D(e))return He(e.points,e);if(M(e))return Be(e.paths,e);if(x(e))return Be(e.rings,e);if(E(e)){const t=[e.xmin,e.ymax];return[[t,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],t]]}throw new Error("Unsupported geometry type.")}))}(n),y=function(e,t,r,o){const n=[];for(const a of e){const e={};for(const n of t){let t=Se(a,n,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=ke(t,r[n],{...o,isDateOnly:"date-only"===a.schema.findFieldByName(n)?.type})}e[n]=t}n.push(e)}return n}(r,w,m,i);o.write(y,t,f,((e,r)=>{const o=F.length>1?`${l}_${t.toLowerCase()}`:l;h.file(`${o}.shp`,r.shp.buffer,{binary:!0}),h.file(`${o}.shx`,r.shx.buffer,{binary:!0}),h.file(`${o}.dbf`,r.dbf.buffer,{binary:!0}),h.file(`${o}.prj`,s)}))})));const S=await h.generateAsync({type:"uint8array"});return new Blob([S.buffer],{type:"text/plain"})}export async function kmlToLayerExtensions(e){T("blob",e).isNotMissing();const a=await e.text(),m=(new DOMParser).parseFromString(a,"application/xml"),u=function(e,a){const f={};m.querySelectorAll("Style").forEach((e=>{f[`#${e.id}`]=e}));const y=e.querySelector(":scope > name")?.textContent??"Unnamed Container",d=new F({layer:new s({title:y})});e.querySelectorAll(":scope > Placemark").forEach(((e,s)=>{const m=e.querySelector("name")?.textContent??"",u=e.querySelector("description")?.textContent??"",p=function(e){const t=e.querySelector("Point > coordinates"),a=e.querySelector("LineString > coordinates"),i=e.querySelector("Polygon");if(t?.textContent){const[e]=parseKMLCoordinates(t.textContent);return new r(e)}if(a?.textContent)return new n({paths:[parseKMLCoordinates(a.textContent).map((({x:e,y:t})=>[e,t]))]});if(i?.textContent){const e=i.querySelector("outerBoundaryIs > LinearRing > coordinates");if(e?.textContent){const t=[parseKMLCoordinates(e.textContent).map((({x:e,y:t})=>[e,t]))];return new o({rings:t})}}return}(e);if(p){const r=e.querySelector("styleUrl")?.textContent,o=parseKMLSymbol(r?f[r]:void 0,p.type,a),n=new i({displayField:"name",title:m,source:[new t({geometry:p,attributes:{name:m,description:u,OBJECTID:y+s}})],renderer:new l({symbol:o}),fields:[new c({name:"OBJECTID",type:"oid",alias:"OBJECTID"}),new c({name:"name",type:"string",alias:"name"})]});u&&n.fields.push(new c({name:"description",type:"string",alias:"description",defaultValue:""}));const g=new h({layer:n});d.layerExtensions.add(g)}}));return e.querySelectorAll(":scope > Folder, :scope > Document").forEach(((e,t)=>{const r=u(e,t);d.layerExtensions.add(r)})),d},f=[];return m.querySelectorAll("kml > Document, kml > Folder").forEach(((e,t)=>{const r=u(e,t);r.layerExtensions.length&&f.push(r)})),f}export async function shapefileToUploadData(e,t){T("shapefileData",e).isNotMissing();const o=fe(t),n=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:i},{default:s}]=await Promise.all([import("jszip"),import("shpjs")]),c=await n,l=await i.loadAsync(new Uint8Array(c)),m=l.filter((()=>!0)).map((e=>e.name));let u,f=m.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(f=function(e){if(!e.length)return[];let t=e[0];const r=t.match(ne);return r?(t=r[1],e.filter((e=>{const r=e.match(ne);return r&&r[1]===t}))):[t]}(f),m.some((e=>e.endsWith(".prj")))&&!f.every((e=>m.includes(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(m.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(u){if(t!==u)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else u=t})));let y=[],d=[];for(const e of f){if(!m.includes(`${e}.shx`)||!m.includes(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=await l.file(`${e}.shp`).async("uint8array"),r=s.parseShp(t),o=await l.file(`${e}.dbf`).async("uint8array"),n=s.parseDbf(o);if(n.length!==r.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(n),d=d.concat(r)}const p=await Promise.all(d.map((e=>async function(e,t){const o=O(e)?function(e){T("geometry.coordinates",e.type).matches("Point"),T("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,o,n]=e.coordinates,i=new r({x:t,y:o,spatialReference:a.WGS84});if(Array.isArray(n)){const[e,t]=n;!e&&!t||e?i.z=e:i.m=t}return i}(e):await W(e);if(t){let e;try{const r=await z(t);e=new a({wkid:C(r)})}catch{}e||(e=new a({wkt:t})),o.spatialReference=e}return o}(e,u)))),g=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[g]=JSON.stringify(p[t].toJSON())));return{data:function(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}(y),...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[g],inSpatialReference:p[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){T("shapefileData",e).isNotMissing();const r=fe(t);return uploadDataToFeatureSet(await shapefileToUploadData(e,r))}export function getDefaultSymbol(e,t){const r=e%8;let o=["#FFDBFF","#88D6FF","#7F9FC3","#FF8200","#F34A53","#76E3B9","#E7BFFF","#FFC467"][r],n=["#EF3786","#005A99","#2D5070","#790C00","#4C0000","#006543","#6244A9","#904200"][r];if(Math.floor(e/8)%2!=0){const e=o;o=n,n=e}switch(t){case"point":case"multipoint":return new d({color:o,outline:{color:n}});case"polyline":return new y({color:o,width:"2"});case"polygon":return new f({color:o,outline:{color:n}});case"mesh":return new m({symbolLayers:[{type:"fill",material:{color:o},outline:{color:n}}]})}}function le(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:w,detectOid:!e?.primaryKeyField}}function me(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...le(e)},...e}}function ue(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...le(e)},...e}}function fe(e){return{...{...le(e)},...e}}function ye(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function de(e,t,r,o){const n=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return n;if(t&&!t.includes("*"))return t.filter((e=>!n.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||n.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function pe(e){if(!e)return["*"];const t=e.featureSettings.popupTemplate?.content;return(Array.isArray(t)?t.find((e=>"fields"===e.type))?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName)):void 0)??e.featureSettings.popupTemplate?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName))??["*"]}async function ge(e,t){const r=await we(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!O(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!O(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!O(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(r.toJSON())]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[await H(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await J(r))]:[""]:[]}async function we(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await $([e],t))[0]:e}function he(e,t){const r=[t.delimiter,Q,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(Q,"g"),`${Q}${Q}`);return`${Q}${t}${Q}`}return e}function Fe(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||I.ROUND_TRIP;return v(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():b({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof S)return j({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function Se(e,t,r){if(r.useFormattedValues||Te(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);const o=e.schema.findFieldByName(t)?.type;if(null!=o)switch(o){case"date":case"date-only":case"timestamp-offset":{const r=R(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=P(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function Te(e,t){return!!q(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function Ne(e){for(const t of V)if(e.startsWith(t))return`\t${e}`;return e}function Oe(e,t,r){const o=e.startsWith(Q),n=e.endsWith(Q);if(o&&!n||!o&&n)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const a=o?e.substring(1,e.length-1):e;let i=-1;return De(a,Q,((e,o)=>{if(o===a.length)return!0;if(i<0){if(o!==a.length)return i=o,!0}else if(o===i+1)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),a.replace(new RegExp(`${Q}${Q}`,"g"),Q)}function De(e,t,r){let o,n=!1,a=0,i=0;for(;o=e.indexOf(t,a),!(o<0);){for(let t=a;t<o;)e.substring(t).startsWith(Q)?(n=!n,t+=1):t++;const s=o+t.length;if(!n){const e=r(i,o);if(i=s,!e)return}a=s}r(i,e.length)}async function Me(e,t){const r=JSON.parse(e),o=(await import("@arcgis/core/geometry/support/jsonUtils")).fromJSON(r);return r.spatialReference||(o.spatialReference=t),o}async function xe(e,t){const r=await W(JSON.parse(e));return r.spatialReference=t,r}async function Ee(e,t){const r=await B(e);return r.spatialReference=t,r}function Re(e,t,r){const o=r?[r]:geometryTypeHeaders[t];for(const t of o){const r=t.map((t=>e.map((e=>e?.raw?.toString().trim().toLowerCase())).indexOf(t.trim().toLowerCase())));if(r.every((e=>e>=0)))return r}}async function be(e,t){return(await Promise.all(e.map((async(e,r)=>{const o=e?.raw;if("string"==typeof o&&""!==o)try{return await t(o,void 0),r}catch{return}})))).find((e=>void 0!==e))}function Ae(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:C({locale:t,format:r},e)}async function Ge(e,t,r){const o=r?e.slice(1):e;if(r){const r=Re(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of se){try{await _e(r[0],n,t,o)}catch{continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=Re(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of se){const n=await be(o[0],r);if(void 0!==n){try{await _e(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function _e(e,t,r,o){return{columnIndices:[e],geometries:await Promise.all(o.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),r)})))}}function Ie(e,t,r){let o=!1,n=!0,a=!0,i=!0,s=!0,c=!0;const l=new Set,{data:m,includeHeaderRow:u,dateFormat:f,timeFormat:y,primaryKeyField:d,locale:p}=e,g=u?m[0]:[],w=u?m.slice(1):m;for(const e of w){const r=e[t];r?.raw&&(l.add(r.raw),o=!0,n&&(n=Y(r.raw,p)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||R(f||A,r.raw)!==G),s&&(s=R(f||re,r.formatted)!==G),i&&(i=r.raw instanceof S||P(y||U,r.raw).isValid),c&&(c=P({format:y||oe,locale:"en"},r.formatted).isValid))}const h=l.size===w.length;return d&&g[t]?.raw===d||r&&o&&h&&n?"esriFieldTypeOID":o&&c?"esriFieldTypeTimeOnly":o&&s?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&i?"esriFieldTypeTimeOnly":o&&a?"esriFieldTypeDate":"esriFieldTypeString"}async function Le(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:a,dateFormat:i,timeFormat:s}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?Ae(e,n,a):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:R({locale:n,format:i},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof S)return e.toString();if(e instanceof Date)return new S(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new S(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:P({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of V)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function Ce(e){switch(e){case _.DATE_SHORT:return"dd/MM/yyyy";case _.DATE_LONG:return"MMMM d, yyyy";case _.TIME_SHORT:return"h:mm AM/PM";case _.TIME_LONG:return"h:mm:ss AM/PM";case _.DATE_TIME_SHORT:case _.DEFAULT:return"MMM d yyyy h:mm AM/PM";case _.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case _.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case _.ISO_8601:case _.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&ie().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&ie().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function ve(e){switch(e){case _.DATE_SHORT:return"dd/MM/yyyy";case _.DATE_LONG:return"MMMM d, yyyy";case _.DATE_TIME_SHORT:case _.DEFAULT:return"MMM d yyyy";case _.DATE_TIME_LONG:return"MMMM d yyyy";case _.FULL:return"dddd, MMMM d yyyy";case _.ISO_8601:case _.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function Pe(e){switch(e){case L.TIME_SHORT:return"h:mm AM/PM";case L.TIME_LONG:return"h:mm:ss AM/PM";case L.ISO_8601:case L.ROUND_TRIP:return"HH:mm:ss";default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("h")&&!t.includes("AM/PM")&&ie().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function je(e){switch(e){case I.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case I.CURRENCY:return'"$"#,##0.00';case I.FIXED_POINT:case I.DEFAULT:return"0.0000";case I.NUMBER:return"#,##0.0000";case I.PERCENT:return"0%";case I.ROUND_TRIP:return"0.00000";default:return e}}function Ue(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e;if(e instanceof S)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function $e(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function He(e,t){return e.map((e=>$e(e,t)))}function Be(e,t){return e.map((e=>He(e,t)))}function ke(e,t,r){switch(t){case ae.NUMBER:return e instanceof Date?e.getTime():C(e);case ae.STRING:return e instanceof Date?b({format:r.dateFormat??_.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof S?j({format:r.timeFormat??L.ROUND_TRIP},e):"number"==typeof e?v(r.numberFormat??I.DEFAULT,e):e.toString();case ae.BOOLEAN:return!!e;case ae.DATE:return R(e);default:return e.toString()}}
|
|
1
|
+
import e from"@arcgis/core/Color.js";import t from"@arcgis/core/Graphic.js";import r from"@arcgis/core/geometry/Point";import o from"@arcgis/core/geometry/Polygon.js";import n from"@arcgis/core/geometry/Polyline.js";import a from"@arcgis/core/geometry/SpatialReference";import i from"@arcgis/core/layers/FeatureLayer.js";import s from"@arcgis/core/layers/GroupLayer.js";import c from"@arcgis/core/layers/support/Field.js";import l from"@arcgis/core/renderers/SimpleRenderer.js";import m from"@arcgis/core/symbols/MeshSymbol3D.js";import u from"@arcgis/core/symbols/PictureMarkerSymbol.js";import f from"@arcgis/core/symbols/SimpleFillSymbol.js";import y from"@arcgis/core/symbols/SimpleLineSymbol.js";import d from"@arcgis/core/symbols/SimpleMarkerSymbol.js";import{geometryTypeToJson as p}from"../json/GeometryJson.js";import{translate as g}from"../locale/language.js";import{INVARIANT as w}from"../locale.js";import{FeatureCollectionLayerExtension as h}from"../mapping/FeatureCollectionLayerExtension.js";import{GroupLayerExtension as F}from"../mapping/GroupLayerExtension.js";import{Time as S}from"../utilities/Time.js";import{checkArg as T,assertNever as N}from"../utilities/checkArg.js";import{isPoint as O,isMultipoint as D,isPolyline as M,isPolygon as x,isExtent as E}from"../utilities/esri.js";import{parse as R,format as b,DEFAULT_PARSING_FORMATS as A,INVALID_DATE as G}from"../utilities/format/date.js";import{DateFormat as _,NumberFormat as I,TimeFormat as L}from"../utilities/format/formats.js";import{parse as C,format as v}from"../utilities/format/number.js";import{parse as P,format as j,DEFAULT_PARSING_FORMATS as U}from"../utilities/format/time.js";import{project as $,esriToWKT as H,wktToEsri as B,esriWkidToWkt as k,esriWktToWkid as z,esriToGeoJSON as J,geoJSONToEsri as W}from"../utilities/geometry.js";import{getLogger as X}from"../utilities/log.js";import{isNumeric as Y}from"../utilities/number.js";import{caseInsensitiveEquals as q}from"../utilities/string.js";import{Feature as K}from"./Feature.js";import{FeatureSet as Z}from"./FeatureSet.js";const V=["=","-","+","@"],Q='"',ee="\r\n",te="\n",re=[...A.map(Ce),"M/d/yy"],oe=[...U.map(Pe).map((e=>e.replace("AM/PM","tt")))],ne=/(\w+)_(point|multipoint|polyline|polygon)z?/;var ae;function ie(){return X("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(ae||(ae={}));export const FIELD_NAME_REGEX=/[^a-zA-Z\d_]/g;export var GeometryFormat;!function(e){e.NONE="NONE",e.WKT="WKT",e.XY="XY",e.XYZ="XYZ",e.LAT_LON="LAT_LONG",e.GEO_JSON="GEO_JSON",e.ARCGIS_JSON="ARCGIS_JSON"}(GeometryFormat||(GeometryFormat={}));export const geometryTypeHeaders={[GeometryFormat.XYZ]:[["x","y","z"]],[GeometryFormat.XY]:[["x","y"]],[GeometryFormat.LAT_LON]:[["latitude","longitude"],["lat","lon"],["lat","long"]],[GeometryFormat.ARCGIS_JSON]:[["geometry"]],[GeometryFormat.GEO_JSON]:[["geometry"]],[GeometryFormat.WKT]:[["geometry"]]};const se=[[GeometryFormat.ARCGIS_JSON,Me],[GeometryFormat.GEO_JSON,xe],[GeometryFormat.WKT,Ee]],ce=new Map(se);export async function uploadDataToFeatureSet(e){const t=await async function(e){const{data:t,includeHeaderRow:o,geometryFormat:n,geometryFields:a,locale:i,numberFormat:s,inSpatialReference:c}=e,l=o?t.slice(1):t;if(n===GeometryFormat.NONE)return{columnIndices:[]};const m=e=>Ae(e,i,s),u=(e,t)=>{const o=t===GeometryFormat.XYZ,n=t===GeometryFormat.LAT_LON;return{columnIndices:e,geometries:l.map((t=>{if(t.length>=Math.max(...e)&&Y(t[e[0]]?.raw,i)&&Y(t[e[1]]?.raw,i)&&(!o||Y(t[e[2]]?.raw,i)))return new r({x:m(n?t[e[1]].raw:t[e[0]].raw),y:m(n?t[e[0]].raw:t[e[1]].raw),z:o?m(t[e[2]].raw):0,spatialReference:c})}))}},f=async(e,t)=>({columnIndices:[e],geometries:await Promise.all(l.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),c)})))}),y=async(e,t)=>{switch(t){case GeometryFormat.NONE:return{columnIndices:[0]};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return u(e,t);case GeometryFormat.ARCGIS_JSON:return f(e[0],Me);case GeometryFormat.GEO_JSON:return f(e[0],xe);case GeometryFormat.WKT:return f(e[0],Ee);default:return N(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=Re(o?t[0]:t[0].map(((e,t)=>({raw:t.toString()}))),n,o?a:a.map((e=>""+(parseInt(e.match(/\d+/g)[0])-1))));if(o&&void 0===e)throw new Error(`Error parsing file data: Expected geometry columns ${geometryTypeHeaders[n][0].join(",")} are missing for GeometryType.${n}`);return y(e??[0],n)}const[d,p]=await Ge(t,c,o);if(d===GeometryFormat.NONE)return{columnIndices:[]};return p.length>1?u(p,d):f(p[0],ce.get(d))}(e),o=function(e,t){const{data:r,displayField:o,includeHeaderRow:n,inSpatialReference:a,outSpatialReference:i,generatePrimaryKey:s}=e,c={fields:[]},l=e=>!(!t.columnIndices||0===t.columnIndices.length)&&t.columnIndices.includes(e);let{primaryKeyField:m}=e,u=0;for(let t=0;t<r[0].length;t++){if(l(t))continue;const o=Ie(e,t,!s&&!m&&!c.fields.find((e=>"esriFieldTypeOID"===e.type)));let a=r[0][t]?.raw?.toString(),i=a?.replace(FIELD_NAME_REGEX,"_");n&&i||(i="field"+ ++u,a=g("gcx.api.data.convert.import-field-alias",u)),c.fields.push({alias:a,name:i,type:o}),"esriFieldTypeOID"===o&&(m=i)}if(c.spatialReference=i??t.geometries?.[0]?.spatialReference??a,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),r=e[0];c.geometryType=e.every((e=>e===r))?p(r):void 0}if(!c.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=c.fields.length+1,t=!!c.fields.find((e=>"objectid"===e.name.toLowerCase()));m=t?`OBJECTID_${e}`:"OBJECTID",c.fields.push({name:m,alias:m,type:"esriFieldTypeOID"})}return c.displayField=o??c.fields.find((e=>!q(e.name,m)&&"esriFieldTypeString"===e.type))?.name??c.fields.find((e=>!q(e.name,m)))?.name??m,c.primaryKeyField=m,c}(e,t),n=await async function(e,t,r){const{data:o,includeHeaderRow:n,outFields:a,escapeFormulaChars:i,locale:s,numberFormat:c,dateFormat:l,timeFormat:m}=e,{spatialReference:u}=r,f=[],y=n?o.slice(1):o,d=(e,r)=>!t.columnIndices||0===t.columnIndices.length||!t.columnIndices.includes(r);return await Promise.all(y.map((async(e,o)=>{const n=new K;for(let t=0;t<r.fields.length;t++){const u=r.fields[t],f=e.filter(d);if(a.includes("*")||a.filter((e=>q(e,u.name))).length>0){let e=await Le(f[t]?.raw,u,{escapeFormulaChars:i,dateFormat:l,numberFormat:c,timeFormat:m,locale:s});"esriFieldTypeOID"===u.type&&null===e&&(e=o),n.attributes.set(u.name,e)}}t.geometries&&(n.geometry=await we(t.geometries[o],u)),f.push(n)}))),f}(e,t,o);return new Z({features:n,schema:o})}export async function toCsv(e,t){T("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:_.ROUND_TRIP,timeFormat:L.ROUND_TRIP,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:a.WGS84,includeHeaderRow:!0,outFields:pe(e.source),rowDelimiter:navigator.platform?.startsWith("Win")?ee:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:i,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=ye(r,o),f=de(r,c,e.schema,!0),y=de(r,c,e.schema,!1);if(i){const e=[];for(const t of u)e.push(he(t,o));for(const t of f)e.push(he(t,o));for(const t of y)e.push(he(t,o));const t=e.join(s)+l;m.push(t)}await Promise.all(r.map((async e=>{const t=[],r=(t,r)=>{const o=Se(e,t,r),n=e.schema.findFieldByName(t)?.type;return he(Fe(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await ge(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":Fe(e,t))));return r.map((e=>""===e?"":he(e,t)))}(e.geometry,o)),t.push(...f.map((e=>r(e,o)))),t.push(...y.map((e=>r(e,o))));const n=`${t.join(s)}${l}`;m.push(n)})));return new Blob(m,{type:"text/plain",endings:"\n"===l||l===ee?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(T("csvData",e).isNotMissing(),e instanceof Blob){const t=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsText(e)}));r=await t}else r=e;const o=me(t),n=o.rowDelimiter||function(e){let t=te;return De(e,ee,((r,o)=>(0===r&&o===e.length||(t=ee),!1))),t}(r),a=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(De(e,t,((t,r)=>(r!==e.length||t!==r)&&(n.push(e.substring(t,r)),n.length<3))),0===n.length)return o;let a=[{delimiter:",",rowsDelimiterOccurrences:[],rowsNumberAdjacentOccurrences:[]},{delimiter:";",rowsDelimiterOccurrences:[]},{delimiter:"|",rowsDelimiterOccurrences:[]},{delimiter:"\t",rowsDelimiterOccurrences:[]},{delimiter:" ",rowsDelimiterOccurrences:[]}].filter((e=>n[0].includes(e.delimiter)));if(0===a.length)return o;for(const e of n)for(const t of a){let o=0,n=0;De(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);Y(t,r)&&Y(o,r)&&n++}return!0})),t.rowsDelimiterOccurrences.push(o),","===t.delimiter&&t.rowsNumberAdjacentOccurrences.push(n)}if(a=a.filter((e=>e.rowsDelimiterOccurrences.every((t=>e.rowsDelimiterOccurrences[0]===t)))).sort(((e,t)=>t.rowsDelimiterOccurrences[0]-e.rowsDelimiterOccurrences[0])),a.length>1&&","===a[0].delimiter&&null!=r&&r!==w){const e=a[0];if(null!=e&&","===e.delimiter&&","===Intl.NumberFormat(r).formatToParts(1.1).find((e=>"decimal"===e.type))?.value)for(let t=0;t<e.rowsDelimiterOccurrences.length;t++)if(e.rowsDelimiterOccurrences[t]<=e.rowsNumberAdjacentOccurrences[t]){a=a.filter((e=>","!==e.delimiter));break}}if(0===a.length)return o;return a[0].delimiter}(r,n,t.locale),i=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return De(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:Oe(a,t,o.length)}),!0})),o};if(De(e,t,((t,r)=>{const a=e.substring(t,r);return a.length>0&&o.push(n(a,o.length)),!0})),o.length){const e=o[0].length;o.forEach(((t,r)=>{if(t.length!==e)throw new Error(`Detected invalid CSV: Row ${r} does not have expected number of columns: ${e}`)}))}return o}(r,n,a);let{geometryFormat:s,geometryFields:c}=t;if(!s){const[e,t]=await Ge(i,o.inSpatialReference,o.includeHeaderRow);s=e,c=t.map((e=>o.includeHeaderRow?i[0][e]?.raw??g("gcx.api.data.convert.import-field-alias",(e+1).toString()):g("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:i,...o,geometryFormat:s,geometryFields:c}}export async function csvToFeatureSet(e,t){const r=me(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toXLSX(e,t){T("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:pe(e.source),outSpatialReference:a.WGS84,dateFormat:_.DEFAULT,timeFormat:L.DEFAULT,numberFormat:I.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:i,dateFormat:s,timeFormat:c,numberFormat:l}=o,m=ye(r,o),u=de(r,n,e.schema,!0),f=de(r,n,e.schema,!1),y=await import("xlsx"),d=y.utils.sheet_new();let p=!1;if(i){const t=m.concat(u).concat(function(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>q(t.name,e)))?.alias??e))}(f,e.source));p=!0,y.utils.sheet_add_aoa(d,[t],{cellDates:!0})}await Promise.all(r.map((async e=>{const t=[],r=new Set,n=new Set;t.push(...await ge(e.geometry,o));for(const r of u){const n=Ue(e.attributes.get(r),o);t.push(n)}for(const a of f){const i=Se(e,a,o);if(i instanceof S){const o=e.schema.findFieldByName(a);"time-only"===o?.type&&r.add(t.length)}else if(i instanceof Date){const r=e.schema.findFieldByName(a);"date-only"===r?.type&&n.add(t.length)}const s=Ue(i,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void ie().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`);y.utils.sheet_add_aoa(d,[t],{cellDates:!0,origin:p?-1:void 0}),p=!0;const a=y.utils.decode_range(d["!ref"]);for(let e=a.s.c;e<=a.e.c;e++){const t=d[y.utils.encode_cell({r:a.e.r,c:e})];"d"===t.t?r.has(e)?t.z=Pe(c??L.ROUND_TRIP):n.has(e)?t.z=ve(s??_.ROUND_TRIP):t.z=Ce(s??_.ROUND_TRIP):"n"===t.t&&(t.z=je(l))}})));const g={SheetNames:[],Sheets:{}};g.SheetNames.push(o.sheetName),g.Sheets[o.sheetName]=d;const w=y.write(g,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),h=new Uint8Array(w.length);for(let e=0;e<w.length;e++)h[e]=w.charCodeAt(e);return new Blob([h.buffer],{type:"text/plain"})}export async function xlsxToUploadData(e,t){T("xlsxData",e).isNotMissing();const r=ue(t),o=await async function(e,t){const r=await import("xlsx"),o=new Promise(((o,n)=>{const a=new FileReader;a.onload=()=>{const e=new Uint8Array(a.result);let n="";for(const t of e)n+=String.fromCharCode(t);const i=r.read(n,{type:"binary",cellDates:!0}),s=t.sheetName||i.SheetNames[0],c=i.Sheets[s];o(c)},a.onerror=()=>{n(a.error)},a.readAsArrayBuffer(e)})),n=await o,a=r.utils.decode_range(n["!ref"]),i=[];for(let e=a.s.r;e<=a.e.r;e++){const t=[];for(let o=a.s.c;o<=a.e.c;o++){const a=n[`${r.utils.encode_cell({r:e,c:o})}`];a&&"d"===a.t&&a.v instanceof Date&&(a.v=new Date(a.v.getTime()+6e4*a.v.getTimezoneOffset())),t.push(a?{raw:a.v,formatted:"s"===a.t?void 0:a.w}:{raw:""})}i.push(t)}return i}(e,r);let{geometryFormat:n,geometryFields:a}=t;if(!n){const[e,t]=await Ge(o,r.inSpatialReference,r.includeHeaderRow);n=e,a=t.map((e=>r.includeHeaderRow?o[0][e]?.raw.toString()??g("gcx.api.data.convert.import-field-alias",(e+1).toString()):g("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:o,...r,geometryFormat:n,geometryFields:a}}export async function xlsxToFeatureSet(e,t){T("xlsxData",e).isNotMissing();const r=ue(t);return uploadDataToFeatureSet(await xlsxToUploadData(e,r))}export function kmlHexToEsriColor(t){return e.fromHex(`#${t.match(/.{2}/g).reverse().join("")}`)}export function parseKMLCoordinates(e){return e.trim().split(/\s+/).map((e=>{const[t,r,o]=e.split(",").map(Number);return{x:t,y:r,z:o}}))}export function parseKMLSymbol(t,r,o){if(t){const r=t.querySelector("IconStyle > Icon > href")?.textContent;if(r)return new u({url:r,width:32,height:32});const o=t.querySelector("PolyStyle");if(o){const t=o.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]);return new f({color:r,outline:{color:[0,0,0,.5],width:1}})}const n=t.querySelector("LineStyle");if(n){const t=n.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]),o=parseFloat(n.querySelector("width")?.textContent||"1");return new y({color:r,width:o})}}return getDefaultSymbol(o,"polygon"===r?"polygon":"point"===r?"point":"polyline")}export async function toShapefile(e,t){T("featureSet",e).isNotMissing();const[{default:r},o]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),n=Array.from(e),i={...{useFormattedValues:!1,outFields:pe(e.source),fileName:e.title||"export"},...t},{outFields:s,outSpatialReference:c,fileName:l}=i,m=e=>e.geometry.hasZ||e.geometry.hasM,u=new Map,f=n.filter((e=>O(e.geometry)));u.set("POINTZ",f.filter(m)),u.set("POINT",f.filter((e=>!m(e))));const y=n.filter((e=>D(e.geometry)));u.set("MULTIPOINTZ",y.filter(m)),u.set("MULTIPOINT",y.filter((e=>!m(e))));const d=n.filter((e=>M(e.geometry)));u.set("POLYLINEZ",d.filter(m)),u.set("POLYLINE",d.filter((e=>!m(e))));const p=n.filter((e=>x(e.geometry)||E(e.geometry)));u.set("POLYGONZ",p.filter(m)),u.set("POLYGON",p.filter((e=>!m(e))));const g=de(n,s,e.schema,!0);let w=de(n,s,e.schema,!1);w=g.concat(w);const h=new r,F=Array.from(u.keys()).filter((e=>u.get(e).length>0));await Promise.all(F.map((async t=>{const r=u.get(t),n=await Promise.all(r.map((e=>we(e.geometry,c)))),s=await async function(e){const{wkid:t,wkt:r}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===t&&e.spatialReference.wkt===r)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return r??await k(t??a.WGS84.wkid)}(n),m=i.useFormattedValues?Object.assign({},...w.map((e=>({[e]:ae.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>Te(e,a)))){n[a]=ae.STRING;continue}const t=r?r.fields.find((e=>q(e.name,a))):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":case"big-integer":n[a]=ae.NUMBER;break;case"date":case"timestamp-offset":n[a]=o?ae.NUMBER:ae.DATE;break;default:n[a]=ae.STRING}continue}const i=(e,t)=>e.attributes.get(t)??e.presentableAttributes.get(t);e.every((e=>i(e,a)instanceof Date||void 0===i(e,a)))&&e.some((e=>i(e,a)instanceof Date))?n[a]=o?ae.NUMBER:ae.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=ae.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=ae.BOOLEAN:n[a]=ae.STRING}return n}(r,w,e.schema,"timestamp"===i.dateFormat),f=function(e){return e.map((e=>{if(O(e)){const{x:t,y:r,z:o,m:n}=e,a=[t,r];return e.hasZ&&a.push(o),e.hasM&&a.push(n),$e(a,e)}if(D(e))return He(e.points,e);if(M(e))return Be(e.paths,e);if(x(e))return Be(e.rings,e);if(E(e)){const t=[e.xmin,e.ymax];return[[t,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],t]]}throw new Error("Unsupported geometry type.")}))}(n),y=function(e,t,r,o){const n=[];for(const a of e){const e={};for(const n of t){let t=Se(a,n,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=ke(t,r[n],{...o,isDateOnly:"date-only"===a.schema.findFieldByName(n)?.type})}e[n]=t}n.push(e)}return n}(r,w,m,i);o.write(y,t,f,((e,r)=>{const o=F.length>1?`${l}_${t.toLowerCase()}`:l;h.file(`${o}.shp`,r.shp.buffer,{binary:!0}),h.file(`${o}.shx`,r.shx.buffer,{binary:!0}),h.file(`${o}.dbf`,r.dbf.buffer,{binary:!0}),h.file(`${o}.prj`,s)}))})));const S=await h.generateAsync({type:"uint8array"});return new Blob([S.buffer],{type:"text/plain"})}export async function kmlToLayerExtensions(e){T("blob",e).isNotMissing();const a=await e.text(),m=(new DOMParser).parseFromString(a,"application/xml"),u=function(e,a){const f={};m.querySelectorAll("Style").forEach((e=>{f[`#${e.id}`]=e}));const y=e.querySelector(":scope > name")?.textContent??"Unnamed Container",d=new F({layer:new s({title:y})});e.querySelectorAll(":scope > Placemark").forEach(((e,s)=>{const m=e.querySelector("name")?.textContent??"",u=e.querySelector("description")?.textContent??"",p=function(e){const t=e.querySelector("Point > coordinates"),a=e.querySelector("LineString > coordinates"),i=e.querySelector("Polygon");if(t?.textContent){const[e]=parseKMLCoordinates(t.textContent.replace(/ /g,""));return new r(e)}if(a?.textContent)return new n({paths:[parseKMLCoordinates(a.textContent).map((({x:e,y:t})=>[e,t]))]});if(i?.textContent){const e=i.querySelector("outerBoundaryIs > LinearRing > coordinates");if(e?.textContent){const t=[parseKMLCoordinates(e.textContent).map((({x:e,y:t})=>[e,t]))];return new o({rings:t})}}return}(e);if(p){const r=e.querySelector("styleUrl")?.textContent,o=parseKMLSymbol(r?f[r]:e.querySelector("Style"),p.type,a),n=new i({displayField:"name",title:m,source:[new t({geometry:p,attributes:{name:m,description:u,OBJECTID:y+s}})],renderer:new l({symbol:o}),fields:[new c({name:"OBJECTID",type:"oid",alias:"OBJECTID"}),new c({name:"name",type:"string",alias:"name"})]});u&&n.fields.push(new c({name:"description",type:"string",alias:"description",defaultValue:""}));const g=new h({layer:n});d.layerExtensions.add(g)}}));return e.querySelectorAll(":scope > Folder, :scope > Document").forEach(((e,t)=>{const r=u(e,t);d.layerExtensions.add(r)})),d},f=[];return m.querySelectorAll("kml > Document, kml > Folder").forEach(((e,t)=>{const r=u(e,t);r.layerExtensions.length&&f.push(r)})),f}export async function shapefileToUploadData(e,t){T("shapefileData",e).isNotMissing();const o=fe(t),n=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:i},{default:s}]=await Promise.all([import("jszip"),import("shpjs")]),c=await n,l=await i.loadAsync(new Uint8Array(c)),m=l.filter((()=>!0)).map((e=>e.name));let u,f=m.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(f=function(e){if(!e.length)return[];let t=e[0];const r=t.match(ne);return r?(t=r[1],e.filter((e=>{const r=e.match(ne);return r&&r[1]===t}))):[t]}(f),m.some((e=>e.endsWith(".prj")))&&!f.every((e=>m.includes(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(m.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(u){if(t!==u)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else u=t})));let y=[],d=[];for(const e of f){if(!m.includes(`${e}.shx`)||!m.includes(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=await l.file(`${e}.shp`).async("uint8array"),r=s.parseShp(t),o=await l.file(`${e}.dbf`).async("uint8array"),n=s.parseDbf(o);if(n.length!==r.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(n),d=d.concat(r)}const p=await Promise.all(d.map((e=>async function(e,t){const o=O(e)?function(e){T("geometry.coordinates",e.type).matches("Point"),T("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,o,n]=e.coordinates,i=new r({x:t,y:o,spatialReference:a.WGS84});if(Array.isArray(n)){const[e,t]=n;!e&&!t||e?i.z=e:i.m=t}return i}(e):await W(e);if(t){let e;try{const r=await z(t);e=new a({wkid:C(r)})}catch{}e||(e=new a({wkt:t})),o.spatialReference=e}return o}(e,u)))),g=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[g]=JSON.stringify(p[t].toJSON())));return{data:function(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}(y),...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[g],inSpatialReference:p[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){T("shapefileData",e).isNotMissing();const r=fe(t);return uploadDataToFeatureSet(await shapefileToUploadData(e,r))}export function getDefaultSymbol(e,t){const r=e%8;let o=["#FFDBFF","#88D6FF","#7F9FC3","#FF8200","#F34A53","#76E3B9","#E7BFFF","#FFC467"][r],n=["#EF3786","#005A99","#2D5070","#790C00","#4C0000","#006543","#6244A9","#904200"][r];if(Math.floor(e/8)%2!=0){const e=o;o=n,n=e}switch(t){case"point":case"multipoint":return new d({color:o,outline:{color:n}});case"polyline":return new y({color:o,width:"2"});case"polygon":return new f({color:o,outline:{color:n}});case"mesh":return new m({symbolLayers:[{type:"fill",material:{color:o},outline:{color:n}}]})}}function le(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:w,detectOid:!e?.primaryKeyField}}function me(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...le(e)},...e}}function ue(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...le(e)},...e}}function fe(e){return{...{...le(e)},...e}}function ye(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function de(e,t,r,o){const n=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return n;if(t&&!t.includes("*"))return t.filter((e=>!n.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||n.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function pe(e){if(!e)return["*"];const t=e.featureSettings.popupTemplate?.content;return(Array.isArray(t)?t.find((e=>"fields"===e.type))?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName)):void 0)??e.featureSettings.popupTemplate?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName))??["*"]}async function ge(e,t){const r=await we(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!O(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!O(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!O(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(r.toJSON())]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[await H(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await J(r))]:[""]:[]}async function we(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await $([e],t))[0]:e}function he(e,t){const r=[t.delimiter,Q,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(Q,"g"),`${Q}${Q}`);return`${Q}${t}${Q}`}return e}function Fe(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||I.ROUND_TRIP;return v(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():b({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof S)return j({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function Se(e,t,r){if(r.useFormattedValues||Te(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);const o=e.schema.findFieldByName(t)?.type;if(null!=o)switch(o){case"date":case"date-only":case"timestamp-offset":{const r=R(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=P(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function Te(e,t){return!!q(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function Ne(e){for(const t of V)if(e.startsWith(t))return`\t${e}`;return e}function Oe(e,t,r){const o=e.startsWith(Q),n=e.endsWith(Q);if(o&&!n||!o&&n)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const a=o?e.substring(1,e.length-1):e;let i=-1;return De(a,Q,((e,o)=>{if(o===a.length)return!0;if(i<0){if(o!==a.length)return i=o,!0}else if(o===i+1)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),a.replace(new RegExp(`${Q}${Q}`,"g"),Q)}function De(e,t,r){let o,n=!1,a=0,i=0;for(;o=e.indexOf(t,a),!(o<0);){for(let t=a;t<o;)e.substring(t).startsWith(Q)?(n=!n,t+=1):t++;const s=o+t.length;if(!n){const e=r(i,o);if(i=s,!e)return}a=s}r(i,e.length)}async function Me(e,t){const r=JSON.parse(e),o=(await import("@arcgis/core/geometry/support/jsonUtils")).fromJSON(r);return r.spatialReference||(o.spatialReference=t),o}async function xe(e,t){const r=await W(JSON.parse(e));return r.spatialReference=t,r}async function Ee(e,t){const r=await B(e);return r.spatialReference=t,r}function Re(e,t,r){const o=r?[r]:geometryTypeHeaders[t];for(const t of o){const r=t.map((t=>e.map((e=>e?.raw?.toString().trim().toLowerCase())).indexOf(t.trim().toLowerCase())));if(r.every((e=>e>=0)))return r}}async function be(e,t){return(await Promise.all(e.map((async(e,r)=>{const o=e?.raw;if("string"==typeof o&&""!==o)try{return await t(o,void 0),r}catch{return}})))).find((e=>void 0!==e))}function Ae(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:C({locale:t,format:r},e)}async function Ge(e,t,r){const o=r?e.slice(1):e;if(r){const r=Re(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of se){try{await _e(r[0],n,t,o)}catch{continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=Re(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of se){const n=await be(o[0],r);if(void 0!==n){try{await _e(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function _e(e,t,r,o){return{columnIndices:[e],geometries:await Promise.all(o.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),r)})))}}function Ie(e,t,r){let o=!1,n=!0,a=!0,i=!0,s=!0,c=!0;const l=new Set,{data:m,includeHeaderRow:u,dateFormat:f,timeFormat:y,primaryKeyField:d,locale:p}=e,g=u?m[0]:[],w=u?m.slice(1):m;for(const e of w){const r=e[t];r?.raw&&(l.add(r.raw),o=!0,n&&(n=Y(r.raw,p)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||R(f||A,r.raw)!==G),s&&(s=R(f||re,r.formatted)!==G),i&&(i=r.raw instanceof S||P(y||U,r.raw).isValid),c&&(c=P({format:y||oe,locale:"en"},r.formatted).isValid))}const h=l.size===w.length;return d&&g[t]?.raw===d||r&&o&&h&&n?"esriFieldTypeOID":o&&c?"esriFieldTypeTimeOnly":o&&s?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&i?"esriFieldTypeTimeOnly":o&&a?"esriFieldTypeDate":"esriFieldTypeString"}async function Le(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:a,dateFormat:i,timeFormat:s}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?Ae(e,n,a):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:R({locale:n,format:i},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof S)return e.toString();if(e instanceof Date)return new S(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new S(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:P({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of V)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function Ce(e){switch(e){case _.DATE_SHORT:return"dd/MM/yyyy";case _.DATE_LONG:return"MMMM d, yyyy";case _.TIME_SHORT:return"h:mm AM/PM";case _.TIME_LONG:return"h:mm:ss AM/PM";case _.DATE_TIME_SHORT:case _.DEFAULT:return"MMM d yyyy h:mm AM/PM";case _.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case _.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case _.ISO_8601:case _.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&ie().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&ie().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function ve(e){switch(e){case _.DATE_SHORT:return"dd/MM/yyyy";case _.DATE_LONG:return"MMMM d, yyyy";case _.DATE_TIME_SHORT:case _.DEFAULT:return"MMM d yyyy";case _.DATE_TIME_LONG:return"MMMM d yyyy";case _.FULL:return"dddd, MMMM d yyyy";case _.ISO_8601:case _.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function Pe(e){switch(e){case L.TIME_SHORT:return"h:mm AM/PM";case L.TIME_LONG:return"h:mm:ss AM/PM";case L.ISO_8601:case L.ROUND_TRIP:return"HH:mm:ss";default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("h")&&!t.includes("AM/PM")&&ie().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function je(e){switch(e){case I.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case I.CURRENCY:return'"$"#,##0.00';case I.FIXED_POINT:case I.DEFAULT:return"0.0000";case I.NUMBER:return"#,##0.0000";case I.PERCENT:return"0%";case I.ROUND_TRIP:return"0.00000";default:return e}}function Ue(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e;if(e instanceof S)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function $e(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function He(e,t){return e.map((e=>$e(e,t)))}function Be(e,t){return e.map((e=>He(e,t)))}function ke(e,t,r){switch(t){case ae.NUMBER:return e instanceof Date?e.getTime():C(e);case ae.STRING:return e instanceof Date?b({format:r.dateFormat??_.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof S?j({format:r.timeFormat??L.ROUND_TRIP},e):"number"==typeof e?v(r.numberFormat??I.DEFAULT,e):e.toString();case ae.BOOLEAN:return!!e;case ae.DATE:return R(e);default:return e.toString()}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "data:application/octet-stream;base64,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"
|
|
1
|
+
window.navigationData = "data:application/octet-stream;base64,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"
|