document.addEventListener('DOMContentLoaded', () => { const providerSelector = document.getElementById('provider-selector'); const searchInput = document.getElementById('gallery-search-input'); const resultsContainer = document.getElementById('gallery-results'); const loadMoreBtn = document.getElementById('load-more-btn'); let currentPage = 1; let currentProvider = ''; let currentQuery = ''; const perPage = 48; let msnry = null; // --- MASONRY INITIALIZATION --- function initializeMasonry() { if (typeof Masonry === 'undefined') { setTimeout(initializeMasonry, 100); return; } if (msnry) { msnry.destroy(); } msnry = new Masonry(resultsContainer, { itemSelector: '.gallery-card', columnWidth: '.gallery-card', percentPosition: true, gutter: 0, transitionDuration: '0.4s' }); msnry.layout(); } initializeMasonry(); // --- UTILS --- /** * Crea un elemento de tarjeta de resultado de galería. */ function createGalleryCard(item) { const card = document.createElement('a'); card.className = 'gallery-card grid-item'; const itemProvider = item.provider || currentProvider; // ********************************************** // CAMBIO: Nueva URL para la página de visualización card.href = `/gallery/${itemProvider}/${item.id}`; // ********************************************** const img = document.createElement('img'); img.className = 'gallery-card-img'; img.src = item.image; img.alt = item.tags ? item.tags.join(', ') : 'Gallery Image'; img.loading = 'lazy'; img.onload = () => { if (msnry) { msnry.layout(); card.classList.add('is-loaded'); } }; img.onerror = () => { if (msnry) { msnry.layout(); card.classList.add('is-loaded'); } }; card.appendChild(img); return card; } /** * Muestra las tarjetas de esqueleto. (Sin cambios) */ function showSkeletons(count, append = false) { const skeletonMarkup = `
No results found for this search.
'; } if (msnry) { msnry.layout(); } if (data.hasNextPage) { loadMoreBtn.style.display = 'block'; } else { loadMoreBtn.style.display = 'none'; } } catch (error) { console.error('Error during gallery search:', error); if (!isLoadMore) { resultsContainer.innerHTML = 'An error occurred while fetching results.
'; } loadMoreBtn.style.display = 'none'; } } // --- EVENT LISTENERS (Sin cambios) --- providerSelector.addEventListener('change', () => { searchGallery(false); }); let searchTimeout; searchInput.addEventListener('input', () => { clearTimeout(searchTimeout); searchTimeout = setTimeout(() => { searchGallery(false); }, 500); }); searchInput.addEventListener('keydown', (e) => { if (e.key === 'Enter') { clearTimeout(searchTimeout); searchGallery(false); } }); loadMoreBtn.addEventListener('click', () => { searchGallery(true); }); loadExtensions().then(() => { searchGallery(false); }); const navbar = document.getElementById('navbar'); window.addEventListener('scroll', () => { if (window.scrollY > 50) { navbar.classList.add('scrolled'); } else { navbar.classList.remove('scrolled'); } }); });