1document.addEventListener('DOMContentLoaded', function (){ 2var boxes=document.querySelectorAll('.ai-reader-summary-box'); 3if(!boxes||boxes.length===0){ 4return; 5} 6boxes.forEach(function (box){ 7if(box.classList.contains('airs-collapsible-init')){ 8return; 9} 10box.classList.add('airs-collapsible-init'); 11var enableCollapse=box.getAttribute('data-enable-collapse'); 12if(enableCollapse==='0'){ 13return; 14} 15var accentPrimary=box.getAttribute('data-accent-primary')||'#FF4B6A'; 16var accentSecondary=box.getAttribute('data-accent-secondary')||'#FF7A3C'; 17var labelEl=box.querySelector('.airs-summary-label'); 18var labelText='ð¡ AI Summary by Libre'; 19if(labelEl){ 20var iconEl=labelEl.querySelector('.airs-label-icon'); 21var mainEl=labelEl.querySelector('.airs-label-text'); 22var secondaryEl=labelEl.querySelector('.airs-label-brand'); 23var parts=[]; 24if(iconEl&&iconEl.textContent) parts.push(iconEl.textContent); 25if(mainEl&&mainEl.textContent) parts.push(mainEl.textContent); 26if(secondaryEl&&secondaryEl.textContent) parts.push(secondaryEl.textContent); 27if(parts.length > 0){ 28labelText=parts.join(' '); 29}} 30var toggleBtn=document.createElement('button'); 31toggleBtn.type='button'; 32toggleBtn.className='ai-summary-toggle'; 33toggleBtn.setAttribute('aria-expanded', 'true'); 34toggleBtn.setAttribute('aria-label', 'ÎÏÏκÏÏ Ïη ÏεÏίληÏηÏ'); 35toggleBtn.textContent='â'; 36toggleBtn.style.background=accentPrimary; 37box.appendChild(toggleBtn); 38var collapsedBar=document.createElement('div'); 39collapsedBar.className='ai-summary-collapsed-bar'; 40collapsedBar.style.background='linear-gradient(90deg, ' + accentPrimary + ' 0%, ' + accentSecondary + ' 100%)'; 41var collapsedText=document.createElement('span'); 42collapsedText.className='ai-summary-collapsed-text'; 43collapsedText.textContent=labelText; 44var plusSpan=document.createElement('span'); 45plusSpan.className='plus'; 46plusSpan.textContent='+'; 47collapsedBar.appendChild(collapsedText); 48collapsedBar.appendChild(plusSpan); 49if(box.parentNode){ 50if(box.nextSibling){ 51box.parentNode.insertBefore(collapsedBar, box.nextSibling); 52}else{ 53box.parentNode.appendChild(collapsedBar); 54}} 55toggleBtn.addEventListener('click', function (){ 56box.classList.add('ai-summary-box-hidden'); 57toggleBtn.setAttribute('aria-expanded', 'false'); 58collapsedBar.style.display='block'; 59}); 60collapsedBar.addEventListener('click', function (){ 61box.classList.remove('ai-summary-box-hidden'); 62toggleBtn.setAttribute('aria-expanded', 'true'); 63collapsedBar.style.display='none'; 64}); 65collapsedBar.style.display='none'; 66}); 67});
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.