document.addEventListener("DOMContentLoaded", () => { const dropArea = document.getElementById('drop-area'); const fileInput = document.getElementById('file-input'); const gallery = document.getElementById('gallery'); // Prevent default drag behaviors ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { dropArea.addEventListener(eventName, preventDefaults, false); }); function preventDefaults(e) { e.preventDefault(); e.stopPropagation(); } // Highlight drop area when item is dragged over it ['dragenter', 'dragover'].forEach(eventName => { dropArea.addEventListener(eventName, () => dropArea.classList.add('highlight'), false); }); ['dragleave', 'drop'].forEach(eventName => { dropArea.addEventListener(eventName, () => dropArea.classList.remove('highlight'), false); }); // Handle dropped files dropArea.addEventListener('drop', handleDrop, false); function handleDrop(e) { const dt = e.dataTransfer; const files = dt.files; handleFiles(files); } // Open file input when the button is clicked document.getElementById('file-input-button').addEventListener('click', () => { fileInput.click(); }); // Handle files selected via file input fileInput.addEventListener('change', () => { handleFiles(fileInput.files); }); function handleFiles(files) { [...files].forEach(uploadFile); } function uploadFile(file) { if (!file.type.startsWith('image/')) { alert('Please upload only image files.'); return; } const reader = new FileReader(); reader.onload = function(e) { const img = document.createElement('img'); img.src = e.target.result; gallery.appendChild(img); }; reader.readAsDataURL(file); } });