{"version":3,"file":"loaders.mjs","sources":["../../src/base/Signal.ts","../../src/base/parseUri.ts","../../src/LoaderResource.ts","../../src/base/AsyncQueue.ts","../../src/Loader.ts","../../src/AppLoaderPlugin.ts","../../src/TextureLoader.ts","../../src/base/encodeBinary.ts","../../src/middleware/parsing.ts","../../src/ParsingLoader.ts","../../src/index.ts"],"sourcesContent":["/* jshint -W097 */\n\n/**\n * @memberof PIXI\n */\nexport class SignalBinding\n{\n _fn: any;\n _once: boolean;\n _next: SignalBinding;\n _prev: SignalBinding;\n _owner: Signal;\n _thisArg: any;\n\n /**\n * SignalBinding constructor.\n * @constructs SignalBinding\n * @param {Function} fn - Event handler to be called.\n * @param {boolean} [once=false] - Should this listener be removed after dispatch\n * @param {object} [thisArg] - The context of the callback function.\n * @api private\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(fn: CbType, once = false, thisArg: any)\n {\n this._fn = fn;\n this._once = once;\n this._thisArg = thisArg;\n this._next = this._prev = this._owner = null;\n }\n\n detach(): boolean\n {\n if (this._owner === null) return false;\n this._owner.detach(this);\n\n return true;\n }\n}\n\n/**\n * @param self\n * @param node\n * @private\n */\nfunction _addSignalBinding(self: Signal, node: SignalBinding)\n{\n if (!self._head)\n {\n self._head = node;\n self._tail = node;\n }\n else\n {\n self._tail._next = node;\n node._prev = self._tail;\n self._tail = node;\n }\n\n node._owner = self;\n\n return node;\n}\n\n/**\n * @memberof PIXI\n */\nexport class Signal void>\n{\n _head: SignalBinding;\n _tail: SignalBinding;\n\n /**\n * MiniSignal constructor.\n * @example\n * let mySignal = new Signal();\n * let binding = mySignal.add(onSignal);\n * mySignal.dispatch('foo', 'bar');\n * mySignal.detach(binding);\n */\n constructor()\n {\n this._head = this._tail = undefined;\n }\n\n /**\n * Return an array of attached SignalBinding.\n * @param {boolean} [exists=false] - We only need to know if there are handlers.\n * @returns {PIXI.SignalBinding[] | boolean} Array of attached SignalBinding or Boolean if called with exists = true\n * @api public\n */\n handlers(exists = false): Array> | boolean\n {\n let node = this._head;\n\n if (exists) return !!node;\n\n const ee = [];\n\n while (node)\n {\n ee.push(node);\n node = node._next;\n }\n\n return ee;\n }\n\n /**\n * Return true if node is a SignalBinding attached to this MiniSignal\n * @param {PIXI.SignalBinding} node - Node to check.\n * @returns {boolean} True if node is attache to mini-signal\n */\n has(node: SignalBinding): boolean\n {\n if (!(node instanceof SignalBinding))\n {\n throw new Error('MiniSignal#has(): First arg must be a SignalBinding object.');\n }\n\n return node._owner === this;\n }\n\n /**\n * Dispaches a signal to all registered listeners.\n * @param {...any} args\n * @returns {boolean} Indication if we've emitted an event.\n */\n dispatch(...args: any[]): boolean\n {\n let node = this._head;\n\n if (!node) return false;\n\n while (node)\n {\n if (node._once) this.detach(node);\n node._fn.apply(node._thisArg, args);\n node = node._next;\n }\n\n return true;\n }\n\n /**\n * Register a new listener.\n * @param {Function} fn - Callback function.\n * @param {object} [thisArg] - The context of the callback function.\n * @returns {PIXI.SignalBinding} The SignalBinding node that was added.\n */\n add(fn: CbType, thisArg: any = null): SignalBinding\n {\n if (typeof fn !== 'function')\n {\n throw new Error('MiniSignal#add(): First arg must be a Function.');\n }\n\n return _addSignalBinding(this, new SignalBinding(fn, false, thisArg));\n }\n\n /**\n * Register a new listener that will be executed only once.\n * @param {Function} fn - Callback function.\n * @param {object} [thisArg] - The context of the callback function.\n * @returns {PIXI.SignalBinding} The SignalBinding node that was added.\n */\n once(fn: CbType, thisArg: any = null): SignalBinding\n {\n if (typeof fn !== 'function')\n {\n throw new Error('MiniSignal#once(): First arg must be a Function.');\n }\n\n return _addSignalBinding(this, new SignalBinding(fn, true, thisArg));\n }\n\n /**\n * Remove binding object.\n * @param {PIXI.SignalBinding} node - The binding node that will be removed.\n * @returns {Signal} The instance on which this method was called.\n @api public */\n detach(node: SignalBinding): this\n {\n if (!(node instanceof SignalBinding))\n {\n throw new Error('MiniSignal#detach(): First arg must be a SignalBinding object.');\n }\n if (node._owner !== this) return this; // todo: or error?\n\n if (node._prev) node._prev._next = node._next;\n if (node._next) node._next._prev = node._prev;\n\n if (node === this._head)\n { // first node\n this._head = node._next;\n if (node._next === null)\n {\n this._tail = null;\n }\n }\n else if (node === this._tail)\n { // last node\n this._tail = node._prev;\n this._tail._next = null;\n }\n\n node._owner = null;\n\n return this;\n }\n\n /**\n * Detach all listeners.\n * @returns {Signal} The instance on which this method was called.\n */\n detachAll(): this\n {\n let node = this._head;\n\n if (!node) return this;\n\n this._head = this._tail = null;\n\n while (node)\n {\n node._owner = null;\n node = node._next;\n }\n\n return this;\n }\n}\n","/**\n * function from npm package `parseUri`, converted to TS to avoid leftpad incident\n * @param {string} str\n * @param [opts] - options\n * @param {boolean} [opts.strictMode] - type of parser\n */\nexport function parseUri(str: string, opts: { strictMode?: boolean }): any\n{\n opts = opts || {};\n\n const o = {\n // eslint-disable-next-line max-len\n key: ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'],\n q: {\n name: 'queryKey',\n parser: /(?:^|&)([^&=]*)=?([^&]*)/g\n },\n parser: {\n // eslint-disable-next-line max-len\n strict: /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?((((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,\n // eslint-disable-next-line max-len\n loose: /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/\n }\n };\n\n const m = o.parser[opts.strictMode ? 'strict' : 'loose'].exec(str);\n const uri: any = {};\n let i = 14;\n\n while (i--) uri[o.key[i]] = m[i] || '';\n\n uri[o.q.name] = {};\n uri[o.key[12]].replace(o.q.parser, (_t0: any, t1: any, t2: any) =>\n {\n if (t1) uri[o.q.name][t1] = t2;\n });\n\n return uri;\n}\n","import type { Dict } from '@pixi/utils';\nimport { Signal } from './base/Signal';\nimport { parseUri } from './base/parseUri';\nimport type { IBaseTextureOptions, Texture } from '@pixi/core';\n\n// tests if CORS is supported in XHR, if not we need to use XDR\nlet useXdr: boolean;\nlet tempAnchor: any = null;\n\n// some status constants\nconst STATUS_NONE = 0;\nconst STATUS_OK = 200;\nconst STATUS_EMPTY = 204;\nconst STATUS_IE_BUG_EMPTY = 1223;\nconst STATUS_TYPE_OK = 2;\n\n// noop\nfunction _noop(): void { /* empty */ }\n\n/**\n * Quick helper to set a value on one of the extension maps. Ensures there is no\n * dot at the start of the extension.\n * @ignore\n * @param map - The map to set on.\n * @param extname - The extension (or key) to set.\n * @param val - The value to set.\n */\nfunction setExtMap(map: Dict, extname: string, val: number)\n{\n if (extname && extname.indexOf('.') === 0)\n {\n extname = extname.substring(1);\n }\n\n if (!extname)\n {\n return;\n }\n\n map[extname] = val;\n}\n\n/**\n * Quick helper to get string xhr type.\n * @ignore\n * @param xhr - The request to check.\n * @returns The type.\n */\nfunction reqType(xhr: XMLHttpRequest)\n{\n return xhr.toString().replace('object ', '');\n}\n\n/**\n * Metadata for loader resource. It is very messy way to pass options for loader middlewares\n *\n * Can be extended in `GlobalMixins.IResourceMetadata`\n * @memberof PIXI\n */\nexport interface IResourceMetadata extends GlobalMixins.IResourceMetadata, IBaseTextureOptions\n{\n /** The element to use for loading, instead of creating one. */\n loadElement?: HTMLImageElement | HTMLAudioElement | HTMLVideoElement;\n /**\n * Skips adding source(s) to the load element. This\n * is useful if you want to pass in a `loadElement` that you already added load sources to.\n */\n skipSource?: boolean;\n /**\n * The mime type to use for the source element\n * of a video/audio elment. If the urls are an array, you can pass this as an array as well\n * where each index is the mime type to use for the corresponding url index.\n */\n mimeType?: string | string[];\n\n /**\n * Used by BitmapFonts, Spritesheet and CompressedTextures as the options to used for\n * metadata when loading the child image.\n */\n imageMetadata?: IResourceMetadata;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface LoaderResource extends GlobalMixins.LoaderResource, GlobalMixins.ILoaderResource {}\n\n/**\n * Manages the state and loading of a resource and all child resources.\n *\n * Can be extended in `GlobalMixins.LoaderResource`.\n * @memberof PIXI\n */\nclass LoaderResource\n{\n /**\n * Texture reference for loading images and other textures.\n * @type {PIXI.Texture}\n */\n texture?: Texture;\n\n /** used by parsing middleware */\n blob?: Blob;\n\n /**\n * The name of this resource.\n * @readonly\n * @type {string}\n */\n readonly name: string;\n /**\n * The url used to load this resource.\n * @readonly\n * @type {string}\n */\n readonly url: string;\n /**\n * The extension used to load this resource.\n * @readonly\n * @type {string}\n */\n readonly extension: string;\n /** The data that was loaded by the resource. */\n data: any;\n /** Is this request cross-origin? If unset, determined automatically. */\n crossOrigin: string | boolean;\n /**\n * A timeout in milliseconds for the load. If the load takes longer than this time\n * it is cancelled and the load is considered a failure. If this value is set to `0`\n * then there is no explicit timeout.\n * @type {number}\n */\n timeout: number;\n /**\n * The method of loading to use for this resource.\n * @type {PIXI.LoaderResource.LOAD_TYPE}\n */\n loadType: LoaderResource.LOAD_TYPE;\n /**\n * The type used to load the resource via XHR. If unset, determined automatically.\n * @member {string}\n */\n xhrType: string;\n\n /**\n * Extra info for middleware, and controlling specifics about how the resource loads.\n *\n * Note that if you pass in a `loadElement`, the Resource class takes ownership of it.\n * Meaning it will modify it as it sees fit.\n * @type {PIXI.IResourceMetadata}\n */\n metadata: IResourceMetadata;\n /**\n * The error that occurred while loading (if any).\n * @readonly\n * @member {Error}\n */\n error: Error;\n /**\n * The XHR object that was used to load this resource. This is only set\n * when `loadType` is `LoaderResource.LOAD_TYPE.XHR`.\n * @readonly\n */\n xhr: XMLHttpRequest;\n\n private xdr: any;\n /**\n * The child resources this resource owns.\n * @type {PIXI.LoaderResource[]}\n */\n readonly children: LoaderResource[];\n /**\n * The resource type.\n * @readonly\n * @type {PIXI.LoaderResource.TYPE}\n */\n type: LoaderResource.TYPE;\n /**\n * The progress chunk owned by this resource.\n * @readonly\n * @member {number}\n */\n progressChunk: number;\n /**\n * Dispatched when the resource beings to load.\n *\n * The callback looks like {@link LoaderResource.OnStartSignal}.\n * @type {PIXI.Signal}\n */\n onStart: Signal;\n /**\n * Dispatched each time progress of this resource load updates.\n * Not all resources types and loader systems can support this event\n * so sometimes it may not be available. If the resource\n * is being loaded on a modern browser, using XHR, and the remote server\n * properly sets Content-Length headers, then this will be available.\n *\n * The callback looks like {@link LoaderResource.OnProgressSignal}.\n * @type {PIXI.Signal}\n */\n onProgress: Signal;\n /**\n * Dispatched once this resource has loaded, if there was an error it will\n * be in the `error` property.\n *\n * The callback looks like {@link LoaderResource.OnCompleteSignal}.\n * @type {PIXI.Signal}\n */\n onComplete: Signal;\n /**\n * Dispatched after this resource has had all the *after* middleware run on it.\n *\n * The callback looks like {@link LoaderResource.OnCompleteSignal}.\n * @type {PIXI.Signal}\n */\n onAfterMiddleware: Signal;\n\n /**\n * The state flags of this resource.\n * @private\n * @member {number}\n */\n private _flags: number;\n\n /**\n * The `dequeue` method that will be used a storage place for the async queue dequeue method\n * used privately by the loader.\n * @private\n * @member {Function}\n */\n _dequeue: any = _noop;\n\n /**\n * Used a storage place for the on load binding used privately by the loader.\n * @private\n * @member {Function}\n */\n _onLoadBinding: any = null;\n\n /**\n * The timer for element loads to check if they timeout.\n * @private\n */\n private _elementTimer = 0;\n\n /**\n * The `complete` function bound to this resource's context.\n * @private\n * @type {Function}\n */\n private _boundComplete: any = null;\n\n /**\n * The `_onError` function bound to this resource's context.\n * @private\n * @type {Function}\n */\n private _boundOnError: any = null;\n\n /**\n * The `_onProgress` function bound to this resource's context.\n * @private\n * @type {Function}\n */\n private _boundOnProgress: any = null;\n\n /**\n * The `_onTimeout` function bound to this resource's context.\n * @private\n * @type {Function}\n */\n private _boundOnTimeout: any = null;\n\n private _boundXhrOnError: any = null;\n private _boundXhrOnTimeout: any = null;\n private _boundXhrOnAbort: any = null;\n private _boundXhrOnLoad: any = null;\n\n /**\n * Sets the load type to be used for a specific extension.\n * @static\n * @param {string} extname - The extension to set the type for, e.g. \"png\" or \"fnt\"\n * @param {PIXI.LoaderResource.LOAD_TYPE} loadType - The load type to set it to.\n */\n static setExtensionLoadType(extname: string, loadType: LoaderResource.LOAD_TYPE): void\n {\n setExtMap(LoaderResource._loadTypeMap, extname, loadType);\n }\n /**\n * Sets the load type to be used for a specific extension.\n * @static\n * @param {string} extname - The extension to set the type for, e.g. \"png\" or \"fnt\"\n * @param {PIXI.LoaderResource.XHR_RESPONSE_TYPE} xhrType - The xhr type to set it to.\n */\n static setExtensionXhrType(extname: string, xhrType: LoaderResource.XHR_RESPONSE_TYPE): void\n {\n setExtMap(LoaderResource._xhrTypeMap, extname, xhrType as any);\n }\n\n /**\n * @param {string} name - The name of the resource to load.\n * @param {string|string[]} url - The url for this resource, for audio/video loads you can pass\n * an array of sources.\n * @param {object} [options] - The options for the load.\n * @param {string|boolean} [options.crossOrigin] - Is this request cross-origin? Default is to\n * determine automatically.\n * @param {number} [options.timeout=0] - A timeout in milliseconds for the load. If the load takes\n * longer than this time it is cancelled and the load is considered a failure. If this value is\n * set to `0` then there is no explicit timeout.\n * @param {PIXI.LoaderResource.LOAD_TYPE} [options.loadType=LOAD_TYPE.XHR] - How should this resource\n * be loaded?\n * @param {PIXI.LoaderResource.XHR_RESPONSE_TYPE} [options.xhrType=XHR_RESPONSE_TYPE.DEFAULT] - How\n * should the data being loaded be interpreted when using XHR?\n * @param {PIXI.LoaderResource.IMetadata} [options.metadata] - Extra configuration for middleware\n * and the Resource object.\n */\n constructor(name: string, url: string | string[], options?: {\n crossOrigin?: string | boolean;\n timeout?: number;\n loadType?: LoaderResource.LOAD_TYPE;\n xhrType?: LoaderResource.XHR_RESPONSE_TYPE;\n metadata?: IResourceMetadata;\n })\n {\n if (typeof name !== 'string' || typeof url !== 'string')\n {\n throw new Error('Both name and url are required for constructing a resource.');\n }\n\n options = options || {};\n\n this._flags = 0;\n\n // set data url flag, needs to be set early for some _determineX checks to work.\n this._setFlag(LoaderResource.STATUS_FLAGS.DATA_URL, url.indexOf('data:') === 0);\n\n this.name = name;\n\n this.url = url;\n\n this.extension = this._getExtension();\n\n this.data = null;\n\n this.crossOrigin = options.crossOrigin === true ? 'anonymous' : options.crossOrigin;\n\n this.timeout = options.timeout || 0;\n\n this.loadType = options.loadType || this._determineLoadType();\n\n // The type used to load the resource via XHR. If unset, determined automatically.\n this.xhrType = options.xhrType;\n\n // Extra info for middleware, and controlling specifics about how the resource loads.\n // Note that if you pass in a `loadElement`, the Resource class takes ownership of it.\n // Meaning it will modify it as it sees fit.\n this.metadata = options.metadata || {};\n\n // The error that occurred while loading (if any).\n this.error = null;\n\n // The XHR object that was used to load this resource. This is only set\n // when `loadType` is `LoaderResource.LOAD_TYPE.XHR`.\n this.xhr = null;\n\n // The child resources this resource owns.\n this.children = [];\n\n // The resource type.\n this.type = LoaderResource.TYPE.UNKNOWN;\n\n // The progress chunk owned by this resource.\n this.progressChunk = 0;\n\n // The `dequeue` method that will be used a storage place for the async queue dequeue method\n // used privately by the loader.\n this._dequeue = _noop;\n\n // Used a storage place for the on load binding used privately by the loader.\n this._onLoadBinding = null;\n\n // The timer for element loads to check if they timeout.\n this._elementTimer = 0;\n\n this._boundComplete = this.complete.bind(this);\n this._boundOnError = this._onError.bind(this);\n this._boundOnProgress = this._onProgress.bind(this);\n this._boundOnTimeout = this._onTimeout.bind(this);\n\n // xhr callbacks\n this._boundXhrOnError = this._xhrOnError.bind(this);\n this._boundXhrOnTimeout = this._xhrOnTimeout.bind(this);\n this._boundXhrOnAbort = this._xhrOnAbort.bind(this);\n this._boundXhrOnLoad = this._xhrOnLoad.bind(this);\n\n // Dispatched when the resource beings to load.\n this.onStart = new Signal();\n\n // Dispatched each time progress of this resource load updates.\n // Not all resources types and loader systems can support this event\n // so sometimes it may not be available. If the resource\n // is being loaded on a modern browser, using XHR, and the remote server\n // properly sets Content-Length headers, then this will be available.\n this.onProgress = new Signal();\n\n // Dispatched once this resource has loaded, if there was an error it will\n // be in the `error` property.\n this.onComplete = new Signal();\n\n // Dispatched after this resource has had all the *after* middleware run on it.\n this.onAfterMiddleware = new Signal();\n }\n\n /**\n * When the resource starts to load.\n * @memberof PIXI.LoaderResource\n * @callback OnStartSignal\n * @param {PIXI.Resource} resource - The resource that the event happened on.\n */\n\n /**\n * When the resource reports loading progress.\n * @memberof PIXI.LoaderResource\n * @callback OnProgressSignal\n * @param {PIXI.Resource} resource - The resource that the event happened on.\n * @param {number} percentage - The progress of the load in the range [0, 1].\n */\n\n /**\n * When the resource finishes loading.\n * @memberof PIXI.LoaderResource\n * @callback OnCompleteSignal\n * @param {PIXI.Resource} resource - The resource that the event happened on.\n */\n\n /**\n * @memberof PIXI.LoaderResource\n * @typedef {object} IMetadata\n * @property {HTMLImageElement|HTMLAudioElement|HTMLVideoElement} [loadElement=null] - The\n * element to use for loading, instead of creating one.\n * @property {boolean} [skipSource=false] - Skips adding source(s) to the load element. This\n * is useful if you want to pass in a `loadElement` that you already added load sources to.\n * @property {string|string[]} [mimeType] - The mime type to use for the source element\n * of a video/audio elment. If the urls are an array, you can pass this as an array as well\n * where each index is the mime type to use for the corresponding url index.\n */\n\n /**\n * Stores whether or not this url is a data url.\n * @readonly\n * @member {boolean}\n */\n get isDataUrl(): boolean\n {\n return this._hasFlag(LoaderResource.STATUS_FLAGS.DATA_URL);\n }\n\n /**\n * Describes if this resource has finished loading. Is true when the resource has completely\n * loaded.\n * @readonly\n * @member {boolean}\n */\n get isComplete(): boolean\n {\n return this._hasFlag(LoaderResource.STATUS_FLAGS.COMPLETE);\n }\n\n /**\n * Describes if this resource is currently loading. Is true when the resource starts loading,\n * and is false again when complete.\n * @readonly\n * @member {boolean}\n */\n get isLoading(): boolean\n {\n return this._hasFlag(LoaderResource.STATUS_FLAGS.LOADING);\n }\n\n /** Marks the resource as complete. */\n complete(): void\n {\n this._clearEvents();\n this._finish();\n }\n\n /**\n * Aborts the loading of this resource, with an optional message.\n * @param {string} message - The message to use for the error\n */\n abort(message: string): void\n {\n // abort can be called multiple times, ignore subsequent calls.\n if (this.error)\n {\n return;\n }\n\n // store error\n this.error = new Error(message);\n\n // clear events before calling aborts\n this._clearEvents();\n\n // abort the actual loading\n if (this.xhr)\n {\n this.xhr.abort();\n }\n else if (this.xdr)\n {\n this.xdr.abort();\n }\n else if (this.data)\n {\n // single source\n if (this.data.src)\n {\n this.data.src = LoaderResource.EMPTY_GIF;\n }\n // multi-source\n else\n {\n while (this.data.firstChild)\n {\n this.data.removeChild(this.data.firstChild);\n }\n }\n }\n\n // done now.\n this._finish();\n }\n\n /**\n * Kicks off loading of this resource. This method is asynchronous.\n * @param {PIXI.LoaderResource.OnCompleteSignal} [cb] - Optional callback to call once the resource is loaded.\n */\n load(cb?: LoaderResource.OnCompleteSignal): void\n {\n if (this.isLoading)\n {\n return;\n }\n\n if (this.isComplete)\n {\n if (cb)\n {\n setTimeout(() => cb(this), 1);\n }\n\n return;\n }\n else if (cb)\n {\n this.onComplete.once(cb);\n }\n\n this._setFlag(LoaderResource.STATUS_FLAGS.LOADING, true);\n\n this.onStart.dispatch(this);\n\n // if unset, determine the value\n if (this.crossOrigin === false || typeof this.crossOrigin !== 'string')\n {\n this.crossOrigin = this._determineCrossOrigin(this.url);\n }\n\n switch (this.loadType)\n {\n case LoaderResource.LOAD_TYPE.IMAGE:\n this.type = LoaderResource.TYPE.IMAGE;\n this._loadElement('image');\n break;\n\n case LoaderResource.LOAD_TYPE.AUDIO:\n this.type = LoaderResource.TYPE.AUDIO;\n this._loadSourceElement('audio');\n break;\n\n case LoaderResource.LOAD_TYPE.VIDEO:\n this.type = LoaderResource.TYPE.VIDEO;\n this._loadSourceElement('video');\n break;\n\n case LoaderResource.LOAD_TYPE.XHR:\n /* falls through */\n default:\n if (typeof useXdr === 'undefined')\n {\n useXdr = !!((globalThis as any).XDomainRequest && !('withCredentials' in (new XMLHttpRequest())));\n }\n if (useXdr && this.crossOrigin)\n {\n this._loadXdr();\n }\n else\n {\n this._loadXhr();\n }\n break;\n }\n }\n\n /**\n * Checks if the flag is set.\n * @param flag - The flag to check.\n * @returns True if the flag is set.\n */\n private _hasFlag(flag: number): boolean\n {\n return (this._flags & flag) !== 0;\n }\n\n /**\n * (Un)Sets the flag.\n * @param flag - The flag to (un)set.\n * @param value - Whether to set or (un)set the flag.\n */\n private _setFlag(flag: number, value: boolean): void\n {\n this._flags = value ? (this._flags | flag) : (this._flags & ~flag);\n }\n\n /** Clears all the events from the underlying loading source. */\n private _clearEvents(): void\n {\n clearTimeout(this._elementTimer);\n\n if (this.data && this.data.removeEventListener)\n {\n this.data.removeEventListener('error', this._boundOnError, false);\n this.data.removeEventListener('load', this._boundComplete, false);\n this.data.removeEventListener('progress', this._boundOnProgress, false);\n this.data.removeEventListener('canplaythrough', this._boundComplete, false);\n }\n\n if (this.xhr)\n {\n if (this.xhr.removeEventListener)\n {\n this.xhr.removeEventListener('error', this._boundXhrOnError, false);\n this.xhr.removeEventListener('timeout', this._boundXhrOnTimeout, false);\n this.xhr.removeEventListener('abort', this._boundXhrOnAbort, false);\n this.xhr.removeEventListener('progress', this._boundOnProgress, false);\n this.xhr.removeEventListener('load', this._boundXhrOnLoad, false);\n }\n else\n {\n this.xhr.onerror = null;\n this.xhr.ontimeout = null;\n this.xhr.onprogress = null;\n this.xhr.onload = null;\n }\n }\n }\n\n /** Finalizes the load. */\n private _finish(): void\n {\n if (this.isComplete)\n {\n throw new Error('Complete called again for an already completed resource.');\n }\n\n this._setFlag(LoaderResource.STATUS_FLAGS.COMPLETE, true);\n this._setFlag(LoaderResource.STATUS_FLAGS.LOADING, false);\n\n this.onComplete.dispatch(this);\n }\n\n /**\n * Loads this resources using an element that has a single source,\n * like an HTMLImageElement.\n * @private\n * @param type - The type of element to use.\n */\n _loadElement(type: string): void\n {\n if (this.metadata.loadElement)\n {\n this.data = this.metadata.loadElement;\n }\n else if (type === 'image' && typeof globalThis.Image !== 'undefined')\n {\n this.data = new Image();\n }\n else\n {\n this.data = document.createElement(type);\n }\n\n if (this.crossOrigin)\n {\n this.data.crossOrigin = this.crossOrigin;\n }\n\n if (!this.metadata.skipSource)\n {\n this.data.src = this.url;\n }\n\n this.data.addEventListener('error', this._boundOnError, false);\n this.data.addEventListener('load', this._boundComplete, false);\n this.data.addEventListener('progress', this._boundOnProgress, false);\n\n if (this.timeout)\n {\n this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout) as any;\n }\n }\n\n /**\n * Loads this resources using an element that has multiple sources,\n * like an HTMLAudioElement or HTMLVideoElement.\n * @param type - The type of element to use.\n */\n private _loadSourceElement(type: string): void\n {\n if (this.metadata.loadElement)\n {\n this.data = this.metadata.loadElement;\n }\n else if (type === 'audio' && typeof globalThis.Audio !== 'undefined')\n {\n this.data = new Audio();\n }\n else\n {\n this.data = document.createElement(type);\n }\n\n if (this.data === null)\n {\n this.abort(`Unsupported element: ${type}`);\n\n return;\n }\n\n if (this.crossOrigin)\n {\n this.data.crossOrigin = this.crossOrigin;\n }\n\n if (!this.metadata.skipSource)\n {\n // support for CocoonJS Canvas+ runtime, lacks document.createElement('source')\n if ((navigator as any).isCocoonJS)\n {\n this.data.src = Array.isArray(this.url) ? this.url[0] : this.url;\n }\n else if (Array.isArray(this.url))\n {\n const mimeTypes = this.metadata.mimeType;\n\n for (let i = 0; i < this.url.length; ++i)\n {\n this.data.appendChild(\n this._createSource(type, this.url[i], Array.isArray(mimeTypes) ? mimeTypes[i] : mimeTypes)\n );\n }\n }\n else\n {\n const mimeTypes = this.metadata.mimeType;\n\n this.data.appendChild(\n this._createSource(type, this.url, Array.isArray(mimeTypes) ? mimeTypes[0] : mimeTypes)\n );\n }\n }\n\n this.data.addEventListener('error', this._boundOnError, false);\n this.data.addEventListener('load', this._boundComplete, false);\n this.data.addEventListener('progress', this._boundOnProgress, false);\n this.data.addEventListener('canplaythrough', this._boundComplete, false);\n\n this.data.load();\n\n if (this.timeout)\n {\n this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout) as any;\n }\n }\n\n /** Loads this resources using an XMLHttpRequest. */\n private _loadXhr(): void\n {\n // if unset, determine the value\n if (typeof this.xhrType !== 'string')\n {\n this.xhrType = this._determineXhrType();\n }\n\n const xhr = this.xhr = new XMLHttpRequest();\n\n // send credentials when crossOrigin with credentials requested\n if (this.crossOrigin === 'use-credentials')\n {\n xhr.withCredentials = true;\n }\n\n // set the request type and url\n xhr.open('GET', this.url, true);\n\n xhr.timeout = this.timeout;\n\n // load json as text and parse it ourselves. We do this because some browsers\n // *cough* safari *cough* can't deal with it.\n if (this.xhrType === LoaderResource.XHR_RESPONSE_TYPE.JSON\n || this.xhrType === LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT)\n {\n xhr.responseType = LoaderResource.XHR_RESPONSE_TYPE.TEXT;\n }\n else\n {\n xhr.responseType = this.xhrType as any;\n }\n\n xhr.addEventListener('error', this._boundXhrOnError, false);\n xhr.addEventListener('timeout', this._boundXhrOnTimeout, false);\n xhr.addEventListener('abort', this._boundXhrOnAbort, false);\n xhr.addEventListener('progress', this._boundOnProgress, false);\n xhr.addEventListener('load', this._boundXhrOnLoad, false);\n\n xhr.send();\n }\n\n /** Loads this resources using an XDomainRequest. This is here because we need to support IE9 (gross). */\n private _loadXdr(): void\n {\n // if unset, determine the value\n if (typeof this.xhrType !== 'string')\n {\n this.xhrType = this._determineXhrType();\n }\n\n const xdr = this.xhr = new (globalThis as any).XDomainRequest(); // eslint-disable-line no-undef\n\n // XDomainRequest has a few quirks. Occasionally it will abort requests\n // A way to avoid this is to make sure ALL callbacks are set even if not used\n // More info here: http://stackoverflow.com/questions/15786966/xdomainrequest-aborts-post-on-ie-9\n xdr.timeout = this.timeout || 5000; // XDR needs a timeout value or it breaks in IE9\n\n xdr.onerror = this._boundXhrOnError;\n xdr.ontimeout = this._boundXhrOnTimeout;\n xdr.onprogress = this._boundOnProgress;\n xdr.onload = this._boundXhrOnLoad;\n\n xdr.open('GET', this.url, true);\n\n // Note: The xdr.send() call is wrapped in a timeout to prevent an\n // issue with the interface where some requests are lost if multiple\n // XDomainRequests are being sent at the same time.\n // Some info here: https://github.com/photonstorm/phaser/issues/1248\n setTimeout(() => xdr.send(), 1);\n }\n\n /**\n * Creates a source used in loading via an element.\n * @param type - The element type (video or audio).\n * @param url - The source URL to load from.\n * @param [mime] - The mime type of the video\n * @returns The source element.\n */\n private _createSource(type: string, url: string, mime: string): HTMLSourceElement\n {\n if (!mime)\n {\n mime = `${type}/${this._getExtension(url)}`;\n }\n\n const source = document.createElement('source');\n\n source.src = url;\n source.type = mime;\n\n return source;\n }\n\n /**\n * Called if a load errors out.\n * @param event - The error event from the element that emits it.\n */\n private _onError(event: Event): void\n {\n this.abort(`Failed to load element using: ${(event.target as any).nodeName}`);\n }\n\n /**\n * Called if a load progress event fires for an element or xhr/xdr.\n * @param event - Progress event.\n */\n private _onProgress(event: ProgressEvent): void\n {\n if (event && event.lengthComputable)\n {\n this.onProgress.dispatch(this, event.loaded / event.total);\n }\n }\n\n /** Called if a timeout event fires for an element. */\n private _onTimeout(): void\n {\n this.abort(`Load timed out.`);\n }\n\n /** Called if an error event fires for xhr/xdr. */\n private _xhrOnError(): void\n {\n const xhr = this.xhr;\n\n this.abort(`${reqType(xhr)} Request failed. Status: ${xhr.status}, text: \"${xhr.statusText}\"`);\n }\n\n /** Called if an error event fires for xhr/xdr. */\n private _xhrOnTimeout(): void\n {\n const xhr = this.xhr;\n\n this.abort(`${reqType(xhr)} Request timed out.`);\n }\n\n /** Called if an abort event fires for xhr/xdr. */\n private _xhrOnAbort(): void\n {\n const xhr = this.xhr;\n\n this.abort(`${reqType(xhr)} Request was aborted by the user.`);\n }\n\n /** Called when data successfully loads from an xhr/xdr request. */\n private _xhrOnLoad(): void\n {\n const xhr = this.xhr;\n let text = '';\n let status = typeof xhr.status === 'undefined' ? STATUS_OK : xhr.status; // XDR has no `.status`, assume 200.\n\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n if (xhr.responseType === '' || xhr.responseType === 'text' || typeof xhr.responseType === 'undefined')\n {\n text = xhr.responseText;\n }\n\n // status can be 0 when using the `file://` protocol so we also check if a response is set.\n // If it has a response, we assume 200; otherwise a 0 status code with no contents is an aborted request.\n if (status === STATUS_NONE && (text.length > 0 || xhr.responseType === LoaderResource.XHR_RESPONSE_TYPE.BUFFER))\n {\n status = STATUS_OK;\n }\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n else if (status === STATUS_IE_BUG_EMPTY)\n {\n status = STATUS_EMPTY;\n }\n\n const statusType = (status / 100) | 0;\n\n if (statusType === STATUS_TYPE_OK)\n {\n // if text, just return it\n if (this.xhrType === LoaderResource.XHR_RESPONSE_TYPE.TEXT)\n {\n this.data = text;\n this.type = LoaderResource.TYPE.TEXT;\n }\n // if json, parse into json object\n else if (this.xhrType === LoaderResource.XHR_RESPONSE_TYPE.JSON)\n {\n try\n {\n this.data = JSON.parse(text);\n this.type = LoaderResource.TYPE.JSON;\n }\n catch (e)\n {\n this.abort(`Error trying to parse loaded json: ${e}`);\n\n return;\n }\n }\n // if xml, parse into an xml document or div element\n else if (this.xhrType === LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT)\n {\n try\n {\n if (globalThis.DOMParser)\n {\n const domparser = new DOMParser();\n\n this.data = domparser.parseFromString(text, 'text/xml');\n }\n else\n {\n const div = document.createElement('div');\n\n div.innerHTML = text;\n\n this.data = div;\n }\n\n this.type = LoaderResource.TYPE.XML;\n }\n catch (e)\n {\n this.abort(`Error trying to parse loaded xml: ${e}`);\n\n return;\n }\n }\n // other types just return the response\n else\n {\n this.data = xhr.response || text;\n }\n }\n else\n {\n this.abort(`[${xhr.status}] ${xhr.statusText}: ${xhr.responseURL}`);\n\n return;\n }\n\n this.complete();\n }\n\n /**\n * Sets the `crossOrigin` property for this resource based on if the url\n * for this resource is cross-origin. If crossOrigin was manually set, this\n * function does nothing.\n * @private\n * @param url - The url to test.\n * @param [loc=globalThis.location] - The location object to test against.\n * @returns The crossOrigin value to use (or empty string for none).\n */\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n _determineCrossOrigin(url: string, loc?: any): string\n {\n // data: and javascript: urls are considered same-origin\n if (url.indexOf('data:') === 0)\n {\n return '';\n }\n\n // A sandboxed iframe without the 'allow-same-origin' attribute will have a special\n // origin designed not to match globalThis.location.origin, and will always require\n // crossOrigin requests regardless of whether the location matches.\n if (globalThis.origin !== globalThis.location.origin)\n {\n return 'anonymous';\n }\n\n // default is globalThis.location\n loc = loc || globalThis.location;\n\n if (!tempAnchor)\n {\n tempAnchor = document.createElement('a');\n }\n\n // let the browser determine the full href for the url of this resource and then\n // parse with the node url lib, we can't use the properties of the anchor element\n // because they don't work in IE9 :(\n tempAnchor.href = url;\n const parsedUrl = parseUri(tempAnchor.href, { strictMode: true });\n\n const samePort = (!parsedUrl.port && loc.port === '') || (parsedUrl.port === loc.port);\n const protocol = parsedUrl.protocol ? `${parsedUrl.protocol}:` : '';\n\n // if cross origin\n if (parsedUrl.host !== loc.hostname || !samePort || protocol !== loc.protocol)\n {\n return 'anonymous';\n }\n\n return '';\n }\n\n /**\n * Determines the responseType of an XHR request based on the extension of the\n * resource being loaded.\n * @private\n * @returns {PIXI.LoaderResource.XHR_RESPONSE_TYPE} The responseType to use.\n */\n private _determineXhrType(): LoaderResource.XHR_RESPONSE_TYPE\n {\n return LoaderResource._xhrTypeMap[this.extension] || LoaderResource.XHR_RESPONSE_TYPE.TEXT;\n }\n\n /**\n * Determines the loadType of a resource based on the extension of the\n * resource being loaded.\n * @private\n * @returns {PIXI.LoaderResource.LOAD_TYPE} The loadType to use.\n */\n private _determineLoadType(): LoaderResource.LOAD_TYPE\n {\n return LoaderResource._loadTypeMap[this.extension] || LoaderResource.LOAD_TYPE.XHR;\n }\n\n /**\n * Extracts the extension (sans '.') of the file being loaded by the resource.\n * @param [url] - url to parse, `this.url` by default.\n * @returns The extension.\n */\n private _getExtension(url = this.url): string\n {\n let ext = '';\n\n if (this.isDataUrl)\n {\n const slashIndex = url.indexOf('/');\n\n ext = url.substring(slashIndex + 1, url.indexOf(';', slashIndex));\n }\n else\n {\n const queryStart = url.indexOf('?');\n const hashStart = url.indexOf('#');\n const index = Math.min(\n queryStart > -1 ? queryStart : url.length,\n hashStart > -1 ? hashStart : url.length\n );\n\n url = url.substring(0, index);\n ext = url.substring(url.lastIndexOf('.') + 1);\n }\n\n return ext.toLowerCase();\n }\n\n /**\n * Determines the mime type of an XHR request based on the responseType of\n * resource being loaded.\n * @param type - The type to get a mime type for.\n * @private\n * @returns The mime type to use.\n */\n _getMimeFromXhrType(type: LoaderResource.XHR_RESPONSE_TYPE): string\n {\n switch (type)\n {\n case LoaderResource.XHR_RESPONSE_TYPE.BUFFER:\n return 'application/octet-binary';\n\n case LoaderResource.XHR_RESPONSE_TYPE.BLOB:\n return 'application/blob';\n\n case LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT:\n return 'application/xml';\n\n case LoaderResource.XHR_RESPONSE_TYPE.JSON:\n return 'application/json';\n\n case LoaderResource.XHR_RESPONSE_TYPE.DEFAULT:\n case LoaderResource.XHR_RESPONSE_TYPE.TEXT:\n /* falls through */\n default:\n return 'text/plain';\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace LoaderResource\n{\n /**\n * When the resource starts to load.\n * @memberof PIXI.LoaderResource\n * @callback OnStartSignal\n * @param {PIXI.Resource} resource - The resource that the event happened on.\n */\n export type OnStartSignal = (resource: LoaderResource) => void;\n /**\n * When the resource reports loading progress.\n * @memberof PIXI.LoaderResource\n * @callback OnProgressSignal\n * @param {PIXI.Resource} resource - The resource that the event happened on.\n * @param {number} percentage - The progress of the load in the range [0, 1].\n */\n export type OnProgressSignal = (resource: LoaderResource, percentage: number) => void;\n /**\n * When the resource finishes loading.\n * @memberof PIXI.LoaderResource\n * @callback OnCompleteSignal\n * @param {PIXI.Resource} resource - The resource that the event happened on.\n */\n export type OnCompleteSignal = (resource: LoaderResource) => void;\n\n /**\n * The types of resources a resource could represent.\n * @static\n * @readonly\n * @enum {number}\n * @memberof PIXI.LoaderResource\n */\n export enum STATUS_FLAGS\n // eslint-disable-next-line @typescript-eslint/indent\n {\n /** None */\n NONE = 0,\n /** Data URL */\n DATA_URL = (1 << 0),\n /** Complete */\n COMPLETE = (1 << 1),\n /** Loading */\n LOADING = (1 << 2),\n }\n\n /**\n * The types of resources a resource could represent.\n * @static\n * @readonly\n * @enum {number}\n * @memberof PIXI.LoaderResource\n */\n export enum TYPE\n // eslint-disable-next-line @typescript-eslint/indent\n {\n /** Unknown */\n UNKNOWN = 0,\n /** JSON */\n JSON = 1,\n /** XML */\n XML = 2,\n /** Image */\n IMAGE = 3,\n /** Audio */\n AUDIO = 4,\n /** Video */\n VIDEO = 5,\n /** Plain text */\n TEXT = 6,\n }\n\n /**\n * The types of loading a resource can use.\n * @static\n * @readonly\n * @enum {number}\n * @memberof PIXI.LoaderResource\n */\n export enum LOAD_TYPE\n // eslint-disable-next-line @typescript-eslint/indent\n {\n /** Uses XMLHttpRequest to load the resource. */\n XHR = 1,\n /** Uses an `Image` object to load the resource. */\n IMAGE = 2,\n /** Uses an `Audio` object to load the resource. */\n AUDIO = 3,\n /** Uses a `Video` object to load the resource. */\n VIDEO = 4,\n }\n\n /**\n * The XHR ready states, used internally.\n * @static\n * @readonly\n * @enum {string}\n * @memberof PIXI.LoaderResource\n */\n export enum XHR_RESPONSE_TYPE\n // eslint-disable-next-line @typescript-eslint/indent\n {\n /** string */\n DEFAULT = 'text',\n /** ArrayBuffer */\n BUFFER = 'arraybuffer',\n /** Blob */\n BLOB = 'blob',\n /** Document */\n DOCUMENT = 'document',\n /** Object */\n JSON = 'json',\n /** String */\n TEXT = 'text',\n }\n\n export const _loadTypeMap: Dict = {\n // images\n gif: LoaderResource.LOAD_TYPE.IMAGE,\n png: LoaderResource.LOAD_TYPE.IMAGE,\n bmp: LoaderResource.LOAD_TYPE.IMAGE,\n jpg: LoaderResource.LOAD_TYPE.IMAGE,\n jpeg: LoaderResource.LOAD_TYPE.IMAGE,\n tif: LoaderResource.LOAD_TYPE.IMAGE,\n tiff: LoaderResource.LOAD_TYPE.IMAGE,\n webp: LoaderResource.LOAD_TYPE.IMAGE,\n tga: LoaderResource.LOAD_TYPE.IMAGE,\n avif: LoaderResource.LOAD_TYPE.IMAGE,\n svg: LoaderResource.LOAD_TYPE.IMAGE,\n 'svg+xml': LoaderResource.LOAD_TYPE.IMAGE, // for SVG data urls\n\n // audio\n mp3: LoaderResource.LOAD_TYPE.AUDIO,\n ogg: LoaderResource.LOAD_TYPE.AUDIO,\n wav: LoaderResource.LOAD_TYPE.AUDIO,\n\n // videos\n mp4: LoaderResource.LOAD_TYPE.VIDEO,\n webm: LoaderResource.LOAD_TYPE.VIDEO,\n };\n\n export const _xhrTypeMap: Dict = {\n // xml\n xhtml: LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT,\n html: LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT,\n htm: LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT,\n xml: LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT,\n tmx: LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT,\n svg: LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT,\n\n // This was added to handle Tiled Tileset XML, but .tsx is also a TypeScript React Component.\n // Since it is way less likely for people to be loading TypeScript files instead of Tiled files,\n // this should probably be fine.\n tsx: LoaderResource.XHR_RESPONSE_TYPE.DOCUMENT,\n\n // images\n gif: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n png: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n bmp: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n jpg: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n jpeg: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n tif: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n tiff: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n webp: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n tga: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n avif: LoaderResource.XHR_RESPONSE_TYPE.BLOB,\n\n // json\n json: LoaderResource.XHR_RESPONSE_TYPE.JSON,\n\n // text\n text: LoaderResource.XHR_RESPONSE_TYPE.TEXT,\n txt: LoaderResource.XHR_RESPONSE_TYPE.TEXT,\n\n // fonts\n ttf: LoaderResource.XHR_RESPONSE_TYPE.BUFFER,\n otf: LoaderResource.XHR_RESPONSE_TYPE.BUFFER,\n };\n\n // We can't set the `src` attribute to empty string, so on abort we set it to this 1px transparent gif\n export const EMPTY_GIF = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\n}\n\nexport { LoaderResource };\n\n/** @deprecated - Use LoaderResource instead */\nexport type ILoaderResource = LoaderResource;\n","/**\n * Smaller version of the async library constructs.\n * @ignore\n */\nfunction _noop(): void\n{ /* empty */\n}\n\n/**\n * Ensures a function is only called once.\n * @ignore\n * @param {Function} fn - The function to wrap.\n * @returns {Function} The wrapping function.\n */\nfunction onlyOnce(fn: () => void): () => void\n{\n return function onceWrapper(this: any, ...args: any)\n {\n if (fn === null)\n {\n throw new Error('Callback was already called.');\n }\n\n const callFn = fn;\n\n fn = null;\n callFn.apply(this, args);\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IQueue\n{\n\n}\n\n/**\n * @private\n * @memberof PIXI\n */\nexport class AsyncQueueItem\n{\n data: TaskData;\n callback: (...args: any[]) => void;\n\n /**\n * @param data\n * @param callback\n * @private\n */\n constructor(data: TaskData, callback: (...args: any[]) => void)\n {\n this.data = data;\n this.callback = callback;\n }\n}\n\n/**\n * @private\n * @memberof PIXI\n */\nexport class AsyncQueue\n{\n workers = 0;\n\n concurrency: number;\n buffer: number;\n\n saturated: () => void = _noop;\n unsaturated: () => void = _noop;\n empty: () => void = _noop;\n drain: () => void = _noop;\n error: (err: Error, task: TaskData) => void = _noop;\n\n started = false;\n paused = false;\n\n private _worker: (x: TaskData, next: () => void) => void;\n _tasks: Array> = [];\n\n /**\n * @param worker\n * @param concurrency\n * @private\n */\n constructor(worker: (x: TaskData, next: () => void) => void, concurrency = 1)\n {\n this._worker = worker;\n\n if (concurrency === 0)\n {\n throw new Error('Concurrency must not be zero');\n }\n\n this.concurrency = concurrency;\n this.buffer = concurrency / 4.0;\n }\n\n private _insert = (data: any, insertAtFront: boolean, callback?: () => void) =>\n {\n if (callback && typeof callback !== 'function')\n {\n throw new Error('task callback must be a function');\n }\n\n this.started = true;\n\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (data == null && this.idle())\n {\n // call drain immediately if there are no tasks\n setTimeout(() => this.drain(), 1);\n\n return;\n }\n\n const item = new AsyncQueueItem(\n data,\n typeof callback === 'function' ? callback : _noop\n );\n\n if (insertAtFront)\n {\n this._tasks.unshift(item);\n }\n else\n {\n this._tasks.push(item);\n }\n\n setTimeout(this.process, 1);\n };\n\n process = (): void =>\n {\n while (!this.paused && this.workers < this.concurrency && this._tasks.length)\n {\n const task = this._tasks.shift();\n\n if (this._tasks.length === 0)\n {\n this.empty();\n }\n\n this.workers += 1;\n\n if (this.workers === this.concurrency)\n {\n this.saturated();\n }\n\n this._worker(task.data, onlyOnce(this._next(task)));\n }\n };\n\n /**\n * @param task\n * @private\n */\n _next(task: AsyncQueueItem): (...args: any) => void\n {\n return (...args: any) =>\n {\n this.workers -= 1;\n\n task.callback(...args);\n\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (args[0] != null)\n {\n this.error(args[0], task.data);\n }\n\n if (this.workers <= (this.concurrency - this.buffer))\n {\n this.unsaturated();\n }\n\n if (this.idle())\n {\n this.drain();\n }\n\n this.process();\n };\n }\n\n // That was in object\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n push(data: any, callback?: (...args: any[]) => void): void\n {\n this._insert(data, false, callback);\n }\n\n kill(): void\n {\n this.workers = 0;\n this.drain = _noop;\n this.started = false;\n this._tasks = [];\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n unshift(data: any, callback?: (...args: any[]) => void): void\n {\n this._insert(data, true, callback);\n }\n\n length(): number\n {\n return this._tasks.length;\n }\n\n running(): number\n {\n return this.workers;\n }\n\n idle(): boolean\n {\n return this._tasks.length + this.workers === 0;\n }\n\n pause(): void\n {\n if (this.paused === true)\n {\n return;\n }\n\n this.paused = true;\n }\n\n resume(): void\n {\n if (this.paused === false)\n {\n return;\n }\n\n this.paused = false;\n\n // Need to call this.process once per concurrent\n // worker to preserve full concurrency after pause\n for (let w = 1; w <= this.concurrency; w++)\n {\n this.process();\n }\n }\n\n /**\n * Iterates an array in series.\n * @param {Array.<*>} array - Array to iterate.\n * @param {Function} iterator - Function to call for each element.\n * @param {Function} callback - Function to call when done, or on error.\n * @param {boolean} [deferNext=false] - Break synchronous each loop by calling next with a setTimeout of 1.\n */\n static eachSeries(array: Array, iterator: (x: any, next: (err?: any) => void) => void,\n callback?: (err?: any) => void, deferNext?: boolean): void\n {\n let i = 0;\n const len = array.length;\n\n function next(err?: any)\n {\n if (err || i === len)\n {\n if (callback)\n {\n callback(err);\n }\n\n return;\n }\n\n if (deferNext)\n {\n setTimeout(() =>\n {\n iterator(array[i++], next);\n }, 1);\n }\n else\n {\n iterator(array[i++], next);\n }\n }\n\n next();\n }\n\n /**\n * Async queue implementation,\n * @param {Function} worker - The worker function to call for each task.\n * @param {number} concurrency - How many workers to run in parrallel.\n * @returns {*} The async queue object.\n */\n static queue(worker: (x: any, next: (...args: any) => void) => void, concurrency?: number): AsyncQueue\n {\n return new AsyncQueue(worker, concurrency);\n }\n}\n","import { Signal } from './base/Signal';\nimport { parseUri } from './base/parseUri';\nimport type { IResourceMetadata } from './LoaderResource';\nimport { LoaderResource } from './LoaderResource';\nimport { AsyncQueue } from './base/AsyncQueue';\nimport type { Dict } from '@pixi/utils';\nimport { deprecation } from '@pixi/utils';\nimport { extensions, ExtensionType } from '@pixi/core';\n\n// some constants\nconst MAX_PROGRESS = 100;\nconst rgxExtractUrlHash = /(#[\\w-]+)?$/;\n\nexport type ILoaderMiddleware = (resource: LoaderResource, next: (...args: any[]) => void) => void;\n\nexport interface ILoaderAdd\n{\n (this: Loader, name: string, url: string, callback?: LoaderResource.OnCompleteSignal): Loader;\n (this: Loader, name: string, url: string, options?: IAddOptions, callback?: LoaderResource.OnCompleteSignal): Loader;\n (this: Loader, url: string, callback?: LoaderResource.OnCompleteSignal): Loader;\n (this: Loader, url: string, options?: IAddOptions, callback?: LoaderResource.OnCompleteSignal): Loader;\n (this: Loader, options: IAddOptions, callback?: LoaderResource.OnCompleteSignal): Loader;\n (this: Loader, resources: (IAddOptions | string)[], callback?: LoaderResource.OnCompleteSignal): Loader;\n}\n\n/**\n * Options for a call to `.add()`.\n * @see Loader#add\n * @property {string} name - The name of the resource to load, if not passed the url is used.\n * @property {string} key - Alias for `name`.\n * @property {string} url - The url for this resource, relative to the baseUrl of this loader.\n * @property {string|boolean} crossOrigin - Is this request cross-origin? Default is to determine automatically.\n * @property {number} [timeout=0] - A timeout in milliseconds for the load. If the load takes longer\n * than this time it is cancelled and the load is considered a failure. If this value is\n * set to `0` then there is no explicit timeout.\n * @property {LoaderResource.LOAD_TYPE} [loadType=LoaderResource.LOAD_TYPE.XHR] - How should this resource be loaded?\n * @property {LoaderResource.XHR_RESPONSE_TYPE} [xhrType=LoaderResource.XHR_RESPONSE_TYPE.DEFAULT] - How should the data\n * being loaded be interpreted when using XHR?\n * @property {LoaderResource.OnCompleteSignal} onComplete - Callback to add an an onComplete signal istener.\n * @property {LoaderResource.OnCompleteSignal} callback - Alias for `onComplete`.\n * @property {IResourceMetadata} metadata - Extra configuration for middleware and the Resource object.\n */\nexport interface IAddOptions\n{\n name?: string;\n key?: string;\n url?: string;\n crossOrigin?: string | boolean;\n timeout?: number;\n parentResource?: LoaderResource;\n loadType?: LoaderResource.LOAD_TYPE;\n xhrType?: LoaderResource.XHR_RESPONSE_TYPE;\n onComplete?: LoaderResource.OnCompleteSignal;\n callback?: LoaderResource.OnCompleteSignal;\n metadata?: IResourceMetadata;\n}\n\n/**\n * The new loader, forked from Resource Loader by Chad Engler: https://github.com/englercj/resource-loader\n *\n * ```js\n * const loader = PIXI.Loader.shared; // PixiJS exposes a premade instance for you to use.\n * // or\n * const loader = new PIXI.Loader(); // You can also create your own if you want\n *\n * const sprites = {};\n *\n * // Chainable `add` to enqueue a resource\n * loader.add('bunny', 'data/bunny.png')\n * .add('spaceship', 'assets/spritesheet.json');\n * loader.add('scoreFont', 'assets/score.fnt');\n *\n * // Chainable `pre` to add a middleware that runs for each resource, *before* loading that resource.\n * // This is useful to implement custom caching modules (using filesystem, indexeddb, memory, etc).\n * loader.pre(cachingMiddleware);\n *\n * // Chainable `use` to add a middleware that runs for each resource, *after* loading that resource.\n * // This is useful to implement custom parsing modules (like spritesheet parsers, spine parser, etc).\n * loader.use(parsingMiddleware);\n *\n * // The `load` method loads the queue of resources, and calls the passed in callback called once all\n * // resources have loaded.\n * loader.load((loader, resources) => {\n * // resources is an object where the key is the name of the resource loaded and the value is the resource object.\n * // They have a couple default properties:\n * // - `url`: The URL that the resource was loaded from\n * // - `error`: The error that happened when trying to load (if any)\n * // - `data`: The raw data that was loaded\n * // also may contain other properties based on the middleware that runs.\n * sprites.bunny = new PIXI.TilingSprite(resources.bunny.texture);\n * sprites.spaceship = new PIXI.TilingSprite(resources.spaceship.texture);\n * sprites.scoreFont = new PIXI.TilingSprite(resources.scoreFont.texture);\n * });\n *\n * // throughout the process multiple signals can be dispatched.\n * loader.onProgress.add(() => {}); // called once per loaded/errored file\n * loader.onError.add(() => {}); // called once per errored file\n * loader.onLoad.add(() => {}); // called once per loaded file\n * loader.onComplete.add(() => {}); // called once when the queued resources all load.\n * ```\n * @memberof PIXI\n */\nclass Loader\n{\n /** The base url for all resources loaded by this loader. */\n baseUrl: string;\n\n /** The progress percent of the loader going through the queue. */\n progress = 0;\n\n /** Loading state of the loader, true if it is currently loading resources. */\n loading = false;\n\n /**\n * A querystring to append to every URL added to the loader.\n *\n * This should be a valid query string *without* the question-mark (`?`). The loader will\n * also *not* escape values for you. Make sure to escape your parameters with\n * [`encodeURIComponent`](https://mdn.io/encodeURIComponent) before assigning this property.\n * @example\n * const loader = new Loader();\n *\n * loader.defaultQueryString = 'user=me&password=secret';\n *\n * // This will request 'image.png?user=me&password=secret'\n * loader.add('image.png').load();\n *\n * loader.reset();\n *\n * // This will request 'image.png?v=1&user=me&password=secret'\n * loader.add('iamge.png?v=1').load();\n */\n defaultQueryString = '';\n\n /** The middleware to run before loading each resource. */\n private _beforeMiddleware: Array = [];\n\n /** The middleware to run after loading each resource. */\n private _afterMiddleware: Array = [];\n\n /** The tracks the resources we are currently completing parsing for. */\n private _resourcesParsing: Array = [];\n\n /**\n * The `_loadResource` function bound with this object context.\n * @param r - The resource to load\n * @param d - The dequeue function\n */\n private _boundLoadResource = (r: LoaderResource, d: () => void): void => this._loadResource(r, d);\n\n /** The resources waiting to be loaded. */\n private _queue: AsyncQueue;\n\n /** All the resources for this loader keyed by name. */\n resources: Dict = {};\n\n /** Dispatched once per loaded or errored resource. */\n onProgress: Signal;\n\n /** Dispatched once per errored resource. */\n onError: Signal;\n\n /** Dispatched once per loaded resource. */\n onLoad: Signal;\n\n /** Dispatched when the loader begins to process the queue. */\n onStart: Signal;\n\n /** Dispatched when the queued resources all load. */\n onComplete: Signal;\n\n /**\n * @param baseUrl - The base url for all resources loaded by this loader.\n * @param concurrency - The number of resources to load concurrently.\n */\n constructor(baseUrl = '', concurrency = 10)\n {\n this.baseUrl = baseUrl;\n this._beforeMiddleware = [];\n this._afterMiddleware = [];\n this._resourcesParsing = [];\n this._boundLoadResource = (r, d) => this._loadResource(r, d);\n this._queue = AsyncQueue.queue(this._boundLoadResource, concurrency);\n this._queue.pause();\n this.resources = {};\n this.onProgress = new Signal();\n this.onError = new Signal();\n this.onLoad = new Signal();\n this.onStart = new Signal();\n this.onComplete = new Signal();\n\n for (let i = 0; i < Loader._plugins.length; ++i)\n {\n const plugin = Loader._plugins[i];\n const { pre, use } = plugin;\n\n if (pre)\n {\n this.pre(pre);\n }\n\n if (use)\n {\n this.use(use);\n }\n }\n\n this._protected = false;\n }\n\n /**\n * Adds a resource (or multiple resources) to the loader queue.\n *\n * This function can take a wide variety of different parameters. The only thing that is always\n * required the url to load. All the following will work:\n *\n * ```js\n * loader\n * // normal param syntax\n * .add('key', 'http://...', function () {})\n * .add('http://...', function () {})\n * .add('http://...')\n *\n * // object syntax\n * .add({\n * name: 'key2',\n * url: 'http://...'\n * }, function () {})\n * .add({\n * url: 'http://...'\n * }, function () {})\n * .add({\n * name: 'key3',\n * url: 'http://...'\n * onComplete: function () {}\n * })\n * .add({\n * url: 'https://...',\n * onComplete: function () {},\n * crossOrigin: true\n * })\n *\n * // you can also pass an array of objects or urls or both\n * .add([\n * { name: 'key4', url: 'http://...', onComplete: function () {} },\n * { url: 'http://...', onComplete: function () {} },\n * 'http://...'\n * ])\n *\n * // and you can use both params and options\n * .add('key', 'http://...', { crossOrigin: true }, function () {})\n * .add('http://...', { crossOrigin: true }, function () {});\n * ```\n */\n add: ILoaderAdd;\n\n /**\n * Same as add, params have strict order\n * @private\n * @param name - The name of the resource to load.\n * @param url - The url for this resource, relative to the baseUrl of this loader.\n * @param options - The options for the load.\n * @param callback - Function to call when this specific resource completes loading.\n * @returns The loader itself.\n */\n protected _add(name: string, url: string, options: IAddOptions, callback?: LoaderResource.OnCompleteSignal): this\n {\n // if loading already you can only add resources that have a parent.\n if (this.loading && (!options || !options.parentResource))\n {\n throw new Error('Cannot add resources while the loader is running.');\n }\n\n // check if resource already exists.\n if (this.resources[name])\n {\n throw new Error(`Resource named \"${name}\" already exists.`);\n }\n\n // add base url if this isn't an absolute url\n url = this._prepareUrl(url);\n\n // create the store the resource\n this.resources[name] = new LoaderResource(name, url, options);\n\n if (typeof callback === 'function')\n {\n this.resources[name].onAfterMiddleware.once(callback);\n }\n\n // if actively loading, make sure to adjust progress chunks for that parent and its children\n if (this.loading)\n {\n const parent = options.parentResource;\n const incompleteChildren = [];\n\n for (let i = 0; i < parent.children.length; ++i)\n {\n if (!parent.children[i].isComplete)\n {\n incompleteChildren.push(parent.children[i]);\n }\n }\n\n const fullChunk = parent.progressChunk * (incompleteChildren.length + 1); // +1 for parent\n const eachChunk = fullChunk / (incompleteChildren.length + 2); // +2 for parent & new child\n\n parent.children.push(this.resources[name]);\n parent.progressChunk = eachChunk;\n\n for (let i = 0; i < incompleteChildren.length; ++i)\n {\n incompleteChildren[i].progressChunk = eachChunk;\n }\n\n this.resources[name].progressChunk = eachChunk;\n }\n\n // add the resource to the queue\n this._queue.push(this.resources[name]);\n\n return this;\n }\n\n /* eslint-enable require-jsdoc,valid-jsdoc */\n\n /**\n * Sets up a middleware function that will run *before* the\n * resource is loaded.\n * @param fn - The middleware function to register.\n * @returns The loader itself.\n */\n pre(fn: ILoaderMiddleware): this\n {\n this._beforeMiddleware.push(fn);\n\n return this;\n }\n\n /**\n * Sets up a middleware function that will run *after* the\n * resource is loaded.\n * @param fn - The middleware function to register.\n * @returns The loader itself.\n */\n use(fn: ILoaderMiddleware): this\n {\n this._afterMiddleware.push(fn);\n\n return this;\n }\n\n /**\n * Resets the queue of the loader to prepare for a new load.\n * @returns The loader itself.\n */\n reset(): this\n {\n this.progress = 0;\n this.loading = false;\n\n this._queue.kill();\n this._queue.pause();\n\n // abort all resource loads\n for (const k in this.resources)\n {\n const res = this.resources[k];\n\n if (res._onLoadBinding)\n {\n res._onLoadBinding.detach();\n }\n\n if (res.isLoading)\n {\n res.abort('loader reset');\n }\n }\n\n this.resources = {};\n\n return this;\n }\n\n /**\n * Starts loading the queued resources.\n * @param cb - Optional callback that will be bound to the `complete` event.\n * @returns The loader itself.\n */\n load(cb?: Loader.OnCompleteSignal): this\n {\n // #if _DEBUG\n deprecation('6.5.0', '@pixi/loaders is being replaced with @pixi/assets in the next major release.');\n // #endif\n\n // register complete callback if they pass one\n if (typeof cb === 'function')\n {\n this.onComplete.once(cb);\n }\n\n // if the queue has already started we are done here\n if (this.loading)\n {\n return this;\n }\n\n if (this._queue.idle())\n {\n this._onStart();\n this._onComplete();\n }\n else\n {\n // distribute progress chunks\n const numTasks = this._queue._tasks.length;\n const chunk = MAX_PROGRESS / numTasks;\n\n for (let i = 0; i < this._queue._tasks.length; ++i)\n {\n this._queue._tasks[i].data.progressChunk = chunk;\n }\n\n // notify we are starting\n this._onStart();\n\n // start loading\n this._queue.resume();\n }\n\n return this;\n }\n\n /**\n * The number of resources to load concurrently.\n * @default 10\n */\n get concurrency(): number\n {\n return this._queue.concurrency;\n }\n set concurrency(concurrency: number)\n {\n this._queue.concurrency = concurrency;\n }\n\n /**\n * Prepares a url for usage based on the configuration of this object\n * @param url - The url to prepare.\n * @returns The prepared url.\n */\n private _prepareUrl(url: string): string\n {\n const parsedUrl = parseUri(url, { strictMode: true });\n let result;\n\n // absolute url, just use it as is.\n if (parsedUrl.protocol || !parsedUrl.path || url.indexOf('//') === 0)\n {\n result = url;\n }\n // if baseUrl doesn't end in slash and url doesn't start with slash, then add a slash inbetween\n else if (this.baseUrl.length\n && this.baseUrl.lastIndexOf('/') !== this.baseUrl.length - 1\n && url.charAt(0) !== '/'\n )\n {\n result = `${this.baseUrl}/${url}`;\n }\n else\n {\n result = this.baseUrl + url;\n }\n\n // if we need to add a default querystring, there is a bit more work\n if (this.defaultQueryString)\n {\n const hash = rgxExtractUrlHash.exec(result)[0];\n\n result = result.slice(0, result.length - hash.length);\n\n if (result.indexOf('?') !== -1)\n {\n result += `&${this.defaultQueryString}`;\n }\n else\n {\n result += `?${this.defaultQueryString}`;\n }\n\n result += hash;\n }\n\n return result;\n }\n\n /**\n * Loads a single resource.\n * @param resource - The resource to load.\n * @param dequeue - The function to call when we need to dequeue this item.\n */\n private _loadResource(resource: LoaderResource, dequeue: () => void): void\n {\n resource._dequeue = dequeue;\n\n // run before middleware\n AsyncQueue.eachSeries(\n this._beforeMiddleware,\n (fn: any, next: (...args: any) => void) =>\n {\n fn.call(this, resource, () =>\n {\n // if the before middleware marks the resource as complete,\n // break and don't process any more before middleware\n next(resource.isComplete ? {} : null);\n });\n },\n () =>\n {\n if (resource.isComplete)\n {\n this._onLoad(resource);\n }\n else\n {\n resource._onLoadBinding = resource.onComplete.once(this._onLoad, this);\n resource.load();\n }\n },\n true\n );\n }\n\n /** Called once loading has started. */\n private _onStart(): void\n {\n this.progress = 0;\n this.loading = true;\n this.onStart.dispatch(this);\n }\n\n /** Called once each resource has loaded. */\n private _onComplete(): void\n {\n this.progress = MAX_PROGRESS;\n this.loading = false;\n this.onComplete.dispatch(this, this.resources);\n }\n\n /**\n * Called each time a resources is loaded.\n * @param resource - The resource that was loaded\n */\n private _onLoad(resource: LoaderResource): void\n {\n resource._onLoadBinding = null;\n\n // remove this resource from the async queue, and add it to our list of resources that are being parsed\n this._resourcesParsing.push(resource);\n resource._dequeue();\n\n // run all the after middleware for this resource\n AsyncQueue.eachSeries(\n this._afterMiddleware,\n (fn: any, next: any) =>\n {\n fn.call(this, resource, next);\n },\n () =>\n {\n resource.onAfterMiddleware.dispatch(resource);\n\n this.progress = Math.min(MAX_PROGRESS, this.progress + resource.progressChunk);\n this.onProgress.dispatch(this, resource);\n\n if (resource.error)\n {\n this.onError.dispatch(resource.error, this, resource);\n }\n else\n {\n this.onLoad.dispatch(this, resource);\n }\n\n this._resourcesParsing.splice(this._resourcesParsing.indexOf(resource), 1);\n\n // do completion check\n if (this._queue.idle() && this._resourcesParsing.length === 0)\n {\n this._onComplete();\n }\n },\n true\n );\n }\n\n static _plugins: Array = [];\n private static _shared: Loader;\n /**\n * If this loader cannot be destroyed.\n * @default false\n */\n private _protected: boolean;\n\n /** Destroy the loader, removes references. */\n public destroy(): void\n {\n if (!this._protected)\n {\n this.reset();\n }\n }\n\n /** A premade instance of the loader that can be used to load resources. */\n public static get shared(): Loader\n {\n let shared = Loader._shared;\n\n if (!shared)\n {\n shared = new Loader();\n shared._protected = true;\n Loader._shared = shared;\n }\n\n return shared;\n }\n\n /**\n * Use the {@link PIXI.extensions.add} API to register plugins.\n * @deprecated since 6.5.0\n * @param plugin - The plugin to add\n * @returns Reference to PIXI.Loader for chaining\n */\n public static registerPlugin(plugin: ILoaderPlugin): typeof Loader\n {\n // #if _DEBUG\n deprecation('6.5.0', 'Loader.registerPlugin() is deprecated, use extensions.add() instead.');\n // #endif\n\n extensions.add({\n type: ExtensionType.Loader,\n ref: plugin,\n });\n\n return Loader;\n }\n}\n\nextensions.handleByList(ExtensionType.Loader, Loader._plugins);\n\nLoader.prototype.add = function add(this: Loader, name: any, url?: any, options?: any, callback?: any): Loader\n{\n // special case of an array of objects or urls\n if (Array.isArray(name))\n {\n for (let i = 0; i < name.length; ++i)\n {\n this.add((name as any)[i]);\n }\n\n return this;\n }\n\n // if an object is passed instead of params\n if (typeof name === 'object')\n {\n options = name;\n callback = (url as any) || options.callback || options.onComplete;\n url = options.url;\n name = options.name || options.key || options.url;\n }\n\n // case where no name is passed shift all args over by one.\n if (typeof url !== 'string')\n {\n callback = options as any;\n options = url;\n url = name;\n }\n\n // now that we shifted make sure we have a proper url.\n if (typeof url !== 'string')\n {\n throw new Error('No url passed to add resource to loader.');\n }\n\n // options are optional so people might pass a function and no options\n if (typeof options === 'function')\n {\n callback = options;\n options = null;\n }\n\n return this._add(name, url, options, callback);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Loader\n{\n /**\n * When the resource starts to load.\n * @param resource - The resource that the event happened on.\n */\n export type OnStartSignal = (loader: Loader) => void;\n /**\n * When the progress changes the loader and resource are dispatched.\n * @param loader - The loader the progress is advancing on.\n * @param resource - The resource that has completed or failed to cause the progress to advance.\n */\n export type OnProgressSignal = (loader: Loader, resource: LoaderResource) => void;\n /**\n * When a load completes without error the loader and resource are dispatched.\n * @param loader - The loader that has started loading resources.\n * @param resource - The resource that has completed.\n */\n export type OnLoadSignal = (loader: Loader, resource: LoaderResource) => void;\n /**\n * When the loader starts loading resources it dispatches this callback.\n * @param loader - The loader that has started loading resources.\n */\n export type OnCompleteSignal = (loader: Loader, resources: Dict) => void;\n /**\n * When an error occurs the loader and resource are dispatched.\n * @param loader - The loader the error happened in.\n * @param resource - The resource that caused the error.\n */\n export type OnErrorSignal = (error: Error, loader: Loader, resource: LoaderResource) => void;\n}\n\nexport { Loader };\n\n/**\n * Plugin to be installed for handling specific Loader resources.\n * @property {Function} add - Function to call immediate after registering plugin.\n * @property {Function} pre - Middleware function to run before load, the\n * arguments for this are `(resource, next)`\n * @property {Function} use - Middleware function to run after load, the\n * arguments for this are `(resource, next)`\n */\nexport interface ILoaderPlugin\n{\n /** Function to call immediate after registering plugin. */\n add?(): void;\n\n /**\n * Middleware function to run before load\n * @param {LoaderResource} resource - resource\n * @param {LoaderResource} next - next middleware\n */\n pre?(resource: LoaderResource, next: (...args: any[]) => void): void;\n\n /**\n * Middleware function to run after load\n * @param {LoaderResource} resource - resource\n * @param {LoaderResource} next - next middleware\n */\n use?(resource: LoaderResource, next: (...args: any[]) => void): void;\n}\n","import type { ExtensionMetadata } from '@pixi/core';\nimport { ExtensionType } from '@pixi/core';\nimport { Loader } from './Loader';\n\n/**\n * Application plugin for supporting loader option. Installing the LoaderPlugin\n * is not necessary if using **pixi.js** or **pixi.js-legacy**.\n * @example\n * import {AppLoaderPlugin} from '@pixi/loaders';\n * import {extensions} from '@pixi/core';\n * extensions.add(AppLoaderPlugin);\n * @memberof PIXI\n */\nexport class AppLoaderPlugin\n{\n /** @ignore */\n static extension: ExtensionMetadata = ExtensionType.Application;\n\n /**\n * Loader instance to help with asset loading.\n * @memberof PIXI.Application#\n * @readonly\n */\n public static loader: Loader;\n\n /**\n * Called on application constructor\n * @param options\n * @private\n */\n static init(options?: GlobalMixins.IApplicationOptions): void\n {\n options = Object.assign({\n sharedLoader: false,\n }, options);\n\n this.loader = options.sharedLoader ? Loader.shared : new Loader();\n }\n\n /**\n * Called when application destroyed\n * @private\n */\n static destroy(): void\n {\n if (this.loader)\n {\n this.loader.destroy();\n this.loader = null;\n }\n }\n}\n","import type { ExtensionMetadata } from '@pixi/core';\nimport { ExtensionType, Texture } from '@pixi/core';\nimport { LoaderResource } from './LoaderResource';\n\n/**\n * Loader plugin for handling Texture resources.\n * @memberof PIXI\n */\nexport class TextureLoader\n{\n /** @ignore */\n static extension: ExtensionMetadata = ExtensionType.Loader;\n\n /** Handle SVG elements a text, render with SVGResource. */\n public static add(): void\n {\n LoaderResource.setExtensionLoadType('svg', LoaderResource.LOAD_TYPE.XHR);\n LoaderResource.setExtensionXhrType('svg', LoaderResource.XHR_RESPONSE_TYPE.TEXT);\n }\n\n /**\n * Called after a resource is loaded.\n * @see PIXI.Loader.loaderMiddleware\n * @param resource\n * @param {Function} next\n */\n public static use(resource: LoaderResource, next: (...args: any[]) => void): void\n {\n // create a new texture if the data is an Image object\n if (resource.data && (resource.type === LoaderResource.TYPE.IMAGE || resource.extension === 'svg'))\n {\n const { data, url, name, metadata } = resource;\n\n Texture.fromLoader(data, url, name, metadata).then((texture) =>\n {\n resource.texture = texture;\n next();\n })\n // TODO: handle errors in Texture.fromLoader\n // so we can pass them to the Loader\n .catch(next);\n }\n else\n {\n next();\n }\n }\n}\n","const _keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n/**\n * Encodes binary into base64.\n * @function encodeBinary\n * @param {string} input - The input data to encode.\n * @returns {string} The encoded base64 string\n */\nexport function encodeBinary(input: string): string\n{\n let output = '';\n let inx = 0;\n\n while (inx < input.length)\n {\n // Fill byte buffer array\n const bytebuffer = [0, 0, 0];\n const encodedCharIndexes = [0, 0, 0, 0];\n\n for (let jnx = 0; jnx < bytebuffer.length; ++jnx)\n {\n if (inx < input.length)\n {\n // throw away high-order byte, as documented at:\n // https://developer.mozilla.org/En/Using_XMLHttpRequest#Handling_binary_data\n bytebuffer[jnx] = input.charCodeAt(inx++) & 0xff;\n }\n else\n {\n bytebuffer[jnx] = 0;\n }\n }\n\n // Get each encoded character, 6 bits at a time\n // index 1: first 6 bits\n encodedCharIndexes[0] = bytebuffer[0] >> 2;\n\n // index 2: second 6 bits (2 least significant bits from input byte 1 + 4 most significant bits from byte 2)\n encodedCharIndexes[1] = ((bytebuffer[0] & 0x3) << 4) | (bytebuffer[1] >> 4);\n\n // index 3: third 6 bits (4 least significant bits from input byte 2 + 2 most significant bits from byte 3)\n encodedCharIndexes[2] = ((bytebuffer[1] & 0x0f) << 2) | (bytebuffer[2] >> 6);\n\n // index 3: forth 6 bits (6 least significant bits from input byte 3)\n encodedCharIndexes[3] = bytebuffer[2] & 0x3f;\n\n // Determine whether padding happened, and adjust accordingly\n const paddingBytes = inx - (input.length - 1);\n\n switch (paddingBytes)\n {\n case 2:\n // Set last 2 characters to padding char\n encodedCharIndexes[3] = 64;\n encodedCharIndexes[2] = 64;\n break;\n\n case 1:\n // Set last character to padding char\n encodedCharIndexes[3] = 64;\n break;\n\n default:\n break; // No padding - proceed\n }\n\n // Now we will grab each appropriate character out of our keystring\n // based on our index array and append it to the output string\n for (let jnx = 0; jnx < encodedCharIndexes.length; ++jnx)\n {\n output += _keyStr.charAt(encodedCharIndexes[jnx]);\n }\n }\n\n return output;\n}\n","import { LoaderResource } from '../LoaderResource';\nimport { encodeBinary } from '../base/encodeBinary';\n\n/**\n * A middleware for transforming XHR loaded Blobs into more useful objects\n * @ignore\n * @function parsing\n * @example\n * import { Loader, middleware } from 'resource-loader';\n * const loader = new Loader();\n * loader.use(middleware.parsing);\n * @param resource - Current Resource\n * @param next - Callback when complete\n */\nexport function parsing(resource: LoaderResource, next: (...args: any) => void): void\n{\n if (!resource.data)\n {\n next();\n\n return;\n }\n\n // if this was an XHR load of a blob\n if (resource.xhr && resource.xhrType === LoaderResource.XHR_RESPONSE_TYPE.BLOB)\n {\n // if there is no blob support we probably got a binary string back\n if (!self.Blob || typeof resource.data === 'string')\n {\n const type = resource.xhr.getResponseHeader('content-type');\n\n // this is an image, convert the binary string into a data url\n if (type && type.indexOf('image') === 0)\n {\n resource.data = new Image();\n resource.data.src = `data:${type};base64,${encodeBinary(resource.xhr.responseText)}`;\n\n resource.type = LoaderResource.TYPE.IMAGE;\n\n // wait until the image loads and then callback\n resource.data.onload = () =>\n {\n resource.data.onload = null;\n\n next();\n };\n\n // next will be called on load\n return;\n }\n }\n // if content type says this is an image, then we should transform the blob into an Image object\n else if (resource.data.type.indexOf('image') === 0)\n {\n const Url = globalThis.URL || globalThis.webkitURL;\n const src = Url.createObjectURL(resource.data);\n\n resource.blob = resource.data;\n resource.data = new Image();\n resource.data.src = src;\n\n resource.type = LoaderResource.TYPE.IMAGE;\n\n // cleanup the no longer used blob after the image loads\n // TODO: Is this correct? Will the image be invalid after revoking?\n resource.data.onload = () =>\n {\n Url.revokeObjectURL(src);\n resource.data.onload = null;\n\n next();\n };\n\n // next will be called on load.\n return;\n }\n }\n\n next();\n}\n","import { parsing } from './middleware';\nimport type { ExtensionMetadata } from '@pixi/core';\nimport { ExtensionType } from '@pixi/core';\n\n/**\n * Parse any blob into more usable objects (e.g. Image).\n * @memberof PIXI\n */\nclass ParsingLoader\n{\n /** @ignore */\n static extension: ExtensionMetadata = ExtensionType.Loader;\n\n static use = parsing;\n}\n\nexport { ParsingLoader };\n","export * from './AppLoaderPlugin';\nexport * from './LoaderResource';\nexport * from './Loader';\nexport * from './TextureLoader';\n\nimport { ParsingLoader } from './ParsingLoader';\nimport { TextureLoader } from './TextureLoader';\nimport { extensions } from '@pixi/core';\n\nextensions.add(\n TextureLoader,\n ParsingLoader\n);\n"],"names":["arguments","_noop","e"],"mappings":"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"}