feat(editor): add viewport element service (#10727)

This commit is contained in:
Saul-Mirone
2025-03-10 04:26:18 +00:00
parent 7ab3b695dc
commit 4dd5f2ffb0
12 changed files with 107 additions and 99 deletions

View File

@@ -7,9 +7,9 @@ import {
GfxControllerIdentifier,
type GfxPrimitiveElementModel,
} from '@blocksuite/affine/block-std/gfx';
import type { EdgelessRootPreviewBlockComponent } from '@blocksuite/affine/blocks/root';
import { EdgelessCRUDIdentifier } from '@blocksuite/affine/blocks/surface';
import { Bound } from '@blocksuite/affine/global/gfx';
import { ViewportElementExtension } from '@blocksuite/affine/shared/services';
import { SpecProvider } from '@blocksuite/affine/shared/utils';
import type { Block, Store } from '@blocksuite/affine/store';
import { useFramework } from '@toeverything/infra';
@@ -76,7 +76,9 @@ export const EdgelessSnapshot = (props: Props) => {
const editorHost = new BlockStdScope({
store: doc,
extensions: SpecProvider._.getSpec('preview:edgeless').value,
extensions: SpecProvider._.getSpec('preview:edgeless').extend([
ViewportElementExtension('.ref-viewport'),
]).value,
}).render();
docRef.current = doc;
editorHostRef.current?.remove();
@@ -98,9 +100,7 @@ export const EdgelessSnapshot = (props: Props) => {
) {
return;
}
const component = payload.view as EdgelessRootPreviewBlockComponent;
doc.readonly = false;
component.editorViewportSelector = 'ref-viewport';
const frame = getFrameBlock(doc);
if (frame && docName !== 'frame') {
// docName with value 'frame' shouldn't be deleted, it is a part of frame settings