The composer now writes markdown with bold, italic, strike, code, links, quotes and lists, from shortcuts, markdown typing or a bubble over the selection. @ mentions a bot and # a workspace, shown as chips and saved as [bot:ID] / [workspace:ID]. Text selected in a message can be quoted into the composer. User messages render as markdown, and replies tell the bot who and what the user mentioned. Adds an ESM stand-in for use-sync-external-store, since bunext keeps React external in page bundles and the CommonJS original requires it. Co-Authored-By: Claude Opus 5.5 <[email protected]>
21 lines
880 B
TypeScript
21 lines
880 B
TypeScript
/**
|
|
* A bot message as one line of plain text, for the rail's preview: no
|
|
* markdown syntax, links as their text, computer refs (`computerRef`) as
|
|
* "a computer", bot refs (`botRef`) as "a bot", workspace refs
|
|
* (`workspaceRef`) as "a workspace", whitespace collapsed.
|
|
*/
|
|
export default function messagePreview({ text }: { text: string }) {
|
|
return text
|
|
.replace(/```[^\n]*\n?/g, "")
|
|
.replace(/\[computer:\d+\](?!\()/g, "a computer")
|
|
.replace(/\[bot:\d+\](?!\()/g, "a bot")
|
|
.replace(/\[workspace:\d+\](?!\()/g, "a workspace")
|
|
.replace(/!?\[([^\]]*)\]\([^)]*\)/g, "$1")
|
|
.replace(/^\s{0,3}(#{1,6}\s+|>\s?|[-*+]\s+|\d+\.\s+)/gm, "")
|
|
.replace(/(\*\*|__|~~|`)/g, "")
|
|
.replace(/(^|\s)[*_](\S[^*_]*\S|\S)[*_](?=\s|$|[.,;:!?])/g, "$1$2")
|
|
.replace(/\|/g, " ")
|
|
.replace(/\s+/g, " ")
|
|
.trim();
|
|
}
|