PageSourceSearch

https://networks365.net/assets/js/hero-holo.js

js networks365.net collected 2026-10-08 21:02:04 UTC 2,693 bytes, 57 lines download raw bytes

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.