MCPcopy Create free account
hub / github.com/Linen-dev/linen.dev / Message

Function Message

apps/web/ui/Message/index.tsx:67–197  ·  view source on GitHub ↗
({
  className,
  text,
  format,
  truncate,
  mentions,
  reactions,
  attachments,
  currentUser,
  placeholder,
  onLinkClick,
  onImageClick,
  onLoad,
  isBot = false,
}: Props)

Source from the content-addressed store, hash-verified

65}
66
67function Message({
68 className,
69 text,
70 format,
71 truncate,
72 mentions,
73 reactions,
74 attachments,
75 currentUser,
76 placeholder,
77 onLinkClick,
78 onImageClick,
79 onLoad,
80 isBot = false,
81}: Props) {
82 if (text === '' && noAttachment(attachments)) {
83 text = 'message has been deleted';
84 }
85 const parse = parsers[format];
86 const input = text.trim();
87 const tree = transform(parse(input));
88
89 function render(node: any): React.ReactNode {
90 switch (node.type) {
91 case 'root':
92 return (node as RootNode).children.map(render);
93 case 'bold':
94 return (
95 <strong key={node.cid}>
96 {(node as BoldNode).children.map(render)}
97 </strong>
98 );
99 case 'italic':
100 return (
101 <em className={styles.italic} key={node.cid}>
102 {(node as ItalicNode).children.map(render)}
103 </em>
104 );
105 case 'strike':
106 return (
107 <del key={node.cid}>{(node as StrikeNode).children.map(render)}</del>
108 );
109 case 'quote':
110 return (
111 <Quote key={node.cid}>
112 {(node as QuoteNode).children.map(render)}
113 </Quote>
114 );
115 case 'header':
116 return (
117 <Header depth={node.depth} key={node.cid}>
118 {(node as HeaderNode).children.map(render)}
119 </Header>
120 );
121 case 'text':
122 return <Text key={node.cid} value={(node as TextNode).value} />;
123 case 'user':
124 return (

Callers

nothing calls this directly

Calls 4

parseFunction · 0.90
noAttachmentFunction · 0.85
transformFunction · 0.85
renderFunction · 0.85

Tested by

no test coverage detected