fix: missing font in text preview of editor settings (#8213)

Close issue [BS-1394](https://linear.app/affine-design/issue/BS-1394).

Add `FontConfigExtension` to `edgeless:preview` spec.
This commit is contained in:
akumatus
2024-09-12 04:40:17 +00:00
parent 393dcfec78
commit 456aa047cb
4 changed files with 21 additions and 19 deletions
@@ -1,4 +1,5 @@
import { Skeleton } from '@affine/component'; import { Skeleton } from '@affine/component';
import { getFontConfigExtension } from '@affine/core/components/blocksuite/block-suite-editor';
import type { EditorSettingSchema } from '@affine/core/modules/editor-settting'; import type { EditorSettingSchema } from '@affine/core/modules/editor-settting';
import { EditorSettingService } from '@affine/core/modules/editor-settting'; import { EditorSettingService } from '@affine/core/modules/editor-settting';
import type { EditorHost } from '@blocksuite/block-std'; import type { EditorHost } from '@blocksuite/block-std';
@@ -71,7 +72,10 @@ export const EdgelessSnapshot = (props: Props) => {
const editorHost = new BlockStdScope({ const editorHost = new BlockStdScope({
doc, doc,
extensions: SpecProvider.getInstance().getSpec('edgeless:preview').value, extensions: [
...SpecProvider.getInstance().getSpec('edgeless:preview').value,
getFontConfigExtension(),
],
}).render(); }).render();
docRef.current = doc; docRef.current = doc;
editorHostRef.current = editorHost; editorHostRef.current = editorHost;
@@ -1,4 +1,5 @@
export * from './blocksuite-editor'; export * from './blocksuite-editor';
export { getFontConfigExtension } from './specs/font-extension';
import './ai/setup-provider'; import './ai/setup-provider';
import './specs/preview'; import './specs/preview';
@@ -6,35 +6,19 @@ import { mixpanel } from '@affine/core/mixpanel';
import { EditorSettingService } from '@affine/core/modules/editor-settting'; import { EditorSettingService } from '@affine/core/modules/editor-settting';
import { ConfigExtension, type ExtensionType } from '@blocksuite/block-std'; import { ConfigExtension, type ExtensionType } from '@blocksuite/block-std';
import { import {
AffineCanvasTextFonts,
EdgelessRootBlockSpec, EdgelessRootBlockSpec,
EditorSettingExtension, EditorSettingExtension,
FontLoaderService, FontLoaderService,
PageRootBlockSpec, PageRootBlockSpec,
} from '@blocksuite/blocks'; } from '@blocksuite/blocks';
import { import { type TelemetryEventMap, TelemetryProvider } from '@blocksuite/blocks';
FontConfigExtension,
type TelemetryEventMap,
TelemetryProvider,
} from '@blocksuite/blocks';
import { type FrameworkProvider } from '@toeverything/infra'; import { type FrameworkProvider } from '@toeverything/infra';
import { getFontConfigExtension } from '../font-extension';
import { createDatabaseOptionsConfig } from './database-block'; import { createDatabaseOptionsConfig } from './database-block';
import { createLinkedWidgetConfig } from './widgets/linked'; import { createLinkedWidgetConfig } from './widgets/linked';
import { createToolbarMoreMenuConfig } from './widgets/toolbar'; import { createToolbarMoreMenuConfig } from './widgets/toolbar';
function getFontConfigExtension() {
return FontConfigExtension(
runtimeConfig.isSelfHosted
? AffineCanvasTextFonts.map(font => ({
...font,
// self-hosted fonts are served from /assets
url: '/assets/' + new URL(font.url).pathname.split('/').pop(),
}))
: AffineCanvasTextFonts
);
}
function getTelemetryExtension(): ExtensionType { function getTelemetryExtension(): ExtensionType {
return { return {
setup: di => { setup: di => {
@@ -0,0 +1,13 @@
import { AffineCanvasTextFonts, FontConfigExtension } from '@blocksuite/blocks';
export function getFontConfigExtension() {
return FontConfigExtension(
runtimeConfig.isSelfHosted
? AffineCanvasTextFonts.map(font => ({
...font,
// self-hosted fonts are served from /assets
url: '/assets/' + new URL(font.url).pathname.split('/').pop(),
}))
: AffineCanvasTextFonts
);
}