Интеграция Excalidraw в блог
Первое что я заметил - Excallidraw внутри svg-файлов подтягивает шрифты. Для того чтобы это исправить я решил сделать отдельный компонент для диаграм, который заранее будет один раз подтягивать шрифты:
<template>
  <div
    v-if="error === null"
    class="diagram"
    :class="{pending}"
  >
    <Transition
      mode="out-in"
      name="diagram"
    >
      <div
        v-if="pending"
        class="diagram__stub"
      >
        <ALoader
          size="32"
          class="diagram__loader"
        />
      </div>
      <div
        v-else
        class="diagram__content"
        v-html="scheme"
      />
    </Transition>
  </div>
</template>

<script setup lang="ts">
interface ContentSchemeProperties {
  src: string;
}

const properties = defineProps<ContentSchemeProperties>();
const requestURL = useRequestURL();

const { pending, data: scheme, error } = await useAsyncData<string>(`${requestURL.pathname}-${properties.src}`, async () => {
  const absoluteURL = new URL(properties.src, requestURL);
  const response = await $fetch<Blob>(absoluteURL.href);
  return response.text();
}, { lazy: true });
</script>

<style scoped lang="scss">
.diagram {
  // ...
  &__content:deep(svg) {
    width: 100%;
    height: fit-content;
    font-family: "Virgil", 'Montserrat Variable', -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
  }
  // ...
}

.diagram-enter-active,
.diagram-leave-active {
  transition: opacity 0.5s ease-in-out, height 500ms ease-in-out;
}

.diagram-enter-from,
.diagram-leave-to {
  opacity: 0;
}
</style>
Первое на что тут стоит обратить внимание - Lazy Loading. Мы подхватываем файл переданный в properties.src с помощью ofetch, который встроен в Nuxt.
После того как мы загрузили необходимое изображение в формате SVG, нам необходимо вставить его в HTML и стилизовать.
Я не нашел способа лучше, как просто использовать директиву v-html и стилизовать контент с помощью селектора с :deep, с помощью него я и устанавливаю шрифты для диаграм.