refactor(editor): move menu context to components (#9302)

This commit is contained in:
Saul-Mirone
2024-12-25 07:34:04 +00:00
parent 62b930f336
commit 16c59d96d9
52 changed files with 235 additions and 586 deletions
@@ -0,0 +1,31 @@
import type { BlockModel, Doc, Text } from '@blocksuite/store';
export function transformModel(
model: BlockModel,
flavour: BlockSuite.Flavour,
props?: Parameters<Doc['addBlock']>[1]
) {
const doc = model.doc;
const parent = doc.getParent(model);
if (!parent) {
return null;
}
const blockProps: {
type?: string;
text?: Text;
children?: BlockModel[];
} = {
text: model?.text?.clone(), // should clone before `deleteBlock`
children: model.children,
...props,
};
const index = parent.children.indexOf(model);
// Sometimes the new block can not be added due to some reason, e.g. invalid schema check.
// So we need to try to add the new block first, and if it fails, we will not delete the old block.
const id = doc.addBlock(flavour, blockProps, parent, index);
doc.deleteBlock(model, {
deleteChildren: false,
});
return id;
}