fix(editor): affine preview root style (#10420)

Fix [BS-2677](https://linear.app/affine-design/issue/BS-2677/linked-doc-embed-view样式错误)

1. Only show the border of embed synced doc block (in note) when hover.
2. Fix affine preview root padding style, set padding only when affine preview root in embed synced doc block (in surface).
3. Only add the footnote config extension to the chat panel and chat block center peek. For footnotes in other page preview scenarios, such as footnote nodes within embed synced doc blocks or embed linked doc blocks, the hover effect should be maintained.
This commit is contained in:
donteatfriedrice
2025-02-26 04:25:24 +00:00
parent 0e4a79959f
commit d63f16da5e
9 changed files with 52 additions and 25 deletions

View File

@@ -8,7 +8,6 @@ import {
import {
ColorScheme,
createSignalFromObservable,
FootNoteNodeConfigExtension,
type Signal,
SpecProvider,
type ThemeExtension,
@@ -80,11 +79,6 @@ function getPagePreviewThemeExtension(framework: FrameworkProvider) {
return AffinePagePreviewThemeExtension;
}
// Disable hover effect for footnote node in center peek preview mode
const footnodeConfig = FootNoteNodeConfigExtension({
disableHoverEffect: true,
});
const fontConfig = getFontConfigExtension();
let _framework: FrameworkProvider;
@@ -108,7 +102,6 @@ export function enablePreviewExtension(framework: FrameworkProvider): void {
_previewExtensions = [
...AIChatBlockSpec,
footnodeConfig,
fontConfig,
getThemeExtension(framework),
getPagePreviewThemeExtension(framework),

View File

@@ -0,0 +1,17 @@
import {
FootNoteNodeConfigExtension,
type SpecBuilder,
} from '@blocksuite/affine/blocks';
// Disable hover effect for footnote node
const disableHoverEffectConfig = {
disableHoverEffect: true,
};
export function enableFootnoteConfigExtension(
specBuilder: SpecBuilder,
config = disableHoverEffectConfig
) {
const footNoteConfig = FootNoteNodeConfigExtension(config);
return specBuilder.extend([footNoteConfig]);
}

View File

@@ -1,2 +1,3 @@
export * from './entry/enable-affine';
export * from './entry/enable-mobile';
export * from './footnote-config';

View File

@@ -1,5 +1,6 @@
import { ChatPanel } from '@affine/core/blocksuite/ai';
import type { AffineEditorContainer } from '@affine/core/blocksuite/block-suite-editor';
import { enableFootnoteConfigExtension } from '@affine/core/blocksuite/extensions';
import { AINetworkSearchService } from '@affine/core/modules/ai-button/services/network-search';
import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta';
import { DocSearchMenuService } from '@affine/core/modules/doc-search-menu/services';
@@ -84,7 +85,9 @@ export const EditorChatPanel = forwardRef(function EditorChatPanel(
);
},
};
const previewSpecBuilder = SpecProvider._.getSpec('preview:page');
const previewSpecBuilder = enableFootnoteConfigExtension(
SpecProvider._.getSpec('preview:page')
);
chatPanelRef.current.previewSpecBuilder = previewSpecBuilder;
} else {
chatPanelRef.current.host = editor.host;

View File

@@ -1,6 +1,7 @@
import { toReactNode } from '@affine/component';
import { AIChatBlockPeekViewTemplate } from '@affine/core/blocksuite/ai';
import type { AIChatBlockModel } from '@affine/core/blocksuite/ai/blocks/ai-chat-block/model/ai-chat-model';
import { enableFootnoteConfigExtension } from '@affine/core/blocksuite/extensions';
import { AINetworkSearchService } from '@affine/core/modules/ai-button/services/network-search';
import type { EditorHost } from '@blocksuite/affine/block-std';
import { SpecProvider } from '@blocksuite/affine/blocks';
@@ -19,7 +20,9 @@ export const AIChatBlockPeekView = ({
const framework = useFramework();
const searchService = framework.get(AINetworkSearchService);
return useMemo(() => {
const previewSpecBuilder = SpecProvider._.getSpec('preview:page');
const previewSpecBuilder = enableFootnoteConfigExtension(
SpecProvider._.getSpec('preview:page')
);
const networkSearchConfig = {
visible: searchService.visible,
enabled: searchService.enabled,