1(function () { 2 function ready(fn){ if(document.readyState!=='loading') fn(); else document.addEventListener('DOMContentLoaded',fn); } 3 ready(function () { 4 (function () { 5 var ro = document.getElementById('holoReadout'); 6 if (!ro) return; 7 var icEl = ro.querySelector('.ro-ic'), nameEl = ro.querySelector('.ro-name'), descEl = ro.querySelector('.ro-desc'); 8 var DESC = { 9 'SASE': 'Cloud-delivered secure access for users & apps, anywhere.', 10 'Zero Trust': 'Never trust, always verify â least privilege everywhere.', 11 'AI SecOps': 'AI-driven threat detection & automated response, around the clock.', 12 'PAM / IAM': 'Govern identities and vault every privileged account.', 13 'Data Security': 'Discover, classify & protect sensitive data from loss.', 14 'DNS Guard': 'Stop threats at the DNS layer before they ever reach you.', 15 'Cyber Visibility': 'Real-time visibility & analytics across your whole network.' 16 }; 17 var nodes = document.querySelectorAll('.holo-node'); 18 function show(node) { 19 var name = (node.querySelector('.nl').textContent || '').trim(); 20 var svg = node.querySelector('.nb svg'); 21 icEl.innerHTML = svg ? svg.outerHTML : ''; 22 nameEl.textContent = name; 23 descEl.textContent = DESC[name] || ''; 24 ro.classList.remove('show'); void ro.offsetWidth; ro.classList.add('show'); // retrigger wipe-in 25 } 26 function hide() { ro.classList.remove('show'); } 27 nodes.forEach(function (n) { 28 n.setAttribute('tabindex', '0'); 29 n.setAttribute('role', 'button'); 30 n.addEventListener('mouseenter', function () { show(n); }); 31 n.addEventListener('mouseleave', hide); 32 n.addEventListener('focus', function () { show(n); }); 33 n.addEventListener('blur', hide); 34 n.addEventListener('click', function () { show(n); }); 35 }); 36 })(); 37 38 (function () { 39 var sw = document.getElementById('holoSwitch'); 40 var holo = document.querySelector('.holo'); 41 if (!sw || !holo) return; 42 var AUTO_ON_MS = 10 * 60 * 1000; 43 var timer = null; 44 function apply(on) { 45 holo.classList.toggle('holo-off', !on); 46 sw.setAttribute('aria-checked', on ? 'true' : 'false'); 47 if (!on) { var ro = document.getElementById('holoReadout'); if (ro) ro.classList.remove('show'); } 48 } 49 function powerOn() { if (timer) { clearTimeout(timer); timer = null; } apply(true); } 50 function powerOff() { apply(false); if (timer) clearTimeout(timer); timer = setTimeout(powerOn, AUTO_ON_MS); } 51 apply(true); // default on 52 sw.addEventListener('click', function () { 53 if (holo.classList.contains('holo-off')) powerOn(); else powerOff(); 54 }); 55 })(); 56 }); 57})();
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.