@@ -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