@vertigis/arcgis-extensions 44.1.3 → 44.2.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/AppConfig.schema.json +4 -4
- package/data/convert.js +1 -1
- package/docs/html/assets/search.js +1 -1
- package/docs/html/classes/mapping_BuildingSceneLayerExtension.BuildingSceneLayerExtension.html +3 -2
- package/docs/html/classes/mapping_CSVLayerExtension.CSVLayerExtension.html +3 -2
- package/docs/html/classes/mapping_ElevationLayerExtension.ElevationLayerExtension.html +3 -2
- package/docs/html/classes/mapping_FeatureCollectionLayerExtension.FeatureCollectionLayerExtension.html +3 -2
- package/docs/html/classes/mapping_FeatureLayerExtension.FeatureLayerExtension.html +3 -2
- package/docs/html/classes/mapping_FeatureLayerExtensionBase.FeatureLayerExtensionBase.html +3 -2
- package/docs/html/classes/mapping_GeoJSONLayerExtension.GeoJSONLayerExtension.html +3 -2
- package/docs/html/classes/mapping_GeoRSSLayerExtension.GeoRSSLayerExtension.html +3 -2
- package/docs/html/classes/mapping_GraphicsLayerExtension.GraphicsLayerExtension.html +3 -2
- package/docs/html/classes/mapping_GroupLayerExtension.GroupLayerExtension.html +3 -2
- package/docs/html/classes/mapping_ImageryLayerExtension.ImageryLayerExtension.html +3 -2
- package/docs/html/classes/mapping_ImageryTileLayerExtension.ImageryTileLayerExtension.html +3 -2
- package/docs/html/classes/mapping_IntegratedMeshLayerExtension.IntegratedMeshLayerExtension.html +3 -2
- package/docs/html/classes/mapping_KMLLayerExtension.KMLLayerExtension.html +3 -2
- package/docs/html/classes/mapping_MapImageLayerExtension.MapImageLayerExtension.html +3 -2
- package/docs/html/classes/mapping_MapNotesLayerExtension.MapNotesLayerExtension.html +3 -2
- package/docs/html/classes/mapping_OpenStreetMapLayerExtension.OpenStreetMapLayerExtension.html +3 -2
- package/docs/html/classes/mapping_PointCloudLayerExtension.PointCloudLayerExtension.html +3 -2
- package/docs/html/classes/mapping_RouteLayerExtension.RouteLayerExtension.html +3 -2
- package/docs/html/classes/mapping_SceneLayerExtension.SceneLayerExtension.html +3 -2
- package/docs/html/classes/mapping_StreamLayerExtension.StreamLayerExtension.html +3 -2
- package/docs/html/classes/mapping_SubtypeGroupLayerExtension.SubtypeGroupLayerExtension.html +3 -2
- package/docs/html/classes/mapping_TileLayerExtension.TileLayerExtension.html +3 -2
- package/docs/html/classes/mapping_UnsupportedLayerExtension.UnsupportedLayerExtension.html +3 -2
- package/docs/html/classes/mapping_VectorTileLayerExtension.VectorTileLayerExtension.html +3 -2
- package/docs/html/classes/mapping_WFSLayerExtension.WFSLayerExtension.html +3 -2
- package/docs/html/classes/mapping_WMSLayerExtension.WMSLayerExtension.html +3 -2
- package/docs/html/classes/mapping_WMTSLayerExtension.WMTSLayerExtension.html +3 -2
- package/docs/html/classes/mapping_WebTileLayerExtension.WebTileLayerExtension.html +3 -2
- package/docs/html/classes/mapping__LayerExtension.LayerExtension.html +3 -2
- package/docs/html/variables/version.version.html +1 -1
- package/json/BasemapJson.js +1 -1
- package/json/LayerJson.js +1 -1
- package/mapping/BasemapExtension.js +1 -1
- package/mapping/MapExtension.js +1 -1
- package/mapping/_LayerExtension.d.ts +1 -0
- package/mapping/_LayerExtension.js +1 -1
- package/package.json +3 -3
- package/tasks/geocoding/ArcGISGeocoder.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/AppConfig.schema.json
CHANGED
|
@@ -1542,7 +1542,7 @@
|
|
|
1542
1542
|
{
|
|
1543
1543
|
"allOf": [
|
|
1544
1544
|
{
|
|
1545
|
-
"$ref": "#/definitions/
|
|
1545
|
+
"$ref": "#/definitions/GroupLayerJson"
|
|
1546
1546
|
},
|
|
1547
1547
|
{
|
|
1548
1548
|
"properties": {
|
|
@@ -1569,7 +1569,7 @@
|
|
|
1569
1569
|
{
|
|
1570
1570
|
"allOf": [
|
|
1571
1571
|
{
|
|
1572
|
-
"$ref": "#/definitions/
|
|
1572
|
+
"$ref": "#/definitions/FeatureLayerJson"
|
|
1573
1573
|
},
|
|
1574
1574
|
{
|
|
1575
1575
|
"properties": {
|
|
@@ -1596,7 +1596,7 @@
|
|
|
1596
1596
|
{
|
|
1597
1597
|
"allOf": [
|
|
1598
1598
|
{
|
|
1599
|
-
"$ref": "#/definitions/
|
|
1599
|
+
"$ref": "#/definitions/GeoJSONLayerJson"
|
|
1600
1600
|
},
|
|
1601
1601
|
{
|
|
1602
1602
|
"properties": {
|
|
@@ -1623,7 +1623,7 @@
|
|
|
1623
1623
|
{
|
|
1624
1624
|
"allOf": [
|
|
1625
1625
|
{
|
|
1626
|
-
"$ref": "#/definitions/
|
|
1626
|
+
"$ref": "#/definitions/GeoRSSLayerJson"
|
|
1627
1627
|
},
|
|
1628
1628
|
{
|
|
1629
1629
|
"properties": {
|
package/data/convert.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"@arcgis/core/geometry/Point";import t from"@arcgis/core/geometry/SpatialReference";import{geometryTypeToJson as r}from"../json/GeometryJson.js";import{translate as o}from"../locale/language.js";import{INVARIANT as n}from"../locale.js";import{checkArg as a,assertNever as i}from"../utilities/checkArg.js";import{parse as s,format as c,DEFAULT_PARSING_FORMATS as m,DateFormat as l,INVALID_DATE as u}from"../utilities/date.js";import{isPoint as f,isMultipoint as d,isPolyline as p,isPolygon as y,isExtent as g}from"../utilities/esri.js";import{project as w,esriToWKT as h,wktToEsri as F,esriWkidToWkt as N,esriWktToWkid as S,esriToGeoJSON as O,geoJSONToEsri as T}from"../utilities/geometry.js";import{getLogger as R}from"../utilities/log.js";import{isNumeric as G,parse as D,format as b,NumberFormat as A}from"../utilities/number.js";import{caseInsensitiveEquals as E}from"../utilities/string.js";import{Feature as x}from"./Feature.js";import{FeatureSet as M}from"./FeatureSet.js";const I=["=","-","+","@"],_='"',v="\r\n",L="\n",P=[...m.map(pe),"M/d/yy"],C=/(\w+)_(point|multipoint|polyline|polygon)z?/;var U;function $(){return R("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(U||(U={}));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 j=[[GeometryFormat.ARCGIS_JSON,ne],[GeometryFormat.GEO_JSON,ae],[GeometryFormat.WKT,ie]],J=new Map(j);export async function uploadDataToFeatureSet(t){const n=await async function(t){const{data:r,includeHeaderRow:o,geometryFormat:n,geometryFields:a,locale:s,numberFormat:c,inSpatialReference:m}=t,l=o?r.slice(1):r;if(n===GeometryFormat.NONE)return{columnIndices:[]};const u=e=>me(e,s,c),f=(t,r)=>{const o=r===GeometryFormat.XYZ,n=r===GeometryFormat.LAT_LON;return{columnIndices:t,geometries:l.map((r=>{if(r.length>=Math.max(...t)&&G(r[t[0]]?.raw,s)&&G(r[t[1]]?.raw,s)&&(!o||G(r[t[2]]?.raw,s)))return new e({x:u(n?r[t[1]].raw:r[t[0]].raw),y:u(n?r[t[0]].raw:r[t[1]].raw),z:o?u(r[t[2]].raw):0,spatialReference:m})}))}},d=async(e,t)=>({columnIndices:[e],geometries:await Promise.all(l.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),m)})))}),p=async(e,t)=>{switch(t){case GeometryFormat.NONE:return{columnIndices:[0]};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return f(e,t);case GeometryFormat.ARCGIS_JSON:return d(e[0],ne);case GeometryFormat.GEO_JSON:return d(e[0],ae);case GeometryFormat.WKT:return d(e[0],ie);default:return i(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=se(o?r[0]:r[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 p(e??[0],n)}const[y,g]=await le(r,m,o);if(y===GeometryFormat.NONE)return{columnIndices:[]};return g.length>1?f(g,y):d(g[0],J.get(y))}(t),a=function(e,t){const{data:n,displayField:a,includeHeaderRow:i,inSpatialReference:s,outSpatialReference:c,generatePrimaryKey:m}=e,l={fields:[]},u=e=>!(!t.columnIndices||0===t.columnIndices.length)&&t.columnIndices.includes(e);let{primaryKeyField:f}=e,d=0;for(let t=0;t<n[0].length;t++){if(u(t))continue;const r=fe(e,t,!m&&!f&&!l.fields.find((e=>"esriFieldTypeOID"===e.type)));let a=n[0][t]?.raw?.toString(),s=a?.replace(FIELD_NAME_REGEX,"_");i&&s||(s="field"+ ++d,a=o("gcx.api.data.convert.import-field-alias",d)),l.fields.push({alias:a,name:s,type:r}),"esriFieldTypeOID"===r&&(f=s)}if(l.spatialReference=c??t.geometries?.[0]?.spatialReference??s,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),o=e[0];l.geometryType=e.every((e=>e===o))?r(o):void 0}if(!l.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=l.fields.length+1,t=!!l.fields.find((e=>"objectid"===e.name.toLowerCase()));f=t?`OBJECTID_${e}`:"OBJECTID",l.fields.push({name:f,alias:f,type:"esriFieldTypeOID"})}return l.displayField=a??l.fields.find((e=>!E(e.name,f)&&"esriFieldTypeString"===e.type))?.name??l.fields.find((e=>!E(e.name,f)))?.name??f,l.primaryKeyField=f,l}(t,n),s=await async function(e,t,r){const{data:o,includeHeaderRow:n,outFields:a,escapeFormulaChars:i,locale:s,numberFormat:c,dateFormat:m}=e,{spatialReference:l}=r,u=[],f=n?o.slice(1):o,d=(e,r)=>!t.columnIndices||0===t.columnIndices.length||!t.columnIndices.includes(r);return await Promise.all(f.map((async(e,o)=>{const n=new x;for(let t=0;t<r.fields.length;t++){const l=r.fields[t],u=e.filter(d);if(a.includes("*")||a.filter((e=>E(e,l.name))).length>0){let e=await de(u[t]?.raw,l,{escapeFormulaChars:i,dateFormat:m,numberFormat:c,locale:s});"esriFieldTypeOID"===l.type&&null===e&&(e=o),n.attributes.set(l.name,e)}}t.geometries&&(n.geometry=await K(t.geometries[o],l)),u.push(n)}))),u}(t,n,a);return new M({features:s,schema:a})}export async function toCsv(e,r){a("featureSet",e).isNotMissing();const o=Array.from(e),n={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:l.ROUND_TRIP,geometryFormat:o.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:t.WGS84,includeHeaderRow:!0,outFields:B(e.source),rowDelimiter:navigator.platform.startsWith("Win")?v:L},...r},{includeByteOrderMark:i,includeHeaderRow:s,delimiter:c,outFields:m,rowDelimiter:u}=n,f=[];i&&f.push("\ufeff");const d=Y(o,n),p=k(o,m,e.schema,!0),y=k(o,m,e.schema,!1);if(s){const e=[];for(const t of d)e.push(V(t,n));for(const t of p)e.push(V(t,n));for(const t of y)e.push(V(t,n));const t=e.join(c)+u;f.push(t)}await Promise.all(o.map((async e=>{const t=[],r=(t,r)=>V(q(Q(e,t,r),r),r);t.push(...await async function(e,t){let r=await Z(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":q(e,t))));return r.map((e=>""===e?"":V(e,t)))}(e.geometry,n)),t.push(...p.map((e=>r(e,n)))),t.push(...y.map((e=>r(e,n))));const o=`${t.join(c)}${u}`;f.push(o)})));return new Blob(f,{type:"text/plain",endings:u===L||u===v?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(a("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 i=H(t),s=i.rowDelimiter||function(e){let t=L;return oe(e,v,((r,o)=>(0===r&&o===e.length||(t=v),!1))),t}(r),c=i.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const a=[];if(oe(e,t,((t,r)=>(r!==e.length||t!==r)&&(a.push(e.substring(t,r)),a.length<3))),0===a.length)return o;let i=[{delimiter:",",rowsDelimiterOccurrences:[],rowsNumberAdjacentOccurrences:[]},{delimiter:";",rowsDelimiterOccurrences:[]},{delimiter:"|",rowsDelimiterOccurrences:[]},{delimiter:"\t",rowsDelimiterOccurrences:[]},{delimiter:" ",rowsDelimiterOccurrences:[]}].filter((e=>a[0].includes(e.delimiter)));if(0===i.length)return o;for(const e of a)for(const t of i){let o=0,n=0;oe(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);G(t,r)&&G(o,r)&&n++}return!0})),t.rowsDelimiterOccurrences.push(o),","===t.delimiter&&t.rowsNumberAdjacentOccurrences.push(n)}if(i=i.filter((e=>e.rowsDelimiterOccurrences.every((t=>e.rowsDelimiterOccurrences[0]===t)))).sort(((e,t)=>t.rowsDelimiterOccurrences[0]-e.rowsDelimiterOccurrences[0])),i.length>1&&","===i[0].delimiter&&null!=r&&r!==n){const e=i[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]){i=i.filter((e=>","!==e.delimiter));break}}if(0===i.length)return o;return i[0].delimiter}(r,s,t.locale),m=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return oe(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:re(a,t,o.length)}),!0})),o};if(oe(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,s,c);let{geometryFormat:l,geometryFields:u}=t;if(!l){const[e,t]=await le(m,i.inSpatialReference,i.includeHeaderRow);l=e,u=t.map((e=>i.includeHeaderRow?m[0][e]?.raw??o("gcx.api.data.convert.import-field-alias",(e+1).toString()):o("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:m,...i,geometryFormat:l,geometryFields:u}}export async function csvToFeatureSet(e,t){const r=H(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toXLSX(e,r){a("featureSet",e).isNotMissing();const o=Array.from(e),n={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:o.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:B(e.source),outSpatialReference:t.WGS84,dateFormat:l.DEFAULT,numberFormat:A.DEFAULT,sheetName:"sheet1"},...r},{outFields:i,includeHeaderRow:s,dateFormat:c,numberFormat:m}=n,u=[],f=Y(o,n),d=k(o,i,e.schema,!0),p=k(o,i,e.schema,!1);if(s){const t=f.concat(d).concat(function(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>E(t.name,e)))?.alias??e))}(p,e.source));u.push(t)}await Promise.all(o.map((async e=>{const t=[];t.push(...await Z(e.geometry,n));for(const r of d){const o=ge(e.attributes.get(r),n);t.push(o)}for(const r of p){const o=ge(Q(e,r,n),n);t.push(o)}t.every((e=>"string"!=typeof e||e.length<=32767))?u.push(t):$().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`)})));const y=await import("xlsx"),g={SheetNames:[],Sheets:{}},w=y.utils.aoa_to_sheet(u,{cellDates:!0});for(const e of Object.keys(w).filter((e=>!e.startsWith("!")))){const t=w[e];"d"===t.t?t.z=pe(c??l.ROUND_TRIP):"n"===t.t&&(t.z=ye(m))}g.SheetNames.push(n.sheetName),g.Sheets[n.sheetName]=w;const h=y.write(g,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),F=new Uint8Array(h.length);for(let e=0;e<h.length;e++)F[e]=h.charCodeAt(e);return new Blob([F.buffer],{type:"text/plain"})}export async function xlsxToUploadData(e,t){a("xlsxData",e).isNotMissing();const r=X(t),n=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})}`];t.push(a?{raw:a.v,formatted:"s"===a.t?void 0:a.w}:{raw:""})}i.push(t)}return i}(e,r);let{geometryFormat:i,geometryFields:s}=t;if(!i){const[e,t]=await le(n,r.inSpatialReference,r.includeHeaderRow);i=e,s=t.map((e=>r.includeHeaderRow?n[0][e]?.raw.toString()??o("gcx.api.data.convert.import-field-alias",(e+1).toString()):o("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:n,...r,geometryFormat:i,geometryFields:s}}export async function xlsxToFeatureSet(e,t){a("xlsxData",e).isNotMissing();const r=X(t);return uploadDataToFeatureSet(await xlsxToUploadData(e,r))}export async function toShapefile(e,r){a("featureSet",e).isNotMissing();const[{default:o},n]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),i=Array.from(e),s={...{useFormattedValues:!1,outFields:B(e.source),fileName:e.title||"export"},...r},{outFields:c,outSpatialReference:m,fileName:l}=s,u=e=>e.geometry.hasZ||e.geometry.hasM,w=new Map,h=i.filter((e=>f(e.geometry)));w.set("POINTZ",h.filter(u)),w.set("POINT",h.filter((e=>!u(e))));const F=i.filter((e=>d(e.geometry)));w.set("MULTIPOINTZ",F.filter(u)),w.set("MULTIPOINT",F.filter((e=>!u(e))));const S=i.filter((e=>p(e.geometry)));w.set("POLYLINEZ",S.filter(u)),w.set("POLYLINE",S.filter((e=>!u(e))));const O=i.filter((e=>y(e.geometry)||g(e.geometry)));w.set("POLYGONZ",O.filter(u)),w.set("POLYGON",O.filter((e=>!u(e))));const T=k(i,c,e.schema,!0);let R=k(i,c,e.schema,!1);R=T.concat(R);const G=new o,D=Array.from(w.keys()).filter((e=>w.get(e).length>0));await Promise.all(D.map((async r=>{const o=w.get(r),a=await Promise.all(o.map((e=>K(e.geometry,m)))),i=await async function(e){const{wkid:r,wkt:o}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===r&&e.spatialReference.wkt===o)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return o??await N(r??t.WGS84.wkid)}(a),c=s.useFormattedValues?Object.assign({},...R.map((e=>({[e]:U.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>ee(e,a)))){n[a]=U.STRING;continue}const t=r?r.fields.find((e=>E(e.name,a))):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":n[a]=U.NUMBER;break;case"date":n[a]=o?U.NUMBER:U.DATE;break;default:n[a]=U.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?U.NUMBER:U.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=U.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=U.BOOLEAN:n[a]=U.STRING}return n}(o,R,e.schema,"timestamp"===s.dateFormat),u=function(e){return e.map((e=>{if(f(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),we(a,e)}if(d(e))return he(e.points,e);if(p(e))return Fe(e.paths,e);if(y(e))return Fe(e.rings,e);if(g(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.")}))}(a),h=function(e,t,r,o){const n=[];for(const a of e){const e={};for(const n of t){let t=Q(a,n,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=Ne(t,r[n],o)}e[n]=t}n.push(e)}return n}(o,R,c,s);n.write(h,r,u,((e,t)=>{const o=D.length>1?`${l}_${r.toLowerCase()}`:l;G.file(`${o}.shp`,t.shp.buffer,{binary:!0}),G.file(`${o}.shx`,t.shx.buffer,{binary:!0}),G.file(`${o}.dbf`,t.dbf.buffer,{binary:!0}),G.file(`${o}.prj`,i)}))})));const b=await G.generateAsync({type:"uint8array"});return new Blob([b.buffer],{type:"text/plain"})}export async function shapefileToUploadData(r,o){a("shapefileData",r).isNotMissing();const n=z(o),i=new Promise(((e,t)=>{const o=new FileReader;o.onload=()=>{e(o.result)},o.onerror=()=>{t(o.error)},o.readAsArrayBuffer(r)})),[{default:s},{default:c}]=await Promise.all([import("jszip"),import("shpjs")]),m=await i,l=await s.loadAsync(new Uint8Array(m)),u=l.filter((()=>!0)).map((e=>e.name));let d,p=u.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(p=function(e){if(!e.length)return[];let t=e[0];const r=t.match(C);return r?(t=r[1],e.filter((e=>{const r=e.match(C);return r&&r[1]===t}))):[t]}(p),u.some((e=>e.endsWith(".prj")))&&!p.every((e=>u.includes(`${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(d){if(t!==d)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else d=t})));let y=[],g=[];for(const e of p){if(!u.includes(`${e}.shx`)||!u.includes(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=await l.file(`${e}.shp`).async("uint8array"),r=c.parseShp(t),o=await l.file(`${e}.dbf`).async("uint8array"),n=c.parseDbf(o);if(n.length!==r.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(n),g=g.concat(r)}const w=await Promise.all(g.map((r=>async function(r,o){const n=f(r)?function(r){a("geometry.coordinates",r.type).matches("Point"),a("geometry.coordinates",r.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[o,n,i]=r.coordinates,s=new e({x:o,y:n,spatialReference:t.WGS84});if(Array.isArray(i)){const[e,t]=i;!e&&!t||e?s.z=e:s.m=t}return s}(r):await T(r);if(o){let e;try{const r=await S(o);e=new t({wkid:D(r)})}catch{}e||(e=new t({wkt:o})),n.spatialReference=e}return n}(r,d)))),h=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[h]=JSON.stringify(w[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),...n,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[h],inSpatialReference:w[0]?.spatialReference??t.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){a("shapefileData",e).isNotMissing();const r=z(t);return uploadDataToFeatureSet(await shapefileToUploadData(e,r))}function W(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:n,detectOid:!e?.primaryKeyField}}function H(e){return{...{includeHeaderRow:!0,inSpatialReference:t.WGS84,...W(e)},...e}}function X(e){return{...{includeHeaderRow:!0,inSpatialReference:t.WGS84,...W(e)},...e}}function z(e){return{...{...W(e)},...e}}function Y(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 k(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 B(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 Z(e,t){const r=await K(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!f(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(!f(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(!f(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 O(r))]:[""]:[]}async function K(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await w([e],t))[0]:e}function V(e,t){const r=[t.delimiter,_,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(_,"g"),`${_}${_}`);return`${_}${t}${_}`}return e}function q(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||A.ROUND_TRIP;return b(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():c({format:t.dateFormat,timeZone:"UTC"},e)}let r=e.toString();return t.escapeFormulaChars&&(r=te(r)),r}function Q(e,t,r){if(r.useFormattedValues||ee(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);if("date"===e.schema.findFieldByName(t)?.type){const r=s(e.attributes.get(t));if(!isNaN(r.getTime()))return r}return e.attributes.get(t)??e.presentableAttributes.get(t)}function ee(e,t){return!!E(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function te(e){for(const t of I)if(e.startsWith(t))return`\t${e}`;return e}function re(e,t,r){const o=e.startsWith(_),n=e.endsWith(_);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(_.length,e.length-_.length):e;let i=-1;return oe(a,_,((e,o)=>{if(o===a.length)return!0;if(i<0){if(o!==a.length)return i=o,!0}else if(o===i+_.length)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),a.replace(new RegExp(`${_}${_}`,"g"),_)}function oe(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(_)?(n=!n,t+=_.length):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 ne(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 ae(e,t){const r=await T(JSON.parse(e));return r.spatialReference=t,r}async function ie(e,t){const r=await F(e);return r.spatialReference=t,r}function se(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 ce(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 me(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:D({locale:t,format:r},e)}async function le(e,t,r){const o=r?e.slice(1):e;if(r){const r=se(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of j){try{await ue(r[0],n,t,o)}catch(e){continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=se(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of j){const n=await ce(o[0],r);if(void 0!==n){try{await ue(n,r,t,o)}catch(e){continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function ue(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 fe(e,t,r){let o=!1,n=!0,a=!0,i=!0;const c=new Set,{data:l,includeHeaderRow:f,dateFormat:d,primaryKeyField:p,locale:y}=e,g=f?l[0]:[],w=f?l.slice(1):l;for(const e of w){const r=e[t];r?.raw&&(c.add(r.raw),o=!0,n&&(n=G(r.raw,y)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||s(d||m,r.raw)!==u),i&&(i=s(d||P,r.formatted)!==u))}const h=c.size===w.length;return p&&g[t]?.raw===p||r&&o&&h&&n?"esriFieldTypeOID":o&&i?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&a?"esriFieldTypeDate":"esriFieldTypeString"}async function de(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:a,dateFormat:i}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?me(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:s({locale:n,format:i},e).getTime()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of I)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function pe(e){switch(e){case l.DATE_SHORT:return"dd/MM/yyyy";case l.DATE_LONG:return"MMMM d, yyyy";case l.TIME_SHORT:return"h:mm AM/PM";case l.TIME_LONG:return"h:mm:ss AM/PM";case l.DATE_TIME_SHORT:case l.DEFAULT:return"MMM d yyyy h:mm AM/PM";case l.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case l.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case l.ISO_8601:case l.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&$().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&$().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function ye(e){switch(e){case A.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case A.CURRENCY:return'"$"#,##0.00';case A.FIXED_POINT:case A.DEFAULT:return"0.0000";case A.NUMBER:return"#,##0.0000";case A.PERCENT:return"0%";case A.ROUND_TRIP:return"0.00000";default:return e}}function ge(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}let r=e.toString();return t.escapeFormulaChars&&(r=te(r)),r}function we(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=>we(e,t)))}function Fe(e,t){return e.map((e=>he(e,t)))}function Ne(e,t,r){switch(t){case U.NUMBER:return e instanceof Date?e.getTime():D(e);case U.STRING:return e instanceof Date?c({format:r.dateFormat??l.ROUND_TRIP,timeZone:"UTC"},e):"number"==typeof e?b(r.numberFormat??A.DEFAULT,e):e.toString();case U.BOOLEAN:return!!e;case U.DATE:return s(e);default:return e.toString()}}
|
|
1
|
+
import e from"@arcgis/core/geometry/Point";import t from"@arcgis/core/geometry/SpatialReference";import{geometryTypeToJson as r}from"../json/GeometryJson.js";import{translate as o}from"../locale/language.js";import{INVARIANT as n}from"../locale.js";import{checkArg as a,assertNever as i}from"../utilities/checkArg.js";import{parse as s,format as c,DEFAULT_PARSING_FORMATS as m,DateFormat as l,INVALID_DATE as u}from"../utilities/date.js";import{isPoint as f,isMultipoint as d,isPolyline as p,isPolygon as y,isExtent as g}from"../utilities/esri.js";import{project as w,esriToWKT as h,wktToEsri as F,esriWkidToWkt as N,esriWktToWkid as S,esriToGeoJSON as O,geoJSONToEsri as T}from"../utilities/geometry.js";import{getLogger as R}from"../utilities/log.js";import{isNumeric as D,parse as G,format as b,NumberFormat as A}from"../utilities/number.js";import{caseInsensitiveEquals as E}from"../utilities/string.js";import{Feature as x}from"./Feature.js";import{FeatureSet as M}from"./FeatureSet.js";const I=["=","-","+","@"],_='"',v="\r\n",L="\n",P=[...m.map(pe),"M/d/yy"],C=/(\w+)_(point|multipoint|polyline|polygon)z?/;var U;function $(){return R("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(U||(U={}));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 j=[[GeometryFormat.ARCGIS_JSON,ne],[GeometryFormat.GEO_JSON,ae],[GeometryFormat.WKT,ie]],J=new Map(j);export async function uploadDataToFeatureSet(t){const n=await async function(t){const{data:r,includeHeaderRow:o,geometryFormat:n,geometryFields:a,locale:s,numberFormat:c,inSpatialReference:m}=t,l=o?r.slice(1):r;if(n===GeometryFormat.NONE)return{columnIndices:[]};const u=e=>me(e,s,c),f=(t,r)=>{const o=r===GeometryFormat.XYZ,n=r===GeometryFormat.LAT_LON;return{columnIndices:t,geometries:l.map((r=>{if(r.length>=Math.max(...t)&&D(r[t[0]]?.raw,s)&&D(r[t[1]]?.raw,s)&&(!o||D(r[t[2]]?.raw,s)))return new e({x:u(n?r[t[1]].raw:r[t[0]].raw),y:u(n?r[t[0]].raw:r[t[1]].raw),z:o?u(r[t[2]].raw):0,spatialReference:m})}))}},d=async(e,t)=>({columnIndices:[e],geometries:await Promise.all(l.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),m)})))}),p=async(e,t)=>{switch(t){case GeometryFormat.NONE:return{columnIndices:[0]};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return f(e,t);case GeometryFormat.ARCGIS_JSON:return d(e[0],ne);case GeometryFormat.GEO_JSON:return d(e[0],ae);case GeometryFormat.WKT:return d(e[0],ie);default:return i(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=se(o?r[0]:r[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 p(e??[0],n)}const[y,g]=await le(r,m,o);if(y===GeometryFormat.NONE)return{columnIndices:[]};return g.length>1?f(g,y):d(g[0],J.get(y))}(t),a=function(e,t){const{data:n,displayField:a,includeHeaderRow:i,inSpatialReference:s,outSpatialReference:c,generatePrimaryKey:m}=e,l={fields:[]},u=e=>!(!t.columnIndices||0===t.columnIndices.length)&&t.columnIndices.includes(e);let{primaryKeyField:f}=e,d=0;for(let t=0;t<n[0].length;t++){if(u(t))continue;const r=fe(e,t,!m&&!f&&!l.fields.find((e=>"esriFieldTypeOID"===e.type)));let a=n[0][t]?.raw?.toString(),s=a?.replace(FIELD_NAME_REGEX,"_");i&&s||(s="field"+ ++d,a=o("gcx.api.data.convert.import-field-alias",d)),l.fields.push({alias:a,name:s,type:r}),"esriFieldTypeOID"===r&&(f=s)}if(l.spatialReference=c??t.geometries?.[0]?.spatialReference??s,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),o=e[0];l.geometryType=e.every((e=>e===o))?r(o):void 0}if(!l.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=l.fields.length+1,t=!!l.fields.find((e=>"objectid"===e.name.toLowerCase()));f=t?`OBJECTID_${e}`:"OBJECTID",l.fields.push({name:f,alias:f,type:"esriFieldTypeOID"})}return l.displayField=a??l.fields.find((e=>!E(e.name,f)&&"esriFieldTypeString"===e.type))?.name??l.fields.find((e=>!E(e.name,f)))?.name??f,l.primaryKeyField=f,l}(t,n),s=await async function(e,t,r){const{data:o,includeHeaderRow:n,outFields:a,escapeFormulaChars:i,locale:s,numberFormat:c,dateFormat:m}=e,{spatialReference:l}=r,u=[],f=n?o.slice(1):o,d=(e,r)=>!t.columnIndices||0===t.columnIndices.length||!t.columnIndices.includes(r);return await Promise.all(f.map((async(e,o)=>{const n=new x;for(let t=0;t<r.fields.length;t++){const l=r.fields[t],u=e.filter(d);if(a.includes("*")||a.filter((e=>E(e,l.name))).length>0){let e=await de(u[t]?.raw,l,{escapeFormulaChars:i,dateFormat:m,numberFormat:c,locale:s});"esriFieldTypeOID"===l.type&&null===e&&(e=o),n.attributes.set(l.name,e)}}t.geometries&&(n.geometry=await K(t.geometries[o],l)),u.push(n)}))),u}(t,n,a);return new M({features:s,schema:a})}export async function toCsv(e,r){a("featureSet",e).isNotMissing();const o=Array.from(e),n={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:l.ROUND_TRIP,geometryFormat:o.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:t.WGS84,includeHeaderRow:!0,outFields:B(e.source),rowDelimiter:navigator.platform.startsWith("Win")?v:L},...r},{includeByteOrderMark:i,includeHeaderRow:s,delimiter:c,outFields:m,rowDelimiter:u}=n,f=[];i&&f.push("\ufeff");const d=Y(o,n),p=k(o,m,e.schema,!0),y=k(o,m,e.schema,!1);if(s){const e=[];for(const t of d)e.push(V(t,n));for(const t of p)e.push(V(t,n));for(const t of y)e.push(V(t,n));const t=e.join(c)+u;f.push(t)}await Promise.all(o.map((async e=>{const t=[],r=(t,r)=>V(q(Q(e,t,r),r),r);t.push(...await async function(e,t){let r=await Z(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":q(e,t))));return r.map((e=>""===e?"":V(e,t)))}(e.geometry,n)),t.push(...p.map((e=>r(e,n)))),t.push(...y.map((e=>r(e,n))));const o=`${t.join(c)}${u}`;f.push(o)})));return new Blob(f,{type:"text/plain",endings:u===L||u===v?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(a("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 i=z(t),s=i.rowDelimiter||function(e){let t=L;return oe(e,v,((r,o)=>(0===r&&o===e.length||(t=v),!1))),t}(r),c=i.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const a=[];if(oe(e,t,((t,r)=>(r!==e.length||t!==r)&&(a.push(e.substring(t,r)),a.length<3))),0===a.length)return o;let i=[{delimiter:",",rowsDelimiterOccurrences:[],rowsNumberAdjacentOccurrences:[]},{delimiter:";",rowsDelimiterOccurrences:[]},{delimiter:"|",rowsDelimiterOccurrences:[]},{delimiter:"\t",rowsDelimiterOccurrences:[]},{delimiter:" ",rowsDelimiterOccurrences:[]}].filter((e=>a[0].includes(e.delimiter)));if(0===i.length)return o;for(const e of a)for(const t of i){let o=0,n=0;oe(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);D(t,r)&&D(o,r)&&n++}return!0})),t.rowsDelimiterOccurrences.push(o),","===t.delimiter&&t.rowsNumberAdjacentOccurrences.push(n)}if(i=i.filter((e=>e.rowsDelimiterOccurrences.every((t=>e.rowsDelimiterOccurrences[0]===t)))).sort(((e,t)=>t.rowsDelimiterOccurrences[0]-e.rowsDelimiterOccurrences[0])),i.length>1&&","===i[0].delimiter&&null!=r&&r!==n){const e=i[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]){i=i.filter((e=>","!==e.delimiter));break}}if(0===i.length)return o;return i[0].delimiter}(r,s,t.locale),m=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return oe(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:re(a,t,o.length)}),!0})),o};if(oe(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,s,c);let{geometryFormat:l,geometryFields:u}=t;if(!l){const[e,t]=await le(m,i.inSpatialReference,i.includeHeaderRow);l=e,u=t.map((e=>i.includeHeaderRow?m[0][e]?.raw??o("gcx.api.data.convert.import-field-alias",(e+1).toString()):o("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:m,...i,geometryFormat:l,geometryFields:u}}export async function csvToFeatureSet(e,t){const r=z(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toXLSX(e,r){a("featureSet",e).isNotMissing();const o=Array.from(e),n={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:o.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:B(e.source),outSpatialReference:t.WGS84,dateFormat:l.DEFAULT,numberFormat:A.DEFAULT,sheetName:"sheet1"},...r},{outFields:i,includeHeaderRow:s,dateFormat:c,numberFormat:m}=n,u=[],f=Y(o,n),d=k(o,i,e.schema,!0),p=k(o,i,e.schema,!1);if(s){const t=f.concat(d).concat(function(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>E(t.name,e)))?.alias??e))}(p,e.source));u.push(t)}await Promise.all(o.map((async e=>{const t=[];t.push(...await Z(e.geometry,n));for(const r of d){const o=ge(e.attributes.get(r),n);t.push(o)}for(const r of p){const o=ge(Q(e,r,n),n);t.push(o)}t.every((e=>"string"!=typeof e||e.length<=32767))?u.push(t):$().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`)})));const y=await import("xlsx"),g={SheetNames:[],Sheets:{}},w=y.utils.aoa_to_sheet(u,{cellDates:!0});for(const e of Object.keys(w).filter((e=>!e.startsWith("!")))){const t=w[e];"d"===t.t?t.z=pe(c??l.ROUND_TRIP):"n"===t.t&&(t.z=ye(m))}g.SheetNames.push(n.sheetName),g.Sheets[n.sheetName]=w;const h=y.write(g,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),F=new Uint8Array(h.length);for(let e=0;e<h.length;e++)F[e]=h.charCodeAt(e);return new Blob([F.buffer],{type:"text/plain"})}export async function xlsxToUploadData(e,t){a("xlsxData",e).isNotMissing();const r=H(t),n=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:i,geometryFields:s}=t;if(!i){const[e,t]=await le(n,r.inSpatialReference,r.includeHeaderRow);i=e,s=t.map((e=>r.includeHeaderRow?n[0][e]?.raw.toString()??o("gcx.api.data.convert.import-field-alias",(e+1).toString()):o("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:n,...r,geometryFormat:i,geometryFields:s}}export async function xlsxToFeatureSet(e,t){a("xlsxData",e).isNotMissing();const r=H(t);return uploadDataToFeatureSet(await xlsxToUploadData(e,r))}export async function toShapefile(e,r){a("featureSet",e).isNotMissing();const[{default:o},n]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),i=Array.from(e),s={...{useFormattedValues:!1,outFields:B(e.source),fileName:e.title||"export"},...r},{outFields:c,outSpatialReference:m,fileName:l}=s,u=e=>e.geometry.hasZ||e.geometry.hasM,w=new Map,h=i.filter((e=>f(e.geometry)));w.set("POINTZ",h.filter(u)),w.set("POINT",h.filter((e=>!u(e))));const F=i.filter((e=>d(e.geometry)));w.set("MULTIPOINTZ",F.filter(u)),w.set("MULTIPOINT",F.filter((e=>!u(e))));const S=i.filter((e=>p(e.geometry)));w.set("POLYLINEZ",S.filter(u)),w.set("POLYLINE",S.filter((e=>!u(e))));const O=i.filter((e=>y(e.geometry)||g(e.geometry)));w.set("POLYGONZ",O.filter(u)),w.set("POLYGON",O.filter((e=>!u(e))));const T=k(i,c,e.schema,!0);let R=k(i,c,e.schema,!1);R=T.concat(R);const D=new o,G=Array.from(w.keys()).filter((e=>w.get(e).length>0));await Promise.all(G.map((async r=>{const o=w.get(r),a=await Promise.all(o.map((e=>K(e.geometry,m)))),i=await async function(e){const{wkid:r,wkt:o}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===r&&e.spatialReference.wkt===o)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return o??await N(r??t.WGS84.wkid)}(a),c=s.useFormattedValues?Object.assign({},...R.map((e=>({[e]:U.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>ee(e,a)))){n[a]=U.STRING;continue}const t=r?r.fields.find((e=>E(e.name,a))):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":n[a]=U.NUMBER;break;case"date":n[a]=o?U.NUMBER:U.DATE;break;default:n[a]=U.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?U.NUMBER:U.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=U.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=U.BOOLEAN:n[a]=U.STRING}return n}(o,R,e.schema,"timestamp"===s.dateFormat),u=function(e){return e.map((e=>{if(f(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),we(a,e)}if(d(e))return he(e.points,e);if(p(e))return Fe(e.paths,e);if(y(e))return Fe(e.rings,e);if(g(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.")}))}(a),h=function(e,t,r,o){const n=[];for(const a of e){const e={};for(const n of t){let t=Q(a,n,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=Ne(t,r[n],o)}e[n]=t}n.push(e)}return n}(o,R,c,s);n.write(h,r,u,((e,t)=>{const o=G.length>1?`${l}_${r.toLowerCase()}`:l;D.file(`${o}.shp`,t.shp.buffer,{binary:!0}),D.file(`${o}.shx`,t.shx.buffer,{binary:!0}),D.file(`${o}.dbf`,t.dbf.buffer,{binary:!0}),D.file(`${o}.prj`,i)}))})));const b=await D.generateAsync({type:"uint8array"});return new Blob([b.buffer],{type:"text/plain"})}export async function shapefileToUploadData(r,o){a("shapefileData",r).isNotMissing();const n=X(o),i=new Promise(((e,t)=>{const o=new FileReader;o.onload=()=>{e(o.result)},o.onerror=()=>{t(o.error)},o.readAsArrayBuffer(r)})),[{default:s},{default:c}]=await Promise.all([import("jszip"),import("shpjs")]),m=await i,l=await s.loadAsync(new Uint8Array(m)),u=l.filter((()=>!0)).map((e=>e.name));let d,p=u.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(p=function(e){if(!e.length)return[];let t=e[0];const r=t.match(C);return r?(t=r[1],e.filter((e=>{const r=e.match(C);return r&&r[1]===t}))):[t]}(p),u.some((e=>e.endsWith(".prj")))&&!p.every((e=>u.includes(`${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(d){if(t!==d)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else d=t})));let y=[],g=[];for(const e of p){if(!u.includes(`${e}.shx`)||!u.includes(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=await l.file(`${e}.shp`).async("uint8array"),r=c.parseShp(t),o=await l.file(`${e}.dbf`).async("uint8array"),n=c.parseDbf(o);if(n.length!==r.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(n),g=g.concat(r)}const w=await Promise.all(g.map((r=>async function(r,o){const n=f(r)?function(r){a("geometry.coordinates",r.type).matches("Point"),a("geometry.coordinates",r.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[o,n,i]=r.coordinates,s=new e({x:o,y:n,spatialReference:t.WGS84});if(Array.isArray(i)){const[e,t]=i;!e&&!t||e?s.z=e:s.m=t}return s}(r):await T(r);if(o){let e;try{const r=await S(o);e=new t({wkid:G(r)})}catch{}e||(e=new t({wkt:o})),n.spatialReference=e}return n}(r,d)))),h=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[h]=JSON.stringify(w[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),...n,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[h],inSpatialReference:w[0]?.spatialReference??t.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){a("shapefileData",e).isNotMissing();const r=X(t);return uploadDataToFeatureSet(await shapefileToUploadData(e,r))}function W(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:n,detectOid:!e?.primaryKeyField}}function z(e){return{...{includeHeaderRow:!0,inSpatialReference:t.WGS84,...W(e)},...e}}function H(e){return{...{includeHeaderRow:!0,inSpatialReference:t.WGS84,...W(e)},...e}}function X(e){return{...{...W(e)},...e}}function Y(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 k(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 B(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 Z(e,t){const r=await K(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!f(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(!f(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(!f(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 O(r))]:[""]:[]}async function K(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await w([e],t))[0]:e}function V(e,t){const r=[t.delimiter,_,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(_,"g"),`${_}${_}`);return`${_}${t}${_}`}return e}function q(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||A.ROUND_TRIP;return b(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():c({format:t.dateFormat,timeZone:"UTC"},e)}let r=e.toString();return t.escapeFormulaChars&&(r=te(r)),r}function Q(e,t,r){if(r.useFormattedValues||ee(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);if("date"===e.schema.findFieldByName(t)?.type){const r=s(e.attributes.get(t));if(!isNaN(r.getTime()))return r}return e.attributes.get(t)??e.presentableAttributes.get(t)}function ee(e,t){return!!E(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function te(e){for(const t of I)if(e.startsWith(t))return`\t${e}`;return e}function re(e,t,r){const o=e.startsWith(_),n=e.endsWith(_);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(_.length,e.length-_.length):e;let i=-1;return oe(a,_,((e,o)=>{if(o===a.length)return!0;if(i<0){if(o!==a.length)return i=o,!0}else if(o===i+_.length)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),a.replace(new RegExp(`${_}${_}`,"g"),_)}function oe(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(_)?(n=!n,t+=_.length):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 ne(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 ae(e,t){const r=await T(JSON.parse(e));return r.spatialReference=t,r}async function ie(e,t){const r=await F(e);return r.spatialReference=t,r}function se(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 ce(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 me(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:G({locale:t,format:r},e)}async function le(e,t,r){const o=r?e.slice(1):e;if(r){const r=se(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of j){try{await ue(r[0],n,t,o)}catch(e){continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=se(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of j){const n=await ce(o[0],r);if(void 0!==n){try{await ue(n,r,t,o)}catch(e){continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function ue(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 fe(e,t,r){let o=!1,n=!0,a=!0,i=!0;const c=new Set,{data:l,includeHeaderRow:f,dateFormat:d,primaryKeyField:p,locale:y}=e,g=f?l[0]:[],w=f?l.slice(1):l;for(const e of w){const r=e[t];r?.raw&&(c.add(r.raw),o=!0,n&&(n=D(r.raw,y)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||s(d||m,r.raw)!==u),i&&(i=s(d||P,r.formatted)!==u))}const h=c.size===w.length;return p&&g[t]?.raw===p||r&&o&&h&&n?"esriFieldTypeOID":o&&i?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&a?"esriFieldTypeDate":"esriFieldTypeString"}async function de(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:a,dateFormat:i}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?me(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:s({locale:n,format:i},e).getTime()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of I)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function pe(e){switch(e){case l.DATE_SHORT:return"dd/MM/yyyy";case l.DATE_LONG:return"MMMM d, yyyy";case l.TIME_SHORT:return"h:mm AM/PM";case l.TIME_LONG:return"h:mm:ss AM/PM";case l.DATE_TIME_SHORT:case l.DEFAULT:return"MMM d yyyy h:mm AM/PM";case l.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case l.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case l.ISO_8601:case l.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&$().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&$().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function ye(e){switch(e){case A.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case A.CURRENCY:return'"$"#,##0.00';case A.FIXED_POINT:case A.DEFAULT:return"0.0000";case A.NUMBER:return"#,##0.0000";case A.PERCENT:return"0%";case A.ROUND_TRIP:return"0.00000";default:return e}}function ge(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}let r=e.toString();return t.escapeFormulaChars&&(r=te(r)),r}function we(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=>we(e,t)))}function Fe(e,t){return e.map((e=>he(e,t)))}function Ne(e,t,r){switch(t){case U.NUMBER:return e instanceof Date?e.getTime():G(e);case U.STRING:return e instanceof Date?c({format:r.dateFormat??l.ROUND_TRIP,timeZone:"UTC"},e):"number"==typeof e?b(r.numberFormat??A.DEFAULT,e):e.toString();case U.BOOLEAN:return!!e;case U.DATE:return s(e);default:return e.toString()}}
|