diff --git a/static/js/lightbox.js b/static/js/lightbox.js index 5f109e8..100f458 100644 --- a/static/js/lightbox.js +++ b/static/js/lightbox.js @@ -1,92 +1,152 @@ -let currentLightboxImages = []; -let currentLightboxIndex = 0; +class ImageLightbox extends HTMLElement { + constructor() { + super(); + this.currentImages = []; + this.currentIndex = 0; + this.handleImageClick = this.handleImageClick.bind(this); + this.handleKeyPress = this.handleKeyPress.bind(this); + } -function openLightbox(src) { - currentLightboxImages = [src]; - currentLightboxIndex = 0; - showLightbox(); -} + connectedCallback() { + this.render(); + this.setupEventListeners(); + } -function openLightboxGroup(element) { - const group = element.closest('.img-group'); - const images = Array.from(group.querySelectorAll('img')).map(img => img.src); - const clickedImg = element.querySelector('img'); - - currentLightboxImages = images; - currentLightboxIndex = images.indexOf(clickedImg.src); - showLightbox(); -} + disconnectedCallback() { + this.cleanup(); + } -function showLightbox() { - let lightbox = document.getElementById('lightbox'); - - if (!lightbox) { - lightbox = document.createElement('div'); - lightbox.id = 'lightbox'; - lightbox.innerHTML = ` + render() { + this.id = 'lightbox'; + this.style.display = 'none'; + this.innerHTML = `