1(function(){'use strict';var root=document.querySelector('[data-abclo-hub]');if(!root){return} 2var FADE_MS=280;var sections=Array.prototype.slice.call(root.querySelectorAll('.abclo-hub__section'));var buttons=Array.prototype.slice.call(root.querySelectorAll('.abclo-hub__filter-btn[data-hub-filter]'));var radiogroup=root.querySelector('.abclo-hub__filter[role="radiogroup"]');var reduceMotion=!1;try{reduceMotion=window.matchMedia('(prefers-reduced-motion: reduce)').matches}catch(e){reduceMotion=!1} 3function setActiveFilter(slug){buttons.forEach(function(btn){var s=btn.getAttribute('data-hub-filter');var on=s===slug;btn.classList.toggle('is-active',on);btn.setAttribute('aria-checked',on?'true':'false')})} 4function showSection(section){if(section._hideTimer){clearTimeout(section._hideTimer);section._hideTimer=null} 5if(reduceMotion){section.classList.remove('is-hidden','is-hiding','is-showing');return} 6section.classList.remove('is-hidden','is-hiding');section.classList.add('is-showing');requestAnimationFrame(function(){requestAnimationFrame(function(){section.classList.remove('is-showing')})})} 7function hideSection(section){if(section.classList.contains('is-hidden')){return} 8if(reduceMotion){section.classList.add('is-hidden');section.classList.remove('is-hiding','is-showing');return} 9section.classList.add('is-hiding');section._hideTimer=setTimeout(function(){section.classList.add('is-hidden');section.classList.remove('is-hiding');section._hideTimer=null},FADE_MS)} 10function applyFilter(slug){if(!slug){return} 11setActiveFilter(slug);var showAll=slug==='all';sections.forEach(function(section){var cat=section.getAttribute('data-hub-category');var match=showAll||cat===slug;if(match){showSection(section)}else{hideSection(section)}})} 12buttons.forEach(function(btn){btn.addEventListener('click',function(){var slug=btn.getAttribute('data-hub-filter');applyFilter(slug)})});if(radiogroup&&buttons.length){radiogroup.addEventListener('keydown',function(e){var keys={LEFT:'ArrowLeft',RIGHT:'ArrowRight',HOME:'Home',END:'End'};var key=e.key;if(key!==keys.LEFT&&key!==keys.RIGHT&&key!==keys.HOME&&key!==keys.END){return} 13var idx=buttons.indexOf(document.activeElement);if(idx===-1){return} 14e.preventDefault();var next=idx;if(key===keys.HOME){next=0}else if(key===keys.END){next=buttons.length-1}else if(key===keys.LEFT){next=idx>0?idx-1:buttons.length-1}else if(key===keys.RIGHT){next=idx<buttons.length-1?idx+1:0} 15buttons[next].focus();var slug=buttons[next].getAttribute('data-hub-filter');applyFilter(slug)})} 16var zoomFigures=Array.prototype.slice.call(root.querySelectorAll('[data-publication-zoom]'));zoomFigures.forEach(function(figure){var stage=figure.querySelector('[data-publication-zoom-stage]');var zoomIn=figure.querySelector('[data-publication-zoom-in]');var zoomOut=figure.querySelector('[data-publication-zoom-out]');var zoom=1;var minZoom=1;var maxZoom=2.5;var step=0.5;function setZoomOrigin(xPercent,yPercent){if(!stage){return} 17stage.style.setProperty('--abclo-publication-zoom-origin-x',xPercent.toFixed(1)+'%');stage.style.setProperty('--abclo-publication-zoom-origin-y',yPercent.toFixed(1)+'%')} 18function resetZoomOrigin(){setZoomOrigin(50,50)} 19function setZoom(nextZoom){zoom=Math.max(minZoom,Math.min(maxZoom,nextZoom));if(stage){stage.style.setProperty('--abclo-publication-zoom',zoom.toFixed(2))} 20figure.classList.toggle('is-zoomed',zoom>minZoom);if(zoom<=minZoom){resetZoomOrigin()} 21if(zoomOut){zoomOut.disabled=zoom<=minZoom} 22if(zoomIn){zoomIn.disabled=zoom>=maxZoom}} 23figure.addEventListener('pointermove',function(e){if(zoom<=minZoom||e.target.closest('.abclo-hub__publication-zoom-controls')){return} 24var rect=figure.getBoundingClientRect();var xPercent=((e.clientX-rect.left)/rect.width)*100;var yPercent=((e.clientY-rect.top)/rect.height)*100;setZoomOrigin(Math.max(0,Math.min(100,xPercent)),Math.max(0,Math.min(100,yPercent)))});figure.addEventListener('pointerleave',function(){resetZoomOrigin()});if(zoomIn){zoomIn.addEventListener('click',function(){setZoom(zoom+step)})} 25if(zoomOut){zoomOut.addEventListener('click',function(){setZoom(zoom-step)})} 26setZoom(zoom)});(function(){const track=document.querySelector('.abclo-hub__slider-track');
26const dots=document.querySelectorAll('.abclo-hub__slider-dot');const prev=document.querySelector('.abclo-hub__slider-arrow--prev');const next=document.querySelector('.abclo-hub__slider-arrow--next');const total=dots.length;let current=0;function goTo(index){current=(index+total)%total;track.style.transform=`translateX(-${current * 100}%)`;dots.forEach((d,i)=>d.classList.toggle('is-active',i===current))} 27prev.addEventListener('click',()=>goTo(current-1));next.addEventListener('click',()=>goTo(current+1));dots.forEach((d,i)=>d.addEventListener('click',()=>goTo(i)))})();(function(){var lightbox=document.getElementById('abcloLightbox');var lightboxImg=document.getElementById('abcloLightboxImg');var lightboxClose=document.getElementById('abcloLightboxClose');var zoomContainer=document.getElementById('abcloZoomContainer');if(!lightbox)return;var zoomLevel=2.5;var isZoomed=!1;document.querySelectorAll('.abclo-hub__publication-img').forEach(function(img){img.addEventListener('click',function(){lightboxImg.src=img.src;lightboxImg.alt=img.alt;lightboxImg.style.transform='scale(1)';isZoomed=!1;zoomContainer.style.cursor='crosshair';lightbox.classList.add('is-open')})});zoomContainer.addEventListener('click',function(e){e.stopPropagation();isZoomed=!isZoomed;if(!isZoomed){lightboxImg.style.transform='scale(1)';lightboxImg.style.transformOrigin='0 0';zoomContainer.style.cursor='crosshair'}else{zoomContainer.style.cursor='zoom-out'}});zoomContainer.addEventListener('mousemove',function(e){if(!isZoomed)return;var rect=zoomContainer.getBoundingClientRect();var xPercent=((e.clientX-rect.left)/rect.width)*100;var yPercent=((e.clientY-rect.top)/rect.height)*100;lightboxImg.style.transformOrigin=xPercent+'% '+yPercent+'%';lightboxImg.style.transform='scale('+zoomLevel+')'});zoomContainer.addEventListener('mouseleave',function(){if(isZoomed){lightboxImg.style.transform='scale('+zoomLevel+')'}});lightboxClose.addEventListener('click',function(){lightbox.classList.remove('is-open')});lightbox.addEventListener('click',function(e){if(e.target===lightbox){lightbox.classList.remove('is-open')}})})();(function(){const overlay=document.createElement("div");overlay.className="abclo-lightbox-overlay";overlay.innerHTML=` 28 <div class="abclo-lightbox-inner"> 29 <img src="" alt="Fullscreen chart" /> 30 <button class="abclo-lightbox-close" aria-label="Close">×</button> 31 </div> 32 `;document.body.appendChild(overlay);const lightboxImg=overlay.querySelector("img");const closeBtn=overlay.querySelector(".abclo-lightbox-close");const inner=overlay.querySelector(".abclo-lightbox-inner");function openLightbox(src,alt){lightboxImg.src=src;lightboxImg.alt=alt||"";overlay.classList.add("is-open");document.body.style.overflow="hidden"} 33function closeLightbox(){overlay.classList.remove("is-open");document.body.style.overflow="";setTimeout(()=>{lightboxImg.src=""},200)} 34overlay.addEventListener("click",closeLightbox);inner.addEventListener("click",function(e){e.stopPropagation()});closeBtn.addEventListener("click",closeLightbox);document.addEventListener("keydown",function(e){if(e.key==="Escape")closeLightbox()});function attachLightbox(){document.querySelectorAll(".abclo-hub__publication-figure").forEach(function(figure){if(figure.dataset.lightboxAttached)return;figure.dataset.lightboxAttached="true";figure.addEventListener("click",function(){const img=figure.querySelector("img");if(img)openLightbox(img.src,img.alt)})})} 35if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",attachLightbox)}else{attachLightbox()} 36const observer=new MutationObserver(attachLightbox);observer.observe(document.body,{childList:!0,subtree:!0})})()}())
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.