diff --git a/src/components/MessageBox.tsx b/src/components/MessageBox.tsx
index 4473c3b..4617103 100644
--- a/src/components/MessageBox.tsx
+++ b/src/components/MessageBox.tsx
@@ -48,6 +48,7 @@ const MessageBox = ({
const [speechMessage, setSpeechMessage] = useState(message.content);
useEffect(() => {
+ const citationRegex = /\[([^\]]+)\]/g;
const regex = /\[(\d+)\]/g;
let processedMessage = message.content;
@@ -67,11 +68,33 @@ const MessageBox = ({
) {
setParsedMessage(
processedMessage.replace(
- regex,
- (_, number) =>
- `${number}`,
+ citationRegex,
+ (_, capturedContent: string) => {
+ const numbers = capturedContent
+ .split(',')
+ .map((numStr) => numStr.trim())
+
+ const linksHtml = numbers
+ .map((numStr) => {
+ const number = parseInt(numStr);
+
+ if (isNaN(number) || number <= 0) {
+ return `[${numStr}]`;
+ }
+
+ const source = message.sources?.[number - 1];
+ const url = source?.metadata?.url;
+
+ if (url) {
+ return `${numStr}`;
+ } else {
+ return `[${numStr}]`;
+ }
+ })
+ .join('');
+
+ return linksHtml;
+ },
),
);
return;