From d57ef5c5b3978fd631a60fc205e0ed4d7bc518d8 Mon Sep 17 00:00:00 2001 From: Saul-Mirone Date: Thu, 27 Feb 2025 07:52:18 +0000 Subject: [PATCH] fix(editor): transform to draftmodel first when get snapshot (#10477) --- .../framework/store/src/transformer/base.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/blocksuite/framework/store/src/transformer/base.ts b/blocksuite/framework/store/src/transformer/base.ts index d6b9590838..d341e3a4dd 100644 --- a/blocksuite/framework/store/src/transformer/base.ts +++ b/blocksuite/framework/store/src/transformer/base.ts @@ -1,5 +1,5 @@ -import type { BlockModel } from '../model/block/block-model'; -import type { DraftModel } from '../model/block/draft'; +import { BlockModel } from '../model/block/block-model'; +import { type DraftModel, toDraftModel } from '../model/block/draft'; import { type InternalPrimitives, internalPrimitives, @@ -20,7 +20,7 @@ export type FromSnapshotPayload = { }; export type ToSnapshotPayload = { - model: DraftModel>; + model: DraftModel> | BlockModel; assets: AssetsManager; }; @@ -42,10 +42,16 @@ export class BaseBlockTransformer { ) as Props; } - protected _propsToSnapshot(model: DraftModel) { + protected _propsToSnapshot(model: DraftModel | BlockModel) { + let draftModel: DraftModel; + if (model instanceof BlockModel) { + draftModel = toDraftModel(model); + } else { + draftModel = model; + } return Object.fromEntries( - model.keys.map(key => { - const value = model[key as keyof typeof model]; + draftModel.keys.map(key => { + const value = draftModel[key as keyof typeof draftModel]; return [key, toJSON(value)]; }) );