{"version":3,"file":"getFontCss.js","sources":["../../../../src/scene/text-html/utils/getFontCss.ts"],"sourcesContent":["import { Cache } from '../../../assets/cache/Cache';\nimport { type FontFaceCache } from '../../../assets/loader/parsers/loadWebFont';\nimport { loadFontCSS } from './loadFontCSS';\n\n/** @internal */\nexport const FontStylePromiseCache = new Map<string, Promise<string>>();\n\n/**\n * takes the font families and returns a css string that can be injected into a style tag\n * It will contain the font families and the font urls encoded as base64\n * @param fontFamilies - The font families to load\n * @returns - The css string\n * @internal\n */\nexport async function getFontCss(\n    fontFamilies: string[],\n)\n{\n    const fontPromises = fontFamilies\n        .filter((fontFamily) => Cache.has(`${fontFamily}-and-url`))\n        .map((fontFamily) =>\n        {\n            if (!FontStylePromiseCache.has(fontFamily))\n            {\n                const { entries } = Cache.get<FontFaceCache>(`${fontFamily}-and-url`);\n                const promises: Promise<string>[] = [];\n\n                entries.forEach((entry) =>\n                {\n                    const url = entry.url;\n                    const faces = entry.faces;\n\n                    const out = faces.map((face) => ({ weight: face.weight, style: face.style }));\n\n                    // load each out font with the correct style\n                    promises.push(\n                        ...out.map((style) =>\n                            loadFontCSS(\n                                {\n                                    fontWeight: style.weight,\n                                    fontStyle: style.style,\n                                    fontFamily,\n                                },\n                                url,\n                            ),\n                        ),\n                    );\n                });\n                FontStylePromiseCache.set(\n                    fontFamily,\n                    Promise.all(promises).then((css) => css.join('\\n')),\n                );\n            }\n\n            return FontStylePromiseCache.get(fontFamily);\n        });\n\n    return (await Promise.all(fontPromises)).join('\\n');\n}\n"],"names":["Cache","loadFontCSS"],"mappings":";;;;;;AAKa,MAAA,qBAAA,uBAA4B,GAA6B,GAAA;AAStE,eAAsB,WAClB,YAEJ,EAAA;AACI,EAAA,MAAM,YAAe,GAAA,YAAA,CAChB,MAAO,CAAA,CAAC,eAAeA,WAAM,CAAA,GAAA,CAAI,CAAG,EAAA,UAAU,CAAU,QAAA,CAAA,CAAC,CACzD,CAAA,GAAA,CAAI,CAAC,UACN,KAAA;AACI,IAAA,IAAI,CAAC,qBAAA,CAAsB,GAAI,CAAA,UAAU,CACzC,EAAA;AACI,MAAA,MAAM,EAAE,OAAQ,EAAA,GAAIA,YAAM,GAAmB,CAAA,CAAA,EAAG,UAAU,CAAU,QAAA,CAAA,CAAA,CAAA;AACpE,MAAA,MAAM,WAA8B,EAAC,CAAA;AAErC,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,KACjB,KAAA;AACI,QAAA,MAAM,MAAM,KAAM,CAAA,GAAA,CAAA;AAClB,QAAA,MAAM,QAAQ,KAAM,CAAA,KAAA,CAAA;AAEpB,QAAA,MAAM,GAAM,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,IAAU,MAAA,EAAE,MAAQ,EAAA,IAAA,CAAK,MAAQ,EAAA,KAAA,EAAO,IAAK,CAAA,KAAA,EAAQ,CAAA,CAAA,CAAA;AAG5E,QAAS,QAAA,CAAA,IAAA;AAAA,UACL,GAAG,GAAI,CAAA,GAAA;AAAA,YAAI,CAAC,KACR,KAAAC,uBAAA;AAAA,cACI;AAAA,gBACI,YAAY,KAAM,CAAA,MAAA;AAAA,gBAClB,WAAW,KAAM,CAAA,KAAA;AAAA,gBACjB,UAAA;AAAA,eACJ;AAAA,cACA,GAAA;AAAA,aACJ;AAAA,WACJ;AAAA,SACJ,CAAA;AAAA,OACH,CAAA,CAAA;AACD,MAAsB,qBAAA,CAAA,GAAA;AAAA,QAClB,UAAA;AAAA,QACA,OAAA,CAAQ,GAAI,CAAA,QAAQ,CAAE,CAAA,IAAA,CAAK,CAAC,GAAQ,KAAA,GAAA,CAAI,IAAK,CAAA,IAAI,CAAC,CAAA;AAAA,OACtD,CAAA;AAAA,KACJ;AAEA,IAAO,OAAA,qBAAA,CAAsB,IAAI,UAAU,CAAA,CAAA;AAAA,GAC9C,CAAA,CAAA;AAEL,EAAA,OAAA,CAAQ,MAAM,OAAQ,CAAA,GAAA,CAAI,YAAY,CAAA,EAAG,KAAK,IAAI,CAAA,CAAA;AACtD;;;;;"}