diff --git a/GUI/package.json b/GUI/package.json index 390ab7bb..541f87af 100644 --- a/GUI/package.json +++ b/GUI/package.json @@ -7,7 +7,7 @@ "@buerokratt-ria/header": "^0.1.47", "@buerokratt-ria/menu": "^0.2.10", "@buerokratt-ria/styles": "^0.0.1", - "@buerokratt-ria/common-gui-components": "^0.0.38", + "@buerokratt-ria/common-gui-components": "^0.0.42", "@fontsource/roboto": "^4.5.8", "@formkit/auto-animate": "^1.0.0-beta.6", "@hookform/resolvers": "^2.9.11", diff --git a/GUI/src/components/ChatEvent/Markdownify.tsx b/GUI/src/components/ChatEvent/Markdownify.tsx index 5b1553f4..7eb9821b 100644 --- a/GUI/src/components/ChatEvent/Markdownify.tsx +++ b/GUI/src/components/ChatEvent/Markdownify.tsx @@ -63,6 +63,12 @@ function formatMessage(message?: string): string { return filteredMessage .replaceAll(/&#x([0-9A-Fa-f]+);/g, (_, hex: string) => String.fromCharCode(parseInt(hex, 16))) + .replaceAll('&', '&') + .replaceAll('>', '>') + .replaceAll('<', '<') + .replaceAll('"', '"') + .replaceAll(''', "'") + .replaceAll(''', "'") .replaceAll(/(^|\n)(\d{4})\.\s/g, (match, prefix, year) => { const remainingText = filteredMessage.substring(filteredMessage.indexOf(match) + match.length); const sentenceEnd = remainingText.indexOf('\n\n'); @@ -74,7 +80,8 @@ function formatMessage(message?: string): string { } return `${prefix}${year}\\. `; }) - .replace(/(?<=\n)\d+\.\s/g, hasSpecialFormat(filteredMessage) ? '\n\n$&' : '$&'); + .replaceAll(/(?<=\n)\d+\.\s/g, hasSpecialFormat(filteredMessage) ? '\n\n$&' : '$&') + .replaceAll(/^(\s+)/g, (match) => match.replaceAll(' ', ' ')); } const Markdownify: React.FC = ({ message, sanitizeLinks = false }) => (