// define `EXCALIDRAW_ASSET_PATH` as a SSOT const 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( "", ` `, ); } }, }; };