// 聊天室全局弹窗事件绑定，替代 Blade 内联 onclick。

let globalDialogEventsBound = false;

/**
 * 绑定全局弹窗确认与取消按钮。
 *
 * @returns {void}
 */
export function bindGlobalDialogControls() {
    if (globalDialogEventsBound || typeof document === "undefined") {
        return;
    }

    globalDialogEventsBound = true;
    document.addEventListener("click", (event) => {
        if (!(event.target instanceof Element)) {
            return;
        }

        const actionButton = event.target.closest("[data-chat-dialog-action]");
        if (!actionButton) {
            return;
        }

        event.preventDefault();

        const action = actionButton.getAttribute("data-chat-dialog-action");
        // 全局弹窗只允许确认/取消两类动作，继续承接旧 Promise 回调流程。
        if (action === "confirm") {
            window.chatDialog?._confirm?.();
            return;
        }

        if (action === "cancel") {
            window.chatDialog?._cancel?.();
        }
    });

    document.addEventListener("keydown", (event) => {
        if (!(event.target instanceof HTMLTextAreaElement) || event.target.id !== "global-dialog-input") {
            return;
        }

        // prompt 输入框沿用旧体验：Enter 确认，Shift+Enter 保留换行，Esc 取消。
        if (event.key === "Enter" && !event.shiftKey) {
            event.preventDefault();
            window.chatDialog?._confirm?.();
            return;
        }

        if (event.key === "Escape") {
            event.preventDefault();
            window.chatDialog?._cancel?.();
        }
    });
}
