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); } }