fix(editor): paste surface-ref block to another doc as embed-linked-doc block (#10274)

[BS-2155](https://linear.app/affine-design/issue/BS-2155/复制-insert-frame-group-粘贴后,应当变为-block-ref-link)
This commit is contained in:
donteatfriedrice
2025-02-19 07:02:26 +00:00
parent 751f229e30
commit 319d909ac8
6 changed files with 98 additions and 15 deletions

View File

@@ -1,3 +1,4 @@
export * from './code';
export * from './copy';
export * from './paste';
export * from './surface-ref-to-embed';

View File

@@ -17,12 +17,16 @@ export const surfaceRefToEmbed =
payload.snapshot.flavour === 'affine:surface-ref' &&
!std.store.hasBlock(payload.snapshot.id)
) {
const id = payload.snapshot.id;
// The blockId of the original surface-ref block
const blockId = payload.snapshot.id;
payload.snapshot.id = std.workspace.idGenerator();
payload.snapshot.flavour = 'affine:embed-linked-doc';
payload.snapshot.props = {
blockId: id,
pageId,
params: {
mode: 'page',
blockIds: [blockId],
},
};
}
});

View File

@@ -12,6 +12,7 @@ import {
NoteBlockModel,
RootBlockModel,
} from '@blocksuite/affine-model';
import { surfaceRefToEmbed } from '@blocksuite/affine-shared/adapters';
import {
BLOCK_CHILDREN_CONTAINER_PADDING_LEFT,
EMBED_CARD_HEIGHT,
@@ -68,7 +69,6 @@ import { PreviewHelper } from '../helpers/preview-helper.js';
import { gfxBlocksFilter } from '../middleware/blocks-filter.js';
import { newIdCrossDoc } from '../middleware/new-id-cross-doc.js';
import { reorderList } from '../middleware/reorder-list';
import { surfaceRefToEmbed } from '../middleware/surface-ref-to-embed.js';
import {
containBlock,
extractIdsFromSnapshot,