ttcMD: finished migrating to abstracted identifier registration, inlines token renderers to reduce memory overhead

This commit is contained in:
2024-03-15 08:22:43 -06:00
parent 447f9f1dc1
commit a2f50b1fe9
7 changed files with 290 additions and 504 deletions

View File

@@ -16,6 +16,7 @@ import React, {
import { sanitize } from "isomorphic-dompurify";
import { MDSkeletonLoader } from "../loader";
import { Token } from "@/types";
export const TTCMD: FC<
{ body: string; escapeTOC?: (tokens: Token[]) => boolean }
@@ -64,7 +65,9 @@ export const TTCMD: FC<
);
};
export const TTCMDRenderer: FC<{ tokens: Token[] }> = ({ tokens }) => {
export const TTCMDRenderer: FC<{ tokens: Token[] }> = (
{ tokens },
) => {
const tada = useMemo(
() => (
<>
@@ -90,9 +93,7 @@ export const TTCMDRenderer: FC<{ tokens: Token[] }> = ({ tokens }) => {
function renderer(tokens: Token[]) {
const usedIds: string[] = [];
return tokens.map((t) => (
<div className="p" key={t.uuid}>{render(t, usedIds)}</div>
));
return tokens.map((t) => <div className="p" key={t.uuid}>{t.render(t)}</div>);
}
function render(token: Token, usedIds: string[]) {
@@ -175,7 +176,7 @@ function render(token: Token, usedIds: string[]) {
}
case "inline-code":
return (
<span className="p-1 rounded-md font-mono bg-black/20 border border-mixed-100/20 mx-2">
<span className="p-1 rounded-md font-mono bg-black/20 border border-mixed-100/20 mx-1">
{token.content}
</span>
);