PageSourceSearch

https://www.leaguesecretary.com/js/dark-mode.js?v=oAy163S2qRx5lQFMgwmgXAqRYMhMPGUnNPc-IG6VNH0

js leaguesecretary.com collected 2026-10-03 21:20:07 UTC 3,682 bytes, 72 lines download raw bytes

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.