mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-21 03:56:23 +08:00
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { RootBlockSchema } from '@blocksuite/affine-model';
|
|
import {
|
|
BlockMarkdownAdapterExtension,
|
|
type BlockMarkdownAdapterMatcher,
|
|
} from '@blocksuite/affine-shared/adapters';
|
|
import type { DeltaInsert } from '@blocksuite/inline';
|
|
|
|
export const rootBlockMarkdownAdapterMatcher: BlockMarkdownAdapterMatcher = {
|
|
flavour: RootBlockSchema.model.flavour,
|
|
toMatch: () => false,
|
|
fromMatch: o => o.node.flavour === RootBlockSchema.model.flavour,
|
|
toBlockSnapshot: {},
|
|
fromBlockSnapshot: {
|
|
enter: (o, context) => {
|
|
const title = (o.node.props.title ?? { delta: [] }) as {
|
|
delta: DeltaInsert[];
|
|
};
|
|
const { walkerContext, deltaConverter } = context;
|
|
if (title.delta.length === 0) return;
|
|
walkerContext
|
|
.openNode(
|
|
{
|
|
type: 'heading',
|
|
depth: 1,
|
|
children: deltaConverter.deltaToAST(title.delta, 0),
|
|
},
|
|
'children'
|
|
)
|
|
.closeNode();
|
|
},
|
|
},
|
|
};
|
|
|
|
export const RootBlockMarkdownAdapterExtension = BlockMarkdownAdapterExtension(
|
|
rootBlockMarkdownAdapterMatcher
|
|
);
|