{"version":3,"file":"soundAsset.mjs","sources":["../src/soundAsset.ts"],"sourcesContent":["import { AssetExtension, extensions, ExtensionType, LoaderParser, LoaderParserPriority, path, ResolvedAsset } from 'pixi.js';\nimport { getInstance } from './instance';\nimport { Options, Sound } from './Sound';\nimport { extensions as exts, mimes, supported } from './utils/supported';\n\n/** Get the alias for the sound */\nconst getAlias = (asset: ResolvedAsset) =>\n{\n    const src = asset.src;\n    let alias = asset?.alias?.[0];\n\n    if (!alias || asset.src === alias)\n    {\n        alias = path.basename(src, path.extname(src));\n    }\n\n    return alias;\n};\n\n/**\n * Simple loader plugin for loading text data.\n */\nconst soundAsset = {\n    extension: ExtensionType.Asset,\n    detection: {\n        test: async () => true,\n        add: async (formats) => [...formats, ...exts.filter((ext) => supported[ext])],\n        remove: async (formats) => formats.filter((ext) => formats.includes(ext)),\n    },\n    loader: {\n        name: 'sound',\n        extension: {\n            type: [ExtensionType.LoadParser],\n            priority: LoaderParserPriority.High,\n        },\n\n        /** Should we attempt to load this file? */\n        test(url: string): boolean\n        {\n            const ext = path.extname(url).slice(1);\n\n            return !!supported[ext] || mimes.some((mime) => url.startsWith(`data:${mime}`));\n        },\n\n        /** Load the sound file, this is mostly handled by Sound.from() */\n        async load(url: string, asset: ResolvedAsset<Omit<Options, 'url' | 'preload'>>): Promise<Sound>\n        {\n            // We'll use the internal Sound.from to load the asset\n            const sound = await new Promise<Sound>((resolve, reject) => Sound.from({\n                ...asset.data,\n                url,\n                preload: true,\n                loaded(err, sound)\n                {\n                    if (err)\n                    {\n                        reject(err);\n                    }\n                    else\n                    {\n                        resolve(sound);\n                    }\n                    asset.data?.loaded?.(err, sound);\n                },\n            }));\n\n            getInstance().add(getAlias(asset), sound);\n\n            return sound;\n        },\n\n        /** Remove the sound from the library */\n        async unload(_sound: Sound, asset: ResolvedAsset): Promise<void>\n        {\n            getInstance().remove(getAlias(asset));\n        },\n    } as LoaderParser<Sound>,\n} as AssetExtension;\n\nextensions.add(soundAsset);\n\nexport { soundAsset };\n"],"names":["exts","sound","extensions"],"mappings":";;;;;AAMA,MAAM,QAAA,GAAW,CAAC,KAClB,KAAA;AACI,EAAA,MAAM,MAAM,KAAM,CAAA,GAAA,CAAA;AAClB,EAAI,IAAA,KAAA,GAAQ,KAAO,EAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AAE5B,EAAA,IAAI,CAAC,KAAA,IAAS,KAAM,CAAA,GAAA,KAAQ,KAC5B,EAAA;AACI,IAAA,KAAA,GAAQ,KAAK,QAAS,CAAA,GAAA,EAAK,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAA;AAAA,GAChD;AAEA,EAAO,OAAA,KAAA,CAAA;AACX,CAAA,CAAA;AAKA,MAAM,UAAa,GAAA;AAAA,EACf,WAAW,aAAc,CAAA,KAAA;AAAA,EACzB,SAAW,EAAA;AAAA,IACP,MAAM,YAAY,IAAA;AAAA,IAClB,GAAK,EAAA,OAAO,OAAY,KAAA,CAAC,GAAG,OAAS,EAAA,GAAGA,UAAK,CAAA,MAAA,CAAO,CAAC,GAAA,KAAQ,SAAU,CAAA,GAAG,CAAC,CAAC,CAAA;AAAA,IAC5E,MAAA,EAAQ,OAAO,OAAA,KAAY,OAAQ,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA,OAAA,CAAQ,QAAS,CAAA,GAAG,CAAC,CAAA;AAAA,GAC5E;AAAA,EACA,MAAQ,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,SAAW,EAAA;AAAA,MACP,IAAA,EAAM,CAAC,aAAA,CAAc,UAAU,CAAA;AAAA,MAC/B,UAAU,oBAAqB,CAAA,IAAA;AAAA,KACnC;AAAA;AAAA,IAGA,KAAK,GACL,EAAA;AACI,MAAA,MAAM,MAAM,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAE,MAAM,CAAC,CAAA,CAAA;AAErC,MAAA,OAAO,CAAC,CAAC,SAAU,CAAA,GAAG,CAAK,IAAA,KAAA,CAAM,IAAK,CAAA,CAAC,IAAS,KAAA,GAAA,CAAI,UAAW,CAAA,CAAA,KAAA,EAAQ,MAAM,CAAC,CAAA,CAAA;AAAA,KAClF;AAAA;AAAA,IAGA,MAAM,IAAK,CAAA,GAAA,EAAa,KACxB,EAAA;AAEI,MAAM,MAAA,KAAA,GAAQ,MAAM,IAAI,OAAA,CAAe,CAAC,OAAS,EAAA,MAAA,KAAW,MAAM,IAAK,CAAA;AAAA,QACnE,GAAG,KAAM,CAAA,IAAA;AAAA,QACT,GAAA;AAAA,QACA,OAAS,EAAA,IAAA;AAAA,QACT,MAAA,CAAO,KAAKC,MACZ,EAAA;AACI,UAAA,IAAI,GACJ,EAAA;AACI,YAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA,WAGd,MAAA;AACI,YAAA,OAAA,CAAQA,MAAK,CAAA,CAAA;AAAA,WACjB;AACA,UAAM,KAAA,CAAA,IAAA,EAAM,MAAS,GAAA,GAAA,EAAKA,MAAK,CAAA,CAAA;AAAA,SACnC;AAAA,OACH,CAAC,CAAA,CAAA;AAEF,MAAA,WAAA,EAAc,CAAA,GAAA,CAAI,QAAS,CAAA,KAAK,GAAG,KAAK,CAAA,CAAA;AAExC,MAAO,OAAA,KAAA,CAAA;AAAA,KACX;AAAA;AAAA,IAGA,MAAM,MAAO,CAAA,MAAA,EAAe,KAC5B,EAAA;AACI,MAAA,WAAA,EAAc,CAAA,MAAA,CAAO,QAAS,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,KACxC;AAAA,GACJ;AACJ,EAAA;AAEAC,YAAA,CAAW,IAAI,UAAU,CAAA;;;;"}