Leetcode relative line number

Make relative line number available on leetcode

Per 26-09-2021. Zie de nieuwste versie.

// ==UserScript==
// @name         Leetcode relative line number
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Make relative line number available on leetcode
// @author       You
// @match        https://leetcode.com/problems/*
// @icon         https://www.google.com/s2/favicons?domain=leetcode.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    function setRelativeLineNumber() {
        let activeLineHTML = document.querySelector("div.CodeMirror-activeline > div > div").innerHTML;
        let activeLineNumber = 0;
        if (activeLineHTML != null && activeLineHTML !== undefined) {
            activeLineNumber = parseInt(activeLineHTML.match("[0-9]+")[0]);
        }
        let allLines = document.querySelectorAll("div.CodeMirror-linenumber");
        console.log(activeLineNumber);
        allLines.forEach(line => {
            if (!line.hasAttribute("natural-line")) {
                line.setAttribute("natural-line", parseInt(line.innerHTML));
            }
            line.innerHTML = Math.abs(line.getAttribute("natural-line") - activeLineNumber).toString();
            if (line.innerHTML == "0") {
                line.innerHTML = "<b>" + activeLineNumber.toString() + "</b>";
            }
        });
    };
    setInterval(setRelativeLineNumber, 300);
    document.addEventListener('click', setRelativeLineNumber);

    //    const observer = new MutationObserver(() => console.log("changed"));
    //    const cursor = document.querySelector("div.CodeMirror-cursor");
    //    observer.observe(cursor, { attributes: true, attributeFilter: ["style"] });
})();