LitCharts unblur & allow selection

Unblur and allow user selection of the blurred fields on LitCharts pages

// ==UserScript==
// @name        LitCharts unblur & allow selection
// @namespace   Violentmonkey Scripts
// @match       https://www.litcharts.com/*
// @grant       none
// @version     1.0
// @author      CyrilSLi
// @description Unblur and allow user selection of the blurred fields on LitCharts pages
// @license     MIT
// ==/UserScript==

const classes = ["blurred", "blurred-text", "blur"];
const unblurRetry = setInterval(removeBlur, 100);
const styles = [
  "-webkit-touch-callout",
  "-webkit-user-select",
  "-khtml-user-select",
  "-moz-user-select",
  "-ms-user-select",
  "user-select"
]
const styleStr = "-webkit-touch-callout:default !important; -webkit-user-select:auto !important; -khtml-user-select:auto !important; -moz-user-select:auto !important; -ms-user-select:auto !important; user-select:auto !important;"

function removeBlur() {
  var allElements = [];
  for (var i = 0; i < classes.length; i++) {
    var blurred = document.getElementsByClassName(classes[i]);
    allElements.push(...blurred);
    for (var j = 0; j < blurred.length; j++) {
      blurred[j].classList.remove(classes[i]);
    }
  }
  if (!allElements.length) {
    clearInterval(unblurRetry);
    console.log("Finished unblurring elements");
    allowSelect();
  }
}

function allowSelect() {
  var walker = document.createTreeWalker(
    document.documentElement,
    NodeFilter.SHOW_ELEMENT,
    el => {
      for (var i = 0; i < styles.length; i++) {
        if (getComputedStyle(el)[styles[i]] == "none") {
          return NodeFilter.FILTER_ACCEPT;
        }
      }
      return NodeFilter.FILTER_SKIP;
    }
  );
  var els = [];
  while (walker.nextNode()) {
    walker.currentNode.setAttribute("style", styleStr);
    els.push(walker.currentNode);
  }
  for (var i = 0; i < els.length; i++) {
    els[i].parentNode.replaceChild(els[i].cloneNode(true), els[i]);
  }
  console.log("Allowed selection on all elements");
}