refactor(editor): improve element adapters (#11473)

This commit is contained in:
Saul-Mirone
2025-04-05 09:40:13 +00:00
parent 0fbca31c27
commit aed7f40568
45 changed files with 292 additions and 248 deletions
@@ -0,0 +1,2 @@
export * from './markdown';
export * from './plain-text';
@@ -0,0 +1,24 @@
import { ElementToMarkdownAdapterExtension } from '@blocksuite/affine-block-surface';
import { getTextElementText } from '../text';
export const textToMarkdownAdapterMatcher = ElementToMarkdownAdapterExtension({
name: 'text',
match: elementModel => elementModel.type === 'text',
toAST: elementModel => {
const content = getTextElementText(elementModel);
if (!content) {
return null;
}
return {
type: 'paragraph',
children: [
{
type: 'text',
value: content,
},
],
};
},
});
@@ -0,0 +1,14 @@
import { ElementToPlainTextAdapterExtension } from '@blocksuite/affine-block-surface';
import { getTextElementText } from '../text';
export const textToPlainTextAdapterMatcher = ElementToPlainTextAdapterExtension(
{
name: 'text',
match: elementModel => elementModel.type === 'text',
toAST: elementModel => {
const content = getTextElementText(elementModel);
return { content };
},
}
);
@@ -0,0 +1,22 @@
import type { DeltaInsert } from '@blocksuite/affine/store';
export function getTextElementText(
elementModel: Record<string, unknown>
): string {
let text = '';
if (elementModel.type !== 'text') {
return text;
}
if (
'text' in elementModel &&
typeof elementModel.text === 'object' &&
elementModel.text
) {
let delta: DeltaInsert[] = [];
if ('delta' in elementModel.text) {
delta = elementModel.text.delta as DeltaInsert[];
}
text = delta.map(d => d.insert).join('');
}
return text;
}
+1
View File
@@ -1,3 +1,4 @@
export * from './adapter';
export * from './commands';
export * from './edgeless-text-editor';
export * from './element-renderer';