fix(core): center peek and history dialog does not display custom fonts (#9274)

close AF-1806
This commit is contained in:
JimmFly
2025-01-20 03:00:12 +00:00
parent 9004c45eed
commit 601c0dd16c
7 changed files with 87 additions and 51 deletions

View File

@@ -0,0 +1,43 @@
import {
EditorSettingService,
fontStyleOptions,
} from '@affine/core/modules/editor-setting';
import { Slot } from '@radix-ui/react-slot';
import { useLiveData, useService } from '@toeverything/infra';
import { cssVar } from '@toeverything/theme';
import { type CSSProperties, type ReactNode, useMemo } from 'react';
export const CustomEditorWrapper = ({ children }: { children: ReactNode }) => {
const editorSetting = useService(EditorSettingService).editorSetting;
const settings = useLiveData(
editorSetting.settings$.selector(s => ({
fontFamily: s.fontFamily,
customFontFamily: s.customFontFamily,
fullWidthLayout: s.fullWidthLayout,
}))
);
const value = useMemo(() => {
const fontStyle = fontStyleOptions.find(
option => option.key === settings.fontFamily
);
if (!fontStyle) {
return cssVar('fontSansFamily');
}
const customFontFamily = settings.customFontFamily;
return customFontFamily && fontStyle.key === 'Custom'
? `${customFontFamily}, ${fontStyle.value}`
: fontStyle.value;
}, [settings.customFontFamily, settings.fontFamily]);
return (
<Slot
style={
{
'--affine-font-family': value,
} as CSSProperties
}
>
{children}
</Slot>
);
};

View File

@@ -10,3 +10,4 @@ edgelessEffects();
registerBlocksuitePresetsCustomComponents();
export * from './blocksuite-editor';
export * from './custom-editor-wrapper';