Files
AFFiNE-Mirror/blocksuite/affine/shared/src/adapters/markdown/block-adapter.ts
2024-12-20 15:38:06 +08:00

32 lines
923 B
TypeScript

import type { ExtensionType } from '@blocksuite/block-std';
import {
createIdentifier,
type ServiceIdentifier,
} from '@blocksuite/global/di';
import type { BlockAdapterMatcher } from '../types/adapter.js';
import type { MarkdownDeltaConverter } from './delta-converter.js';
import type { MarkdownAST } from './type.js';
export type BlockMarkdownAdapterMatcher = BlockAdapterMatcher<
MarkdownAST,
MarkdownDeltaConverter
>;
export const BlockMarkdownAdapterMatcherIdentifier =
createIdentifier<BlockMarkdownAdapterMatcher>('BlockMarkdownAdapterMatcher');
export function BlockMarkdownAdapterExtension(
matcher: BlockMarkdownAdapterMatcher
): ExtensionType & {
identifier: ServiceIdentifier<BlockMarkdownAdapterMatcher>;
} {
const identifier = BlockMarkdownAdapterMatcherIdentifier(matcher.flavour);
return {
setup: di => {
di.addImpl(identifier, () => matcher);
},
identifier,
};
}