132 lines
4.3 KiB
JavaScript
132 lines
4.3 KiB
JavaScript
document.addEventListener('DOMContentLoaded', function () {
|
|
// --- Feather Icons ---
|
|
feather.replace();
|
|
|
|
// --- Theme Switcher ---
|
|
const themeSwitch = document.getElementById('theme-checkbox');
|
|
const currentTheme = localStorage.getItem('theme');
|
|
|
|
if (currentTheme) {
|
|
document.documentElement.setAttribute('data-theme', currentTheme);
|
|
if (currentTheme === 'dark') {
|
|
themeSwitch.checked = true;
|
|
}
|
|
}
|
|
|
|
function switchTheme(e) {
|
|
if (e.target.checked) {
|
|
document.documentElement.setAttribute('data-theme', 'dark');
|
|
localStorage.setItem('theme', 'dark');
|
|
} else {
|
|
document.documentElement.setAttribute('data-theme', 'light');
|
|
localStorage.setItem('theme', 'light');
|
|
}
|
|
}
|
|
|
|
if (themeSwitch) {
|
|
themeSwitch.addEventListener('change', switchTheme, false);
|
|
}
|
|
|
|
// --- Generator Form: Photo Upload ---
|
|
const uploadArea = document.getElementById('upload-area');
|
|
const fileInput = document.getElementById('photo-upload');
|
|
const photoPreview = document.getElementById('photo-preview');
|
|
const MAX_FILES = 5;
|
|
let uploadedFiles = [];
|
|
|
|
if (uploadArea) {
|
|
uploadArea.addEventListener('click', () => fileInput.click());
|
|
|
|
uploadArea.addEventListener('dragover', (e) => {
|
|
e.preventDefault();
|
|
uploadArea.style.borderColor = 'var(--color-primary)';
|
|
});
|
|
|
|
uploadArea.addEventListener('dragleave', (e) => {
|
|
e.preventDefault();
|
|
uploadArea.style.borderColor = 'var(--border-color)';
|
|
});
|
|
|
|
uploadArea.addEventListener('drop', (e) => {
|
|
e.preventDefault();
|
|
uploadArea.style.borderColor = 'var(--border-color)';
|
|
const files = e.dataTransfer.files;
|
|
handleFiles(files);
|
|
});
|
|
|
|
fileInput.addEventListener('change', (e) => {
|
|
const files = e.target.files;
|
|
handleFiles(files);
|
|
});
|
|
}
|
|
|
|
function handleFiles(files) {
|
|
for (const file of files) {
|
|
if (uploadedFiles.length < MAX_FILES && file.type.startsWith('image/')) {
|
|
uploadedFiles.push(file);
|
|
}
|
|
}
|
|
updatePreview();
|
|
}
|
|
|
|
function updatePreview() {
|
|
photoPreview.innerHTML = '';
|
|
uploadedFiles.forEach((file, index) => {
|
|
const reader = new FileReader();
|
|
reader.onload = (e) => {
|
|
const previewItem = document.createElement('div');
|
|
previewItem.classList.add('preview-item');
|
|
|
|
const img = document.createElement('img');
|
|
img.src = e.target.result;
|
|
previewItem.appendChild(img);
|
|
|
|
const removeBtn = document.createElement('button');
|
|
removeBtn.classList.add('remove-img-btn');
|
|
removeBtn.innerHTML = '×';
|
|
removeBtn.addEventListener('click', () => {
|
|
uploadedFiles.splice(index, 1);
|
|
updatePreview();
|
|
});
|
|
previewItem.appendChild(removeBtn);
|
|
|
|
photoPreview.appendChild(previewItem);
|
|
};
|
|
reader.readAsDataURL(file);
|
|
});
|
|
}
|
|
|
|
// --- Copy to Clipboard ---
|
|
const copyBtn = document.getElementById('copy-btn');
|
|
if(copyBtn) {
|
|
copyBtn.addEventListener('click', () => {
|
|
const title = document.getElementById('result-title')?.innerText || '';
|
|
const shortDesc = document.getElementById('result-short-desc')?.innerText || '';
|
|
const desc = document.getElementById('result-desc')?.innerText || '';
|
|
const measurements = document.getElementById('result-measurements')?.innerText || '';
|
|
const hashtags = document.getElementById('result-hashtags')?.innerText || '';
|
|
|
|
const fullText = `
|
|
${title}
|
|
|
|
${shortDesc}
|
|
|
|
${desc}
|
|
|
|
Measurements: ${measurements}
|
|
|
|
${hashtags}
|
|
`;
|
|
|
|
navigator.clipboard.writeText(fullText.trim()).then(() => {
|
|
const originalText = copyBtn.innerHTML;
|
|
copyBtn.innerHTML = 'Copied!';
|
|
setTimeout(() => {
|
|
copyBtn.innerHTML = originalText;
|
|
}, 2000);
|
|
}).catch(err => {
|
|
console.error('Failed to copy: ', err);
|
|
});
|
|
});
|
|
}
|
|
}); |