// 聊天室前端 HTML 安全工具,供 Blade 内联脚本迁移到 Vite 后复用。
const HTML_ESCAPE_MAP = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
};
/**
* 转义可被拼入 innerHTML 的动态文本。
*
* @param {unknown} value
* @returns {string}
*/
export function escapeHtml(value) {
return String(value ?? "").replace(/[&<>"']/g, (char) => HTML_ESCAPE_MAP[char]);
}
/**
* 转义多行文本,并保留换行展示。
*
* @param {unknown} value
* @returns {string}
*/
export function escapeHtmlWithLineBreaks(value) {
return escapeHtml(value).replace(/\n/g, "
");
}