// 聊天室图片预览层控制，迁出 Blade 内联脚本后通过事件委托接管打开和关闭。

let lightboxEventsBound = false;

/**
 * 打开聊天图片大图预览层。
 *
 * @param {string} imageUrl 图片地址
 * @param {string} imageName 图片名称
 * @returns {void}
 */
export function openChatImageLightbox(imageUrl, imageName = "聊天图片") {
    const lightbox = document.getElementById("chat-image-lightbox");
    const imageEl = document.getElementById("chat-image-lightbox-img");
    const nameEl = document.getElementById("chat-image-lightbox-name");

    if (!lightbox || !imageEl || !imageUrl) {
        return;
    }

    imageEl.src = imageUrl;
    imageEl.alt = imageName;

    if (nameEl) {
        nameEl.textContent = imageName;
    }

    lightbox.style.display = "block";
    document.body.style.overflow = "hidden";
}

/**
 * 关闭聊天图片大图预览层。
 *
 * @param {Event|null} event 点击事件
 * @returns {void}
 */
export function closeChatImageLightbox(event = null) {
    // 遮罩点击才能关闭；点击预览图本身时保持打开，避免误关。
    if (event && event.target !== event.currentTarget) {
        return;
    }

    const lightbox = document.getElementById("chat-image-lightbox");
    if (!lightbox) {
        return;
    }

    lightbox.style.display = "none";

    const imageEl = document.getElementById("chat-image-lightbox-img");
    if (imageEl) {
        imageEl.src = "";
    }

    document.body.style.overflow = "";
}

/**
 * 绑定聊天图片预览层事件委托。
 *
 * @returns {void}
 */
export function initChatImageLightboxEvents() {
    if (lightboxEventsBound) {
        return;
    }

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

        const imagePreview = event.target.closest("[data-chat-image-lightbox-image]");
        if (imagePreview) {
            // 图片节点自己不触发关闭，关闭按钮和遮罩由其他分支处理。
            return;
        }

        const opener = event.target.closest("[data-chat-image-lightbox-open]");
        if (opener) {
            event.preventDefault();
            // data-full 优先使用原图地址，href 作为旧链接结构的兼容兜底。
            openChatImageLightbox(opener.dataset.full || opener.href, opener.dataset.alt || "聊天图片");
            return;
        }

        if (event.target.closest("[data-chat-image-lightbox-close]")) {
            event.preventDefault();
            closeChatImageLightbox();
        }
    });
}

if (typeof document !== "undefined") {
    initChatImageLightboxEvents();
}
