Faster Minimap (Geoguessr)

Close map on hover faster

  1. // ==UserScript==
  2. // @name Faster Minimap (Geoguessr)
  3. // @namespace alienperfect
  4. // @version 1.3
  5. // @description Close map on hover faster
  6. // @author Alien Perfect
  7. // @match https://www.geoguessr.com/*
  8. // @icon https://www.google.com/s2/favicons?sz=32&domain=geoguessr.com
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. "use strict";
  13.  
  14. let activeClass;
  15.  
  16. function main() {
  17. new MutationObserver(() => {
  18. const guessMap = document.querySelector(
  19. "[data-qa='guess-map']:not([data-skip])",
  20. );
  21.  
  22. if (!guessMap) return;
  23.  
  24. guessMap.setAttribute("data-skip", "");
  25.  
  26. guessMap.addEventListener("mouseenter", () => {
  27. if (activeClass && !isPinned()) {
  28. guessMap.classList.add(activeClass);
  29. }
  30. });
  31.  
  32. guessMap.addEventListener("mouseleave", () => {
  33. activeClass = guessMap.classList.item(guessMap.classList.length - 1);
  34.  
  35. if (!isPinned()) {
  36. guessMap.classList.remove(activeClass);
  37. }
  38. });
  39. }).observe(document.body, { childList: true, subtree: true });
  40. }
  41.  
  42. function isPinned() {
  43. const pinButton = document.querySelector(
  44. "[data-qa='guess-map__control--sticky-active']",
  45. );
  46.  
  47. let pinned;
  48.  
  49. if (pinButton) {
  50. pinButton.classList.forEach((cls) => {
  51. if (cls.includes("Active")) {
  52. pinned = true;
  53. }
  54. });
  55. }
  56.  
  57. return pinned;
  58. }
  59.  
  60. main();