document.addEventListener('DOMContentLoaded', function() { const paletteSelector = document.getElementById('palette-selector'); const newPaletteButton = document.getElementById('new-palette'); const newPaletteForm = document.getElementById('new-palette-form'); const createPaletteForm = document.getElementById('create-palette-form'); const addColorForm = document.getElementById('add-color-form'); const createColorForm = document.getElementById('create-color-form'); const paletteColorsDiv = document.getElementById('palette-colors'); const colorEditorsDiv = document.getElementById('color-editors'); const addColorButton = document.getElementById('add-color'); const savePaletteButton = document.getElementById('save-palette'); newPaletteButton.addEventListener('click', function() { newPaletteForm.style.display = 'block'; }); createPaletteForm.addEventListener('submit', function(event) { event.preventDefault(); const formData = new FormData(createPaletteForm); fetch('/palette-editor', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { alert('Palette created: ' + data.name); paletteSelector.innerHTML += ``; newPaletteForm.style.display = 'none'; createPaletteForm.reset(); }) .catch(error => { console.error('Error:', error); }); }); paletteSelector.addEventListener('change', function() { const paletteId = paletteSelector.value; if (paletteId) { loadPaletteColors(paletteId); } else { paletteColorsDiv.innerHTML = ''; addColorForm.style.display = 'none'; colorEditorsDiv.innerHTML = ''; } }); addColorButton.addEventListener('click', function() { addColorEditor(); }); savePaletteButton.addEventListener('click', function() { const paletteId = createColorForm.getAttribute('data-palette-id'); const colorEditors = document.querySelectorAll('.color-editor'); colorEditors.forEach(editor => { const colorId = editor.getAttribute('data-color-id'); const colorName = editor.querySelector('.color-name').value; const colorHex = editor.querySelector('.color-hex-input').value; if (colorId) { // Update existing color fetch(`/palette-editor/${paletteId}/colors/${colorId}`, { method: 'PUT', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content') }, body: JSON.stringify({ name: colorName, hex_value: colorHex }) }) .then(response => response.json()) .then(data => { alert('Color updated: ' + data.name); }) .catch(error => { console.error('Error:', error); }); } else { // Add new color fetch(`/palette-editor/${paletteId}/colors`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content') }, body: JSON.stringify({ name: colorName, hex_value: colorHex }) }) .then(response => response.json()) .then(data => { alert('Color added: ' + data.name); editor.setAttribute('data-color-id', data.id); }) .catch(error => { console.error('Error:', error); }); } }); }); function loadPaletteColors(paletteId) { fetch(`/palette-editor/${paletteId}/colors`) .then(response => response.json()) .then(data => { paletteColorsDiv.innerHTML = '