(function () { 'use strict'; function init(root) { var app = root || document.getElementById('project-search-app'); if (!app || app.dataset.psChatBound === '1') { return; } app.dataset.psChatBound = '1'; var form = app.querySelector('#project-search-form'); var input = app.querySelector('#project-search-query'); var messagesEl = app.querySelector('#project-search-messages'); var statusEl = app.querySelector('#project-search-status'); var errorEl = app.querySelector('#project-search-error'); var submitBtn = app.querySelector('#project-search-submit'); var endBtn = app.querySelector('#project-search-end-chat'); var askUrl = app.dataset.askUrl; var endUrl = app.dataset.endUrl; var csrf = document.querySelector('meta[name="csrf-token"]'); var pending = false; function csrfToken() { return csrf ? csrf.getAttribute('content') : ''; } function hideError() { if (!errorEl) return; errorEl.classList.add('hidden'); errorEl.textContent = ''; } function showError(message) { if (!errorEl) return; errorEl.textContent = message; errorEl.classList.remove('hidden'); } function setPending(active) { pending = active; if (statusEl) { statusEl.classList.toggle('hidden', !active); } if (submitBtn) { submitBtn.disabled = active || app.dataset.indexAvailable !== '1' || app.dataset.chatAvailable !== '1'; } if (input) { input.disabled = active || app.dataset.indexAvailable !== '1' || app.dataset.chatAvailable !== '1'; } } function removeEmptyState() { var empty = messagesEl ? messagesEl.querySelector('[data-chat-empty]') : null; if (empty) { empty.remove(); } } function escapeHtml(text) { var div = document.createElement('div'); div.textContent = text; return div.innerHTML; } function renderMessage(message) { var isUser = message.role === 'user'; var html = '
Chat diakhiri.
' + 'Mulai percakapan baru dengan pertanyaan di bawah.