(function () { 'use strict'; function parseItems() { var el = document.getElementById('sk-gallery-lb-json'); if (!el) return null; try { var items = JSON.parse(el.textContent.trim()); return Array.isArray(items) && items.length ? items : null; } catch (e) { return null; } } function init() { var items = parseItems(); if (!items) return; var grid = document.querySelector('.sk-gallery--lb'); var lb = document.getElementById('sk-lightbox'); if (!grid || !lb) return; var img = lb.querySelector('.sk-lightbox__img'); var prev = lb.querySelector('.sk-lightbox__prev'); var next = lb.querySelector('.sk-lightbox__next'); var closeBtn = lb.querySelector('.sk-lightbox__close'); var counter = lb.querySelector('.sk-lightbox__counter'); var inner = lb.querySelector('.sk-lightbox__inner'); if (!img || !prev || !next || !closeBtn || !counter || !inner) return; var idx = 0; var single = items.length < 2; function show(i) { idx = (i + items.length) % items.length; var it = items[idx]; img.src = it.url || ''; img.alt = it.label || ''; counter.textContent = (idx + 1) + ' / ' + items.length; prev.hidden = single; next.hidden = single; } function open(at) { show(at); lb.removeAttribute('hidden'); document.body.classList.add('sk-lightbox-open'); closeBtn.focus(); } function close() { lb.setAttribute('hidden', ''); document.body.classList.remove('sk-lightbox-open'); img.removeAttribute('src'); img.alt = ''; } grid.querySelectorAll('.sk-gallery-item--lb').forEach(function (btn, i) { btn.addEventListener('click', function () { open(i); }); }); prev.addEventListener('click', function (e) { e.stopPropagation(); if (!single) show(idx - 1); }); next.addEventListener('click', function (e) { e.stopPropagation(); if (!single) show(idx + 1); }); closeBtn.addEventListener('click', function (e) { e.stopPropagation(); close(); }); lb.addEventListener('click', function (e) { if (e.target === lb) close(); }); inner.addEventListener('click', function (e) { e.stopPropagation(); }); document.addEventListener('keydown', function (e) { if (lb.hasAttribute('hidden')) return; if (e.key === 'Escape') { close(); } else if (e.key === 'ArrowLeft' && !single) { e.preventDefault(); show(idx - 1); } else if (e.key === 'ArrowRight' && !single) { e.preventDefault(); show(idx + 1); } }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();