// 聊天室欢迎语快捷菜单事件绑定,替代 Blade 内联 onclick。 let welcomeMenuEventsBound = false; /** * 切换欢迎语下拉浮层的显示/隐藏。 */ function toggleWelcomeMenu(event) { event.stopPropagation(); const menu = document.getElementById("welcome-menu"); const adminMenu = document.getElementById("admin-menu"); const blockMenu = document.getElementById("block-menu"); const featureMenu = document.getElementById("feature-menu"); const dailyStatusEditor = document.getElementById("daily-status-editor-overlay"); if (!menu) return; [adminMenu, blockMenu, featureMenu, dailyStatusEditor].forEach((el) => { if (el) el.style.display = "none"; }); menu.style.display = menu.style.display === "none" ? "block" : "none"; } // 挂载到 window 供 Blade 脚本及其他模块使用。 window.toggleWelcomeMenu = toggleWelcomeMenu; /** * 绑定欢迎语菜单按钮、菜单内点击拦截与模板发送事件。 */ export function bindWelcomeMenuControls() { if (welcomeMenuEventsBound || typeof document === "undefined") { return; } welcomeMenuEventsBound = true; document.addEventListener("click", (event) => { if (!(event.target instanceof Element)) { return; } const toggleButton = event.target.closest("[data-chat-welcome-menu-toggle]"); if (toggleButton) { event.preventDefault(); toggleWelcomeMenu(event); return; } const menu = event.target.closest("[data-chat-welcome-menu]"); if (!menu) return; // 阻止菜单内部点击冒泡。 event.stopPropagation(); const item = event.target.closest("[data-chat-welcome-template]"); if (!item || !menu.contains(item)) return; const template = item.getAttribute("data-chat-welcome-template") || ""; // sendWelcomeTpl 仍由 Blade 维护(依赖 sendMessage),这里通过 window 调用。 if (template && typeof window.sendWelcomeTpl === "function") { window.sendWelcomeTpl(template); } }); } export { toggleWelcomeMenu };