import type { CodeBlockModel } from '@blocksuite/affine-model'; import { createIdentifier } from '@blocksuite/global/di'; import type { ExtensionType } from '@blocksuite/store'; import type { HTMLTemplateResult } from 'lit'; export type CodeBlockPreviewRenderer = ( model: CodeBlockModel ) => HTMLTemplateResult | null; export type CodeBlockPreviewContext = { renderer: CodeBlockPreviewRenderer; lang: string; }; export const CodeBlockPreviewIdentifier = createIdentifier('CodeBlockPreview'); export function CodeBlockPreviewExtension( lang: string, renderer: CodeBlockPreviewRenderer ): ExtensionType { return { setup: di => { di.addImpl(CodeBlockPreviewIdentifier(lang), { renderer, lang }); }, }; }