/** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */import{notEqual}from"@lit";export const TaskStatus={INITIAL:0,PENDING:1,COMPLETE:2,ERROR:3},initialState=Symbol();export class Task{get taskComplete(){return this._taskComplete||(this.status===TaskStatus.PENDING?this._taskComplete=new Promise((t,s)=>{this._resolveTaskComplete=t,this._rejectTaskComplete=s}):this.status===TaskStatus.ERROR?this._taskComplete=Promise.reject(this._error):this._taskComplete=Promise.resolve(this._value)),this._taskComplete}constructor(t,s,e){this._callId=0,this.status=TaskStatus.INITIAL,(this._host=t).addController(this);const a=typeof s=="object"?s:{task:s,args:e};this._task=a.task,this._argsFn=a.args,this._argsEqual=a.argsEqual??shallowArrayEquals,this._onComplete=a.onComplete,this._onError=a.onError,this.autoRun=a.autoRun??!0,"initialValue"in a&&(this._value=a.initialValue,this.status=TaskStatus.COMPLETE,this._previousArgs=this._getArgs?.())}hostUpdate(){this.autoRun===!0&&this._performTask()}hostUpdated(){this.autoRun==="afterUpdate"&&this._performTask()}_getArgs(){if(this._argsFn===void 0)return;const t=this._argsFn();if(!Array.isArray(t))throw new Error("The args function must return an array");return t}async _performTask(){const t=this._getArgs(),s=this._previousArgs;this._previousArgs=t,t===s||t===void 0||s!==void 0&&this._argsEqual(s,t)||await this.run(t)}async run(t){let s,e;t??=this._getArgs(),this._previousArgs=t,this.status===TaskStatus.PENDING?this._abortController?.abort():(this._taskComplete=void 0,this._resolveTaskComplete=void 0,this._rejectTaskComplete=void 0),this.status=TaskStatus.PENDING,this.autoRun==="afterUpdate"?queueMicrotask(()=>this._host.requestUpdate()):this._host.requestUpdate();const a=++this._callId;this._abortController=new AbortController;let r=!1;try{s=await this._task(t,{signal:this._abortController.signal})}catch(t2){r=!0,e=t2}if(this._callId===a){if(s===initialState)this.status=TaskStatus.INITIAL;else{if(r===!1){try{this._onComplete?.(s)}catch{}this.status=TaskStatus.COMPLETE,this._resolveTaskComplete?.(s)}else{try{this._onError?.(e)}catch{}this.status=TaskStatus.ERROR,this._rejectTaskComplete?.(e)}this._value=s,this._error=e}this._host.requestUpdate()}}abort(t){this.status===TaskStatus.PENDING&&this._abortController?.abort(t)}get value(){return this._value}get error(){return this._error}render(t){switch(this.status){case TaskStatus.INITIAL:return t.initial?.();case TaskStatus.PENDING:return t.pending?.();case TaskStatus.COMPLETE:return t.complete?.(this.value);case TaskStatus.ERROR:return t.error?.(this.error);default:throw new Error(`Unexpected status: ${this.status}`)}}}export const shallowArrayEquals=(t,s)=>t===s||t.length===s.length&&t.every((t2,e)=>!notEqual(t2,s[e])); //# sourceMappingURL=/cdn/shop/t/1163/assets/vendor-lit-task@1.0.0.js.map?v=161451583795467622951760566329