{"version":3,"file":"index.js","names":[],"sources":["esm/platform/fonts/index.js"],"sourcesContent":["import { useEffect, useState } from \"react\";\nasync function load(fonts) {\n  if (typeof document === \"undefined\") {\n    return;\n  }\n  const entries = Object.entries(fonts).map(([name, source]) => {\n    if (typeof source !== \"string\") {\n      throw new Error(`Fonts.load: \"${name}\" is not a font asset`);\n    }\n    return { name, uri: source };\n  });\n  await Promise.all(\n    entries.map(async ({ name, uri }) => {\n      try {\n        const face = new FontFace(name, `url(${uri})`);\n        await face.load();\n        document.fonts.add(face);\n      } catch (cause) {\n        throw new Error(`Fonts.load: \"${name}\" could not be loaded`, { cause });\n      }\n    })\n  );\n}\nfunction isLoaded(name) {\n  if (typeof document === \"undefined\") {\n    return false;\n  }\n  let found = false;\n  document.fonts.forEach((face) => {\n    if (face.family === name && face.status === \"loaded\") {\n      found = true;\n    }\n  });\n  return found;\n}\nconst Fonts = {\n  load,\n  isLoaded\n};\nfunction useFonts(fonts) {\n  const [loaded, setLoaded] = useState(() => Object.keys(fonts).every(isLoaded));\n  const [error, setError] = useState(null);\n  useEffect(() => {\n    if (loaded) {\n      return;\n    }\n    let cancelled = false;\n    setError(null);\n    load(fonts).then(\n      () => {\n        if (!cancelled) {\n          setLoaded(true);\n        }\n      },\n      (reason) => {\n        if (!cancelled) {\n          setError(reason instanceof Error ? reason : new Error(String(reason)));\n        }\n      }\n    );\n    return () => {\n      cancelled = true;\n    };\n  }, []);\n  return [loaded, error];\n}\nexport {\n  Fonts,\n  useFonts\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":";;;AACA,eAAe,KAAK,OAAO;CACzB,IAAI,OAAO,aAAa,aAAa;EACnC;CACF;CACA,MAAM,UAAU,OAAO,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY;EAC5D,IAAI,OAAO,WAAW,UAAU;GAC9B,MAAM,IAAI,MAAM,gBAAgB,KAAK,sBAAsB;EAC7D;EACA,OAAO;GAAE;GAAM,KAAK;EAAO;CAC7B,CAAC;CACD,MAAM,QAAQ,IACZ,QAAQ,IAAI,OAAO,EAAE,MAAM,UAAU;EACnC,IAAI;GACF,MAAM,OAAO,IAAI,SAAS,MAAM,OAAO,IAAI,EAAE;GAC7C,MAAM,KAAK,KAAK;GAChB,SAAS,MAAM,IAAI,IAAI;EACzB,SAAS,OAAO;GACd,MAAM,IAAI,MAAM,gBAAgB,KAAK,wBAAwB,EAAE,MAAM,CAAC;EACxE;CACF,CAAC,CACH;AACF;AACA,SAAS,SAAS,MAAM;CACtB,IAAI,OAAO,aAAa,aAAa;EACnC,OAAO;CACT;CACA,IAAI,QAAQ;CACZ,SAAS,MAAM,SAAS,SAAS;EAC/B,IAAI,KAAK,WAAW,QAAQ,KAAK,WAAW,UAAU;GACpD,QAAQ;EACV;CACF,CAAC;CACD,OAAO;AACT;AACA,MAAM,QAAQ;CACZ;CACA;AACF;AACA,SAAS,SAAS,OAAO;CACvB,MAAM,CAAC,QAAQ,aAAa,eAAe,OAAO,KAAK,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC;CAC7E,MAAM,CAAC,OAAO,YAAY,SAAS,IAAI;CACvC,gBAAgB;EACd,IAAI,QAAQ;GACV;EACF;EACA,IAAI,YAAY;EAChB,SAAS,IAAI;EACb,KAAK,KAAK,CAAC,CAAC,WACJ;GACJ,IAAI,CAAC,WAAW;IACd,UAAU,IAAI;GAChB;EACF,IACC,WAAW;GACV,IAAI,CAAC,WAAW;IACd,SAAS,kBAAkB,QAAQ,SAAS,IAAI,MAAM,OAAO,MAAM,CAAC,CAAC;GACvE;EACF,CACF;EACA,aAAa;GACX,YAAY;EACd;CACF,GAAG,CAAC,CAAC;CACL,OAAO,CAAC,QAAQ,KAAK;AACvB"}