{"version":3,"file":"getFontCss.mjs","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":[],"mappings":";;;;AAKO,MAAM,qBAAA,uBAA4B,GAAA;AASzC,eAAsB,WAClB,YAAA,EAEJ;AACI,EAAA,MAAM,YAAA,GAAe,YAAA,CAChB,MAAA,CAAO,CAAC,eAAe,KAAA,CAAM,GAAA,CAAI,CAAA,EAAG,UAAU,CAAA,QAAA,CAAU,CAAC,CAAA,CACzD,GAAA,CAAI,CAAC,UAAA,KACN;AACI,IAAA,IAAI,CAAC,qBAAA,CAAsB,GAAA,CAAI,UAAU,CAAA,EACzC;AACI,MAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,MAAM,GAAA,CAAmB,CAAA,EAAG,UAAU,CAAA,QAAA,CAAU,CAAA;AACpE,MAAA,MAAM,WAA8B,EAAC;AAErC,MAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KACjB;AACI,QAAA,MAAM,MAAM,KAAA,CAAM,GAAA;AAClB,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AAEpB,QAAA,MAAM,GAAA,GAAM,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,MAAU,EAAE,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,CAAE,CAAA;AAG5E,QAAA,QAAA,CAAS,IAAA;AAAA,UACL,GAAG,GAAA,CAAI,GAAA;AAAA,YAAI,CAAC,KAAA,KACR,WAAA;AAAA,cACI;AAAA,gBACI,YAAY,KAAA,CAAM,MAAA;AAAA,gBAClB,WAAW,KAAA,CAAM,KAAA;AAAA,gBACjB;AAAA,eACJ;AAAA,cACA;AAAA;AACJ;AACJ,SACJ;AAAA,MACJ,CAAC,CAAA;AACD,MAAA,qBAAA,CAAsB,GAAA;AAAA,QAClB,UAAA;AAAA,QACA,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,IAAA,CAAK,IAAI,CAAC;AAAA,OACtD;AAAA,IACJ;AAEA,IAAA,OAAO,qBAAA,CAAsB,IAAI,UAAU,CAAA;AAAA,EAC/C,CAAC,CAAA;AAEL,EAAA,OAAA,CAAQ,MAAM,OAAA,CAAQ,GAAA,CAAI,YAAY,CAAA,EAAG,KAAK,IAAI,CAAA;AACtD;;;;"}