// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("./ArcadeDate ./deepClone ./Dictionary ./executionError ./ImmutableArray ../chunks/languageUtils ../core/sql/DateOnly ../core/sql/TimeOnly ../geometry/Geometry ../geometry/Point ../geometry/support/jsonUtils ../layers/graphics/featureConversionUtils ../layers/support/FieldsIndex".split(" "),function(h,w,q,l,n,g,r,t,u,v,p,x,y){class k{constructor(){this.arcadeDeclaredClass="esri.arcade.Feature";this._layer=this.attributes=this._geometry=this._optimizedGeomDefinition=null;this._fieldTypesFixed= !0;this.contextTimeZone=this.fieldsIndex=null;this.immutable=!0;this._fieldsToFixDataTypes=null;this.immutable=!0}static createFromGraphic(a,c){const b=new k;b.contextTimeZone=c??null;b._geometry=null!=a.geometry?a.geometry:null;b.attributes=void 0===a.attributes?{}:null===a.attributes?{}:a.attributes;a._sourceLayer?(b._layer=a._sourceLayer,b._fieldTypesFixed=!1):a._layer?(b._layer=a._layer,b._fieldTypesFixed=!1):a.layer&&"fields"in a.layer?(b._layer=a.layer,b._fieldTypesFixed=!1):a.sourceLayer&& "fields"in a.sourceLayer&&(b._layer=a.sourceLayer,b._fieldTypesFixed=!1);b._layer&&!b._fieldTypesFixed&&(b.fieldsIndex=this.hydrateFieldsIndex(b._layer));return b}static createFromArcadeFeature(a){if(a instanceof k){var c=new k;c._fieldTypesFixed=a._fieldTypesFixed;c.attributes=a.attributes;c._geometry=a._geometry;c._optimizedGeomDefinition=a._optimizedGeomDefinition;a._layer&&(c._layer=a._layer);c.fieldsIndex=a.fieldsIndex;c.contextTimeZone=a.contextTimeZone;return c}c={};for(const b of a.keys())c[b]= a.field(b);return k.createFromGraphicLikeObject(a.geometry(),c,a.fullSchema(),a.contextTimeZone)}static createFromOptimisedFeature(a,c,b){const d=new k;d._geometry=a.geometry?{geometry:a.geometry}:null;d._optimizedGeomDefinition=b;d.attributes=a.attributes||{};d._layer=c;d._fieldTypesFixed=!1;return d}static createFromArcadeDictionary(a,c){const b=new k;b.attributes=a.field("attributes");null!==b.attributes?b.attributes instanceof q?(b.attributes=b.attributes.attributes,null===b.attributes&&(b.attributes= {})):b.attributes={}:b.attributes={};b._geometry=a.field("geometry");null!==b._geometry&&(b._geometry instanceof q?b._geometry=k.parseGeometryFromDictionary(b._geometry,c):b._geometry instanceof u||(b._geometry=null));return b}static createFromGraphicLikeObject(a,c,b=null,d){const f=new k;f.contextTimeZone=d??null;null===c&&(c={});f.attributes=c;f._geometry=null!=a?a:null;f._layer=b;f._layer&&(f._fieldTypesFixed=!1,f.fieldsIndex=this.hydrateFieldsIndex(f._layer));return f}static hydrateFieldsIndex(a){return null=== a?null:g.isFeatureSet(a)?a.getFieldsIndex():a.fieldsIndex?a.fieldsIndex:y.fromLayerJSON({datesInUnknownTimezone:a.datesInUnknownTimezone,fields:a.fields,timeInfo:a.timeInfo,editFieldsInfo:a.editFieldsInfo,dateFieldsTimeReference:a.dateFieldsTimeReference??{timeZone:"UTC",respectsDaylightSaving:!1}})}repurposeFromGraphicLikeObject(a,c,b=null){null===c&&(c={});this.attributes=c;this._geometry=a??null;this._fieldTypesFixed=(this._layer=b)?!1:!0}castToText(a=!1){let c="";!1===this._fieldTypesFixed&&this._fixFieldTypes(); for(const b in this.attributes){""!==c&&(c+=",");const d=this.attributes[b];null==d?c+=JSON.stringify(b)+":null":g.isBoolean(d)||g.isNumber(d)||g.isString(d)?c+=JSON.stringify(b)+":"+JSON.stringify(d):d instanceof u?c+=JSON.stringify(b)+":"+g.toStringExplicit(d):d instanceof t.TimeOnly||d instanceof r.DateOnly?c+=`${JSON.stringify(b)}:${JSON.stringify(d.toString())}`:d instanceof n?c+=JSON.stringify(b)+":"+g.toStringExplicit(d,null,a):Array.isArray(d)?c+=JSON.stringify(b)+":"+g.toStringExplicit(d, null,a):d instanceof h.ArcadeDate?c=a?c+(JSON.stringify(b)+":"+JSON.stringify(d.getTime())):c+(JSON.stringify(b)+":"+d.stringify()):null!==d&&"object"===typeof d&&void 0!==d.castToText&&(c+=JSON.stringify(b)+":"+d.castToText(a))}return'{"geometry":'+(null===this.geometry()?"null":g.toStringExplicit(this.geometry()))+',"attributes":{'+c+"}}"}_fixFieldTypes(){if(this._fieldsToFixDataTypes&&0