Explorar o código

Merge pull request #2180 from austenadler/dev

Always open links in chat in a new tab
Timothy Jaeryang Baek hai 11 meses
pai
achega
6e89a481be

+ 7 - 0
src/lib/components/chat/Messages/ResponseMessage.svelte

@@ -80,6 +80,13 @@
 		return `<code>${code.replaceAll('&amp;', '&')}</code>`;
 		return `<code>${code.replaceAll('&amp;', '&')}</code>`;
 	};
 	};
 
 
+	// Open all links in a new tab/window (from https://github.com/markedjs/marked/issues/655#issuecomment-383226346)
+	const origLinkRenderer = renderer.link;
+	renderer.link =	(href, title, text) => {
+		const html = origLinkRenderer.call(renderer, href, title, text);
+		return html.replace(/^<a /, '<a target="_blank" rel="nofollow" ');
+	};
+
 	const { extensions, ...defaults } = marked.getDefaults() as marked.MarkedOptions & {
 	const { extensions, ...defaults } = marked.getDefaults() as marked.MarkedOptions & {
 		// eslint-disable-next-line @typescript-eslint/no-explicit-any
 		// eslint-disable-next-line @typescript-eslint/no-explicit-any
 		extensions: any;
 		extensions: any;

+ 4 - 1
src/lib/utils/index.ts

@@ -12,11 +12,14 @@ export const sanitizeResponseContent = (content: string) => {
 		.replace(/<$/, '')
 		.replace(/<$/, '')
 		.replaceAll(/<\|[a-z]+\|>/g, ' ')
 		.replaceAll(/<\|[a-z]+\|>/g, ' ')
 		.replaceAll('<', '&lt;')
 		.replaceAll('<', '&lt;')
+		.replaceAll('>', '&gt;')
 		.trim();
 		.trim();
 };
 };
 
 
 export const revertSanitizedResponseContent = (content: string) => {
 export const revertSanitizedResponseContent = (content: string) => {
-	return content.replaceAll('&lt;', '<');
+	return content
+		.replaceAll('&lt;', '<')
+		.replaceAll('&gt;', '>');
 };
 };
 
 
 export const capitalizeFirstLetter = (string) => {
 export const capitalizeFirstLetter = (string) => {