@vertigis/arcgis-extensions 51.6.1 → 51.7.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.
@@ -112,15 +112,15 @@ export declare class FeatureSet extends FeatureSet_base implements Entity, Seria
112
112
  /**
113
113
  * @inheritDoc
114
114
  */
115
- entries(): IterableIterator<[Feature, Feature]>;
115
+ entries(): SetIterator<[Feature, Feature]>;
116
116
  /**
117
117
  * @inheritDoc
118
118
  */
119
- keys(): IterableIterator<Feature>;
119
+ keys(): SetIterator<Feature>;
120
120
  /**
121
121
  * @inheritDoc
122
122
  */
123
- values(): IterableIterator<Feature>;
123
+ values(): SetIterator<Feature>;
124
124
  /**
125
125
  * Returns a serializable representation of the feature set.
126
126
  *
@@ -193,7 +193,7 @@ export declare class FeatureSet extends FeatureSet_base implements Entity, Seria
193
193
  /**
194
194
  * Returns each element in the set in insertion order.
195
195
  */
196
- [Symbol.iterator](): IterableIterator<Feature>;
196
+ [Symbol.iterator](): SetIterator<Feature>;
197
197
  /**
198
198
  * @deprecated
199
199
  * @inheritdoc
package/data/convert.js CHANGED
@@ -1 +1 @@
1
- import e from"@arcgis/core/Color.js";import t from"@arcgis/core/Graphic.js";import r from"@arcgis/core/geometry/Point";import o from"@arcgis/core/geometry/Polygon.js";import n from"@arcgis/core/geometry/Polyline.js";import a from"@arcgis/core/geometry/SpatialReference";import i from"@arcgis/core/layers/FeatureLayer.js";import s from"@arcgis/core/layers/GroupLayer.js";import c from"@arcgis/core/layers/support/Field.js";import l from"@arcgis/core/renderers/SimpleRenderer.js";import m from"@arcgis/core/symbols/MeshSymbol3D.js";import u from"@arcgis/core/symbols/PictureMarkerSymbol.js";import f from"@arcgis/core/symbols/SimpleFillSymbol.js";import y from"@arcgis/core/symbols/SimpleLineSymbol.js";import d from"@arcgis/core/symbols/SimpleMarkerSymbol.js";import{geometryTypeToJson as p}from"../json/GeometryJson.js";import{translate as g}from"../locale/language.js";import{INVARIANT as w}from"../locale.js";import{FeatureCollectionLayerExtension as h}from"../mapping/FeatureCollectionLayerExtension.js";import{GroupLayerExtension as F}from"../mapping/GroupLayerExtension.js";import{Time as S}from"../utilities/Time.js";import{checkArg as T,assertNever as N}from"../utilities/checkArg.js";import{isPoint as O,isMultipoint as D,isPolyline as M,isPolygon as x,isExtent as E}from"../utilities/esri.js";import{parse as R,format as b,DEFAULT_PARSING_FORMATS as A,INVALID_DATE as G}from"../utilities/format/date.js";import{DateFormat as _,NumberFormat as I,TimeFormat as L}from"../utilities/format/formats.js";import{parse as C,format as v}from"../utilities/format/number.js";import{parse as P,format as j,DEFAULT_PARSING_FORMATS as U}from"../utilities/format/time.js";import{project as $,esriToWKT as H,wktToEsri as B,esriWkidToWkt as k,esriWktToWkid as z,esriToGeoJSON as J,geoJSONToEsri as W}from"../utilities/geometry.js";import{getLogger as X}from"../utilities/log.js";import{isNumeric as Y}from"../utilities/number.js";import{caseInsensitiveEquals as q}from"../utilities/string.js";import{Feature as K}from"./Feature.js";import{FeatureSet as Z}from"./FeatureSet.js";const V=["=","-","+","@"],Q='"',ee="\r\n",te="\n",re=[...A.map(Ce),"M/d/yy"],oe=[...U.map(Pe).map((e=>e.replace("AM/PM","tt")))],ne=/(\w+)_(point|multipoint|polyline|polygon)z?/;var ae;function ie(){return X("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(ae||(ae={}));export const FIELD_NAME_REGEX=/[^a-zA-Z\d_]/g;export var GeometryFormat;!function(e){e.NONE="NONE",e.WKT="WKT",e.XY="XY",e.XYZ="XYZ",e.LAT_LON="LAT_LONG",e.GEO_JSON="GEO_JSON",e.ARCGIS_JSON="ARCGIS_JSON"}(GeometryFormat||(GeometryFormat={}));export const geometryTypeHeaders={[GeometryFormat.XYZ]:[["x","y","z"]],[GeometryFormat.XY]:[["x","y"]],[GeometryFormat.LAT_LON]:[["latitude","longitude"],["lat","lon"],["lat","long"]],[GeometryFormat.ARCGIS_JSON]:[["geometry"]],[GeometryFormat.GEO_JSON]:[["geometry"]],[GeometryFormat.WKT]:[["geometry"]]};const se=[[GeometryFormat.ARCGIS_JSON,Me],[GeometryFormat.GEO_JSON,xe],[GeometryFormat.WKT,Ee]],ce=new Map(se);export async function uploadDataToFeatureSet(e){const t=await async function(e){const{data:t,includeHeaderRow:o,geometryFormat:n,geometryFields:a,locale:i,numberFormat:s,inSpatialReference:c}=e,l=o?t.slice(1):t;if(n===GeometryFormat.NONE)return{columnIndices:[]};const m=e=>Ae(e,i,s),u=(e,t)=>{const o=t===GeometryFormat.XYZ,n=t===GeometryFormat.LAT_LON;return{columnIndices:e,geometries:l.map((t=>{if(t.length>=Math.max(...e)&&Y(t[e[0]]?.raw,i)&&Y(t[e[1]]?.raw,i)&&(!o||Y(t[e[2]]?.raw,i)))return new r({x:m(n?t[e[1]].raw:t[e[0]].raw),y:m(n?t[e[0]].raw:t[e[1]].raw),z:o?m(t[e[2]].raw):0,spatialReference:c})}))}},f=async(e,t)=>({columnIndices:[e],geometries:await Promise.all(l.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),c)})))}),y=async(e,t)=>{switch(t){case GeometryFormat.NONE:return{columnIndices:[0]};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return u(e,t);case GeometryFormat.ARCGIS_JSON:return f(e[0],Me);case GeometryFormat.GEO_JSON:return f(e[0],xe);case GeometryFormat.WKT:return f(e[0],Ee);default:return N(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=Re(o?t[0]:t[0].map(((e,t)=>({raw:t.toString()}))),n,o?a:a.map((e=>""+(parseInt(e.match(/\d+/g)[0])-1))));if(o&&void 0===e)throw new Error(`Error parsing file data: Expected geometry columns ${geometryTypeHeaders[n][0].join(",")} are missing for GeometryType.${n}`);return y(e??[0],n)}const[d,p]=await Ge(t,c,o);if(d===GeometryFormat.NONE)return{columnIndices:[]};return p.length>1?u(p,d):f(p[0],ce.get(d))}(e),o=function(e,t){const{data:r,displayField:o,includeHeaderRow:n,inSpatialReference:a,outSpatialReference:i,generatePrimaryKey:s}=e,c={fields:[]},l=e=>!(!t.columnIndices||0===t.columnIndices.length)&&t.columnIndices.includes(e);let{primaryKeyField:m}=e,u=0;for(let t=0;t<r[0].length;t++){if(l(t))continue;const o=Ie(e,t,!s&&!m&&!c.fields.find((e=>"esriFieldTypeOID"===e.type)));let a=r[0][t]?.raw?.toString(),i=a?.replace(FIELD_NAME_REGEX,"_");n&&i||(i="field"+ ++u,a=g("gcx.api.data.convert.import-field-alias",u)),c.fields.push({alias:a,name:i,type:o}),"esriFieldTypeOID"===o&&(m=i)}if(c.spatialReference=i??t.geometries?.[0]?.spatialReference??a,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),r=e[0];c.geometryType=e.every((e=>e===r))?p(r):void 0}if(!c.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=c.fields.length+1,t=!!c.fields.find((e=>"objectid"===e.name.toLowerCase()));m=t?`OBJECTID_${e}`:"OBJECTID",c.fields.push({name:m,alias:m,type:"esriFieldTypeOID"})}return c.displayField=o??c.fields.find((e=>!q(e.name,m)&&"esriFieldTypeString"===e.type))?.name??c.fields.find((e=>!q(e.name,m)))?.name??m,c.primaryKeyField=m,c}(e,t),n=await async function(e,t,r){const{data:o,includeHeaderRow:n,outFields:a,escapeFormulaChars:i,locale:s,numberFormat:c,dateFormat:l,timeFormat:m}=e,{spatialReference:u}=r,f=[],y=n?o.slice(1):o,d=(e,r)=>!t.columnIndices||0===t.columnIndices.length||!t.columnIndices.includes(r);return await Promise.all(y.map((async(e,o)=>{const n=new K;for(let t=0;t<r.fields.length;t++){const u=r.fields[t],f=e.filter(d);if(a.includes("*")||a.filter((e=>q(e,u.name))).length>0){let e=await Le(f[t]?.raw,u,{escapeFormulaChars:i,dateFormat:l,numberFormat:c,timeFormat:m,locale:s});"esriFieldTypeOID"===u.type&&null===e&&(e=o),n.attributes.set(u.name,e)}}t.geometries&&(n.geometry=await we(t.geometries[o],u)),f.push(n)}))),f}(e,t,o);return new Z({features:n,schema:o})}export async function toCsv(e,t){T("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:_.ROUND_TRIP,timeFormat:L.ROUND_TRIP,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:a.WGS84,includeHeaderRow:!0,outFields:pe(e.source),rowDelimiter:navigator.platform?.startsWith("Win")?ee:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:i,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=ye(r,o),f=de(r,c,e.schema,!0),y=de(r,c,e.schema,!1);if(i){const e=[];for(const t of u)e.push(he(t,o));for(const t of f)e.push(he(t,o));for(const t of y)e.push(he(t,o));const t=e.join(s)+l;m.push(t)}await Promise.all(r.map((async e=>{const t=[],r=(t,r)=>{const o=Se(e,t,r),n=e.schema.findFieldByName(t)?.type;return he(Fe(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await ge(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":Fe(e,t))));return r.map((e=>""===e?"":he(e,t)))}(e.geometry,o)),t.push(...f.map((e=>r(e,o)))),t.push(...y.map((e=>r(e,o))));const n=`${t.join(s)}${l}`;m.push(n)})));return new Blob(m,{type:"text/plain",endings:"\n"===l||l===ee?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(T("csvData",e).isNotMissing(),e instanceof Blob){const t=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsText(e)}));r=await t}else r=e;const o=me(t),n=o.rowDelimiter||function(e){let t=te;return De(e,ee,((r,o)=>(0===r&&o===e.length||(t=ee),!1))),t}(r),a=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(De(e,t,((t,r)=>(r!==e.length||t!==r)&&(n.push(e.substring(t,r)),n.length<3))),0===n.length)return o;let a=[{delimiter:",",rowsDelimiterOccurrences:[],rowsNumberAdjacentOccurrences:[]},{delimiter:";",rowsDelimiterOccurrences:[]},{delimiter:"|",rowsDelimiterOccurrences:[]},{delimiter:"\t",rowsDelimiterOccurrences:[]},{delimiter:" ",rowsDelimiterOccurrences:[]}].filter((e=>n[0].includes(e.delimiter)));if(0===a.length)return o;for(const e of n)for(const t of a){let o=0,n=0;De(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);Y(t,r)&&Y(o,r)&&n++}return!0})),t.rowsDelimiterOccurrences.push(o),","===t.delimiter&&t.rowsNumberAdjacentOccurrences.push(n)}if(a=a.filter((e=>e.rowsDelimiterOccurrences.every((t=>e.rowsDelimiterOccurrences[0]===t)))).sort(((e,t)=>t.rowsDelimiterOccurrences[0]-e.rowsDelimiterOccurrences[0])),a.length>1&&","===a[0].delimiter&&null!=r&&r!==w){const e=a[0];if(null!=e&&","===e.delimiter&&","===Intl.NumberFormat(r).formatToParts(1.1).find((e=>"decimal"===e.type))?.value)for(let t=0;t<e.rowsDelimiterOccurrences.length;t++)if(e.rowsDelimiterOccurrences[t]<=e.rowsNumberAdjacentOccurrences[t]){a=a.filter((e=>","!==e.delimiter));break}}if(0===a.length)return o;return a[0].delimiter}(r,n,t.locale),i=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return De(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:Oe(a,t,o.length)}),!0})),o};if(De(e,t,((t,r)=>{const a=e.substring(t,r);return a.length>0&&o.push(n(a,o.length)),!0})),o.length){const e=o[0].length;o.forEach(((t,r)=>{if(t.length!==e)throw new Error(`Detected invalid CSV: Row ${r} does not have expected number of columns: ${e}`)}))}return o}(r,n,a);let{geometryFormat:s,geometryFields:c}=t;if(!s){const[e,t]=await Ge(i,o.inSpatialReference,o.includeHeaderRow);s=e,c=t.map((e=>o.includeHeaderRow?i[0][e]?.raw??g("gcx.api.data.convert.import-field-alias",(e+1).toString()):g("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:i,...o,geometryFormat:s,geometryFields:c}}export async function csvToFeatureSet(e,t){const r=me(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toXLSX(e,t){T("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:pe(e.source),outSpatialReference:a.WGS84,dateFormat:_.DEFAULT,timeFormat:L.DEFAULT,numberFormat:I.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:i,dateFormat:s,timeFormat:c,numberFormat:l}=o,m=ye(r,o),u=de(r,n,e.schema,!0),f=de(r,n,e.schema,!1),y=await import("xlsx"),d=y.utils.sheet_new();let p=!1;if(i){const t=m.concat(u).concat(function(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>q(t.name,e)))?.alias??e))}(f,e.source));p=!0,y.utils.sheet_add_aoa(d,[t],{cellDates:!0})}await Promise.all(r.map((async e=>{const t=[],r=new Set,n=new Set;t.push(...await ge(e.geometry,o));for(const r of u){const n=Ue(e.attributes.get(r),o);t.push(n)}for(const a of f){const i=Se(e,a,o);if(i instanceof S){const o=e.schema.findFieldByName(a);"time-only"===o?.type&&r.add(t.length)}else if(i instanceof Date){const r=e.schema.findFieldByName(a);"date-only"===r?.type&&n.add(t.length)}const s=Ue(i,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void ie().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`);y.utils.sheet_add_aoa(d,[t],{cellDates:!0,origin:p?-1:void 0}),p=!0;const a=y.utils.decode_range(d["!ref"]);for(let e=a.s.c;e<=a.e.c;e++){const t=d[y.utils.encode_cell({r:a.e.r,c:e})];"d"===t.t?r.has(e)?t.z=Pe(c??L.ROUND_TRIP):n.has(e)?t.z=ve(s??_.ROUND_TRIP):t.z=Ce(s??_.ROUND_TRIP):"n"===t.t&&(t.z=je(l))}})));const g={SheetNames:[],Sheets:{}};g.SheetNames.push(o.sheetName),g.Sheets[o.sheetName]=d;const w=y.write(g,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),h=new Uint8Array(w.length);for(let e=0;e<w.length;e++)h[e]=w.charCodeAt(e);return new Blob([h.buffer],{type:"text/plain"})}export async function xlsxToUploadData(e,t){T("xlsxData",e).isNotMissing();const r=ue(t),o=await async function(e,t){const r=await import("xlsx"),o=new Promise(((o,n)=>{const a=new FileReader;a.onload=()=>{const e=new Uint8Array(a.result);let n="";for(const t of e)n+=String.fromCharCode(t);const i=r.read(n,{type:"binary",cellDates:!0}),s=t.sheetName||i.SheetNames[0],c=i.Sheets[s];o(c)},a.onerror=()=>{n(a.error)},a.readAsArrayBuffer(e)})),n=await o,a=r.utils.decode_range(n["!ref"]),i=[];for(let e=a.s.r;e<=a.e.r;e++){const t=[];for(let o=a.s.c;o<=a.e.c;o++){const a=n[`${r.utils.encode_cell({r:e,c:o})}`];a&&"d"===a.t&&a.v instanceof Date&&(a.v=new Date(a.v.getTime()+6e4*a.v.getTimezoneOffset())),t.push(a?{raw:a.v,formatted:"s"===a.t?void 0:a.w}:{raw:""})}i.push(t)}return i}(e,r);let{geometryFormat:n,geometryFields:a}=t;if(!n){const[e,t]=await Ge(o,r.inSpatialReference,r.includeHeaderRow);n=e,a=t.map((e=>r.includeHeaderRow?o[0][e]?.raw.toString()??g("gcx.api.data.convert.import-field-alias",(e+1).toString()):g("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:o,...r,geometryFormat:n,geometryFields:a}}export async function xlsxToFeatureSet(e,t){T("xlsxData",e).isNotMissing();const r=ue(t);return uploadDataToFeatureSet(await xlsxToUploadData(e,r))}export function kmlHexToEsriColor(t){return e.fromHex(`#${t.match(/.{2}/g).reverse().join("")}`)}export function parseKMLCoordinates(e){return e.trim().split(/\s+/).map((e=>{const[t,r,o]=e.split(",").map(Number);return{x:t,y:r,z:o}}))}export function parseKMLSymbol(t,r,o){if(t){const r=t.querySelector("IconStyle > Icon > href")?.textContent;if(r)return new u({url:r,width:32,height:32});const o=t.querySelector("PolyStyle");if(o){const t=o.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]);return new f({color:r,outline:{color:[0,0,0,.5],width:1}})}const n=t.querySelector("LineStyle");if(n){const t=n.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]),o=parseFloat(n.querySelector("width")?.textContent||"1");return new y({color:r,width:o})}}return getDefaultSymbol(o,"polygon"===r?"polygon":"point"===r?"point":"polyline")}export async function toShapefile(e,t){T("featureSet",e).isNotMissing();const[{default:r},o]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),n=Array.from(e),i={...{useFormattedValues:!1,outFields:pe(e.source),fileName:e.title||"export"},...t},{outFields:s,outSpatialReference:c,fileName:l}=i,m=e=>e.geometry.hasZ||e.geometry.hasM,u=new Map,f=n.filter((e=>O(e.geometry)));u.set("POINTZ",f.filter(m)),u.set("POINT",f.filter((e=>!m(e))));const y=n.filter((e=>D(e.geometry)));u.set("MULTIPOINTZ",y.filter(m)),u.set("MULTIPOINT",y.filter((e=>!m(e))));const d=n.filter((e=>M(e.geometry)));u.set("POLYLINEZ",d.filter(m)),u.set("POLYLINE",d.filter((e=>!m(e))));const p=n.filter((e=>x(e.geometry)||E(e.geometry)));u.set("POLYGONZ",p.filter(m)),u.set("POLYGON",p.filter((e=>!m(e))));const g=de(n,s,e.schema,!0);let w=de(n,s,e.schema,!1);w=g.concat(w);const h=new r,F=Array.from(u.keys()).filter((e=>u.get(e).length>0));await Promise.all(F.map((async t=>{const r=u.get(t),n=await Promise.all(r.map((e=>we(e.geometry,c)))),s=await async function(e){const{wkid:t,wkt:r}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===t&&e.spatialReference.wkt===r)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return r??await k(t??a.WGS84.wkid)}(n),m=i.useFormattedValues?Object.assign({},...w.map((e=>({[e]:ae.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>Te(e,a)))){n[a]=ae.STRING;continue}const t=r?r.fields.find((e=>q(e.name,a))):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":case"big-integer":n[a]=ae.NUMBER;break;case"date":case"timestamp-offset":n[a]=o?ae.NUMBER:ae.DATE;break;default:n[a]=ae.STRING}continue}const i=(e,t)=>e.attributes.get(t)??e.presentableAttributes.get(t);e.every((e=>i(e,a)instanceof Date||void 0===i(e,a)))&&e.some((e=>i(e,a)instanceof Date))?n[a]=o?ae.NUMBER:ae.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=ae.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=ae.BOOLEAN:n[a]=ae.STRING}return n}(r,w,e.schema,"timestamp"===i.dateFormat),f=function(e){return e.map((e=>{if(O(e)){const{x:t,y:r,z:o,m:n}=e,a=[t,r];return e.hasZ&&a.push(o),e.hasM&&a.push(n),$e(a,e)}if(D(e))return He(e.points,e);if(M(e))return Be(e.paths,e);if(x(e))return Be(e.rings,e);if(E(e)){const t=[e.xmin,e.ymax];return[[t,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],t]]}throw new Error("Unsupported geometry type.")}))}(n),y=function(e,t,r,o){const n=[];for(const a of e){const e={};for(const n of t){let t=Se(a,n,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=ke(t,r[n],{...o,isDateOnly:"date-only"===a.schema.findFieldByName(n)?.type})}e[n]=t}n.push(e)}return n}(r,w,m,i);o.write(y,t,f,((e,r)=>{const o=F.length>1?`${l}_${t.toLowerCase()}`:l;h.file(`${o}.shp`,r.shp.buffer,{binary:!0}),h.file(`${o}.shx`,r.shx.buffer,{binary:!0}),h.file(`${o}.dbf`,r.dbf.buffer,{binary:!0}),h.file(`${o}.prj`,s)}))})));const S=await h.generateAsync({type:"uint8array"});return new Blob([S.buffer],{type:"text/plain"})}export async function kmlToLayerExtensions(e){T("blob",e).isNotMissing();const a=await e.text(),m=(new DOMParser).parseFromString(a,"application/xml"),u=function(e,a){const f={};m.querySelectorAll("Style").forEach((e=>{f[`#${e.id}`]=e}));const y=e.querySelector(":scope > name")?.textContent??"Unnamed Container",d=new F({layer:new s({title:y})});e.querySelectorAll(":scope > Placemark").forEach(((e,s)=>{const m=e.querySelector("name")?.textContent??"",u=e.querySelector("description")?.textContent??"",p=function(e){const t=e.querySelector("Point > coordinates"),a=e.querySelector("LineString > coordinates"),i=e.querySelector("Polygon");if(t?.textContent){const[e]=parseKMLCoordinates(t.textContent);return new r(e)}if(a?.textContent)return new n({paths:[parseKMLCoordinates(a.textContent).map((({x:e,y:t})=>[e,t]))]});if(i?.textContent){const e=i.querySelector("outerBoundaryIs > LinearRing > coordinates");if(e?.textContent){const t=[parseKMLCoordinates(e.textContent).map((({x:e,y:t})=>[e,t]))];return new o({rings:t})}}return}(e);if(p){const r=e.querySelector("styleUrl")?.textContent,o=parseKMLSymbol(r?f[r]:void 0,p.type,a),n=new i({displayField:"name",title:m,source:[new t({geometry:p,attributes:{name:m,description:u,OBJECTID:y+s}})],renderer:new l({symbol:o}),fields:[new c({name:"OBJECTID",type:"oid",alias:"OBJECTID"}),new c({name:"name",type:"string",alias:"name"})]});u&&n.fields.push(new c({name:"description",type:"string",alias:"description",defaultValue:""}));const g=new h({layer:n});d.layerExtensions.add(g)}}));return e.querySelectorAll(":scope > Folder, :scope > Document").forEach(((e,t)=>{const r=u(e,t);d.layerExtensions.add(r)})),d},f=[];return m.querySelectorAll("kml > Document, kml > Folder").forEach(((e,t)=>{const r=u(e,t);r.layerExtensions.length&&f.push(r)})),f}export async function shapefileToUploadData(e,t){T("shapefileData",e).isNotMissing();const o=fe(t),n=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:i},{default:s}]=await Promise.all([import("jszip"),import("shpjs")]),c=await n,l=await i.loadAsync(new Uint8Array(c)),m=l.filter((()=>!0)).map((e=>e.name));let u,f=m.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(f=function(e){if(!e.length)return[];let t=e[0];const r=t.match(ne);return r?(t=r[1],e.filter((e=>{const r=e.match(ne);return r&&r[1]===t}))):[t]}(f),m.some((e=>e.endsWith(".prj")))&&!f.every((e=>m.includes(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(m.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(u){if(t!==u)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else u=t})));let y=[],d=[];for(const e of f){if(!m.includes(`${e}.shx`)||!m.includes(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=await l.file(`${e}.shp`).async("uint8array"),r=s.parseShp(t),o=await l.file(`${e}.dbf`).async("uint8array"),n=s.parseDbf(o);if(n.length!==r.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(n),d=d.concat(r)}const p=await Promise.all(d.map((e=>async function(e,t){const o=O(e)?function(e){T("geometry.coordinates",e.type).matches("Point"),T("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,o,n]=e.coordinates,i=new r({x:t,y:o,spatialReference:a.WGS84});if(Array.isArray(n)){const[e,t]=n;!e&&!t||e?i.z=e:i.m=t}return i}(e):await W(e);if(t){let e;try{const r=await z(t);e=new a({wkid:C(r)})}catch{}e||(e=new a({wkt:t})),o.spatialReference=e}return o}(e,u)))),g=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[g]=JSON.stringify(p[t].toJSON())));return{data:function(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}(y),...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[g],inSpatialReference:p[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){T("shapefileData",e).isNotMissing();const r=fe(t);return uploadDataToFeatureSet(await shapefileToUploadData(e,r))}export function getDefaultSymbol(e,t){const r=e%8;let o=["#FFDBFF","#88D6FF","#7F9FC3","#FF8200","#F34A53","#76E3B9","#E7BFFF","#FFC467"][r],n=["#EF3786","#005A99","#2D5070","#790C00","#4C0000","#006543","#6244A9","#904200"][r];if(Math.floor(e/8)%2!=0){const e=o;o=n,n=e}switch(t){case"point":case"multipoint":return new d({color:o,outline:{color:n}});case"polyline":return new y({color:o,width:"2"});case"polygon":return new f({color:o,outline:{color:n}});case"mesh":return new m({symbolLayers:[{type:"fill",material:{color:o},outline:{color:n}}]})}}function le(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:w,detectOid:!e?.primaryKeyField}}function me(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...le(e)},...e}}function ue(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...le(e)},...e}}function fe(e){return{...{...le(e)},...e}}function ye(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function de(e,t,r,o){const n=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return n;if(t&&!t.includes("*"))return t.filter((e=>!n.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||n.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function pe(e){if(!e)return["*"];const t=e.featureSettings.popupTemplate?.content;return(Array.isArray(t)?t.find((e=>"fields"===e.type))?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName)):void 0)??e.featureSettings.popupTemplate?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName))??["*"]}async function ge(e,t){const r=await we(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!O(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!O(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!O(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(r.toJSON())]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[await H(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await J(r))]:[""]:[]}async function we(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await $([e],t))[0]:e}function he(e,t){const r=[t.delimiter,Q,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(Q,"g"),`${Q}${Q}`);return`${Q}${t}${Q}`}return e}function Fe(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||I.ROUND_TRIP;return v(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():b({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof S)return j({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function Se(e,t,r){if(r.useFormattedValues||Te(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);const o=e.schema.findFieldByName(t)?.type;if(null!=o)switch(o){case"date":case"date-only":case"timestamp-offset":{const r=R(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=P(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function Te(e,t){return!!q(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function Ne(e){for(const t of V)if(e.startsWith(t))return`\t${e}`;return e}function Oe(e,t,r){const o=e.startsWith(Q),n=e.endsWith(Q);if(o&&!n||!o&&n)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const a=o?e.substring(1,e.length-1):e;let i=-1;return De(a,Q,((e,o)=>{if(o===a.length)return!0;if(i<0){if(o!==a.length)return i=o,!0}else if(o===i+1)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),a.replace(new RegExp(`${Q}${Q}`,"g"),Q)}function De(e,t,r){let o,n=!1,a=0,i=0;for(;o=e.indexOf(t,a),!(o<0);){for(let t=a;t<o;)e.substring(t).startsWith(Q)?(n=!n,t+=1):t++;const s=o+t.length;if(!n){const e=r(i,o);if(i=s,!e)return}a=s}r(i,e.length)}async function Me(e,t){const r=JSON.parse(e),o=(await import("@arcgis/core/geometry/support/jsonUtils")).fromJSON(r);return r.spatialReference||(o.spatialReference=t),o}async function xe(e,t){const r=await W(JSON.parse(e));return r.spatialReference=t,r}async function Ee(e,t){const r=await B(e);return r.spatialReference=t,r}function Re(e,t,r){const o=r?[r]:geometryTypeHeaders[t];for(const t of o){const r=t.map((t=>e.map((e=>e?.raw?.toString().trim().toLowerCase())).indexOf(t.trim().toLowerCase())));if(r.every((e=>e>=0)))return r}}async function be(e,t){return(await Promise.all(e.map((async(e,r)=>{const o=e?.raw;if("string"==typeof o&&""!==o)try{return await t(o,void 0),r}catch{return}})))).find((e=>void 0!==e))}function Ae(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:C({locale:t,format:r},e)}async function Ge(e,t,r){const o=r?e.slice(1):e;if(r){const r=Re(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of se){try{await _e(r[0],n,t,o)}catch{continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=Re(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of se){const n=await be(o[0],r);if(void 0!==n){try{await _e(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function _e(e,t,r,o){return{columnIndices:[e],geometries:await Promise.all(o.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),r)})))}}function Ie(e,t,r){let o=!1,n=!0,a=!0,i=!0,s=!0,c=!0;const l=new Set,{data:m,includeHeaderRow:u,dateFormat:f,timeFormat:y,primaryKeyField:d,locale:p}=e,g=u?m[0]:[],w=u?m.slice(1):m;for(const e of w){const r=e[t];r?.raw&&(l.add(r.raw),o=!0,n&&(n=Y(r.raw,p)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||R(f||A,r.raw)!==G),s&&(s=R(f||re,r.formatted)!==G),i&&(i=r.raw instanceof S||P(y||U,r.raw).isValid),c&&(c=P({format:y||oe,locale:"en"},r.formatted).isValid))}const h=l.size===w.length;return d&&g[t]?.raw===d||r&&o&&h&&n?"esriFieldTypeOID":o&&c?"esriFieldTypeTimeOnly":o&&s?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&i?"esriFieldTypeTimeOnly":o&&a?"esriFieldTypeDate":"esriFieldTypeString"}async function Le(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:a,dateFormat:i,timeFormat:s}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?Ae(e,n,a):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:R({locale:n,format:i},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof S)return e.toString();if(e instanceof Date)return new S(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new S(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:P({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of V)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function Ce(e){switch(e){case _.DATE_SHORT:return"dd/MM/yyyy";case _.DATE_LONG:return"MMMM d, yyyy";case _.TIME_SHORT:return"h:mm AM/PM";case _.TIME_LONG:return"h:mm:ss AM/PM";case _.DATE_TIME_SHORT:case _.DEFAULT:return"MMM d yyyy h:mm AM/PM";case _.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case _.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case _.ISO_8601:case _.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&ie().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&ie().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function ve(e){switch(e){case _.DATE_SHORT:return"dd/MM/yyyy";case _.DATE_LONG:return"MMMM d, yyyy";case _.DATE_TIME_SHORT:case _.DEFAULT:return"MMM d yyyy";case _.DATE_TIME_LONG:return"MMMM d yyyy";case _.FULL:return"dddd, MMMM d yyyy";case _.ISO_8601:case _.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function Pe(e){switch(e){case L.TIME_SHORT:return"h:mm AM/PM";case L.TIME_LONG:return"h:mm:ss AM/PM";case L.ISO_8601:case L.ROUND_TRIP:return"HH:mm:ss";default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("h")&&!t.includes("AM/PM")&&ie().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function je(e){switch(e){case I.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case I.CURRENCY:return'"$"#,##0.00';case I.FIXED_POINT:case I.DEFAULT:return"0.0000";case I.NUMBER:return"#,##0.0000";case I.PERCENT:return"0%";case I.ROUND_TRIP:return"0.00000";default:return e}}function Ue(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e;if(e instanceof S)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function $e(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function He(e,t){return e.map((e=>$e(e,t)))}function Be(e,t){return e.map((e=>He(e,t)))}function ke(e,t,r){switch(t){case ae.NUMBER:return e instanceof Date?e.getTime():C(e);case ae.STRING:return e instanceof Date?b({format:r.dateFormat??_.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof S?j({format:r.timeFormat??L.ROUND_TRIP},e):"number"==typeof e?v(r.numberFormat??I.DEFAULT,e):e.toString();case ae.BOOLEAN:return!!e;case ae.DATE:return R(e);default:return e.toString()}}
1
+ import e from"@arcgis/core/Color.js";import t from"@arcgis/core/Graphic.js";import r from"@arcgis/core/geometry/Point";import o from"@arcgis/core/geometry/Polygon.js";import n from"@arcgis/core/geometry/Polyline.js";import a from"@arcgis/core/geometry/SpatialReference";import i from"@arcgis/core/layers/FeatureLayer.js";import s from"@arcgis/core/layers/GroupLayer.js";import c from"@arcgis/core/layers/support/Field.js";import l from"@arcgis/core/renderers/SimpleRenderer.js";import m from"@arcgis/core/symbols/MeshSymbol3D.js";import u from"@arcgis/core/symbols/PictureMarkerSymbol.js";import f from"@arcgis/core/symbols/SimpleFillSymbol.js";import y from"@arcgis/core/symbols/SimpleLineSymbol.js";import d from"@arcgis/core/symbols/SimpleMarkerSymbol.js";import{geometryTypeToJson as p}from"../json/GeometryJson.js";import{translate as g}from"../locale/language.js";import{INVARIANT as w}from"../locale.js";import{FeatureCollectionLayerExtension as h}from"../mapping/FeatureCollectionLayerExtension.js";import{GroupLayerExtension as F}from"../mapping/GroupLayerExtension.js";import{Time as S}from"../utilities/Time.js";import{checkArg as T,assertNever as N}from"../utilities/checkArg.js";import{isPoint as O,isMultipoint as D,isPolyline as M,isPolygon as x,isExtent as E}from"../utilities/esri.js";import{parse as R,format as b,DEFAULT_PARSING_FORMATS as A,INVALID_DATE as G}from"../utilities/format/date.js";import{DateFormat as _,NumberFormat as I,TimeFormat as L}from"../utilities/format/formats.js";import{parse as C,format as v}from"../utilities/format/number.js";import{parse as P,format as j,DEFAULT_PARSING_FORMATS as U}from"../utilities/format/time.js";import{project as $,esriToWKT as H,wktToEsri as B,esriWkidToWkt as k,esriWktToWkid as z,esriToGeoJSON as J,geoJSONToEsri as W}from"../utilities/geometry.js";import{getLogger as X}from"../utilities/log.js";import{isNumeric as Y}from"../utilities/number.js";import{caseInsensitiveEquals as q}from"../utilities/string.js";import{Feature as K}from"./Feature.js";import{FeatureSet as Z}from"./FeatureSet.js";const V=["=","-","+","@"],Q='"',ee="\r\n",te="\n",re=[...A.map(Ce),"M/d/yy"],oe=[...U.map(Pe).map((e=>e.replace("AM/PM","tt")))],ne=/(\w+)_(point|multipoint|polyline|polygon)z?/;var ae;function ie(){return X("geocortex.api.data.convert")}!function(e){e.DATE="D",e.NUMBER="N",e.STRING="C",e.BOOLEAN="L"}(ae||(ae={}));export const FIELD_NAME_REGEX=/[^a-zA-Z\d_]/g;export var GeometryFormat;!function(e){e.NONE="NONE",e.WKT="WKT",e.XY="XY",e.XYZ="XYZ",e.LAT_LON="LAT_LONG",e.GEO_JSON="GEO_JSON",e.ARCGIS_JSON="ARCGIS_JSON"}(GeometryFormat||(GeometryFormat={}));export const geometryTypeHeaders={[GeometryFormat.XYZ]:[["x","y","z"]],[GeometryFormat.XY]:[["x","y"]],[GeometryFormat.LAT_LON]:[["latitude","longitude"],["lat","lon"],["lat","long"]],[GeometryFormat.ARCGIS_JSON]:[["geometry"]],[GeometryFormat.GEO_JSON]:[["geometry"]],[GeometryFormat.WKT]:[["geometry"]]};const se=[[GeometryFormat.ARCGIS_JSON,Me],[GeometryFormat.GEO_JSON,xe],[GeometryFormat.WKT,Ee]],ce=new Map(se);export async function uploadDataToFeatureSet(e){const t=await async function(e){const{data:t,includeHeaderRow:o,geometryFormat:n,geometryFields:a,locale:i,numberFormat:s,inSpatialReference:c}=e,l=o?t.slice(1):t;if(n===GeometryFormat.NONE)return{columnIndices:[]};const m=e=>Ae(e,i,s),u=(e,t)=>{const o=t===GeometryFormat.XYZ,n=t===GeometryFormat.LAT_LON;return{columnIndices:e,geometries:l.map((t=>{if(t.length>=Math.max(...e)&&Y(t[e[0]]?.raw,i)&&Y(t[e[1]]?.raw,i)&&(!o||Y(t[e[2]]?.raw,i)))return new r({x:m(n?t[e[1]].raw:t[e[0]].raw),y:m(n?t[e[0]].raw:t[e[1]].raw),z:o?m(t[e[2]].raw):0,spatialReference:c})}))}},f=async(e,t)=>({columnIndices:[e],geometries:await Promise.all(l.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),c)})))}),y=async(e,t)=>{switch(t){case GeometryFormat.NONE:return{columnIndices:[0]};case GeometryFormat.LAT_LON:case GeometryFormat.XYZ:case GeometryFormat.XY:return u(e,t);case GeometryFormat.ARCGIS_JSON:return f(e[0],Me);case GeometryFormat.GEO_JSON:return f(e[0],xe);case GeometryFormat.WKT:return f(e[0],Ee);default:return N(t,new Error(`Unknown geometry format "${t}".`))}};if(n){const e=Re(o?t[0]:t[0].map(((e,t)=>({raw:t.toString()}))),n,o?a:a.map((e=>""+(parseInt(e.match(/\d+/g)[0])-1))));if(o&&void 0===e)throw new Error(`Error parsing file data: Expected geometry columns ${geometryTypeHeaders[n][0].join(",")} are missing for GeometryType.${n}`);return y(e??[0],n)}const[d,p]=await Ge(t,c,o);if(d===GeometryFormat.NONE)return{columnIndices:[]};return p.length>1?u(p,d):f(p[0],ce.get(d))}(e),o=function(e,t){const{data:r,displayField:o,includeHeaderRow:n,inSpatialReference:a,outSpatialReference:i,generatePrimaryKey:s}=e,c={fields:[]},l=e=>!(!t.columnIndices||0===t.columnIndices.length)&&t.columnIndices.includes(e);let{primaryKeyField:m}=e,u=0;for(let t=0;t<r[0].length;t++){if(l(t))continue;const o=Ie(e,t,!s&&!m&&!c.fields.find((e=>"esriFieldTypeOID"===e.type)));let a=r[0][t]?.raw?.toString(),i=a?.replace(FIELD_NAME_REGEX,"_");n&&i||(i="field"+ ++u,a=g("gcx.api.data.convert.import-field-alias",u)),c.fields.push({alias:a,name:i,type:o}),"esriFieldTypeOID"===o&&(m=i)}if(c.spatialReference=i??t.geometries?.[0]?.spatialReference??a,t.geometries?.length){const e=t.geometries.filter((e=>void 0!==e)).map((e=>e.type)),r=e[0];c.geometryType=e.every((e=>e===r))?p(r):void 0}if(!c.fields.find((e=>"esriFieldTypeOID"===e.type))){const e=c.fields.length+1,t=!!c.fields.find((e=>"objectid"===e.name.toLowerCase()));m=t?`OBJECTID_${e}`:"OBJECTID",c.fields.push({name:m,alias:m,type:"esriFieldTypeOID"})}return c.displayField=o??c.fields.find((e=>!q(e.name,m)&&"esriFieldTypeString"===e.type))?.name??c.fields.find((e=>!q(e.name,m)))?.name??m,c.primaryKeyField=m,c}(e,t),n=await async function(e,t,r){const{data:o,includeHeaderRow:n,outFields:a,escapeFormulaChars:i,locale:s,numberFormat:c,dateFormat:l,timeFormat:m}=e,{spatialReference:u}=r,f=[],y=n?o.slice(1):o,d=(e,r)=>!t.columnIndices||0===t.columnIndices.length||!t.columnIndices.includes(r);return await Promise.all(y.map((async(e,o)=>{const n=new K;for(let t=0;t<r.fields.length;t++){const u=r.fields[t],f=e.filter(d);if(a.includes("*")||a.filter((e=>q(e,u.name))).length>0){let e=await Le(f[t]?.raw,u,{escapeFormulaChars:i,dateFormat:l,numberFormat:c,timeFormat:m,locale:s});"esriFieldTypeOID"===u.type&&null===e&&(e=o),n.attributes.set(u.name,e)}}t.geometries&&(n.geometry=await we(t.geometries[o],u)),f.push(n)}))),f}(e,t,o);return new Z({features:n,schema:o})}export async function toCsv(e,t){T("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,alwaysQuote:!1,escapeFormulaChars:!0,delimiter:",",dateFormat:_.ROUND_TRIP,timeFormat:L.ROUND_TRIP,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,includeByteOrderMark:!0,outSpatialReference:a.WGS84,includeHeaderRow:!0,outFields:pe(e.source),rowDelimiter:navigator.platform?.startsWith("Win")?ee:"\n"},...t},{includeByteOrderMark:n,includeHeaderRow:i,delimiter:s,outFields:c,rowDelimiter:l}=o,m=[];n&&m.push("\ufeff");const u=ye(r,o),f=de(r,c,e.schema,!0),y=de(r,c,e.schema,!1);if(i){const e=[];for(const t of u)e.push(he(t,o));for(const t of f)e.push(he(t,o));for(const t of y)e.push(he(t,o));const t=e.join(s)+l;m.push(t)}await Promise.all(r.map((async e=>{const t=[],r=(t,r)=>{const o=Se(e,t,r),n=e.schema.findFieldByName(t)?.type;return he(Fe(o,{...r,isDateOnly:"date-only"===n}),r)};t.push(...await async function(e,t){let r=await ge(e,t);t.geometryFormat!==GeometryFormat.XYZ&&t.geometryFormat!==GeometryFormat.XY&&t.geometryFormat!==GeometryFormat.LAT_LON||(r=r.map((e=>void 0===e?"":Fe(e,t))));return r.map((e=>""===e?"":he(e,t)))}(e.geometry,o)),t.push(...f.map((e=>r(e,o)))),t.push(...y.map((e=>r(e,o))));const n=`${t.join(s)}${l}`;m.push(n)})));return new Blob(m,{type:"text/plain",endings:"\n"===l||l===ee?"transparent":"native"})}export async function csvToUploadData(e,t){let r;if(T("csvData",e).isNotMissing(),e instanceof Blob){const t=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsText(e)}));r=await t}else r=e;const o=me(t),n=o.rowDelimiter||function(e){let t=te;return De(e,ee,((r,o)=>(0===r&&o===e.length||(t=ee),!1))),t}(r),a=o.delimiter??function(e,t,r){const o=",";if(0===e.length)return o;const n=[];if(De(e,t,((t,r)=>(r!==e.length||t!==r)&&(n.push(e.substring(t,r)),n.length<3))),0===n.length)return o;let a=[{delimiter:",",rowsDelimiterOccurrences:[],rowsNumberAdjacentOccurrences:[]},{delimiter:";",rowsDelimiterOccurrences:[]},{delimiter:"|",rowsDelimiterOccurrences:[]},{delimiter:"\t",rowsDelimiterOccurrences:[]},{delimiter:" ",rowsDelimiterOccurrences:[]}].filter((e=>n[0].includes(e.delimiter)));if(0===a.length)return o;for(const e of n)for(const t of a){let o=0,n=0;De(e,t.delimiter,((a,i)=>{if(i!==e.length&&o++,","===t.delimiter){const t=e.charAt(i-1),o=e.charAt(i+1);Y(t,r)&&Y(o,r)&&n++}return!0})),t.rowsDelimiterOccurrences.push(o),","===t.delimiter&&t.rowsNumberAdjacentOccurrences.push(n)}if(a=a.filter((e=>e.rowsDelimiterOccurrences.every((t=>e.rowsDelimiterOccurrences[0]===t)))).sort(((e,t)=>t.rowsDelimiterOccurrences[0]-e.rowsDelimiterOccurrences[0])),a.length>1&&","===a[0].delimiter&&null!=r&&r!==w){const e=a[0];if(null!=e&&","===e.delimiter&&","===Intl.NumberFormat(r).formatToParts(1.1).find((e=>"decimal"===e.type))?.value)for(let t=0;t<e.rowsDelimiterOccurrences.length;t++)if(e.rowsDelimiterOccurrences[t]<=e.rowsNumberAdjacentOccurrences[t]){a=a.filter((e=>","!==e.delimiter));break}}if(0===a.length)return o;return a[0].delimiter}(r,n,t.locale),i=function(e,t,r){const o=[],n=(e,t)=>{const o=[];return De(e,r,((r,n)=>{const a=e.substring(r,n);return o.push({raw:Oe(a,t,o.length)}),!0})),o};if(De(e,t,((t,r)=>{const a=e.substring(t,r);return a.length>0&&o.push(n(a,o.length)),!0})),o.length){const e=o[0].length;o.forEach(((t,r)=>{if(t.length!==e)throw new Error(`Detected invalid CSV: Row ${r} does not have expected number of columns: ${e}`)}))}return o}(r,n,a);let{geometryFormat:s,geometryFields:c}=t;if(!s){const[e,t]=await Ge(i,o.inSpatialReference,o.includeHeaderRow);s=e,c=t.map((e=>o.includeHeaderRow?i[0][e]?.raw??g("gcx.api.data.convert.import-field-alias",(e+1).toString()):g("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:i,...o,geometryFormat:s,geometryFields:c}}export async function csvToFeatureSet(e,t){const r=me(t);return uploadDataToFeatureSet(await csvToUploadData(e,r))}export async function toXLSX(e,t){T("featureSet",e).isNotMissing();const r=Array.from(e),o={...{useFormattedValues:!1,includeHeaderRow:!0,escapeFormulaChars:!0,geometryFormat:r.some((e=>void 0!==e.geometry&&null!==e.geometry))?GeometryFormat.WKT:GeometryFormat.NONE,outFields:pe(e.source),outSpatialReference:a.WGS84,dateFormat:_.DEFAULT,timeFormat:L.DEFAULT,numberFormat:I.DEFAULT,sheetName:"sheet1"},...t},{outFields:n,includeHeaderRow:i,dateFormat:s,timeFormat:c,numberFormat:l}=o,m=ye(r,o),u=de(r,n,e.schema,!0),f=de(r,n,e.schema,!1),y=await import("xlsx"),d=y.utils.sheet_new();let p=!1;if(i){const t=m.concat(u).concat(function(e,t){const r=t?.schema?.fieldExtensions.initializedItems.map((e=>e.field));return e.map((e=>r?.find((t=>q(t.name,e)))?.alias??e))}(f,e.source));p=!0,y.utils.sheet_add_aoa(d,[t],{cellDates:!0})}await Promise.all(r.map((async e=>{const t=[],r=new Set,n=new Set;t.push(...await ge(e.geometry,o));for(const r of u){const n=Ue(e.attributes.get(r),o);t.push(n)}for(const a of f){const i=Se(e,a,o);if(i instanceof S){const o=e.schema.findFieldByName(a);"time-only"===o?.type&&r.add(t.length)}else if(i instanceof Date){const r=e.schema.findFieldByName(a);"date-only"===r?.type&&n.add(t.length)}const s=Ue(i,o);t.push(s)}if(!t.every((e=>"string"!=typeof e||e.length<=32767)))return void ie().warn(`toXLSX cell limit exceeded, feature (${e.primaryKey??e.id}) omitted.`);y.utils.sheet_add_aoa(d,[t],{cellDates:!0,origin:p?-1:void 0}),p=!0;const a=y.utils.decode_range(d["!ref"]);for(let e=a.s.c;e<=a.e.c;e++){const t=d[y.utils.encode_cell({r:a.e.r,c:e})];"d"===t.t?r.has(e)?t.z=Pe(c??L.ROUND_TRIP):n.has(e)?t.z=ve(s??_.ROUND_TRIP):t.z=Ce(s??_.ROUND_TRIP):"n"===t.t&&(t.z=je(l))}})));const g={SheetNames:[],Sheets:{}};g.SheetNames.push(o.sheetName),g.Sheets[o.sheetName]=d;const w=y.write(g,{type:"binary",bookType:"xlsx",compression:!0,bookSST:!0,cellDates:!0}),h=new Uint8Array(w.length);for(let e=0;e<w.length;e++)h[e]=w.charCodeAt(e);return new Blob([h.buffer],{type:"text/plain"})}export async function xlsxToUploadData(e,t){T("xlsxData",e).isNotMissing();const r=ue(t),o=await async function(e,t){const r=await import("xlsx"),o=new Promise(((o,n)=>{const a=new FileReader;a.onload=()=>{const e=new Uint8Array(a.result);let n="";for(const t of e)n+=String.fromCharCode(t);const i=r.read(n,{type:"binary",cellDates:!0}),s=t.sheetName||i.SheetNames[0],c=i.Sheets[s];o(c)},a.onerror=()=>{n(a.error)},a.readAsArrayBuffer(e)})),n=await o,a=r.utils.decode_range(n["!ref"]),i=[];for(let e=a.s.r;e<=a.e.r;e++){const t=[];for(let o=a.s.c;o<=a.e.c;o++){const a=n[`${r.utils.encode_cell({r:e,c:o})}`];a&&"d"===a.t&&a.v instanceof Date&&(a.v=new Date(a.v.getTime()+6e4*a.v.getTimezoneOffset())),t.push(a?{raw:a.v,formatted:"s"===a.t?void 0:a.w}:{raw:""})}i.push(t)}return i}(e,r);let{geometryFormat:n,geometryFields:a}=t;if(!n){const[e,t]=await Ge(o,r.inSpatialReference,r.includeHeaderRow);n=e,a=t.map((e=>r.includeHeaderRow?o[0][e]?.raw.toString()??g("gcx.api.data.convert.import-field-alias",(e+1).toString()):g("gcx.api.data.convert.import-field-alias",(e+1).toString())))}return{data:o,...r,geometryFormat:n,geometryFields:a}}export async function xlsxToFeatureSet(e,t){T("xlsxData",e).isNotMissing();const r=ue(t);return uploadDataToFeatureSet(await xlsxToUploadData(e,r))}export function kmlHexToEsriColor(t){return e.fromHex(`#${t.match(/.{2}/g).reverse().join("")}`)}export function parseKMLCoordinates(e){return e.trim().split(/\s+/).map((e=>{const[t,r,o]=e.split(",").map(Number);return{x:t,y:r,z:o}}))}export function parseKMLSymbol(t,r,o){if(t){const r=t.querySelector("IconStyle > Icon > href")?.textContent;if(r)return new u({url:r,width:32,height:32});const o=t.querySelector("PolyStyle");if(o){const t=o.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]);return new f({color:r,outline:{color:[0,0,0,.5],width:1}})}const n=t.querySelector("LineStyle");if(n){const t=n.querySelector("color")?.textContent,r=t?kmlHexToEsriColor(t):new e([0,0,0,1]),o=parseFloat(n.querySelector("width")?.textContent||"1");return new y({color:r,width:o})}}return getDefaultSymbol(o,"polygon"===r?"polygon":"point"===r?"point":"polyline")}export async function toShapefile(e,t){T("featureSet",e).isNotMissing();const[{default:r},o]=await Promise.all([import("jszip"),import("../forked-libs/shp-write/index.js")]),n=Array.from(e),i={...{useFormattedValues:!1,outFields:pe(e.source),fileName:e.title||"export"},...t},{outFields:s,outSpatialReference:c,fileName:l}=i,m=e=>e.geometry.hasZ||e.geometry.hasM,u=new Map,f=n.filter((e=>O(e.geometry)));u.set("POINTZ",f.filter(m)),u.set("POINT",f.filter((e=>!m(e))));const y=n.filter((e=>D(e.geometry)));u.set("MULTIPOINTZ",y.filter(m)),u.set("MULTIPOINT",y.filter((e=>!m(e))));const d=n.filter((e=>M(e.geometry)));u.set("POLYLINEZ",d.filter(m)),u.set("POLYLINE",d.filter((e=>!m(e))));const p=n.filter((e=>x(e.geometry)||E(e.geometry)));u.set("POLYGONZ",p.filter(m)),u.set("POLYGON",p.filter((e=>!m(e))));const g=de(n,s,e.schema,!0);let w=de(n,s,e.schema,!1);w=g.concat(w);const h=new r,F=Array.from(u.keys()).filter((e=>u.get(e).length>0));await Promise.all(F.map((async t=>{const r=u.get(t),n=await Promise.all(r.map((e=>we(e.geometry,c)))),s=await async function(e){const{wkid:t,wkt:r}=e[0].spatialReference;if(!e.every((e=>e.spatialReference.wkid===t&&e.spatialReference.wkt===r)))throw new Error("Cannot create shapefile that contains geometries with different spatial references.");return r??await k(t??a.WGS84.wkid)}(n),m=i.useFormattedValues?Object.assign({},...w.map((e=>({[e]:ae.STRING})))):function(e,t,r,o){const n={};for(const a of t){if(e.some((e=>Te(e,a)))){n[a]=ae.STRING;continue}const t=r?r.fields.find((e=>q(e.name,a))):void 0;if(t){switch(t.type){case"oid":case"double":case"integer":case"single":case"small-integer":case"big-integer":n[a]=ae.NUMBER;break;case"date":case"timestamp-offset":n[a]=o?ae.NUMBER:ae.DATE;break;default:n[a]=ae.STRING}continue}const i=(e,t)=>e.attributes.get(t)??e.presentableAttributes.get(t);e.every((e=>i(e,a)instanceof Date||void 0===i(e,a)))&&e.some((e=>i(e,a)instanceof Date))?n[a]=o?ae.NUMBER:ae.DATE:e.every((e=>"number"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"number"==typeof i(e,a)))?n[a]=ae.NUMBER:e.every((e=>"boolean"==typeof i(e,a)||void 0===i(e,a)))&&e.some((e=>"boolean"==typeof i(e,a)))?n[a]=ae.BOOLEAN:n[a]=ae.STRING}return n}(r,w,e.schema,"timestamp"===i.dateFormat),f=function(e){return e.map((e=>{if(O(e)){const{x:t,y:r,z:o,m:n}=e,a=[t,r];return e.hasZ&&a.push(o),e.hasM&&a.push(n),$e(a,e)}if(D(e))return He(e.points,e);if(M(e))return Be(e.paths,e);if(x(e))return Be(e.rings,e);if(E(e)){const t=[e.xmin,e.ymax];return[[t,[e.xmax,e.ymax],[e.xmax,e.ymin],[e.xmin,e.ymin],t]]}throw new Error("Unsupported geometry type.")}))}(n),y=function(e,t,r,o){const n=[];for(const a of e){const e={};for(const n of t){let t=Se(a,n,o);if(null==t&&(t=""),o.useFormattedValues)t=t.toString();else{t=ke(t,r[n],{...o,isDateOnly:"date-only"===a.schema.findFieldByName(n)?.type})}e[n]=t}n.push(e)}return n}(r,w,m,i);o.write(y,t,f,((e,r)=>{const o=F.length>1?`${l}_${t.toLowerCase()}`:l;h.file(`${o}.shp`,r.shp.buffer,{binary:!0}),h.file(`${o}.shx`,r.shx.buffer,{binary:!0}),h.file(`${o}.dbf`,r.dbf.buffer,{binary:!0}),h.file(`${o}.prj`,s)}))})));const S=await h.generateAsync({type:"uint8array"});return new Blob([S.buffer],{type:"text/plain"})}export async function kmlToLayerExtensions(e){T("blob",e).isNotMissing();const a=await e.text(),m=(new DOMParser).parseFromString(a,"application/xml"),u=function(e,a){const f={};m.querySelectorAll("Style").forEach((e=>{f[`#${e.id}`]=e}));const y=e.querySelector(":scope > name")?.textContent??"Unnamed Container",d=new F({layer:new s({title:y})});e.querySelectorAll(":scope > Placemark").forEach(((e,s)=>{const m=e.querySelector("name")?.textContent??"",u=e.querySelector("description")?.textContent??"",p=function(e){const t=e.querySelector("Point > coordinates"),a=e.querySelector("LineString > coordinates"),i=e.querySelector("Polygon");if(t?.textContent){const[e]=parseKMLCoordinates(t.textContent.replace(/ /g,""));return new r(e)}if(a?.textContent)return new n({paths:[parseKMLCoordinates(a.textContent).map((({x:e,y:t})=>[e,t]))]});if(i?.textContent){const e=i.querySelector("outerBoundaryIs > LinearRing > coordinates");if(e?.textContent){const t=[parseKMLCoordinates(e.textContent).map((({x:e,y:t})=>[e,t]))];return new o({rings:t})}}return}(e);if(p){const r=e.querySelector("styleUrl")?.textContent,o=parseKMLSymbol(r?f[r]:e.querySelector("Style"),p.type,a),n=new i({displayField:"name",title:m,source:[new t({geometry:p,attributes:{name:m,description:u,OBJECTID:y+s}})],renderer:new l({symbol:o}),fields:[new c({name:"OBJECTID",type:"oid",alias:"OBJECTID"}),new c({name:"name",type:"string",alias:"name"})]});u&&n.fields.push(new c({name:"description",type:"string",alias:"description",defaultValue:""}));const g=new h({layer:n});d.layerExtensions.add(g)}}));return e.querySelectorAll(":scope > Folder, :scope > Document").forEach(((e,t)=>{const r=u(e,t);d.layerExtensions.add(r)})),d},f=[];return m.querySelectorAll("kml > Document, kml > Folder").forEach(((e,t)=>{const r=u(e,t);r.layerExtensions.length&&f.push(r)})),f}export async function shapefileToUploadData(e,t){T("shapefileData",e).isNotMissing();const o=fe(t),n=new Promise(((t,r)=>{const o=new FileReader;o.onload=()=>{t(o.result)},o.onerror=()=>{r(o.error)},o.readAsArrayBuffer(e)})),[{default:i},{default:s}]=await Promise.all([import("jszip"),import("shpjs")]),c=await n,l=await i.loadAsync(new Uint8Array(c)),m=l.filter((()=>!0)).map((e=>e.name));let u,f=m.filter((e=>e.endsWith(".shp"))).map((e=>e.substring(0,e.length-4)));if(f=function(e){if(!e.length)return[];let t=e[0];const r=t.match(ne);return r?(t=r[1],e.filter((e=>{const r=e.match(ne);return r&&r[1]===t}))):[t]}(f),m.some((e=>e.endsWith(".prj")))&&!f.every((e=>m.includes(`${e}.prj`))))throw new Error("Shapefile zip must contain the same prj file for each separate shapefile");await Promise.all(m.filter((e=>e.endsWith(".prj"))).map((async e=>{const t=await l.file(e).async("string");if(u){if(t!==u)throw new Error("Shapefile zip must contain the same prj file for each separate shapefile")}else u=t})));let y=[],d=[];for(const e of f){if(!m.includes(`${e}.shx`)||!m.includes(`${e}.dbf`))throw new Error("Shapefile must contain shp, shx, and dbf files.");const t=await l.file(`${e}.shp`).async("uint8array"),r=s.parseShp(t),o=await l.file(`${e}.dbf`).async("uint8array"),n=s.parseDbf(o);if(n.length!==r.length)throw new Error("Shapefile must contain shp, shx, and dbf files.");y=y.concat(n),d=d.concat(r)}const p=await Promise.all(d.map((e=>async function(e,t){const o=O(e)?function(e){T("geometry.coordinates",e.type).matches("Point"),T("geometry.coordinates",e.coordinates).satisfies((e=>"number"==typeof e||Array.isArray(e)));const[t,o,n]=e.coordinates,i=new r({x:t,y:o,spatialReference:a.WGS84});if(Array.isArray(n)){const[e,t]=n;!e&&!t||e?i.z=e:i.m=t}return i}(e):await W(e);if(t){let e;try{const r=await z(t);e=new a({wkid:C(r)})}catch{}e||(e=new a({wkt:t})),o.spatialReference=e}return o}(e,u)))),g=geometryTypeHeaders[GeometryFormat.ARCGIS_JSON][0][0];y.forEach(((e,t)=>e[g]=JSON.stringify(p[t].toJSON())));return{data:function(e){const t=e.map((e=>Object.keys(e))).reduce(((e,t)=>e.concat(t.filter((t=>!e.includes(t))))),[]);return[t.map((e=>({raw:e}))),...e.map((e=>t.map((t=>({raw:e[t]})))))]}(y),...o,includeHeaderRow:!0,geometryFormat:GeometryFormat.ARCGIS_JSON,geometryFields:[g],inSpatialReference:p[0]?.spatialReference??a.fromJSON({wkid:4326})}}export async function shapefileToFeatureSet(e,t){T("shapefileData",e).isNotMissing();const r=fe(t);return uploadDataToFeatureSet(await shapefileToUploadData(e,r))}export function getDefaultSymbol(e,t){const r=e%8;let o=["#FFDBFF","#88D6FF","#7F9FC3","#FF8200","#F34A53","#76E3B9","#E7BFFF","#FFC467"][r],n=["#EF3786","#005A99","#2D5070","#790C00","#4C0000","#006543","#6244A9","#904200"][r];if(Math.floor(e/8)%2!=0){const e=o;o=n,n=e}switch(t){case"point":case"multipoint":return new d({color:o,outline:{color:n}});case"polyline":return new y({color:o,width:"2"});case"polygon":return new f({color:o,outline:{color:n}});case"mesh":return new m({symbolLayers:[{type:"fill",material:{color:o},outline:{color:n}}]})}}function le(e){return{escapeFormulaChars:!0,outFields:["*"],generatePrimaryKey:!1,locale:w,detectOid:!e?.primaryKeyField}}function me(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...le(e)},...e}}function ue(e){return{...{includeHeaderRow:!0,inSpatialReference:a.WGS84,...le(e)},...e}}function fe(e){return{...{...le(e)},...e}}function ye(e,t){return t.geometryFormat===GeometryFormat.XYZ?["x","y","z"]:t.geometryFormat===GeometryFormat.XY?["x","y"]:t.geometryFormat===GeometryFormat.LAT_LON?["latitude","longitude"]:t.geometryFormat===GeometryFormat.NONE?[]:["geometry"]}function de(e,t,r,o){const n=r.fields.filter((e=>"oid"===e.type)).map((e=>e.name)).toArray();if(o)return n;if(t&&!t.includes("*"))return t.filter((e=>!n.includes(e)));{const t=r.fields.filter((e=>"oid"!==e.type)).map((e=>e.name)).toArray();let o=[];for(const r of e)for(const e of r.attributes.keys())t.includes(e)||n.includes(e)||o.includes(e)||o.push(e);return o=o.sort(),t.concat(o)}}function pe(e){if(!e)return["*"];const t=e.featureSettings.popupTemplate?.content;return(Array.isArray(t)?t.find((e=>"fields"===e.type))?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName)):void 0)??e.featureSettings.popupTemplate?.fieldInfos?.filter((e=>e.visible))?.map((e=>e.fieldName))??["*"]}async function ge(e,t){const r=await we(e,t.outSpatialReference);if(t.geometryFormat===GeometryFormat.XYZ){if(!r)return["","",""];if(!O(r))throw new Error("Cannot use geometry format XYZ with non-point geometry");return[r.x,r.y,r.z]}if(t.geometryFormat===GeometryFormat.XY){if(!r)return["",""];if(!O(r))throw new Error("Cannot use geometry format XY with non-point geometry");return[r.x,r.y]}if(t.geometryFormat===GeometryFormat.LAT_LON){if(!r)return["",""];if(!O(r))throw new Error("Cannot use geometry format LAT_LONG with non-point geometry");return[r.y,r.x]}return t.geometryFormat===GeometryFormat.ARCGIS_JSON?r?[JSON.stringify(r.toJSON())]:[""]:t.geometryFormat===GeometryFormat.WKT?r?[await H(r)]:[""]:t.geometryFormat===GeometryFormat.GEO_JSON?r?[JSON.stringify(await J(r))]:[""]:[]}async function we(e,t){return e?.spatialReference&&!e.spatialReference.equals(t)&&t?(await $([e],t))[0]:e}function he(e,t){const r=[t.delimiter,Q,"\r","\n",t.rowDelimiter];if(t.alwaysQuote||r.some((t=>e.includes(t)))){const t=e.replace(new RegExp(Q,"g"),`${Q}${Q}`);return`${Q}${t}${Q}`}return e}function Fe(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e){const r=t.numberFormat||I.ROUND_TRIP;return v(r,e)}if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime().toString():b({format:t.dateFormat,timeZone:"UTC",isDateOnly:t.isDateOnly},e);if(e instanceof S)return j({format:t.timeFormat},e)}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function Se(e,t,r){if(r.useFormattedValues||Te(e,t))return e.presentableAttributes.get(t)??e.attributes.get(t);const o=e.schema.findFieldByName(t)?.type;if(null!=o)switch(o){case"date":case"date-only":case"timestamp-offset":{const r=R(e.attributes.get(t));if(!isNaN(r.getTime()))return r;break}case"time-only":{const r=P(e.attributes.get(t));if(r.isValid)return r;break}}return e.attributes.get(t)??e.presentableAttributes.get(t)}function Te(e,t){return!!q(t,e.schema.typeIdField)||("coded-value"===e.type?.domains?.[t]?.type||"coded-value"===e.schema.findFieldByName(t)?.domain?.type)}function Ne(e){for(const t of V)if(e.startsWith(t))return`\t${e}`;return e}function Oe(e,t,r){const o=e.startsWith(Q),n=e.endsWith(Q);if(o&&!n||!o&&n)throw new Error(`Detected invalid CSV: Missing opening or closing quote for value at row:${t} column:${r}`);const a=o?e.substring(1,e.length-1):e;let i=-1;return De(a,Q,((e,o)=>{if(o===a.length)return!0;if(i<0){if(o!==a.length)return i=o,!0}else if(o===i+1)return i=-1,!0;throw new Error(`Detected invalid CSV: Non-escaped quote for value at row:${t} column:${r}`)})),a.replace(new RegExp(`${Q}${Q}`,"g"),Q)}function De(e,t,r){let o,n=!1,a=0,i=0;for(;o=e.indexOf(t,a),!(o<0);){for(let t=a;t<o;)e.substring(t).startsWith(Q)?(n=!n,t+=1):t++;const s=o+t.length;if(!n){const e=r(i,o);if(i=s,!e)return}a=s}r(i,e.length)}async function Me(e,t){const r=JSON.parse(e),o=(await import("@arcgis/core/geometry/support/jsonUtils")).fromJSON(r);return r.spatialReference||(o.spatialReference=t),o}async function xe(e,t){const r=await W(JSON.parse(e));return r.spatialReference=t,r}async function Ee(e,t){const r=await B(e);return r.spatialReference=t,r}function Re(e,t,r){const o=r?[r]:geometryTypeHeaders[t];for(const t of o){const r=t.map((t=>e.map((e=>e?.raw?.toString().trim().toLowerCase())).indexOf(t.trim().toLowerCase())));if(r.every((e=>e>=0)))return r}}async function be(e,t){return(await Promise.all(e.map((async(e,r)=>{const o=e?.raw;if("string"==typeof o&&""!==o)try{return await t(o,void 0),r}catch{return}})))).find((e=>void 0!==e))}function Ae(e,t,r){return"inv"===t?"string"==typeof e?parseFloat(e.replaceAll(",","")):e:C({locale:t,format:r},e)}async function Ge(e,t,r){const o=r?e.slice(1):e;if(r){const r=Re(e[0],GeometryFormat.ARCGIS_JSON);if(void 0!==r)for(const[e,n]of se){try{await _e(r[0],n,t,o)}catch{continue}return[e,[r[0]]]}const n=[GeometryFormat.XYZ,GeometryFormat.XY,GeometryFormat.LAT_LON];for(const t of n){const r=Re(e[0],t);if(void 0!==r)return[t,r]}}for(const[e,r]of se){const n=await be(o[0],r);if(void 0!==n){try{await _e(n,r,t,o)}catch{continue}return[e,[n]]}}return[GeometryFormat.NONE,[]]}async function _e(e,t,r,o){return{columnIndices:[e],geometries:await Promise.all(o.map((t=>t[e])).map((e=>{if(e?.raw)return t(e.raw.toString(),r)})))}}function Ie(e,t,r){let o=!1,n=!0,a=!0,i=!0,s=!0,c=!0;const l=new Set,{data:m,includeHeaderRow:u,dateFormat:f,timeFormat:y,primaryKeyField:d,locale:p}=e,g=u?m[0]:[],w=u?m.slice(1):m;for(const e of w){const r=e[t];r?.raw&&(l.add(r.raw),o=!0,n&&(n=Y(r.raw,p)||Number.isNaN(r.raw)),a&&(a=r.raw instanceof Date||R(f||A,r.raw)!==G),s&&(s=R(f||re,r.formatted)!==G),i&&(i=r.raw instanceof S||P(y||U,r.raw).isValid),c&&(c=P({format:y||oe,locale:"en"},r.formatted).isValid))}const h=l.size===w.length;return d&&g[t]?.raw===d||r&&o&&h&&n?"esriFieldTypeOID":o&&c?"esriFieldTypeTimeOnly":o&&s?"esriFieldTypeDate":o&&n?"esriFieldTypeDouble":o&&i?"esriFieldTypeTimeOnly":o&&a?"esriFieldTypeDate":"esriFieldTypeString"}async function Le(e,t,r){const{escapeFormulaChars:o,locale:n,numberFormat:a,dateFormat:i,timeFormat:s}=r;if("esriFieldTypeDouble"===t.type||"esriFieldTypeOID"===t.type)return"number"==typeof e?e:e?Ae(e,n,a):null;if("esriFieldTypeDate"===t.type){if(e instanceof Date)return e.getTime();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new Date(t.y,t.m-1,t.d,t.H,t.M,t.S).getTime():void 0}return""===e?null:R({locale:n,format:i},e).getTime()}if("esriFieldTypeTimeOnly"===t.type){if(e instanceof S)return e.toString();if(e instanceof Date)return new S(e).toString();if("number"==typeof e){const t=(await import("xlsx")).SSF.parse_date_code(e);return t?new S(`${t.H.toString().padStart(2,"0")}:${t.M.toString().padStart(2,"0")}:${t.S.toString().padStart(2,"0")}`).toString():void 0}return""===e?null:P({locale:n,format:s},e).toString()}const c=e?.toString()??"";if(o&&c.startsWith("\t"))for(const e of V)if(c.length>1&&c.charAt(1)===e)return c.substring(1);return c}function Ce(e){switch(e){case _.DATE_SHORT:return"dd/MM/yyyy";case _.DATE_LONG:return"MMMM d, yyyy";case _.TIME_SHORT:return"h:mm AM/PM";case _.TIME_LONG:return"h:mm:ss AM/PM";case _.DATE_TIME_SHORT:case _.DEFAULT:return"MMM d yyyy h:mm AM/PM";case _.DATE_TIME_LONG:return"MMMM d yyyy h:mm AM/PM";case _.FULL:return"dddd, MMMM d yyyy h:mm AM/PM";case _.ISO_8601:case _.ROUND_TRIP:return'yyyy-MM-dd"T"HH:mm:ss';default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("z")&&ie().warn("Warning: Excel will not recognize timezone format 'z', 'zz', or 'zzz'"),t.includes("h")&&!t.includes("AM/PM")&&ie().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function ve(e){switch(e){case _.DATE_SHORT:return"dd/MM/yyyy";case _.DATE_LONG:return"MMMM d, yyyy";case _.DATE_TIME_SHORT:case _.DEFAULT:return"MMM d yyyy";case _.DATE_TIME_LONG:return"MMMM d yyyy";case _.FULL:return"dddd, MMMM d yyyy";case _.ISO_8601:case _.ROUND_TRIP:return"yyyy-MM-dd";default:return e.replace(/TtZzHhmSsUua/g,"")}}function Pe(e){switch(e){case L.TIME_SHORT:return"h:mm AM/PM";case L.TIME_LONG:return"h:mm:ss AM/PM";case L.ISO_8601:case L.ROUND_TRIP:return"HH:mm:ss";default:{const t=e.replace(/tt/g,"AM/PM");return t.includes("h")&&!t.includes("AM/PM")&&ie().warn("Warning: Excel will interpret 'h' as 'H' if the format does not have an AM/PM designator"),t}}}function je(e){switch(e){case I.ACCOUNTING:return'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)';case I.CURRENCY:return'"$"#,##0.00';case I.FIXED_POINT:case I.DEFAULT:return"0.0000";case I.NUMBER:return"#,##0.0000";case I.PERCENT:return"0%";case I.ROUND_TRIP:return"0.00000";default:return e}}function Ue(e,t){if(null==e)return"";if(!t.useFormattedValues){if("number"==typeof e)return e;if(e instanceof Date)return"timestamp"===t.dateFormat?e.getTime():e;if(e instanceof S)return e.toDate()}let r=e.toString();return t.escapeFormulaChars&&(r=Ne(r)),r}function $e(e,t){return 3===e.length&&!t.hasZ&&t.hasM?[e[0],e[1],void 0,e[2]]:e}function He(e,t){return e.map((e=>$e(e,t)))}function Be(e,t){return e.map((e=>He(e,t)))}function ke(e,t,r){switch(t){case ae.NUMBER:return e instanceof Date?e.getTime():C(e);case ae.STRING:return e instanceof Date?b({format:r.dateFormat??_.ROUND_TRIP,timeZone:"UTC",isDateOnly:r.isDateOnly},e):e instanceof S?j({format:r.timeFormat??L.ROUND_TRIP},e):"number"==typeof e?v(r.numberFormat??I.DEFAULT,e):e.toString();case ae.BOOLEAN:return!!e;case ae.DATE:return R(e);default:return e.toString()}}
@@ -62,15 +62,15 @@ same tick that the property changed. Otherwise, it will be invoked in a
62
62
  future tick.</p>
63
63
  </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IHandle</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Deprecated"><h4 class="tsd-anchor-link"><a id="Deprecated" class="tsd-anchor"></a>Deprecated<a href="#Deprecated" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>See <a href="../functions/support_observableUtils.observable-1.html" class="tsd-kind-function">support/observableUtils!observable</a> and
64
64
  <a href="../functions/support_observableUtils.watch.html" class="tsd-kind-function">support/observableUtils!watch</a> instead.</p>
65
- </div></div><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/support_Serializable.Serializable.html">Serializable</a>.<a href="../interfaces/support_Serializable.Serializable.html#_watchProperty">_watchProperty</a></p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="_iterator_" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>[iterator]</span><a href="#_iterator_" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="_iterator_._iterator_-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">[iterator]</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IterableIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><a href="#_iterator_._iterator_-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns each element in the set in insertion order.</p>
66
- </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IterableIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of Set.[iterator]</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="add" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>add</span><a href="#add" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="add.add-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">add</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">feature</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">this</span><a href="#add.add-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">feature</span>: <a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-2" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-2" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.add</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="addMany" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>add<wbr/>Many</span><a href="#addMany" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="addMany.addMany-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">add<wbr/>Many</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">features</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">this</span><a href="#addMany.addMany-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">features</span>: <span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-3" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-3" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="assignProperties" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>assign<wbr/>Properties</span><a href="#assignProperties" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="assignProperties.assignProperties-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">assign<wbr/>Properties</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">properties</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#assignProperties.assignProperties-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Sets the values of this object's properties.</p>
65
+ </div></div><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/support_Serializable.Serializable.html">Serializable</a>.<a href="../interfaces/support_Serializable.Serializable.html#_watchProperty">_watchProperty</a></p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="_iterator_" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>[iterator]</span><a href="#_iterator_" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="_iterator_._iterator_-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">[iterator]</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">SetIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">&gt;</span><a href="#_iterator_._iterator_-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns each element in the set in insertion order.</p>
66
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">SetIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of Set.[iterator]</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="add" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>add</span><a href="#add" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="add.add-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">add</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">feature</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">this</span><a href="#add.add-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">feature</span>: <a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-2" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-2" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.add</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="addMany" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>add<wbr/>Many</span><a href="#addMany" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="addMany.addMany-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">add<wbr/>Many</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">features</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">this</span><a href="#addMany.addMany-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">features</span>: <span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">this</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-3" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-3" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="assignProperties" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>assign<wbr/>Properties</span><a href="#assignProperties" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="assignProperties.assignProperties-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">assign<wbr/>Properties</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">properties</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#assignProperties.assignProperties-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Sets the values of this object's properties.</p>
67
67
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">properties</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/data_FeatureSet.FeatureSetProperties.html" class="tsd-signature-type tsd-kind-interface">FeatureSetProperties</a><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>An object containing property values to set.</p>
68
68
  </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/support_Serializable.Serializable.html">Serializable</a>.<a href="../interfaces/support_Serializable.Serializable.html#assignProperties">assignProperties</a></p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="assignPropertiesAsync" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>assign<wbr/>Properties<wbr/>Async</span><a href="#assignPropertiesAsync" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="assignPropertiesAsync.assignPropertiesAsync-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">assign<wbr/>Properties<wbr/>Async</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">properties</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#assignPropertiesAsync.assignPropertiesAsync-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Sets the properties for this item.</p>
69
69
  <p>This version will also await any asynchronous logic that is needed to set
70
70
  the properties.</p>
71
71
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">properties</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/data_FeatureSet.FeatureSetProperties.html" class="tsd-signature-type tsd-kind-interface">FeatureSetProperties</a><span class="tsd-signature-symbol">&gt;</span></span><div class="tsd-comment tsd-typography"><p>A plain object containing property values to set, keyed
72
72
  by property name.</p>
73
- </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/support_Serializable.Serializable.html">Serializable</a>.<a href="../interfaces/support_Serializable.Serializable.html#assignPropertiesAsync">assignPropertiesAsync</a></p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="clear" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>clear</span><a href="#clear" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="clear.clear-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">clear</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#clear.clear-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-4" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-4" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.clear</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete</span><a href="#delete" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="delete.delete-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">delete</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">feature</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#delete.delete-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">feature</span>: <a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-5" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-5" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.delete</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="deleteMany" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete<wbr/>Many</span><a href="#deleteMany" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="deleteMany.deleteMany-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">delete<wbr/>Many</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">features</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#deleteMany.deleteMany-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">features</span>: <span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-6" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-6" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="entries" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>entries</span><a href="#entries" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="entries.entries-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">entries</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IterableIterator</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-symbol">[</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><a href="#entries.entries-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IterableIterator</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-symbol">[</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-7" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-7" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.entries</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="findById" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>find<wbr/>By<wbr/>Id</span><a href="#findById" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="findById.findById-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">find<wbr/>By<wbr/>Id</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">id</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><a href="#findById.findById-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Finds a feature in the set with the given ID, or undefined if there is no
73
+ </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/support_Serializable.Serializable.html">Serializable</a>.<a href="../interfaces/support_Serializable.Serializable.html#assignPropertiesAsync">assignPropertiesAsync</a></p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="clear" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>clear</span><a href="#clear" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="clear.clear-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">clear</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#clear.clear-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-4" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-4" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.clear</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="delete" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete</span><a href="#delete" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="delete.delete-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">delete</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">feature</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#delete.delete-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">feature</span>: <a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-5" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-5" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.delete</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="deleteMany" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>delete<wbr/>Many</span><a href="#deleteMany" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="deleteMany.deleteMany-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">delete<wbr/>Many</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">features</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#deleteMany.deleteMany-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">features</span>: <span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-6" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-6" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="entries" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>entries</span><a href="#entries" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="entries.entries-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">entries</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">SetIterator</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-symbol">[</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">&gt;</span><a href="#entries.entries-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">SetIterator</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-symbol">[</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-7" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-7" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.entries</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="findById" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>find<wbr/>By<wbr/>Id</span><a href="#findById" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="findById.findById-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">find<wbr/>By<wbr/>Id</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">id</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><a href="#findById.findById-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Finds a feature in the set with the given ID, or undefined if there is no
74
74
  match.</p>
75
75
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">id</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The ID to search for.</p>
76
76
  </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a></h4><div class="tsd-comment tsd-typography"></div></li></ul></section><section class="tsd-panel tsd-member"><a id="findByPrimaryKey" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>find<wbr/>By<wbr/>Primary<wbr/>Key</span><a href="#findByPrimaryKey" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="findByPrimaryKey.findByPrimaryKey-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">find<wbr/>By<wbr/>Primary<wbr/>Key</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">primaryKey</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><a href="#findByPrimaryKey.findByPrimaryKey-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Finds a feature in the set with the given primary key, or undefined if
@@ -101,7 +101,7 @@ undefined.</p>
101
101
  the given serialization mode will be returned.</p>
102
102
  </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="../types/support_Serializable.PropertyDefs.html" class="tsd-signature-type tsd-kind-type-alias">PropertyDefs</a><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/data_FeatureSet.FeatureSetProperties.html" class="tsd-signature-type tsd-kind-interface">FeatureSetProperties</a><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/support_Serializable.Serializable.html">Serializable</a>.<a href="../interfaces/support_Serializable.Serializable.html#getSerializableProperties">getSerializableProperties</a></p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="has" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>has</span><a href="#has" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="has.has-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">has</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">feature</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#has.has-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Indicates whether or not the set contains the specified element.</p>
103
103
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">feature</span>: <a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a></span><div class="tsd-comment tsd-typography"><p>The element to test for.</p>
104
- </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of Set.has</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="keys" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>keys</span><a href="#keys" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="keys.keys-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">keys</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IterableIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><a href="#keys.keys-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IterableIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-9" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-9" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.keys</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="notifyChange" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span class="deprecated">notify<wbr/>Change</span><a href="#notifyChange" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="notifyChange.notifyChange-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">notify<wbr/>Change</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">propertyKey</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#notifyChange.notifyChange-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Indicates that the given property might have changed, causing observers
104
+ </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of Set.has</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="keys" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>keys</span><a href="#keys" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="keys.keys-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">keys</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">SetIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">&gt;</span><a href="#keys.keys-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">SetIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-9" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-9" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.keys</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="notifyChange" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span class="deprecated">notify<wbr/>Change</span><a href="#notifyChange" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="notifyChange.notifyChange-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">notify<wbr/>Change</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">propertyKey</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#notifyChange.notifyChange-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Indicates that the given property might have changed, causing observers
105
105
  to be notified if it did.</p>
106
106
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">propertyKey</span>: <span class="tsd-signature-keyword">keyof </span><a href="data_FeatureSet.FeatureSet.html" class="tsd-signature-type tsd-kind-class">FeatureSet</a></span><div class="tsd-comment tsd-typography"><p>The property that changed (or might have changed).</p>
107
107
  </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Deprecated"><h4 class="tsd-anchor-link"><a id="Deprecated-3" class="tsd-anchor"></a>Deprecated<a href="#Deprecated-3" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>See <a href="../functions/support_observableUtils.observable-1.html" class="tsd-kind-function">support/observableUtils!observable</a> and
@@ -122,7 +122,7 @@ set.</p>
122
122
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">serializeMode</span>: <a href="../types/support_Serializable.SerializeMode.html" class="tsd-signature-type tsd-kind-type-alias">SerializeMode</a><span class="tsd-signature-symbol"> = &quot;all&quot;</span></span><div class="tsd-comment tsd-typography"><p>If specified, only properties that are appropriate
123
123
  for the given mode are returned. Otherwise, all properties will be
124
124
  serialized.</p>
125
- </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="../interfaces/data_FeatureSet.FeatureSetProperties.html" class="tsd-signature-type tsd-kind-interface">FeatureSetProperties</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/support_Serializable.Serializable.html">Serializable</a>.<a href="../interfaces/support_Serializable.Serializable.html#toJSON">toJSON</a></p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="values" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>values</span><a href="#values" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="values.values-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">values</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IterableIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><a href="#values.values-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IterableIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-10" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-10" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.values</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="watch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span class="deprecated">watch</span><a href="#watch" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="watch.watch-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">watch</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">path</span>, <span class="tsd-kind-parameter">callback</span>, <span class="tsd-kind-parameter">sync</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IHandle</span><a href="#watch.watch-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Watches for property changes.</p>
125
+ </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="../interfaces/data_FeatureSet.FeatureSetProperties.html" class="tsd-signature-type tsd-kind-interface">FeatureSetProperties</a></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/support_Serializable.Serializable.html">Serializable</a>.<a href="../interfaces/support_Serializable.Serializable.html#toJSON">toJSON</a></p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="values" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>values</span><a href="#values" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="values.values-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">values</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">SetIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">&gt;</span><a href="#values.values-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">SetIterator</span><span class="tsd-signature-symbol">&lt;</span><a href="data_Feature.Feature.html" class="tsd-signature-type tsd-kind-class">Feature</a><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-Inherit Doc"><h4 class="tsd-anchor-link"><a id="Inherit Doc-10" class="tsd-anchor"></a>Inherit Doc<a href="#Inherit Doc-10" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4></div></div><aside class="tsd-sources"><p>Implementation of Set.values</p></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="watch" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span class="deprecated">watch</span><a href="#watch" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="watch.watch-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">watch</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">path</span>, <span class="tsd-kind-parameter">callback</span>, <span class="tsd-kind-parameter">sync</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">IHandle</span><a href="#watch.watch-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Watches for property changes.</p>
126
126
  </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span></span><div class="tsd-comment tsd-typography"><p>The property (or list of properties) to watch for changes.</p>
127
127
  </div><div class="tsd-comment tsd-typography"></div></li><li><span><span class="tsd-kind-parameter">callback</span>: <a href="../types/utilities_watch.WatchCallback.html" class="tsd-signature-type tsd-kind-type-alias">WatchCallback</a></span><div class="tsd-comment tsd-typography"><p>The callback to invoke when the property has changed.
128
128
  This callback will always be invoked <em>asynchronously</em>.</p>