@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.86 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{clone as t}from"../lang.js";import{originIdNum as s,OriginId as i}from"./PropertyOrigin.js";class r{constructor(){this._propertyOriginMap=new Map,this._originStores=new Array(s),this._values=new Map,this.multipleOriginsSupported=!0}clone(e){const o=new r,n=this._originStores[i.DEFAULTS];n&&n.forEach(((s,r)=>{o.set(r,t(s),i.DEFAULTS)}));for(let r=i.SERVICE;r<s;r++){const s=this._originStores[r];s&&s.forEach(((s,i)=>{e&&e.has(i)||o.set(i,t(s),r)}))}return o}get(t,s){const i=void 0===s?this._values:this._originStores[s];return i?i.get(t):void 0}keys(t){const s=null==t?this._values:this._originStores[t];return s?[...s.keys()]:[]}set(t,s,r=i.USER){let e=this._originStores[r];if(e||(e=new Map,this._originStores[r]=e),e.set(t,s),!this._values.has(t)||this._propertyOriginMap.get(t)<=r){const i=this._values.get(t);return this._values.set(t,s),this._propertyOriginMap.set(t,r),i!==s}return!1}delete(t,s=i.USER){const r=this._originStores[s];if(!r)return;const e=r.get(t);if(r.delete(t),this._values.has(t)&&this._propertyOriginMap.get(t)===s){this._values.delete(t);for(let i=s-1;i>=0;i--){const s=this._originStores[i];if(s&&s.has(t)){this._values.set(t,s.get(t)),this._propertyOriginMap.set(t,i);break}}}return e}has(t,s){const i=void 0===s?this._values:this._originStores[s];return!!i&&i.has(t)}revert(t,s){for(;s>0&&!this.has(t,s);)--s;const i=this._originStores[s],r=i?.get(t),e=this._values.get(t);return this._values.set(t,r),this._propertyOriginMap.set(t,s),e!==r}originOf(t){return this._propertyOriginMap.get(t)||i.DEFAULTS}isAtOrigin(t,s){return this.has(t,s)&&this.originOf(t)===s}isBelowOrigin(t,s){return!this.has(t)||this.originOf(t)<s}forEach(t){this._values.forEach(t)}}export{r as default};