|
1 | 1 | <script> |
2 | 2 | (function() { |
3 | | - var storageKey = "mcp-ruby-sdk-docs-theme"; |
4 | | - var validPreferences = ["system", "light", "dark"]; |
5 | | - var preferenceLabels = { |
| 3 | + const storageKey = "mcp-ruby-sdk-docs-theme"; |
| 4 | + const validPreferences = ["system", "light", "dark"]; |
| 5 | + const preferenceLabels = { |
6 | 6 | system: "System", |
7 | 7 | light: "Light", |
8 | 8 | dark: "Dark" |
9 | 9 | }; |
10 | | - var mediaQuery = window.matchMedia ? |
| 10 | + const mediaQuery = window.matchMedia ? |
11 | 11 | window.matchMedia("(prefers-color-scheme: dark)") : |
12 | 12 | { matches: false }; |
13 | 13 |
|
|
17 | 17 |
|
18 | 18 | function getStoredPreference() { |
19 | 19 | try { |
20 | | - var preference = window.localStorage.getItem(storageKey); |
| 20 | + const preference = window.localStorage.getItem(storageKey); |
21 | 21 | return isValidPreference(preference) ? preference : "system"; |
22 | 22 | } catch (error) { |
23 | 23 | return "system"; |
|
41 | 41 | } |
42 | 42 |
|
43 | 43 | function nextPreference(preference) { |
44 | | - var index = validPreferences.indexOf(preference); |
| 44 | + const index = validPreferences.indexOf(preference); |
45 | 45 | if (index === -1 || index === validPreferences.length - 1) { |
46 | 46 | return validPreferences[0]; |
47 | 47 | } |
|
50 | 50 | } |
51 | 51 |
|
52 | 52 | function setThemeToggleLabel(preference) { |
53 | | - var buttons = document.querySelectorAll("[data-theme-toggle]"); |
54 | | - var label = "Theme: " + preferenceLabels[preference]; |
55 | | - for (var index = 0; index < buttons.length; index += 1) { |
| 53 | + const buttons = document.querySelectorAll("[data-theme-toggle]"); |
| 54 | + const label = "Theme: " + preferenceLabels[preference]; |
| 55 | + for (let index = 0; index < buttons.length; index += 1) { |
56 | 56 | buttons[index].setAttribute("aria-label", label); |
57 | 57 | buttons[index].setAttribute("title", label); |
58 | 58 | } |
59 | 59 | } |
60 | 60 |
|
61 | 61 | function applyPreference(preference) { |
62 | | - var safePreference = isValidPreference(preference) ? preference : "system"; |
63 | | - var theme = resolvedTheme(safePreference); |
| 62 | + const safePreference = isValidPreference(preference) ? preference : "system"; |
| 63 | + const theme = resolvedTheme(safePreference); |
64 | 64 |
|
65 | 65 | if (window.jtd && typeof window.jtd.setTheme === "function") { |
66 | 66 | window.jtd.setTheme(theme); |
|
74 | 74 | apply: applyPreference, |
75 | 75 | getPreference: getStoredPreference, |
76 | 76 | save: function(preference) { |
77 | | - var safePreference = isValidPreference(preference) ? preference : "system"; |
| 77 | + const safePreference = isValidPreference(preference) ? preference : "system"; |
78 | 78 | savePreference(safePreference); |
79 | 79 | applyPreference(safePreference); |
80 | 80 | } |
|
83 | 83 | applyPreference(getStoredPreference()); |
84 | 84 |
|
85 | 85 | function initThemeToggle() { |
86 | | - var buttons = document.querySelectorAll("[data-theme-toggle]"); |
| 86 | + const buttons = document.querySelectorAll("[data-theme-toggle]"); |
87 | 87 | if (buttons.length === 0) { |
88 | 88 | return; |
89 | 89 | } |
90 | 90 |
|
91 | 91 | setThemeToggleLabel(getStoredPreference()); |
92 | | - for (var index = 0; index < buttons.length; index += 1) { |
| 92 | + for (let index = 0; index < buttons.length; index += 1) { |
93 | 93 | buttons[index].addEventListener("click", function() { |
94 | 94 | window.mcpDocsTheme.save(nextPreference(getStoredPreference())); |
95 | 95 | }); |
|
0 commit comments