Bunpro: Toggle Tense Tip

Automatically hides the tense tip on review and cram pages - press spacebar to toggle

Terá de instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

Terá de instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Terá de instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Terá de instalar uma extensão como Tampermonkey para instalar este script.

Terá de instalar uma extensão de gestão de scripts de utilizador para instalar este script.

(Já tenho um gestor de scripts de utilizador, deixe-me instalá-lo!)

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

(Já tenho um gestor de estilos de utilizador, deixe-me instalá-lo!)

// ==UserScript==
// @name         Bunpro: Toggle Tense Tip
// @namespace    http://tampermonkey.net/
// @version      0.1.2
// @description  Automatically hides the tense tip on review and cram pages - press spacebar to toggle
// @author       yndajas, durtle9831/memosiki (draft toggle logic)
// @license      MIT
// @include      *bunpro.jp*
// @exclude      *community.bunpro.jp*
// @require      https://greasyfork.org/scripts/432418-wait-for-selector/code/Wait%20For%20Selector.js?version=974366
// @require      https://greasyfork.org/scripts/370623-bunpro-helpful-events/code/Bunpro:%20Helpful%20Events.js?version=974369
// @grant        none
// ==/UserScript==

(() => {
  const placeholder = "_________";
  let tense;
  let studyAreaInput;
  let currentTenseAttribute;

  const toggleTenseAttribute = () => {
    const newTenseAttribute = (currentTenseAttribute === tense ? placeholder : tense);
    studyAreaInput.setAttribute("data-tense", newTenseAttribute);
    currentTenseAttribute = newTenseAttribute;
  }

  const html = document.getElementsByTagName('HTML')[0];

  // wait until reviewing
  html.addEventListener('quiz-page', () => {
    // wait for new review item
    html.addEventListener('new-review-item', (event) => {
      // get element and current tense attribute
      studyAreaInput = document.getElementsByClassName("study-area-input")[0];
      currentTenseAttribute = studyAreaInput.getAttribute("data-tense");

      // set tense if attribute exists and isn't the placeholder; hide tense inititally
      if (currentTenseAttribute && currentTenseAttribute !== placeholder) {
        tense = currentTenseAttribute;
        toggleTenseAttribute();
      }
    });
  })

  const handleSpaceKey = (event) => {
    if (event.keyCode === 32 && currentTenseAttribute) {
      toggleTenseAttribute();
    }
  }

  // toggle tense on space bar
  const studyAnswerInput = document.getElementById("study-answer-input");
  [html, studyAnswerInput].forEach((element) => {
    element.addEventListener('keydown', handleSpaceKey);
  });
})();