@vertigis/arcgis-extensions 51.12.0 → 51.12.1
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/variables/version.version.html +1 -1
- package/package.json +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{CaseInsensitiveObservableMap as S}from"../utilities/CaseInsensitiveObservableMap.js";import{Time as T}from"../utilities/Time.js";import{checkArg as O,assertNever as N}from"../utilities/checkArg.js";import{isPoint as D,isMultipoint as M,isPolyline as x,isPolygon as E,isExtent as R}from"../utilities/esri.js";import{parse as b,format as A,DEFAULT_PARSING_FORMATS as G,INVALID_DATE as _}from"../utilities/format/date.js";import{DateFormat as I,NumberFormat as C,TimeFormat as L}from"../utilities/format/formats.js";import{parse as v,format as P}from"../utilities/format/number.js";import{parse as j,format as U,DEFAULT_PARSING_FORMATS as $}from"../utilities/format/time.js";import{project as H,esriToWKT as B,wktToEsri as k,esriWkidToWkt as z,esriWktToWkid as J,esriToGeoJSON as W,geoJSONToEsri as X}from"../utilities/geometry.js";import{getLogger as Y}from"../utilities/log.js";import{isNumeric as q}from"../utilities/number.js";import{caseInsensitiveEquals as K}from"../utilities/string.js";import{Feature as Z}from"./Feature.js";import{FeatureSet as V}from"./FeatureSet.js";const Q=["=","-","+","@"],ee='"',te="\r\n",re="\n",oe=[...G.map(ve),"M/d/yy"],ne=[...$.map(je).map((e=>e.replace("AM/PM","tt")))],ae=/(\w+)_(point|multipoint|polyline|polygon)z?/;var ie;function se(){return Y("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(ie||(ie={}));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 ce=[[GeometryFormat.ARCGIS_JSON,xe],[GeometryFormat.GEO_JSON,Ee],[GeometryFormat.WKT,Re]],le=new Map(ce);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=>Ge(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)&&q(t[e[0]]?.raw,i)&&q(t[e[1]]?.raw,i)&&(!o||q(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],xe);case GeometryFormat.GEO_JSON:return f(e[0],Ee);case GeometryFormat.WKT:return f(e[0],Re);default:return N(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=be(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 _e(t,c,o);if(d===GeometryFormat.NONE)return{columnIndices:[]};return p.length>1?u(p,d):f(p[0],le.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=Ce(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=>!K(e.name,m)&&"esriFieldTypeString"===e.type))?.name??c.fields.find((e=>!K(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 Z;for(let t=0;t<r.fields.length;t++){const u=r.fields[t],f=e.filter(d);if(a.includes("*")||a.filter((e=>K(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 he(t.geometries[o],u)),f.push(n)}))),f}(e,t,o);return new V({features:n,schema:o})}export async function toCsv(e,t){O("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:I.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:ge(e.source),rowDelimiter:navigator.platform?.startsWith("Win")?te:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:i,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=de(r,o),f=pe(r,c,e.schema,!0),y=pe(r,c,e.schema,!1);if(i){const e=[];for(const t of u)e.push(Fe(t,o));for(const t of f)e.push(Fe(t,o));for(const t of y)e.push(Fe(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=Te(e,t,r),n=e.schema.findFieldByName(t)?.type;return Fe(Se(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await we(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":Se(e,t))));return r.map((e=>""===e?"":Fe(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===te?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(O("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=ue(t),n=o.rowDelimiter||function(e){let t=re;return Me(e,te,((r,o)=>(0===r&&o===e.length||(t=te),!1))),t}(r),a=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(Me(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;Me(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);q(t,r)&&q(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 Me(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:De(a,t,o.length)}),!0})),o};if(Me(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 _e(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=ue(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toXLSX(e,t){O("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:ge(e.source),outSpatialReference:a.WGS84,dateFormat:I.DEFAULT,timeFormat:L.DEFAULT,numberFormat:C.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:i,dateFormat:s,timeFormat:c,numberFormat:l}=o,m=de(r,o),u=pe(r,n,e.schema,!0),f=pe(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=>K(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 we(e.geometry,o));for(const r of u){const n=$e(e.attributes.get(r),o);t.push(n)}for(const a of f){const i=Te(e,a,o);if(i instanceof T){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=$e(i,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void se().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=je(c??L.ROUND_TRIP):n.has(e)?t.z=Pe(s??I.ROUND_TRIP):t.z=ve(s??I.ROUND_TRIP):"n"===t.t&&(t.z=Ue(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){O("xlsxData",e).isNotMissing();const r=fe(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 _e(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){O("xlsxData",e).isNotMissing();const r=fe(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){O("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:ge(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=>D(e.geometry)));u.set("POINTZ",f.filter(m)),u.set("POINT",f.filter((e=>!m(e))));const y=n.filter((e=>M(e.geometry)));u.set("MULTIPOINTZ",y.filter(m)),u.set("MULTIPOINT",y.filter((e=>!m(e))));const d=n.filter((e=>x(e.geometry)));u.set("POLYLINEZ",d.filter(m)),u.set("POLYLINE",d.filter((e=>!m(e))));const p=n.filter((e=>E(e.geometry)||R(e.geometry)));u.set("POLYGONZ",p.filter(m)),u.set("POLYGON",p.filter((e=>!m(e))));const g=pe(n,s,e.schema,!0);let w=pe(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=>he(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 z(t??a.WGS84.wkid)}(n),m=i.useFormattedValues?Object.assign({},...w.map((e=>({[e]:ie.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>Oe(e,a)))){n[a]=ie.STRING;continue}const t=r?r.fields.find((e=>K(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]=ie.NUMBER;break;case"date":case"timestamp-offset":n[a]=o?ie.NUMBER:ie.DATE;break;default:n[a]=ie.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?ie.NUMBER:ie.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=ie.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=ie.BOOLEAN:n[a]=ie.STRING}return n}(r,w,e.schema,"timestamp"===i.dateFormat),f=function(e){return e.map((e=>{if(D(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),He(a,e)}if(M(e))return Be(e.points,e);if(x(e))return ke(e.paths,e);if(E(e))return ke(e.rings,e);if(R(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=Te(a,n,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=ze(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){O("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){O("shapefileData",e).isNotMissing();const o=ye(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=new S;l.forEach(((e,t)=>{t&&m.set(t.name,t)}));const u=l.filter((()=>!0)).map((e=>e.name));let f,y=u.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(y=function(e){if(!e.length)return[];let t=e[0];const r=t.match(ae);return r?(t=r[1],e.filter((e=>{const r=e.match(ae);return r&&r[1]===t}))):[t]}(y),u.some((e=>e.endsWith(".prj")))&&!y.every((e=>m.has(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(u.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(f){if(t!==f)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else f=t})));let d=[],p=[];for(const e of y){if(!m.has(`${e}.shp`)||!m.has(`${e}.shx`)||!m.has(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=s.parseShp(await m.get(`${e}.shp`).async("uint8array")),r=s.parseDbf(await m.get(`${e}.dbf`).async("uint8array"));if(r.length!==t.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");d=d.concat(r),p=p.concat(t)}const g=await Promise.all(p.map((e=>async function(e,t){const o=D(e)?function(e){O("geometry.coordinates",e.type).matches("Point"),O("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 X(e);if(t){let e;try{const r=await J(t);e=new a({wkid:v(r)})}catch{}e||(e=new a({wkt:t})),o.spatialReference=e}return o}(e,f)))),w=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];d.forEach(((e,t)=>e[w]=JSON.stringify(g[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]})))))]}(d),...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[w],inSpatialReference:g[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){O("shapefileData",e).isNotMissing();const r=ye(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 me(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:w,detectOid:!e?.primaryKeyField}}function ue(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...me(e)},...e}}function fe(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...me(e)},...e}}function ye(e){return{...{...me(e)},...e}}function de(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 pe(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 ge(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 we(e,t){const r=await he(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!D(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(!D(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(!D(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 B(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await W(r))]:[""]:[]}async function he(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await H([e],t))[0]:e}function Fe(e,t){const r=[t.delimiter,ee,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(ee,"g"),`${ee}${ee}`);return`${ee}${t}${ee}`}return e}function Se(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||C.ROUND_TRIP;return P(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():A({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof T)return U({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function Te(e,t,r){if(r.useFormattedValues||Oe(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=b(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=j(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function Oe(e,t){return!!K(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 Q)if(e.startsWith(t))return`\t${e}`;return e}function De(e,t,r){const o=e.startsWith(ee),n=e.endsWith(ee);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 Me(a,ee,((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(`${ee}${ee}`,"g"),ee)}function Me(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(ee)?(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 xe(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 Ee(e,t){const r=await X(JSON.parse(e));return r.spatialReference=t,r}async function Re(e,t){const r=await k(e);return r.spatialReference=t,r}function be(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 Ae(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 Ge(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:v({locale:t,format:r},e)}async function _e(e,t,r){const o=r?e.slice(1):e;if(r){const r=be(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of ce){try{await Ie(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=be(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of ce){const n=await Ae(o[0],r);if(void 0!==n){try{await Ie(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function Ie(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 Ce(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=q(r.raw,p)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||b(f||G,r.raw)!==_),s&&(s=b(f||oe,r.formatted)!==_),i&&(i=r.raw instanceof T||j(y||$,r.raw).isValid),c&&(c=j({format:y||ne,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?Ge(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:b({locale:n,format:i},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof T)return e.toString();if(e instanceof Date)return new T(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new T(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:j({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of Q)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function ve(e){switch(e){case I.DATE_SHORT:return"dd/MM/yyyy";case I.DATE_LONG:return"MMMM d, yyyy";case I.TIME_SHORT:return"h:mm AM/PM";case I.TIME_LONG:return"h:mm:ss AM/PM";case I.DATE_TIME_SHORT:case I.DEFAULT:return"MMM d yyyy h:mm AM/PM";case I.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case I.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case I.ISO_8601:case I.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&se().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&se().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function Pe(e){switch(e){case I.DATE_SHORT:return"dd/MM/yyyy";case I.DATE_LONG:return"MMMM d, yyyy";case I.DATE_TIME_SHORT:case I.DEFAULT:return"MMM d yyyy";case I.DATE_TIME_LONG:return"MMMM d yyyy";case I.FULL:return"dddd, MMMM d yyyy";case I.ISO_8601:case I.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function je(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")&&se().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function Ue(e){switch(e){case C.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case C.CURRENCY:return'"$"#,##0.00';case C.FIXED_POINT:case C.DEFAULT:return"0.0000";case C.NUMBER:return"#,##0.0000";case C.PERCENT:return"0%";case C.ROUND_TRIP:return"0.00000";default:return e}}function $e(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 T)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function He(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function Be(e,t){return e.map((e=>He(e,t)))}function ke(e,t){return e.map((e=>Be(e,t)))}function ze(e,t,r){switch(t){case ie.NUMBER:return e instanceof Date?e.getTime():v(e);case ie.STRING:return e instanceof Date?A({format:r.dateFormat??I.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof T?U({format:r.timeFormat??L.ROUND_TRIP},e):"number"==typeof e?P(r.numberFormat??C.DEFAULT,e):e.toString();case ie.BOOLEAN:return!!e;case ie.DATE:return b(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{CaseInsensitiveObservableMap as S}from"../utilities/CaseInsensitiveObservableMap.js";import{Time as T}from"../utilities/Time.js";import{checkArg as O,assertNever as N}from"../utilities/checkArg.js";import{isPoint as D,isMultipoint as M,isPolyline as x,isPolygon as E,isExtent as R}from"../utilities/esri.js";import{parse as b,format as A,DEFAULT_PARSING_FORMATS as G,INVALID_DATE as _}from"../utilities/format/date.js";import{DateFormat as I,NumberFormat as C,TimeFormat as L}from"../utilities/format/formats.js";import{parse as v,format as P}from"../utilities/format/number.js";import{parse as j,format as U,DEFAULT_PARSING_FORMATS as $}from"../utilities/format/time.js";import{project as H,esriToWKT as B,wktToEsri as k,esriWkidToWkt as z,esriWktToWkid as J,esriToGeoJSON as W,geoJSONToEsri as X}from"../utilities/geometry.js";import{getLogger as Y}from"../utilities/log.js";import{isNumeric as q}from"../utilities/number.js";import{caseInsensitiveEquals as K}from"../utilities/string.js";import{Feature as Z}from"./Feature.js";import{FeatureSet as V}from"./FeatureSet.js";const Q=["=","-","+","@"],ee='"',te="\r\n",re="\n",oe=[...G.map(ve),"M/d/yy"],ne=[...$.map(je).map((e=>e.replace("AM/PM","tt")))],ae=/(\w+)_(point|multipoint|polyline|polygon)z?/;var ie;function se(){return Y("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(ie||(ie={}));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 ce=[[GeometryFormat.ARCGIS_JSON,xe],[GeometryFormat.GEO_JSON,Ee],[GeometryFormat.WKT,Re]],le=new Map(ce);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=>Ge(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)&&q(t[e[0]]?.raw,i)&&q(t[e[1]]?.raw,i)&&(!o||q(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],xe);case GeometryFormat.GEO_JSON:return f(e[0],Ee);case GeometryFormat.WKT:return f(e[0],Re);default:return N(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=be(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 _e(t,c,o);if(d===GeometryFormat.NONE)return{columnIndices:[]};return p.length>1?u(p,d):f(p[0],le.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=Ce(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=>!K(e.name,m)&&"esriFieldTypeString"===e.type))?.name??c.fields.find((e=>!K(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 Z;for(let t=0;t<r.fields.length;t++){const u=r.fields[t],f=e.filter(d);if(a.includes("*")||a.filter((e=>K(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 he(t.geometries[o],u)),f.push(n)}))),f}(e,t,o);return new V({features:n,schema:o})}export async function toCsv(e,t){O("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:I.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:ge(e.source),rowDelimiter:navigator.platform?.startsWith("Win")?te:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:i,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=de(r,o),f=pe(r,c,e.schema,!0),y=pe(r,c,e.schema,!1);if(i){const e=[];for(const t of u)e.push(Fe(t,o));for(const t of f)e.push(Fe(t,o));for(const t of y)e.push(Fe(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=Te(e,t,r),n=e.schema.findFieldByName(t)?.type;return Fe(Se(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await we(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":Se(e,t))));return r.map((e=>""===e?"":Fe(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===te?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(O("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=ue(t),n=o.rowDelimiter||function(e){let t=re;return Me(e,te,((r,o)=>(0===r&&o===e.length||(t=te),!1))),t}(r),a=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(Me(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;Me(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);q(t,r)&&q(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 Me(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:De(a,t,o.length)}),!0})),o};if(Me(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 _e(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=ue(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toXLSX(e,t){O("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:ge(e.source),outSpatialReference:a.WGS84,dateFormat:I.DEFAULT,timeFormat:L.DEFAULT,numberFormat:C.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:i,dateFormat:s,timeFormat:c,numberFormat:l}=o,m=de(r,o),u=pe(r,n,e.schema,!0),f=pe(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=>K(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 we(e.geometry,o));for(const r of u){const n=$e(e.attributes.get(r),o);t.push(n)}for(const a of f){const i=Te(e,a,o);if(i instanceof T){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=$e(i,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void se().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=je(c??L.ROUND_TRIP):n.has(e)?t.z=Pe(s??I.ROUND_TRIP):t.z=ve(s??I.ROUND_TRIP):"n"===t.t&&(t.z=Ue(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){O("xlsxData",e).isNotMissing();const r=fe(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 _e(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){O("xlsxData",e).isNotMissing();const r=fe(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){O("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:ge(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=>D(e.geometry)));u.set("POINTZ",f.filter(m)),u.set("POINT",f.filter((e=>!m(e))));const y=n.filter((e=>M(e.geometry)));u.set("MULTIPOINTZ",y.filter(m)),u.set("MULTIPOINT",y.filter((e=>!m(e))));const d=n.filter((e=>x(e.geometry)));u.set("POLYLINEZ",d.filter(m)),u.set("POLYLINE",d.filter((e=>!m(e))));const p=n.filter((e=>E(e.geometry)||R(e.geometry)));u.set("POLYGONZ",p.filter(m)),u.set("POLYGON",p.filter((e=>!m(e))));const g=pe(n,s,e.schema,!0);let w=pe(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=>he(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 z(t??a.WGS84.wkid)}(n),m=i.useFormattedValues?Object.assign({},...w.map((e=>({[e]:ie.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>Oe(e,a)))){n[a]=ie.STRING;continue}const t=r?r.fields.find((e=>K(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]=ie.NUMBER;break;case"date":case"timestamp-offset":n[a]=o?ie.NUMBER:ie.DATE;break;default:n[a]=ie.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?ie.NUMBER:ie.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=ie.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=ie.BOOLEAN:n[a]=ie.STRING}return n}(r,w,e.schema,"timestamp"===i.dateFormat),f=function(e){return e.map((e=>{if(D(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),He(a,e)}if(M(e))return Be(e.points,e);if(x(e))return ke(e.paths,e);if(E(e))return ke(e.rings,e);if(R(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=Te(a,n,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=ze(t,r[n],{...o,isDateOnly:"date-only"===a.schema.findFieldByName(n)?.type})}e[n.replaceAll(".","_")]=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){O("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){O("shapefileData",e).isNotMissing();const o=ye(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=new S;l.forEach(((e,t)=>{t&&m.set(t.name,t)}));const u=l.filter((()=>!0)).map((e=>e.name));let f,y=u.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(y=function(e){if(!e.length)return[];let t=e[0];const r=t.match(ae);return r?(t=r[1],e.filter((e=>{const r=e.match(ae);return r&&r[1]===t}))):[t]}(y),u.some((e=>e.endsWith(".prj")))&&!y.every((e=>m.has(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(u.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(f){if(t!==f)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else f=t})));let d=[],p=[];for(const e of y){if(!m.has(`${e}.shp`)||!m.has(`${e}.shx`)||!m.has(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=s.parseShp(await m.get(`${e}.shp`).async("uint8array")),r=s.parseDbf(await m.get(`${e}.dbf`).async("uint8array"));if(r.length!==t.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");d=d.concat(r),p=p.concat(t)}const g=await Promise.all(p.map((e=>async function(e,t){const o=D(e)?function(e){O("geometry.coordinates",e.type).matches("Point"),O("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 X(e);if(t){let e;try{const r=await J(t);e=new a({wkid:v(r)})}catch{}e||(e=new a({wkt:t})),o.spatialReference=e}return o}(e,f)))),w=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];d.forEach(((e,t)=>e[w]=JSON.stringify(g[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]})))))]}(d),...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[w],inSpatialReference:g[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){O("shapefileData",e).isNotMissing();const r=ye(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 me(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:w,detectOid:!e?.primaryKeyField}}function ue(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...me(e)},...e}}function fe(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...me(e)},...e}}function ye(e){return{...{...me(e)},...e}}function de(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 pe(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 ge(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 we(e,t){const r=await he(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!D(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(!D(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(!D(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 B(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await W(r))]:[""]:[]}async function he(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await H([e],t))[0]:e}function Fe(e,t){const r=[t.delimiter,ee,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(ee,"g"),`${ee}${ee}`);return`${ee}${t}${ee}`}return e}function Se(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||C.ROUND_TRIP;return P(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():A({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof T)return U({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function Te(e,t,r){if(r.useFormattedValues||Oe(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=b(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=j(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function Oe(e,t){return!!K(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 Q)if(e.startsWith(t))return`\t${e}`;return e}function De(e,t,r){const o=e.startsWith(ee),n=e.endsWith(ee);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 Me(a,ee,((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(`${ee}${ee}`,"g"),ee)}function Me(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(ee)?(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 xe(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 Ee(e,t){const r=await X(JSON.parse(e));return r.spatialReference=t,r}async function Re(e,t){const r=await k(e);return r.spatialReference=t,r}function be(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 Ae(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 Ge(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:v({locale:t,format:r},e)}async function _e(e,t,r){const o=r?e.slice(1):e;if(r){const r=be(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of ce){try{await Ie(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=be(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of ce){const n=await Ae(o[0],r);if(void 0!==n){try{await Ie(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function Ie(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 Ce(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=q(r.raw,p)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||b(f||G,r.raw)!==_),s&&(s=b(f||oe,r.formatted)!==_),i&&(i=r.raw instanceof T||j(y||$,r.raw).isValid),c&&(c=j({format:y||ne,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?Ge(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:b({locale:n,format:i},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof T)return e.toString();if(e instanceof Date)return new T(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new T(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:j({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of Q)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function ve(e){switch(e){case I.DATE_SHORT:return"dd/MM/yyyy";case I.DATE_LONG:return"MMMM d, yyyy";case I.TIME_SHORT:return"h:mm AM/PM";case I.TIME_LONG:return"h:mm:ss AM/PM";case I.DATE_TIME_SHORT:case I.DEFAULT:return"MMM d yyyy h:mm AM/PM";case I.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case I.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case I.ISO_8601:case I.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&se().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&se().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function Pe(e){switch(e){case I.DATE_SHORT:return"dd/MM/yyyy";case I.DATE_LONG:return"MMMM d, yyyy";case I.DATE_TIME_SHORT:case I.DEFAULT:return"MMM d yyyy";case I.DATE_TIME_LONG:return"MMMM d yyyy";case I.FULL:return"dddd, MMMM d yyyy";case I.ISO_8601:case I.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function je(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")&&se().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function Ue(e){switch(e){case C.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case C.CURRENCY:return'"$"#,##0.00';case C.FIXED_POINT:case C.DEFAULT:return"0.0000";case C.NUMBER:return"#,##0.0000";case C.PERCENT:return"0%";case C.ROUND_TRIP:return"0.00000";default:return e}}function $e(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 T)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function He(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function Be(e,t){return e.map((e=>He(e,t)))}function ke(e,t){return e.map((e=>Be(e,t)))}function ze(e,t,r){switch(t){case ie.NUMBER:return e instanceof Date?e.getTime():v(e);case ie.STRING:return e instanceof Date?A({format:r.dateFormat??I.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof T?U({format:r.timeFormat??L.ROUND_TRIP},e):"number"==typeof e?P(r.numberFormat??C.DEFAULT,e):e.toString();case ie.BOOLEAN:return!!e;case ie.DATE:return b(e);default:return e.toString()}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>version | @vertigis/arcgis-extensions</title><meta name="description" content="Documentation for @vertigis/arcgis-extensions"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vertigis/arcgis-extensions</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">@vertigis/arcgis-extensions</a></li><li><a href="../modules/version.html">version</a></li><li><a href="version.version.html">version</a></li></ul><h1>Variable version<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">version</span><span class="tsd-signature-symbol"> = "51.12.
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>version | @vertigis/arcgis-extensions</title><meta name="description" content="Documentation for @vertigis/arcgis-extensions"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@vertigis/arcgis-extensions</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">@vertigis/arcgis-extensions</a></li><li><a href="../modules/version.html">version</a></li><li><a href="version.version.html">version</a></li></ul><h1>Variable version<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">version</span><span class="tsd-signature-symbol"> = "51.12.1"</span></div><div class="tsd-comment tsd-typography"><p>The current version of the Geocortex ArcGIS Extensions API.</p>
|
|
2
2
|
</div><div class="tsd-comment tsd-typography"></div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@vertigis/arcgis-extensions</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
|
package/package.json
CHANGED
package/version.d.ts
CHANGED
package/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version="51.12.
|
|
1
|
+
export const version="51.12.1";
|