export function escapeHtml(str) {
if (!str) return "";
return str
.replace(/&/g, "&")
.replace(//g, ">");
}
export function formatMarkdown(str) {
if (!str) return "";
return str
.replace(/\*\*(.*?)\*\*/g, "$1")
.replace(
/```text\n([\s\S]*?)\n```/g,
"
$1
"
)
.replace(/\n\n/g, "
")
.replace(/\n- /g, "
• ");
}
let sendAudio = null;
export function playSendSound(isMuted = false) {
if (isMuted) return;
try {
if (!sendAudio) {
sendAudio = new Audio("/sounds/send.mp3");
} else {
sendAudio.currentTime = 0;
}
sendAudio.volume = 0.7;
sendAudio.play().catch((err) => {
console.warn("Audio playback failed:", err);
});
} catch (err) {
console.warn("Audio initialization error:", err);
}
}