1(function () { 2 try { 3 var cookieName = 'theme'; 4 var darkClass = 'dark'; 5 var defaultMode = 'system'; 6 var enableSystem = true; 7 var dataAttribute = 'data-theme'; 8 9 function safeDecode(value) { 10 try { 11 return decodeURIComponent(value); 12 } catch (error) { 13 return value; 14 } 15 } 16 17 function readCookie(name) { 18 var cookies = document.cookie ? document.cookie.split(';') : []; 19 20 for (var index = 0; index < cookies.length; index += 1) { 21 var parts = cookies[index].split('='); 22 var key = safeDecode((parts.shift() || '').trim()); 23 24 if (key === name) { 25 return safeDecode(parts.join('=').trim()); 26 } 27 } 28 29 return null; 30 } 31 32 function normalizeMode(value) { 33 if (value === 'light' || value === 'dark') { 34 return value; 35 } 36 37 if (value === 'system' && enableSystem) { 38 return value; 39 } 40 41 return null; 42 } 43 44 var root = document.documentElement; 45 var mode = normalizeMode(readCookie(cookieName)) 46 || normalizeMode(root.getAttribute('data-theme-mode')) 47 || normalizeMode(defaultMode) 48 || 'light'; 49 var prefersDark = typeof window.matchMedia === 'function' 50 && window.matchMedia('(prefers-color-scheme: dark)').matches; 51 var resolved = mode === 'system' 52 ? (prefersDark ? 'dark' : 'light') 53 : mode; 54 55 root.classList.toggle(darkClass, resolved === 'dark'); 56 root.style.colorScheme = resolved; 57 root.dataset.themeMode = mode; 58 root.dataset.theme = resolved; 59 60 if (dataAttribute) { 61 root.setAttribute(dataAttribute, resolved); 62 } 63 } catch (error) { 64 /* Theme init must never block Angular bootstrap. */ 65 } 66}());
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.