@udus/notion-renderer
Version:

37 lines (36 loc) • 1.3 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useMapper } from "../hooks.js";
import { InlineEquation } from "./InlineEquation.js";
import { Mention } from "./Mention.js";
import { Text } from "./Text.js";
export const RichTextItem = (props) => {
if (!props.richText)
return null;
return (_jsx("span", { className: "notion-rich-text-item", children: _jsx(RichTextItemContent, { ...props }) }));
};
const RichTextItemContent = ({ richText: richTextItem, }) => {
const { richTextItemMapper } = useMapper();
const mapper = {
equation: InlineEquation,
mention: Mention,
text: Text,
...richTextItemMapper,
};
switch (richTextItem.type) {
case "equation": {
const TypeEquation = mapper[richTextItem.type];
return _jsx(TypeEquation, { richText: richTextItem });
}
case "mention": {
const TypeMention = mapper[richTextItem.type];
return _jsx(TypeMention, { richText: richTextItem });
}
case "text": {
const TypeText = mapper[richTextItem.type];
return _jsx(TypeText, { richText: richTextItem });
}
default:
console.warn(`${richTextItem.type} is never.`);
return null;
}
};