parent
f5464fb1af
commit
d1c549335b
@ -40,6 +40,7 @@ export class HtmlUtils {
|
|||||||
const urlRegex = /(https?:\/\/[^\s]+)/g;
|
const urlRegex = /(https?:\/\/[^\s]+)/g;
|
||||||
text = HtmlUtils.escapeHtml(text);
|
text = HtmlUtils.escapeHtml(text);
|
||||||
return text.replace(urlRegex, (url: string) => {
|
return text.replace(urlRegex, (url: string) => {
|
||||||
|
url = HtmlUtils.htmlDecode(url);
|
||||||
const link = document.createElement("a");
|
const link = document.createElement("a");
|
||||||
link.href = url;
|
link.href = url;
|
||||||
link.target = "_blank";
|
link.target = "_blank";
|
||||||
@ -50,6 +51,15 @@ export class HtmlUtils {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static htmlDecode(input: string): string {
|
||||||
|
const doc = new DOMParser().parseFromString(input, "text/html");
|
||||||
|
const text = doc.documentElement.textContent;
|
||||||
|
if (text === null) {
|
||||||
|
throw new Error("Unexpected non parseable string");
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
public static isClickedInside(event: MouseEvent, target: HTMLElement): boolean {
|
public static isClickedInside(event: MouseEvent, target: HTMLElement): boolean {
|
||||||
return !!event.composedPath().find((et) => et === target);
|
return !!event.composedPath().find((et) => et === target);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user