|
8 | 8 | (function() { |
9 | 9 | const isSettingsPage = window.location.pathname.endsWith("/settings.html"); |
10 | 10 |
|
| 11 | + /** |
| 12 | + * @param {Element} elem |
| 13 | + * @param {EventTarget|null} target |
| 14 | + */ |
| 15 | + function elemContainsTarget(elem, target) { |
| 16 | + if (target instanceof Node) { |
| 17 | + return elem.contains(target); |
| 18 | + } else { |
| 19 | + return false; |
| 20 | + } |
| 21 | + } |
| 22 | + |
11 | 23 | /** |
12 | 24 | * @overload {"theme"|"preferred-dark-theme"|"preferred-light-theme"} |
13 | 25 | * @param {string} settingName |
|
322 | 334 | const settingsBtn = getSettingsButton(); |
323 | 335 | const helpUnfocused = helpBtn === null || |
324 | 336 | (!helpBtn.contains(document.activeElement) && |
325 | | - // @ts-expect-error |
326 | | - !helpBtn.contains(event.relatedTarget)); |
| 337 | + !elemContainsTarget(helpBtn, event.relatedTarget)); |
327 | 338 | const settingsUnfocused = settingsBtn === null || |
328 | 339 | (!settingsBtn.contains(document.activeElement) && |
329 | | - // @ts-expect-error |
330 | | - !settingsBtn.contains(event.relatedTarget)); |
| 340 | + !elemContainsTarget(settingsBtn, event.relatedTarget)); |
331 | 341 | if (helpUnfocused && settingsUnfocused) { |
332 | 342 | window.hidePopoverMenus(); |
333 | 343 | } |
|
340 | 350 | const settingsButton = nonnull(getSettingsButton()); |
341 | 351 | const settingsMenu = nonnull(document.getElementById("settings")); |
342 | 352 | settingsButton.onclick = event => { |
343 | | - // @ts-expect-error |
344 | | - if (settingsMenu.contains(event.target)) { |
| 353 | + if (elemContainsTarget(settingsMenu, event.target)) { |
345 | 354 | return; |
346 | 355 | } |
347 | 356 | event.preventDefault(); |
|
0 commit comments