|
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