Spaces:
Running
Running
| 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); | |
| } | |
| }); |