12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.24/esri/copyright.txt for details.
- */
- import t from"./ImmutableArray.js";import{i as s,a as i,b as e,t as r,c as n,d as a,e as o,f as u,g as c,h as l,j as f,k as h,l as b}from"../chunks/languageUtils.js";import y from"../geometry/Geometry.js";function m(t,r=!1){if(null==t)return null;if(i(t))return u(t);if(s(t))return c(t);if(e(t))return l(t);if(f(t))return h(t);if(b(t)){const s=[];for(const i of t)s.push(m(i,r));return s}const n=new d;n.immutable=!1;for(const s of Object.keys(t)){const i=t[s];void 0!==i&&n.setField(s,m(i,r))}return n.immutable=r,n}class d{constructor(t){this.declaredClass="esri.arcade.Dictionary",this.attributes=null,this.plain=!1,this.immutable=!0,this.attributes=t instanceof d?t.attributes:null==t?{}:t}field(t){const s=t.toLowerCase(),i=this.attributes[t];if(void 0!==i)return i;for(const e in this.attributes)if(e.toLowerCase()===s)return this.attributes[e];throw new Error("Field not Found : "+t)}setField(t,s){if(this.immutable)throw new Error("Dictionary is Immutable");const i=t.toLowerCase();if(void 0===this.attributes[t]){for(const t in this.attributes)if(t.toLowerCase()===i)return void(this.attributes[t]=s);this.attributes[t]=s}else this.attributes[t]=s}hasField(t){const s=t.toLowerCase();if(void 0!==this.attributes[t])return!0;for(const i in this.attributes)if(i.toLowerCase()===s)return!0;return!1}keys(){let t=[];for(const s in this.attributes)t.push(s);return t=t.sort(),t}castToText(){let n="";for(const a in this.attributes){""!==n&&(n+=",");const o=this.attributes[a];null==o?n+=JSON.stringify(a)+":null":s(o)||i(o)||e(o)?n+=JSON.stringify(a)+":"+JSON.stringify(o):o instanceof y||o instanceof t||o instanceof Array?n+=JSON.stringify(a)+":"+r(o):o instanceof Date?n+=JSON.stringify(a)+":"+JSON.stringify(o):null!==o&&"object"==typeof o&&void 0!==o.castToText&&(n+=JSON.stringify(a)+":"+o.castToText())}return"{"+n+"}"}static convertObjectToArcadeDictionary(t,s=!0){const i=new d;i.immutable=!1;for(const e in t){const s=t[e];void 0!==s&&i.setField(e.toString(),m(s))}return i.immutable=s,i}static convertJsonToArcade(t,s=!1){return m(t,s)}castAsJson(t=null){const s={};for(let i in this.attributes){const e=this.attributes[i];void 0!==e&&(t?.keyTranslate&&(i=t.keyTranslate(i)),s[i]=n(e,t))}return s}async castDictionaryValueAsJsonAsync(t,s,i,e=null,r){const n=await a(i,e,r);return t[s]=n,n}async castAsJsonAsync(t=null,s=null){const i={},e=[];for(let r in this.attributes){const a=this.attributes[r];s?.keyTranslate&&(r=s.keyTranslate(r)),void 0!==a&&(o(a)||a instanceof y||a instanceof Date?i[r]=n(a,s):e.push(this.castDictionaryValueAsJsonAsync(i,r,a,t,s)))}return e.length>0&&await Promise.all(e),i}}export{d as default};
|