@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
1 lines • 13.5 kB
JavaScript
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[5335],{8303(t,e,i){i.d(e,{A:()=>b});var s=i(5482),r=i(92602),a=i(70333),n=i(11254),o=i(60999),l=i(49186),h=i(53966),u=i(97768),c=i(74887),d=i(84952),p=i(91429),_=i(77548),f=i(20655),m=i(80812),g=i(41318),y=i(10407),z=i(36005),v=i(43937);const b=t=>{const e=t;let b=class extends e{constructor(){super(...arguments),this.resourceReferences={portalItem:null,paths:[]},this.userHasEditingPrivileges=!0,this.userHasFullEditingPrivileges=!1,this.userHasUpdateItemPrivileges=!1}destroy(){this.portalItem=(0,u.pR)(this.portalItem),this.resourceReferences.portalItem=null,this.resourceReferences.paths.length=0}get portalItem(){return this._get("portalItem")}set portalItem(t){t!==this._get("portalItem")&&(this.removeOrigin("portal-item"),this._set("portalItem",t))}readPortalItem(t,e,i){if(e.itemId)return new m.default({id:e.itemId,portal:i?.portal})}writePortalItem(t,e){t?.id&&(e.itemId=t.id)}async loadFromPortal(t,e){if(this.portalItem?.id)try{const{load:s}=await i.e(1204).then(i.bind(i,41204));return(0,c.Te)(e),await s({instance:this,supportedTypes:t.supportedTypes,validateItem:t.validateItem,supportsData:t.supportsData,layerModuleTypeMap:t.layerModuleTypeMap,populateGroupLayer:t.populateGroupLayer},e)}catch(t){throw(0,c.zf)(t)||h.A.getLogger(this).warn(`Failed to load layer (${this.title}, ${this.id}) portal item (${this.portalItem.id})\n ${t}`),t}}async finishLoadEditablePortalLayer(t){this._set("userHasEditingPrivileges",await this._fetchUserHasEditingPrivileges(t).catch(t=>((0,c.QP)(t),!0)))}async setUserPrivileges(t,e){if(!r.A.userPrivilegesApplied)return this.finishLoadEditablePortalLayer(e);if(this.url)try{const{features:{edit:i,fullEdit:s},content:{updateItem:r}}=await this._fetchUserPrivileges(t,e);this._set("userHasEditingPrivileges",i),this._set("userHasFullEditingPrivileges",s),this._set("userHasUpdateItemPrivileges",r)}catch(t){(0,c.QP)(t)}}async _fetchUserPrivileges(t,e){let i=this.portalItem;if(!t||!i||!i.loaded||i.sourceUrl)return this._fetchFallbackUserPrivileges(e);const s=!a.id?.findCredential(this.url),r=t===i.id;if(r&&i.portal.user)return this._getUserPrivileges(i,s);let n,o;if(r)n=i.portal.url;else try{n=await(0,_.wI)(this.url,e)}catch(t){(0,c.QP)(t)}if(!n||!(0,d.b8)(n,i.portal.url))return this._fetchFallbackUserPrivileges(e);try{const t=null!=e?e.signal:null;o=await(a.id?.getCredential(`${n}/sharing`,{prompt:!1,signal:t}))}catch(t){(0,c.QP)(t)}const l=!0,h=!1,u=!1;if(!o)return{features:{edit:l,fullEdit:h},content:{updateItem:u}};try{if(r?await i.reload():(i=new m.default({id:t,portal:{url:n}}),await i.load(e)),i.portal.user)return this._getUserPrivileges(i,s)}catch(t){(0,c.QP)(t)}return{features:{edit:l,fullEdit:h},content:{updateItem:u}}}_getUserPrivileges(t,e){const i=(0,y.It)(t);return e&&(i.features.edit=!0),i}async _fetchFallbackUserPrivileges(t){let e=!0;try{e=await this._fetchUserHasEditingPrivileges(t)}catch(t){(0,c.QP)(t)}return{features:{edit:e,fullEdit:!1},content:{updateItem:!1}}}async _fetchUserHasEditingPrivileges(t){const e=this.url?a.id?.findCredential(this.url):null;if(!e)return!0;const i=E.credential===e?E.user:await this._fetchEditingUser(t);return E.credential=e,E.user=i,null==i?.privileges||i.privileges.includes("features:user:edit")}async _fetchEditingUser(t){const e=this.portalItem?.portal?.user;if(e)return e;const i=a.id?.findServerInfo(this.url??"");if(!i?.owningSystemUrl)return null;const s=`${i.owningSystemUrl}/sharing/rest`,r=f.A.getDefault();if(r&&r.loaded&&(0,d.S8)(r.restUrl)===(0,d.S8)(s))return r.user;const l=`${s}/community/self`,h=null!=t?t.signal:null,u=await(0,o.Ke)((0,n.A)(l,{authMode:"no-prompt",query:{f:"json"},signal:h}));return u.ok?g.A.fromJSON(u.value.data):null}read(t,e){e&&(e.layer=this),super.read(t,e)}write(t,e){const i=e?.portal,s=this.portalItem?.id&&(this.portalItem.portal||f.A.getDefault());return i&&s&&!(0,d.ut)(s.restUrl,i.restUrl)?(e.messages&&e.messages.push(new l.A("layer:cross-portal",`The layer '${this.title} (${this.id})' cannot be persisted because it refers to an item on a different portal than the one being saved to. To save, set layer.portalItem to null or save to the same portal as the item associated with the layer`,{layer:this})),null):super.write(t,{...e,layer:this})}};return(0,s.Cg)([(0,p.MZ)({type:m.default})],b.prototype,"portalItem",null),(0,s.Cg)([(0,z.w)("web-document","portalItem",["itemId"])],b.prototype,"readPortalItem",null),(0,s.Cg)([(0,v.K)("web-document","portalItem",{itemId:{type:String}})],b.prototype,"writePortalItem",null),(0,s.Cg)([(0,p.MZ)({clonable:!1})],b.prototype,"resourceReferences",void 0),(0,s.Cg)([(0,p.MZ)({type:Boolean,readOnly:!0})],b.prototype,"userHasEditingPrivileges",void 0),(0,s.Cg)([(0,p.MZ)({type:Boolean,readOnly:!0})],b.prototype,"userHasFullEditingPrivileges",void 0),(0,s.Cg)([(0,p.MZ)({type:Boolean,readOnly:!0})],b.prototype,"userHasUpdateItemPrivileges",void 0),b=(0,s.Cg)([(0,p.$K)("esri.layers.mixins.PortalLayer")],b),b},E={credential:null,user:null}},10407(t,e,i){i.d(e,{It:()=>p,LG:()=>n,OM:()=>h,Sm:()=>u,Y:()=>o,bK:()=>l,mm:()=>d,sQ:()=>c});var s=i(91218),r=i(16930),a=i(28735);function n(t,e){if(!o(t,e)){const i=t.typeKeywords;i?i.push(e):t.typeKeywords=[e]}}function o(t,e){return!!t.typeKeywords?.includes(e)}function l(t){return o(t,d.HOSTED_SERVICE)}function h(t,e){const i=t.typeKeywords;if(i){const t=i.indexOf(e);t>-1&&i.splice(t,1)}}function u(t,e,i){i?n(t,e):h(t,e)}async function c(t){const e=t.clone().normalize();let i;if(e.length>1)for(const t of e)i?t.width>i.width&&(i=t):i=t;else i=e[0];return async function(t){const e=t.spatialReference;if(e.isWGS84)return t.clone();if(e.isWebMercator)return(0,a.ci)(t);const i=r.A.WGS84;return await(0,s.initializeProjection)(e,i),(0,s.project)(t,i)}(i)}const d={CHARTS:"Charts",DYNAMIC:"Dynamic",DEVELOPER_BASEMAP:"DeveloperBasemap",GROUP_LAYER_MAP:"Map",HOSTED_SERVICE:"Hosted Service",JSAPI:"ArcGIS API for JavaScript",LOCAL_SCENE:"ViewingMode-Local",METADATA:"Metadata",MULTI_LAYER:"Multilayer",ORIENTED_IMAGERY_LAYER:"OrientedImageryLayer",SINGLE_LAYER:"Singlelayer",SUBTYPE_GROUP_LAYER:"SubtypeGroupLayer",SUBTYPE_GROUP_TABLE:"SubtypeGroupTable",TABLE:"Table",TILED_IMAGERY:"Tiled Imagery"};function p(t){const{portal:e,isOrgItem:i,itemControl:s}=t,r=e.user?.privileges;let a=!r||r.includes("features:user:edit"),n=!!i&&!!r?.includes("features:user:fullEdit");const o="update"===s||"admin"===s;return o?n=a=!0:n&&(a=!0),{features:{edit:a,fullEdit:n},content:{updateItem:o}}}},60999(t,e,i){i.d(e,{DZ:()=>_,Ke:()=>p,Tj:()=>u,UT:()=>f,aD:()=>g,jJ:()=>h});var s=i(5482),r=i(69622),a=i(97768),n=i(74887),o=i(10107),l=i(64108);function h(t,e,i){return(0,n.Lx)(t.map((t,s)=>e.apply(i,[t,s])))}async function u(t,e,i){return(await(0,n.Lx)(t.map((t,s)=>e.apply(i,[t,s])))).map(t=>t.value)}function c(t){return{ok:!0,value:t}}function d(t){return{ok:!1,error:t}}async function p(t){if(null==t)return{ok:!1,error:new Error("no promise provided")};try{return c(await t)}catch(t){return d(t)}}async function _(t){try{return c(await t)}catch(t){return(0,n.QP)(t),d(t)}}function f(t,e){return new m(t,e)}let m=class extends r.A{get value(){return null!=(t=this._result)&&!0===t.ok?t.value:null;var t}get error(){return null!=(t=this._result)&&!1===t.ok?t.error:null;var t}get finished(){return null!=this._result}constructor(t,e){super({}),this._result=null,this._abortHandle=null,this.abort=()=>{this._abortController=(0,a.DC)(this._abortController)},this.remove=this.abort,this._abortController=new AbortController;const{signal:i}=this._abortController;this.promise=t(i),this.promise.then(t=>{this._result=c(t),this._cleanup()},t=>{this._result=d(t),this._cleanup()}),this._abortHandle=(0,n.u7)(e,this.abort)}normalizeCtorArgs(){return{}}destroy(){this.abort()}_cleanup(){this._abortHandle=(0,a.xt)(this._abortHandle),this._abortController=null}};(0,s.Cg)([(0,o.MZ)()],m.prototype,"value",null),(0,s.Cg)([(0,o.MZ)()],m.prototype,"error",null),(0,s.Cg)([(0,o.MZ)()],m.prototype,"finished",null),(0,s.Cg)([(0,o.MZ)()],m.prototype,"promise",void 0),(0,s.Cg)([(0,o.MZ)()],m.prototype,"_result",void 0),m=(0,s.Cg)([(0,l.$)("esri.core.asyncUtils.ReactiveTask")],m);class g{constructor(){this._sequence=Promise.resolve()}async acquire(){let t;this._sequence=new Promise(e=>{t=this._sequence.then(()=>e,()=>e)});const e=await t;return{[Symbol.dispose]:e}}async run(t){const e={stack:[],error:void 0,hasError:!1};try{return(0,s.mS)(e,await this.acquire(),!1),await t()}catch(t){e.error=t,e.hasError=!0}finally{(0,s.hk)(e)}}}},66344(t,e,i){i.d(e,{q:()=>o});const s=!!(0,i(44208).A)("esri-tests-disable-gpu-memory-measurements");Symbol.iterator;class r{get size(){return this._size}constructor(t=10485760){this._maxSize=t,this._db=new Map,this._size=0,this._hit=0,this._miss=0,this._users=new Map,this._sizeLimits=new Map}destroy(){this.clearAll(),this._sizeLimits.clear(),this._users.clear(),this._db.clear()}register(t){this._users.set(t.id.slice(0,-1),t)}deregister(t){this.clear(t),this._sizeLimits.delete(t),this._users.delete(t.id.slice(0,-1))}get maxSize(){return this._maxSize}set maxSize(t){this._maxSize=Math.max(t,-1),this._checkSize()}getSize(t,e){const i=this._db.get(t.id+e);return i?.size??0}put(t,e,i,r,n){e=t.id+e;const o=this._db.get(e);if(o&&(this._size-=o.size,t.size-=o.size,this._db.delete(e),o.entry!==i&&this._notifyRemove(e,o.entry,o.size,0)),r>this._maxSize)return void this._notifyRemove(e,i,r,0);if(void 0===i)return void console.warn("Refusing to cache undefined entry ");if(!r||r<0)return s||console.warn(`Refusing to cache entry with size ${r} for key ${e}`),void this._notifyRemove(e,i,0,0);const l=1+Math.max(n,-4)- -3;this._db.set(e,new a(i,r,l)),this._size+=r,t.size+=r,this._checkSize()}updateSize(t,e){e=t.id+e;const i=this._db.get(e);if(!i)return;this._size-=i.size,t.size-=i.size;let s=i.entry.usedMemory;for(;s>this._maxSize;){const t=this._notifyRemove(e,i.entry,s,1);if(!(null!=t&&t>0))return void this._db.delete(e);s=t}i.size=s,this._size+=s,t.size+=s,this._checkSize()}pop(t,e){e=t.id+e;const i=this._db.get(e);if(i)return this._size-=i.size,t.size-=i.size,this._db.delete(e),++this._hit,i.entry;++this._miss}get(t,e){e=t.id+e;const i=this._db.get(e);if(void 0!==i)return this._db.delete(e),i.lives=i.lifetime,this._db.set(e,i),++this._hit,i.entry;++this._miss}peek(t,e){const i=this._db.get(t.id+e);return i?++this._hit:++this._miss,i?.entry}get performanceInfo(){const t={Size:Math.round(this._size/1048576)+"/"+Math.round(this._maxSize/1048576)+"MB","Hit rate":Math.round(100*this._getHitRate())+"%",Entries:this._db.size.toString()},e={},i=new Array;this._db.forEach((t,s)=>{const r=t.lifetime;i[r]=(i[r]||0)+t.size,this._users.forEach(i=>{const{id:r,name:a}=i;if(s.startsWith(r)){const i=e[a]||0;e[a]=i+t.size}})});const s={};this._users.forEach(t=>{const i=t.name;if("hitRate"in t&&"number"==typeof t.hitRate&&!isNaN(t.hitRate)&&t.hitRate>0){const r=e[i]||0;e[i]=r,s[i]=Math.round(100*t.hitRate)+"%"}else s[i]="0%"});const r=Object.keys(e);r.sort((t,i)=>e[i]-e[t]),r.forEach(i=>t[i]=Math.round(e[i]/2**20)+"MB / "+s[i]);for(let e=i.length-1;e>=0;--e){const s=i[e];s&&(t["Priority "+(e+-3-1)]=Math.round(s/this._size*100)+"%")}return t}resetStats(){this._hit=this._miss=0,this._users.forEach(t=>t.resetHitRate())}clear(t){const e=t.id;this._db.forEach((t,i)=>{i.startsWith(e)&&(this._size-=t.size,this._db.delete(i),this._notifyRemove(i,t.entry,t.size,0))}),t.size=0}clearAll(){this._db.forEach((t,e)=>this._notifyRemove(e,t.entry,t.size,0)),this._users.forEach(t=>t.size=0),this._size=0,this._db.clear()}*values(t){for(const[e,i]of this._db)e.startsWith(t.id)&&(yield i.entry)}_getHitRate(){return this._hit/(this._hit+this._miss)}_notifyRemove(t,e,i,s){const r=this._users.get(t.split(n)[0])?.removeFunc,a=r?.(e,s,i);return"number"==typeof a?a:null}_checkSize(){this._sizeLimits.forEach((t,e)=>this._checkSizeLimits(t,e)),this._checkSizeLimits(this.maxSize)}setMaxSize(t,e){null==e||e<=0?this._sizeLimits.delete(t):this._sizeLimits.set(t,e)}_checkSizeLimits(t,e){const i=e??this;if(i.size<=t)return;const s=e?.id;let r=!0;for(;r;){r=!1;for(const[a,o]of this._db)if(0===o.lifetime&&(!s||a.startsWith(s))){const s=e??this._users.get(a.split(n)[0]);if(this._purgeItem(a,o,s),i.size<=.9*t)return;r||=this._db.has(a)}}for(const[r,a]of this._db)if(!s||r.startsWith(s)){const s=e??this._users.get(r.split(n)[0]);if(this._purgeItem(r,a,s),i.size<=.9*t)return}}_purgeItem(t,e,i){if(this._db.delete(t),e.lives<=1){this._size-=e.size,i&&(i.size-=e.size);const s=this._notifyRemove(t,e.entry,e.size,1);null!=s&&s>0&&(this._size+=s,i&&(i.size+=s),e.lives=e.lifetime,e.size=s,this._db.set(t,e))}else--e.lives,this._db.set(t,e)}}new r(0);class a{constructor(t,e,i){this.entry=t,this.size=e,this.lifetime=i,this.lives=i}}const n=":";class o{constructor(t,e){this.removeFunc=e,this._storage=new r,this.id="",this.name="",this.size=0,this._storage.maxSize=t,this._storage.register(this)}destroy(){this._storage.deregister(this),this._storage.destroy(),this._storage=null}put(t,e,i=1){this._storage.put(this,t,e,i,1)}pop(t){return this._storage.pop(this,t)}get(t){return this._storage.get(this,t)}clear(){this._storage.clearAll()}get maxSize(){return this._storage.maxSize}set maxSize(t){this._storage.maxSize=t}resetHitRate(){}}},78553(t,e,i){i.d(e,{D:()=>a,p:()=>r});var s=i(56507);function r(t){const e=(0,s.Vr)(100*(1-t));return Math.max(0,Math.min(e,100))}function a(t){const e=1-t/100;return Math.max(0,Math.min(e,1))}},83027(t,e,i){i.d(e,{h:()=>s});const s=i(29953).ho}}]);