import React from "react";
import { Text, TextProps } from "../Text";
import { Mark } from "./index";
const normalizeMark = (mark: Mark) => {
if (typeof mark === "string") {
return { type: mark };
} else if (typeof mark._ === "string") {
const { _, ...markProps } = mark;
return {
...markProps,
type: mark._,
};
}
return mark;
};
const TextNode = ({ markMap, node }) => {
return (node.marks || []).reduceRight((child, mark) => {
const normalized = normalizeMark(mark);
const markHandler = markMap[normalized.type];
if (!markHandler) {
return child;
}
return React.createElement(
markHandler,
{ ...mark.attrs, inherit: true },
child
);
}, {node.text});
};
export default TextNode;
export const withText = (textProps: TextProps) => {
const Component = (props: TextProps) => ;
Component.displayName = "Text";
return Component;
};