${postText}
`;
elements.postsOutput.appendChild(card);
});
// Add event listeners to the new copy buttons
document.querySelectorAll('.copy-button').forEach((button, index) => {
button.addEventListener('click', () => copyToClipboard(posts[index], button));
});
elements.resultContainer.classList.remove('hidden');
elements.error.classList.add('hidden');
};
const displayError = (message) => {
elements.error.textContent = message;
elements.error.classList.remove('hidden');
elements.resultContainer.classList.add('hidden');
elements.loading.classList.add('hidden');
};
const copyToClipboard = (text, buttonElement) => {
const tempTextArea = document.createElement('textarea');
tempTextArea.value = text;
document.body.appendChild(tempTextArea);
tempTextArea.select();
try {
document.execCommand('copy');
const originalText = buttonElement.textContent;
buttonElement.textContent = 'Copied!';
setTimeout(() => { buttonElement.textContent = originalText; }, 2000);
} catch (err) { console.error('Failed to copy text: ', err); }
document.body.removeChild(tempTextArea);
};
const downloadPDF = () => {
if (typeof window.jspdf === 'undefined') {
displayError("Could not generate PDF. The 'jspdf' library is missing.");
return;
}
const { jsPDF } = window.jspdf;
const doc = new jsPDF({ unit: 'pt', format: 'a4' });
const margin = 40;
let y = margin;
doc.setFont("helvetica", "bold");
doc.setFontSize(22);
doc.text("Social Media Posts", doc.internal.pageSize.getWidth() / 2, y, { align: 'center' });
y += 20;
doc.setFont("helvetica", "normal");
doc.setFontSize(11);
doc.setTextColor(100);
doc.text(`Topic: ${elements.topic.value}`, doc.internal.pageSize.getWidth() / 2, y, { align: 'center' });
y += 40;
generatedPosts.forEach((post, index) => {
if (y > doc.internal.pageSize.getHeight() - 100) { // Check for page break
doc.addPage();
y = margin;
}
doc.setFont("helvetica", "bold");
doc.setFontSize(14);
doc.setTextColor(219, 39, 119); // Pink color
doc.text(`Post Variation #${index + 1} (${elements.platform.value.split('(')[0].trim()})`, margin, y);
y += 20;
doc.setFont("helvetica", "normal");
doc.setFontSize(11);
doc.setTextColor(50);
const postLines = doc.splitTextToSize(post, doc.internal.pageSize.getWidth() - margin * 2);
doc.text(postLines, margin, y);
y += postLines.length * 12 + 30;
doc.setDrawColor(243, 244, 246);
doc.line(margin, y, doc.internal.pageSize.getWidth() - margin, y);
y += 25;
});
doc.save("social-media-posts.pdf");
};
elements.generateButton.addEventListener('click', generatePosts);
elements.pdfButton.addEventListener('click', downloadPDF);
});