feat: support markdown

This commit is contained in:
guanghechen 2024-07-10 16:17:23 +08:00
parent bd230ddd4f
commit 85d144a1e9
34 changed files with 2350 additions and 4 deletions

View file

@ -0,0 +1,28 @@
import { useStateValue } from "@guanghechen/react-viewmodel";
import type { Definition, LinkReference } from "@yozora/ast";
import { useNodeRendererContext, type INodeRenderer, astClasses } from "../context";
import { LinkRendererInner } from "./inner/LinkRendererInner";
/**
* Render `link-reference`.
*
* @see https://www.npmjs.com/package/@yozora/ast#linkReference
* @see https://www.npmjs.com/package/@yozora/tokenizer-link-reference
*/
export const LinkReferenceRenderer: INodeRenderer<LinkReference> = props => {
const { viewmodel } = useNodeRendererContext();
const definitionMap: Readonly<Record<string, Definition>> = useStateValue(
viewmodel.definitionMap$,
);
const definition = definitionMap[props.identifier];
const url: string = definition?.url ?? "";
const title: string | undefined = definition?.title;
return (
<LinkRendererInner
url={url}
title={title}
childNodes={props.children}
className={astClasses.linkReference}
/>
);
};