{"version":3,"file":"loadBitmapFont.mjs","sources":["../src/loadBitmapFont.ts"],"sourcesContent":["import { copySearchParams, LoaderParserPriority } from 'pixijs/assets';\nimport { extensions, ExtensionType, settings, utils } from 'pixijs/core';\nimport { BitmapFont } from './BitmapFont';\nimport { TextFormat, XMLStringFormat } from './formats';\n\nimport type { LoadAsset, Loader, LoaderParser } from 'pixijs/assets';\nimport type { Texture } from 'pixijs/core';\nimport type { BitmapFontData } from './BitmapFontData';\n\nconst validExtensions = ['.xml', '.fnt'];\n\n/** simple loader plugin for loading in bitmap fonts! */\nexport const loadBitmapFont = {\n    extension: {\n        type: ExtensionType.LoadParser,\n        priority: LoaderParserPriority.Normal,\n    },\n\n    test(url: string): boolean\n    {\n        return validExtensions.includes(utils.path.extname(url).toLowerCase());\n    },\n\n    async testParse(data: string): Promise<boolean>\n    {\n        return TextFormat.test(data) || XMLStringFormat.test(data);\n    },\n\n    async parse(asset: string, data: LoadAsset, loader: Loader): Promise<BitmapFont>\n    {\n        const fontData: BitmapFontData = TextFormat.test(asset)\n            ? TextFormat.parse(asset)\n            : XMLStringFormat.parse(asset);\n\n        const { src } = data;\n        const { page: pages } = fontData;\n        const textureUrls = [];\n\n        for (let i = 0; i < pages.length; ++i)\n        {\n            const pageFile = pages[i].file;\n            let imagePath = utils.path.join(utils.path.dirname(src), pageFile);\n\n            imagePath = copySearchParams(imagePath, src);\n\n            textureUrls.push(imagePath);\n        }\n\n        const loadedTextures = await loader.load<Texture>(textureUrls);\n        const textures = textureUrls.map((url) => loadedTextures[url]);\n\n        return BitmapFont.install(fontData, textures, true);\n    },\n\n    async load(url: string, _options: LoadAsset): Promise<string>\n    {\n        const response = await settings.ADAPTER.fetch(url);\n\n        return response.text();\n    },\n\n    unload(bitmapFont: BitmapFont): void\n    {\n        bitmapFont.destroy();\n    }\n} as LoaderParser<BitmapFont | string>;\n\nextensions.add(loadBitmapFont);\n"],"names":[],"mappings":";;;;;;;AASA,MAAM,eAAA,GAAkB,CAAC,MAAA,EAAQ,MAAM,CAAA,CAAA;AAGhC,MAAM,cAAiB,GAAA;AAAA,EAC1B,SAAW,EAAA;AAAA,IACP,MAAM,aAAc,CAAA,UAAA;AAAA,IACpB,UAAU,oBAAqB,CAAA,MAAA;AAAA,GACnC;AAAA,EAEA,KAAK,GACL,EAAA;AACI,IAAO,OAAA,eAAA,CAAgB,SAAS,KAAM,CAAA,IAAA,CAAK,QAAQ,GAAG,CAAA,CAAE,aAAa,CAAA,CAAA;AAAA,GACzE;AAAA,EAEA,MAAM,UAAU,IAChB,EAAA;AACI,IAAA,OAAO,WAAW,IAAK,CAAA,IAAI,CAAK,IAAA,eAAA,CAAgB,KAAK,IAAI,CAAA,CAAA;AAAA,GAC7D;AAAA,EAEA,MAAM,KAAA,CAAM,KAAe,EAAA,IAAA,EAAiB,MAC5C,EAAA;AACI,IAAM,MAAA,QAAA,GAA2B,UAAW,CAAA,IAAA,CAAK,KAAK,CAAA,GAChD,UAAW,CAAA,KAAA,CAAM,KAAK,CAAA,GACtB,eAAgB,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAEjC,IAAA,MAAM,EAAE,GAAQ,EAAA,GAAA,IAAA,CAAA;AAChB,IAAM,MAAA,EAAE,MAAM,KAAU,EAAA,GAAA,QAAA,CAAA;AACxB,IAAA,MAAM,cAAc,EAAC,CAAA;AAErB,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAM,CAAA,MAAA,EAAQ,EAAE,CACpC,EAAA;AACI,MAAM,MAAA,QAAA,GAAW,MAAM,CAAG,CAAA,CAAA,IAAA,CAAA;AAC1B,MAAI,IAAA,SAAA,GAAY,MAAM,IAAK,CAAA,IAAA,CAAK,MAAM,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA;AAEjE,MAAY,SAAA,GAAA,gBAAA,CAAiB,WAAW,GAAG,CAAA,CAAA;AAE3C,MAAA,WAAA,CAAY,KAAK,SAAS,CAAA,CAAA;AAAA,KAC9B;AAEA,IAAA,MAAM,cAAiB,GAAA,MAAM,MAAO,CAAA,IAAA,CAAc,WAAW,CAAA,CAAA;AAC7D,IAAA,MAAM,WAAW,WAAY,CAAA,GAAA,CAAI,CAAC,GAAA,KAAQ,eAAe,GAAI,CAAA,CAAA,CAAA;AAE7D,IAAA,OAAO,UAAW,CAAA,OAAA,CAAQ,QAAU,EAAA,QAAA,EAAU,IAAI,CAAA,CAAA;AAAA,GACtD;AAAA,EAEA,MAAM,IAAK,CAAA,GAAA,EAAa,QACxB,EAAA;AACI,IAAA,MAAM,QAAW,GAAA,MAAM,QAAS,CAAA,OAAA,CAAQ,MAAM,GAAG,CAAA,CAAA;AAEjD,IAAA,OAAO,SAAS,IAAK,EAAA,CAAA;AAAA,GACzB;AAAA,EAEA,OAAO,UACP,EAAA;AACI,IAAA,UAAA,CAAW,OAAQ,EAAA,CAAA;AAAA,GACvB;AACJ,EAAA;AAEA,UAAA,CAAW,IAAI,cAAc,CAAA;;;;"}