import { api } from '../api.js'; class PhotoGallery extends HTMLElement { constructor() { super(); this.photos = []; this.boundHandleClick = this.handleClick.bind(this); } connectedCallback() { this.addEventListener('click', this.boundHandleClick); this.render(); this.loadPhotos(); } disconnectedCallback() { this.removeEventListener('click', this.boundHandleClick); } async loadPhotos() { try { this.photos = await api.getPhotos(); this.renderPhotos(); } catch (error) { console.error('Failed to load photos:', error); this.querySelector('.gallery-grid').innerHTML = '
Failed to load photos
'; } } async renderPhotos() { const grid = this.querySelector('.gallery-grid'); if (this.photos.length === 0) { grid.innerHTML = ''; const header = this.querySelector('.gallery-header'); const empty = document.createElement('p'); empty.className = 'empty-state'; empty.textContent = 'No photos found.'; header.insertAdjacentElement('afterend', empty); return; } // Remove any existing empty-state const existingEmpty = this.querySelector('.empty-state'); if (existingEmpty) existingEmpty.remove(); grid.innerHTML = this.photos.map(photo => `