| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | // define `EXCALIDRAW_ASSET_PATH` as a SSOTconst OSS_FONTS_CDN = "https://excalidraw.nyc3.cdn.digitaloceanspaces.com/oss/";const OSS_FONTS_FALLBACK = "/";/** * Custom vite plugin for auto-prefixing `EXCALIDRAW_ASSET_PATH` woff2 fonts in `excalidraw-app`. * * @returns {import("vite").PluginOption} */module.exports.woff2BrowserPlugin = () => {  let isDev;  return {    name: "woff2BrowserPlugin",    enforce: "pre",    config(_, { command }) {      isDev = command === "serve";    },    transform(code, id) {      // using copy / replace as fonts defined in the `.css` don't have to be manually copied over (vite/rollup does this automatically),      // but at the same time can't be easily prefixed with the `EXCALIDRAW_ASSET_PATH` only for the `excalidraw-app`      if (!isDev && id.endsWith("/excalidraw/fonts/fonts.css")) {        return `/* WARN: The following content is generated during excalidraw-app build */      @font-face {        font-family: "Assistant";        src: url(${OSS_FONTS_CDN}fonts/Assistant/Assistant-Regular.woff2)            format("woff2"),          url(./Assistant-Regular.woff2) format("woff2");        font-weight: 400;        style: normal;        display: swap;      }      @font-face {        font-family: "Assistant";        src: url(${OSS_FONTS_CDN}fonts/Assistant/Assistant-Medium.woff2)            format("woff2"),          url(./Assistant-Medium.woff2) format("woff2");        font-weight: 500;        style: normal;        display: swap;      }      @font-face {        font-family: "Assistant";        src: url(${OSS_FONTS_CDN}fonts/Assistant/Assistant-SemiBold.woff2)            format("woff2"),          url(./Assistant-SemiBold.woff2) format("woff2");        font-weight: 600;        style: normal;        display: swap;      }      @font-face {        font-family: "Assistant";        src: url(${OSS_FONTS_CDN}fonts/Assistant/Assistant-Bold.woff2)            format("woff2"),          url(./Assistant-Bold.woff2) format("woff2");        font-weight: 700;        style: normal;        display: swap;      }`;      }      if (!isDev && id.endsWith("excalidraw-app/index.html")) {        return code.replace(          "<!-- PLACEHOLDER:EXCALIDRAW_APP_FONTS -->",          `<script>        // point into our CDN in prod, fallback to root (excalidraw.com) domain in case of issues        window.EXCALIDRAW_ASSET_PATH = [          "${OSS_FONTS_CDN}",          "${OSS_FONTS_FALLBACK}",        ];      </script>      <!-- Preload all default fonts to avoid swap on init -->      <link        rel="preload"        href="${OSS_FONTS_CDN}fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2"        as="font"        type="font/woff2"        crossorigin="anonymous"      />      <!-- For Nunito only preload the latin range, which should be good enough for now -->      <link        rel="preload"        href="${OSS_FONTS_CDN}fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2"        as="font"        type="font/woff2"        crossorigin="anonymous"      />      <link        rel="preload"        href="${OSS_FONTS_CDN}fonts/ComicShanns/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2"        as="font"        type="font/woff2"        crossorigin="anonymous"      />    `,        );      }    },  };};
 |