import { BaseView, BlockEditor, HTML2BlockResult, } from '@toeverything/framework/virgo'; import { Protocol } from '@toeverything/datasource/db-service'; import { ImageView } from './ImageView'; import { Block2HtmlProps } from '../../utils/commonBlockClip'; import { getRandomString } from '@toeverything/components/common'; export class ImageBlock extends BaseView { public override selectable = true; public override editable = false; type = Protocol.Block.Type.image; View = ImageView; // TODO: needs to download the image and then upload it to get a new link and then assign it override async html2block({ element, editor, }: { element: Element; editor: BlockEditor; }): Promise { if (element.tagName === 'IMG') { return [ { type: this.type, properties: { image: { value: getRandomString('image'), url: element.getAttribute('src'), name: element.getAttribute('src'), size: 0, type: 'link', }, }, children: [], }, ]; } return null; } override async block2html({ block, editor }: Block2HtmlProps) { const textValue = block.getProperty('text'); const content = ''; // TODO: text.value should export with style?? const figcaption = (textValue?.value ?? []) .map(({ text }) => `${text}`) .join(''); return `
${figcaption}
${figcaption}
`; } }