From b07eb5678df89dfe5727410f1ce9d4326a04ae74 Mon Sep 17 00:00:00 2001 From: zzj3720 Date: Thu, 27 Feb 2025 12:39:20 +0800 Subject: [PATCH] fix(editor): toDraftModal supports flat data structures --- .../framework/store/src/model/block/draft.ts | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/blocksuite/framework/store/src/model/block/draft.ts b/blocksuite/framework/store/src/model/block/draft.ts index e9e764c609..538ee91b23 100644 --- a/blocksuite/framework/store/src/model/block/draft.ts +++ b/blocksuite/framework/store/src/model/block/draft.ts @@ -15,12 +15,28 @@ export function toDraftModel( origin: Model ): DraftModel { const { id, version, flavour, role, keys, text, children } = origin; - const props = origin.keys.reduce((acc, key) => { - return { - ...acc, - [key]: origin[key as keyof Model], - }; - }, {} as ModelProps); + + // Process props data + let props: ModelProps; + + // Check if it's a flat data structure (has _props property) + if ('_props' in origin && origin._props) { + // Flat data structure, get directly from _props + props = Object.entries(origin._props).reduce((acc, [key, value]) => { + return { + ...acc, + [key]: value, + }; + }, {} as ModelProps); + } else { + // Non-flat data structure, get through keys array + props = origin.keys.reduce((acc, key) => { + return { + ...acc, + [key]: origin[key as keyof Model], + }; + }, {} as ModelProps); + } return { id,