|
15 | 15 | }
|
16 | 16 | mq.addEventListener('change', mqChangeListener);
|
17 | 17 | if (themeToggleButton) {
|
18 |
| - themeToggleButton.addEventListener('click', function() { |
19 |
| - mq.removeEventListener('change', mqChangeListener); |
20 |
| - }, { once: true }); |
| 18 | + themeToggleButton.addEventListener( |
| 19 | + 'click', |
| 20 | + function() { |
| 21 | + mq.removeEventListener('change', mqChangeListener); |
| 22 | + }, |
| 23 | + { once: true } |
| 24 | + ); |
21 | 25 | }
|
22 | 26 | }
|
23 | 27 |
|
|
60 | 64 | for (const picker of pickers) {
|
61 | 65 | const parentNode = picker.parentNode;
|
62 | 66 |
|
63 |
| - picker.addEventListener('click', (e) => { |
| 67 | + picker.addEventListener('click', function(e) { |
64 | 68 | e.preventDefault();
|
65 | 69 |
|
66 | 70 | /*
|
|
76 | 80 | to close pickers if needed.
|
77 | 81 | */
|
78 | 82 |
|
79 |
| - requestAnimationFrame(() => { |
| 83 | + requestAnimationFrame(function() { |
80 | 84 | parentNode.classList.add('expanded');
|
81 | 85 | window.addEventListener('click', closeAllPickers);
|
82 | 86 | window.addEventListener('keydown', onKeyDown);
|
|
90 | 94 | let ignoreNextIntersection = false;
|
91 | 95 |
|
92 | 96 | new IntersectionObserver(
|
93 |
| - ([e]) => { |
| 97 | + function(e) { |
94 | 98 | const currentStatus = header.classList.contains('is-pinned');
|
95 |
| - const newStatus = e.intersectionRatio < 1; |
| 99 | + const newStatus = e[0].intersectionRatio < 1; |
96 | 100 |
|
97 | 101 | // Same status, do nothing
|
98 | 102 | if (currentStatus === newStatus) {
|
|
109 | 113 | The timer is reset anyway after few milliseconds.
|
110 | 114 | */
|
111 | 115 | ignoreNextIntersection = true;
|
112 |
| - setTimeout(() => { |
| 116 | + setTimeout(function() { |
113 | 117 | ignoreNextIntersection = false;
|
114 | 118 | }, 50);
|
115 | 119 |
|
|
119 | 123 | ).observe(header);
|
120 | 124 | }
|
121 | 125 |
|
| 126 | + function setupAltDocsLink() { |
| 127 | + const linkWrapper = document.getElementById('alt-docs'); |
| 128 | + |
| 129 | + function updateHashes() { |
| 130 | + for (const link of linkWrapper.querySelectorAll('a')) { |
| 131 | + link.hash = location.hash; |
| 132 | + } |
| 133 | + } |
| 134 | + |
| 135 | + addEventListener('hashchange', updateHashes); |
| 136 | + updateHashes(); |
| 137 | + } |
| 138 | + |
122 | 139 | function bootstrap() {
|
123 |
| - // Check if we have JavaScript support |
| 140 | + // Check if we have JavaScript support. |
124 | 141 | document.documentElement.classList.add('has-js');
|
125 | 142 |
|
126 |
| - // Restore user mode preferences |
| 143 | + // Restore user mode preferences. |
127 | 144 | setupTheme();
|
128 | 145 |
|
129 |
| - // Handle pickers with click/taps rather than hovers |
| 146 | + // Handle pickers with click/taps rather than hovers. |
130 | 147 | setupPickers();
|
131 | 148 |
|
132 |
| - // Track when the header is in sticky position |
| 149 | + // Track when the header is in sticky position. |
133 | 150 | setupStickyHeaders();
|
| 151 | + |
| 152 | + // Make link to other versions of the doc open to the same hash target (if it exists). |
| 153 | + setupAltDocsLink(); |
134 | 154 | }
|
135 | 155 |
|
136 | 156 | if (document.readyState === 'loading') {
|
|
0 commit comments