-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathphrasingContent.tsx
More file actions
57 lines (54 loc) · 1.7 KB
/
phrasingContent.tsx
File metadata and controls
57 lines (54 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { PhrasingContent } from "mdast";
import { ReactNode } from "react";
import { useMarkdownContext } from "../context";
import { RendererArgs } from "./renderers";
export const PhrasingContentRenderer = ({
node,
...args
}: RendererArgs<PhrasingContent>): ReactNode => {
const { renderers } = useMarkdownContext();
const {
BreakRenderer,
DeleteRenderer,
EmphasisRenderer,
FootnoteReferenceRenderer,
HtmlRenderer,
ImageRenderer,
ImageReferenceRenderer,
InlineCodeRenderer,
LinkRenderer,
LinkReferenceRenderer,
StrongRenderer,
TextRenderer,
} = renderers;
switch (node.type) {
case "break":
return <BreakRenderer node={node} {...args} />;
case "delete":
return <DeleteRenderer node={node} {...args} />;
case "emphasis":
return <EmphasisRenderer node={node} {...args} />;
case "footnoteReference":
return <FootnoteReferenceRenderer node={node} {...args} />;
case "html":
return <HtmlRenderer node={node} {...args} />;
case "image":
return <ImageRenderer node={node} {...args} />;
case "imageReference":
return <ImageReferenceRenderer node={node} {...args} />;
case "inlineCode":
return <InlineCodeRenderer node={node} {...args} />;
case "link":
return <LinkRenderer node={node} {...args} />;
case "linkReference":
return <LinkReferenceRenderer node={node} {...args} />;
case "strong":
return <StrongRenderer node={node} {...args} />;
case "text":
return <TextRenderer node={node} {...args} />;
default:
// eslint-disable-next-line @typescript-eslint/no-unused-vars, no-case-declarations
const _: never = node;
return null;
}
};