import "./Text.css"; import { useMemo } from "react"; import { HexKey, ParsedFragment, transformText } from "@snort/system"; import Invoice from "Element/Invoice"; import Hashtag from "Element/Hashtag"; import HyperText from "Element/HyperText"; import CashuNuts from "Element/CashuNuts"; import RevealMedia from "./RevealMedia"; import { ProxyImg } from "./ProxyImg"; export interface TextProps { content: string; creator: HexKey; tags: Array>; disableMedia?: boolean; disableMediaSpotlight?: boolean; depth?: number; } export default function Text({ content, tags, creator, disableMedia, depth, disableMediaSpotlight }: TextProps) { function renderChunk(a: ParsedFragment) { if (a.type === "media" && !a.mimeType?.startsWith("unknown")) { if (disableMedia ?? false) { return ( e.stopPropagation()} target="_blank" rel="noreferrer" className="ext"> {a.content} ); } return ; } else { switch (a.type) { case "invoice": return ; case "hashtag": return ; case "cashu": return ; case "media": case "link": return ; case "custom_emoji": return ; default: return
{a.content}
; } } } const elements = useMemo(() => { return transformText(content, tags); }, [content]); return (
{elements.map(a => renderChunk(a))}
); }