`;
templateListDisplay.appendChild(templateEl);
});
};
const handleAddTemplate = (e) => {
e.preventDefault();
const keywords = templateKeywordsInput.value.trim().toLowerCase().split(',').map(k => k.trim()).filter(k => k);
const text = templateTextInput.value.trim();
if (keywords.length > 0 && text) {
responseTemplates.push({
id: Date.now(),
keywords: keywords,
text: text
});
renderTemplateList();
addTemplateForm.reset();
} else {
alert("Please provide both keywords and template text.");
}
};
const handleDeleteTemplate = (e) => {
if (e.target.classList.contains('delete-template-btn')) {
const templateId = parseInt(e.target.dataset.id, 10);
responseTemplates = responseTemplates.filter(t => t.id !== templateId);
renderTemplateList();
}
};
const generateResponse = () => {
const query = queryInput.value.trim().toLowerCase();
const tone = toneSelect.value;
if (!query) {
responseOutput.value = "Please enter an incoming message first.";
return;
}
let bestMatch = null;
for (const template of responseTemplates) {
if (template.keywords.some(k => query.includes(k))) {
bestMatch = template;
break;
}
}
let responseText = bestMatch ? bestMatch.text : "Thank you for reaching out. Our team has received your message and will get back to you as soon as possible.\n\nBest regards,\nThe Support Team";
// Adjust tone
if (tone === 'Friendly') {
responseText = responseText.replace(/Sincerely,|Regards,|Best regards,/g, 'Best,');
responseText = responseText.replace(/Thank you for contacting us/g, 'Thanks for reaching out');
} else if (tone === 'Empathetic') {
responseText = responseText.replace(/Thank you for contacting us/g, 'I understand this can be frustrating, and I\'m here to help');
responseText = responseText.replace(/Sincerely,|Regards,/g, 'Warmly,');
} // Professional is the default
responseOutput.value = responseText;
};
const handlePdfDownload = () => {
const text = responseOutput.value;
if (!text.trim()) {
alert("There is no response to download.");
return;
}
const { jsPDF } = window.jspdf;
const pdf = new jsPDF();
pdf.setFont('Inter', 'normal');
pdf.setFontSize(12);
const lines = pdf.splitTextToSize(text, 180); // 180 is width in mm
pdf.text(lines, 15, 20);
pdf.save('generated-response.pdf');
};
// --- Event Listeners ---
tabs.dashboard.addEventListener('click', () => { currentTab = 'dashboard'; updateTabs(); });
tabs.config.addEventListener('click', () => { currentTab = 'config'; updateTabs(); });
navButtons.next.addEventListener('click', () => { currentTab = 'config'; updateTabs(); });
navButtons.prev.addEventListener('click', () => { currentTab = 'dashboard'; updateTabs(); });
generateBtn.addEventListener('click', generateResponse);
addTemplateForm.addEventListener('submit', handleAddTemplate);
templateListDisplay.addEventListener('click', handleDeleteTemplate);
downloadPdfBtn.addEventListener('click', handlePdfDownload);
// --- Initializations ---
updateTabs();
renderTemplateList();
});