Skip to content

Commit e03de68

Browse files
Update script.js
1 parent 20ce958 commit e03de68

1 file changed

Lines changed: 34 additions & 41 deletions

File tree

script.js

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -648,48 +648,41 @@ document.querySelectorAll('.cta-bot').forEach(a => { a.href='https://t.me/Metrid
648648
window.addEventListener('load', function(){ setTimeout(boot, 50); });
649649
})();
650650

651-
652-
/* === AURUM-DELTA v2 — reliable close & body lock === */
651+
/* === AURUM-DELTA MIN: reliable close for zoom === */
653652
(function(){
654-
// Patch/augment existing ensureLB & openLightbox if present
655-
function ensureLB(){
656-
var exist = document.querySelector('.mdx-lightbox');
657-
if(exist){
658-
return { el: exist, img: exist.querySelector('img'), close: exist.querySelector('.mdx-close') };
659-
}
660-
var el = document.createElement('div'); el.className='mdx-lightbox'; el.setAttribute('hidden','');
661-
var img = document.createElement('img');
662-
var close = document.createElement('button'); close.className='mdx-close'; close.setAttribute('aria-label','Close'); close.textContent='✕';
663-
el.appendChild(img); el.appendChild(close); document.body.appendChild(el);
664-
return { el, img, close };
653+
// Lock scroll when any .mdx-lightbox is open
654+
const body = document.body;
655+
function lock(){ body && body.classList.add('mdx-locked'); }
656+
function unlock(){ body && body.classList.remove('mdx-locked'); }
657+
// Observe lightbox open/close to toggle body lock
658+
const lb = document.querySelector('.mdx-lightbox');
659+
if(lb){
660+
const obs = new MutationObserver(()=>{
661+
if(lb.classList.contains('open')) lock(); else unlock();
662+
});
663+
obs.observe(lb, {attributes:true, attributeFilter:['class']});
665664
}
666-
667-
window.openLightbox = function(set, idx, onChange){
668-
var lb = ensureLB();
669-
lb.el.removeAttribute('hidden'); lb.el.classList.add('open');
670-
document.body.classList.add('mdx-locked');
671-
var cur = Math.max(0, Math.min(idx, set.length-1));
672-
lb.img.src = set[cur];
673-
674-
function move(d){ cur=(cur+d+set.length)%set.length; lb.img.src=set[cur]; if(onChange) onChange(cur); }
675-
function onKey(e){ if(!lb.el.classList.contains('open')) return; if(e.key==='Escape'){ doClose(e); } if(e.key==='ArrowLeft'){ move(-1); } if(e.key==='ArrowRight'){ move(1); } }
676-
function onBg(e){ if(e.target===lb.el){ doClose(e); } }
677-
678-
function doClose(e){
679-
if(e){ e.preventDefault(); e.stopPropagation(); }
680-
lb.el.classList.remove('open'); lb.el.setAttribute('hidden','');
681-
document.body.classList.remove('mdx-locked');
682-
document.removeEventListener('keydown', onKey, true);
683-
lb.el.removeEventListener('click', onBg, true);
684-
lb.close.removeEventListener('click', onCloseCapture, true);
665+
// Universal close handler (capture to beat bubbling)
666+
function doClose(box){
667+
if(!box) return;
668+
box.classList.remove('open');
669+
box.setAttribute('hidden','');
670+
unlock();
671+
}
672+
document.addEventListener('click', function(e){
673+
const closeBtn = e.target.closest && e.target.closest('.mdx-lightbox .mdx-close, .mdx-lightbox [data-close]');
674+
if(closeBtn){
675+
e.preventDefault(); e.stopPropagation();
676+
doClose(closeBtn.closest('.mdx-lightbox'));
677+
} else {
678+
// click on backdrop closes
679+
const box = e.target.classList && e.target.classList.contains('mdx-lightbox') ? e.target : null;
680+
if(box){ e.preventDefault(); e.stopPropagation(); doClose(box); }
685681
}
686-
687-
function onCloseCapture(e){ e.preventDefault(); e.stopPropagation(); doClose(e); }
688-
689-
// attach listeners (CAPTURE to win over bubbling)
690-
document.addEventListener('keydown', onKey, true);
691-
lb.el.addEventListener('click', onBg, true);
692-
lb.close.addEventListener('click', onCloseCapture, true);
693-
};
682+
}, true);
683+
document.addEventListener('keydown', function(e){
684+
const box = document.querySelector('.mdx-lightbox.open');
685+
if(!box) return;
686+
if(e.key === 'Escape'){ e.preventDefault(); e.stopPropagation(); doClose(box); }
687+
}, true);
694688
})();
695-

0 commit comments

Comments
 (0)