@pixi/sound
Version:
WebAudio API playback library with filters
1 lines • 4.57 kB
Source Map (JSON)
{"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;;;;"}