/*! All material copyright Esri, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
v5.0.0-next.123 */
import{h as o}from"./2JRQECC7.js";var n=Symbol(),h=class{get taskComplete(){return this.t||(this.i===1?this.t=new Promise(((t,i)=>{this.o=t,this.h=i})):this.i===3?this.t=Promise.reject(this.l):this.t=Promise.resolve(this.u)),this.t}constructor(t,i,e){this.p=0,this.i=0,(this._=t).addController(this);let r=typeof i=="object"?i:{task:i,args:e};this.v=r.task,this.j=r.args,this.m=r.argsEqual??u,this.k=r.onComplete,this.A=r.onError,this.autoRun=r.autoRun??!0,"initialValue"in r&&(this.u=r.initialValue,this.i=2,this.O=this.T?.())}hostUpdate(){this.autoRun===!0&&this.S()}hostUpdated(){this.autoRun==="afterUpdate"&&this.S()}T(){if(this.j===void 0)return;let t=this.j();if(!Array.isArray(t))throw Error("The args function must return an array");return t}async S(){let t=this.T(),i=this.O;this.O=t,t===i||t===void 0||i!==void 0&&this.m(i,t)||await this.run(t)}async run(t){let i,e;t??=this.T(),this.O=t,this.i===1?this.q?.abort():(this.t=void 0,this.o=void 0,this.h=void 0),this.i=1,this.autoRun==="afterUpdate"?queueMicrotask((()=>this._.requestUpdate())):this._.requestUpdate();let r=++this.p;this.q=new AbortController;let a=!1;try{i=await this.v(t,{signal:this.q.signal})}catch(l){a=!0,e=l}if(this.p===r){if(i===n)this.i=0;else{if(a===!1){try{this.k?.(i)}catch{}this.i=2,this.o?.(i)}else{try{this.A?.(e)}catch{}this.i=3,this.h?.(e)}this.u=i,this.l=e}this._.requestUpdate()}}abort(t){this.i===1&&this.q?.abort(t)}get value(){return this.u}get error(){return this.l}get status(){return this.i}render(t){switch(this.i){case 0:return t.initial?.();case 1:return t.pending?.();case 2:return t.complete?.(this.value);case 3:return t.error?.(this.error);default:throw Error("Unexpected status: "+this.i)}}},u=(s,t)=>s===t||s.length===t.length&&s.every(((i,e)=>!o(i,t[e])));function q(s){return s!=null}function v(s){return c(s)&&p(s)}function c(s){return s!=null&&typeof s=="object"&&"type"in s&&s.type==="feature"}function p(s){return s?.type==="feature"&&s.source?.type==="feature-layer"}export{h as a,q as b,v as c};
