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)]; }) );