1(function () { 2 'use strict'; 3 var key = 'leagueSecretary.darkMode', root = document.documentElement; 4 function read() { try { return localStorage.getItem(key) === 'true'; } catch (_) { return false; } } 5 function apply(dark) { 6 root.setAttribute('data-theme-mode', dark ? 'dark' : 'light'); 7 var toggle = document.getElementById('darkModeToggle'); 8 if (toggle) { 9 toggle.setAttribute('aria-pressed', String(dark)); 10 var label = dark ? 'Switch to Light Mode' : 'Switch to Dark Mode'; 11 toggle.setAttribute('aria-label', label); toggle.title = label; 12 toggle.querySelector('i').className = dark ? 'fa fa-moon' : 'fa fa-lightbulb'; 13 } 14 document.dispatchEvent(new CustomEvent('ls:themechange', { detail: { dark: dark } })); 15 } 16 var ready = false; 17 function select(dark) { 18 try { localStorage.setItem(key, String(dark)); } catch (_) { } 19 apply(dark); 20 } 21 apply(read()); 22 document.addEventListener('DOMContentLoaded', function () { 23 ready = true; 24 apply(read()); 25 var toggle = document.getElementById('darkModeToggle'); 26 if (toggle) toggle.addEventListener('click', function () { 27 select(root.getAttribute('data-theme-mode') !== 'dark'); 28 }); 29 }); 30 window.addEventListener('storage', function (event) { 31 if (ready && (event.key === key || event.key === null)) select(read()); 32 }); 33})(); 34(function () { 35 'use strict'; 36 // Chart.js draws on canvas and therefore cannot inherit stylesheet text colors. 37 function installChartTheme() { 38 if (!window.Chart || !window.Chart.register) return; 39 var originals = new WeakMap(); 40 window.Chart.register({ 41 id: 'leagueSecretaryTheme', 42 beforeUpdate: function (chart) { 43 var dark = document.documentElement.getAttribute('data-theme-mode') === 'dark'; 44 var options = chart.config.options; 45 var saved = originals.get(chart); 46 if (!saved) { saved = new Map(); originals.set(chart, saved); } 47 function set(object, property, value) { 48 if (!object) return; 49 if (!saved.has(object)) saved.set(object, {}); 50 var record = saved.get(object); 51 if (!(property in record)) record[property] = object[property]; 52 if (dark) object[property] = value; 53 else if (record[property] === undefined) delete object[property]; 54 else object[property] = record[property]; 55 } 56 set(options, 'color', '#dce7f2'); 57 Object.values(options.scales || {}).forEach(function (axis) { 58 axis.ticks = axis.ticks || {}; axis.grid = axis.grid || {}; axis.title = axis.title || {}; 59 set(axis.ticks, 'color', '#aebed0'); set(axis.grid, 'color', '#3b4d5f'); set(axis.title, 'color', '#dce7f2'); 60 }); 61 options.plugins = options.plugins || {}; 62 options.plugins.legend = options.plugins.legend || {}; 63 options.plugins.legend.labels = options.plugins.legend.labels || {}; 64 set(options.plugins.legend.labels, 'color', '#dce7f2'); 65 } 66 }); 67 function redraw() { Object.values(window.Chart.instances || {}).forEach(function (chart) { chart.update('none'); }); } 68 document.addEventListener('ls:themechange', redraw); 69 redraw(); 70 } 71 window.addEventListener('load', installChartTheme); 72})();
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.