/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.24/esri/copyright.txt for details. */ import r from"../config.js";import e from"../core/has.js";import{isSome as o}from"../core/maybe.js";import{isAborted as t}from"../core/promiseUtils.js";import{getOrigin as n,hasSameOrigin as s,urlToObject as i,getAppUrl as c}from"../core/urlUtils.js";function a(r,n,s=!1,i){return new Promise(((c,a)=>{if(t(i))return void a(m());let u=()=>{l(),a(new Error(`Unable to load ${n}`))},d=()=>{const e=r;l(),c(e)},f=()=>{if(!r)return;const e=r;l(),e.src="",a(m())};const l=()=>{e("esri-image-decode")||(r.removeEventListener("error",u),r.removeEventListener("load",d)),u=null,d=null,r=null,o(i)&&i.removeEventListener("abort",f),f=null,s&&URL.revokeObjectURL(n)};o(i)&&i.addEventListener("abort",f),e("esri-image-decode")?r.decode().then(d,u):(r.addEventListener("error",u),r.addEventListener("load",d))}))}function m(){try{return new DOMException("Aborted","AbortError")}catch{const r=new Error;return r.name="AbortError",r}}function u(e){r.request.crossOriginNoCorsDomains||(r.request.crossOriginNoCorsDomains={});const o=r.request.crossOriginNoCorsDomains;for(let r of e)r=r.toLowerCase(),/^https?:\/\//.test(r)?o[n(r)]=0:(o[n("http://"+r)]=0,o[n("https://"+r)]=0)}function d(e){const o=r.request.crossOriginNoCorsDomains;if(o){let r=n(e);if(r)return r=r.toLowerCase(),!s(r,c())&&o[r]