Hide Code

Hides the code editor of leetcode problems to prevent spoilers when redoing problems

  1. // ==UserScript==
  2. // @name Hide Code
  3. // @namespace Violentmonkey Scripts
  4. // @match https://leetcode.com/problems/*
  5. // @grant none
  6. // @version 1.0
  7. // @author ojwefiasdfoj98298347
  8. // @description Hides the code editor of leetcode problems to prevent spoilers when redoing problems
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. async function wait_element(root, selector) {
  13. return new Promise((resolve, reject) => {
  14. (new MutationObserver(check)).observe(root, {childList: true, subtree: true});
  15. function check(changes, observer) {
  16. let element = root.querySelector(selector);
  17. if(element) {
  18. observer.disconnect();
  19. resolve(element);
  20. }
  21. }
  22. });
  23. }
  24.  
  25. (async () => {
  26. const container = await wait_element(document, '[data-track-load="code_editor"]');
  27. const first = container.firstElementChild;
  28. first.style['display'] = 'none';
  29.  
  30. const btn = document.createElement('button');
  31. btn.appendChild(document.createTextNode('Reveal'));
  32. btn.setAttribute('type', 'button');
  33. btn.style['background-color'] = 'red';
  34. btn.style['height'] = '100%';
  35. btn.style['font-size'] = '36pt';
  36. container.prepend(btn);
  37.  
  38. btn.addEventListener('click', () => {
  39. first.style['display'] = '';
  40. btn.remove();
  41. })
  42. })()