Themes for Diep.io (POTD)

It's a great pack of tools to edit diep.io.

目前為 2021-11-18 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Themes for Diep.io (POTD)
// @version      1.0.1
// @description  It's a great pack of tools to edit diep.io.
// @author       ICE⁷⁷⁷#5838
// @namespace    *://diep.io/
// @match        *://diep.io/
// @grant        GM_addStyle
// @license      MIT
// ==/UserScript==

GM_addStyle(`
#dashboard {
	right: 10px;
	width: 444px;
	padding: 0px 5px 0px 5px;
	border-radius: 6px;
	position: absolute;
 
	border: 2px #00ffff solid;
	box-shadow: 8px 7px 17px 1px black;
	background: #25282be0;
 
	color: white;
	font-size: 20px;
 }
 
 #dashboard * {
	font-family: "Montserrat", sans-serif;
	font-weight: 600;
 }
 
 #dashboard input {
	outline: none;
	border: none;
	margin: 0;
	padding: 0;
	cursor: pointer;
 }
 
 #dashboard input[type="color"],
 #dashboard input[type="checkbox"] {
	background: rgba(0, 0, 0, 0);
 }
 #dashboard ::-webkit-color-swatch {
	border-radius: 50%;
 }
 #dashboard input[type="checkbox"] {
	margin-top: 3px;
 }
 
 #dashboard input[type="number"] {
	text-align: center;
	width: 75px;
	height: 10px;
	border: rgba(0, 0, 0, 0) 2px solid;
	color: white;
	background: black;
	padding: 3px 0px 3px 10px;
	border-radius: 25px;
	transition: border-color 0.3s;
 }
 
 #dashboard input[type="number"]:hover,
 #dashboard input[type="number"]:focus {
	border: #00ffffbf 2px solid;
 }
 
 #dashboard input::-webkit-color-swatch-wrapper {
	margin-top: 2px;
	outline: none;
	padding: 0;
 }
 
 #dashboard__header {
	padding: 10px 0px 20px 0px;
	cursor: move;
	display: flex;
	justify-content: space-around;
 }
 #dashboard__body {
	max-height: 500px;
 
	overflow-y: auto;
	overflow-x: hidden;
 }
 #dashboard__body::-webkit-scrollbar {
	width: 7.5px;
 }
 
 #dashboard__body::-webkit-scrollbar-track {
	background: #00ffff;
	border-radius: 25px;
 }
 #dashboard__body::-webkit-scrollbar-thumb {
	background: #070707;
	border-radius: 25px;
 }
 
 #dashboard__body::-webkit-scrollbar-thumb:hover,
 #dashboard::-webkit-scrollbar-thumb:active {
	background: #101010;
	transition: background 0.25s;
 }
 
 .section {
	margin: 5px 5px 10px 5px;
 }
 .section__options {
	margin-left: 20px;
	font-size: 75%;
 }
 .section__header {
	cursor: pointer;
	user-select: none;
	font-size: 110%;
	display: inline-block;
	margin-bottom: 5px;
	font-weight: bold;
 }
 .section__header::before {
	content: "- ";
 }
 .section__header.hidden::before {
	content: "+ ";
 }
 .section__option {
	height: 25px;
	width: 300px;
	padding: 5px 300px 0px 15px;
	border-left: 3px #255cd8 solid;
	transition: 0.2s;
 }
 .section__option span {
	margin-right: 5px;
 }
 
 .section__option input[type="color"] {
	width: 15px;
	height: 15px;
	border: none;
	padding: 0;
 }
 
 .section__option:hover {
	background: #ffffff12;
 }
 
 .section__option:focus-within {
	background: #ffffff26;
	border-left: 3px orange solid;
 }
 .option__value {
	float: right;
	display: inline-block;
 }
 .option__label {
	user-select: none;
	display: inline-block;
 }
 
 #dashboard__close {
	user-select: none;
	top: 12.5px;
	right: 12.5px;
 
	position: absolute;
	padding: 7.5px;
	width: 10px;
	height: 10px;
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	text-decoration: none;
	align-content: space-around;
	justify-content: space-around;
 
	border: 2px grey solid;
	background: #25282bb8;
	border-radius: 50%;
	cursor: pointer;
 
	color: white;
	font-size: 70%;
 
	transition-property: background, color, border-color, transform;
	transition-duration: 0.5s, 0.5s, 0.5s, 0.05s;
 }
 
 #dashboard__close:hover {
	background: #00ffff;
	border-color: black;
	color: black;
 }
 
 #dashboard__close:active {
	transform: translateY(3px);
 }
 
 .header__btn {
	outline: none;
	border: none;
 
	padding: 10px 20px;
	cursor: pointer;
	color: white;
 
	font-weight: bold;
 
	transition-property: background-color;
	transition-duration: 0.3s;
 }
 
 .header__btn:hover {
	background-color: rgba(0, 0, 0, 0.33) !important;
 }
 
 #themes:hover {
	opacity: 1;
	transition: opacity 1s;
 }
 
 #themes {
	transition: opacity 1s 3s;
	opacity: 0.2;
 }
 #db_switcher::after,
 #db_switcher::before {
	content: " - ";
 }
 #db_switcher.hidden::after,
 #db_switcher.hidden::before {
	content: " + ";
 }
 
 #themes {
	position: absolute;
	width: 200px;
 }
 #themes button {
	outline: none;
	border: none;
	cursor: pointer;
	width: 75%;
	word-break: break-word;
	font-family: "Ubuntu";
	color: white;
	text-shadow: -0.1em -0.1em 0 #000000, 0 -0.1em 0 #000000,
	  0.1em -0.1em 0 #000000, 0.1em 0 0 #000000, 0.1em 0.1em 0 #000000,
	  0 0.1em 0 #000000, -0.1em 0.1em 0 #000000, -0.1em 0 0 #000000;
	opacity: 0.8;
	border: none;
	padding: 0.3em 0.5em;
	transition: filter 0.15s;
	transition: transform 0.3s;
 }
 
 #themes button:active:not([disabled]) {
	filter: brightness(0.75);
 }
 
 #themes button:hover:not([disabled]):not(:active) {
	filter: brightness(1.25);
 }
 
 #themes .themes__theme:hover {
	transform: translateX(15px);
 }
 
 #themes .themes__switcher {
	width: 100%;
 }
 
`);
(() => {
  const USERS_BUTTONS = [];

  class Input {
    constructor(default_, cmd, isLast = false) {
      this.default = default_;
      this.cmd = cmd;
      this.el = document.createElement("input");
      this.isLast = isLast;
    }
  }

  class ColorInput extends Input {
    constructor(default_, cmd, isLast) {
      super(default_, cmd, isLast);
      this.el.type = "color";
      this.el.value = this.default;

      this.el.oninput = () => {
        input.execute(`${this.cmd}${this.el.value.slice(1)}`);
      };
      this.el.getValue = () => {
        return `${this.cmd}${this.el.value.slice(1)}`;
      };
      this.el.setValue = (values) => {
        let found = false;
        for (let value of values) {
          if (value.includes(this.cmd)) {
            found = true;
            const RE = new RegExp(this.cmd);
            const value_ = value.replace(RE, "");
            this.el.value = "#" + value_;
            break;
          }
        }
        if (!found) this.el.value = this.default;
        this.el.oninput();
      };
    }
  }

  class CheckBoxInput extends Input {
    constructor(default_, cmd, isLast) {
      super(default_, cmd, isLast);
      this.el.type = "checkbox";
      this.el.checked = this.default;

      this.el.oninput = () => {
        input.execute(`${this.cmd}${this.el.checked}`);
      };
      this.el.getValue = () => {
        return `${this.cmd}${this.el.checked}`;
      };
      this.el.setValue = (values) => {
        let found = false;
        for (let value of values) {
          if (value.includes(this.cmd)) {
            found = true;
            const RE = new RegExp(this.cmd);
            const value_ = value.replace(RE, "");
            if (value_ === "true") {
              this.el.checked = true;
            } else {
              this.el.checked = false;
            }
            break;
          }
        }
        if (!found) this.el.checked = this.default;
        this.el.oninput();
      };
    }
  }

  class NumberInput extends Input {
    constructor(default_, cmd, step, min, max, isLast) {
      super(default_, cmd, isLast);
      this.el.type = "number";
      this.el.value = this.default;
      this.el.step = step;
      this.el.min = min;
      this.el.max = max;

      this.el.oninput = () => {
        input.execute(`${this.cmd}${this.el.value}`);
      };
      this.el.getValue = () => {
        return `${this.cmd}${this.el.value}`;
      };
      this.el.setValue = (values) => {
        let found = false;
        for (let value of values) {
          if (value.includes(this.cmd)) {
            found = true;
            const RE = new RegExp(this.cmd);
            this.el.value = value.replace(RE, "");
            break;
          }
        }
        if (!found) this.el.value = this.default;
        this.el.oninput();
      };
    }
  }

  function hideEl(el) {
    if (el.style.display != "none") {
      el.style.display = "none";
    } else {
      el.style.display = "";
    }
  }

  function setDrag(el, el_child) {
    var newPosX = 0,
      newPosY = 0,
      MousePosX = 0,
      MousePosY = 0;
    if (el_child) {
      el_child.addEventListener("mousedown", MouseDown);
    } else el.addEventListener("mousedown", MouseDown);

    function MouseDown(mouseDown) {
      MousePosX = mouseDown.pageX;
      MousePosY = mouseDown.pageY;

      el.classList.add("dragableging");
      document.addEventListener("mousemove", elementMove);
      document.addEventListener("mouseup", stopElementMove);
    }

    function elementMove(mouseMove) {
      newPosX = MousePosX - mouseMove.pageX;
      newPosY = MousePosY - mouseMove.pageY;
      MousePosX = mouseMove.pageX;
      MousePosY = mouseMove.pageY;

      el.style.top = el.offsetTop - newPosY + "px";
      el.style.left = el.offsetLeft - newPosX + "px";
    }

    function stopElementMove() {
      el.classList.remove("dragableging");
      document.removeEventListener("mousemove", elementMove);
      document.removeEventListener("mouseup", stopElementMove);
    }
  }

  const OPTS_LIB = {
    "Global colors": {
      "Map background": new ColorInput("#cdcdcd", "ren_background_color 0x"),
      "Map border": new ColorInput("#000000", "ren_border_color 0x"),
      "Map border alpha": new NumberInput(
        0.1,
        "ren_border_color_alpha ",
        0.01,
        0,
        1
      ),
      "Map grid": new ColorInput("#000000", "ren_grid_color 0x"),
      "Map grid alpha": new NumberInput(
        0.1,
        "ren_grid_base_alpha ",
        0.01,
        0,
        1,
        true
      ),
      "Minimap background": new ColorInput(
        "#cdcdcd",
        "ren_minimap_background_color 0x"
      ),
      "Minimap border": new ColorInput(
        "#555555",
        "ren_minimap_border_color 0x",
        true
      ),
      "Soft colors": new CheckBoxInput(true, "ren_stroke_soft_color "),
      "Soft stroke intensity": new NumberInput(
        0.25,
        "ren_stroke_soft_color_intensity ",
        0.05,
        null,
        1,
        true
      ),

      Squares: new ColorInput("#ffe869", "net_replace_color 8 0x"),
      Triangles: new ColorInput("#fc7677", "net_replace_color 9 0x"),
      Pentagons: new ColorInput("#768dfc", "net_replace_color 10 0x"),
      "Shiny poligons": new ColorInput(
        "#89ff69",
        "net_replace_color 7 0x",
        true
      ),
      Crashers: new ColorInput("#ff77dc", "net_replace_color 11 0x"),
      "Neutral team": new ColorInput("#ffe869", "net_replace_color 12 0x"),
      "Fallen Bosses": new ColorInput(
        "#c0c0c0",
        "net_replace_color 17 0x",
        true
      ),
      "Health bar": new ColorInput("#85e37d", "ren_health_fill_color 0x"),
      "Health bar background": new ColorInput(
        "#555555",
        "ren_health_background_color 0x"
      ),
      "EXP bar": new ColorInput("#ffde43", "ren_xp_bar_fill_color 0x"),
      "Score bar": new ColorInput("#43ff91", "ren_score_bar_fill_color 0x"),
      "EXP/Score/Scoreboard backgrounds": new ColorInput(
        "#000000",
        "ren_bar_background_color 0x",
        true
      ),
      "Barrels & etc": new ColorInput("#999999", "net_replace_color 1 0x"),
      "Smasher & dominator bases": new ColorInput(
        "#555555",
        "net_replace_color 0 0x"
      ),
    },
    "TDM colors": {
      "Blue team": new ColorInput("#00b1de", "net_replace_color 3 0x"),
      "Red Team": new ColorInput("#f14e54", "net_replace_color 4 0x"),
      "Purple team": new ColorInput("#be7ff5", "net_replace_color 5 0x"),
      "Green team": new ColorInput("#00f46c", "net_replace_color 6 0x"),
    },
    "FFA colors": {
      "Your body": new ColorInput("#00b1de", "net_replace_color 2 0x"),
      "Enemies' bodies": new ColorInput("#f14e56", "net_replace_color 15 0x"),
      "Summoned squares": new ColorInput("#fbc477", "net_replace_color 16 0x"),
      "Maze walls": new ColorInput("#bbbbbb", "net_replace_color 14 0x"),
      "Scoreboard bar": new ColorInput("#44ffa0", "net_replace_color 13 0x"),
    },
    Other: {
      FPS: new CheckBoxInput(false, "ren_fps "),
      "Players' names": new CheckBoxInput(true, "ren_names "),
      "Health bar": new CheckBoxInput(true, "ren_health_bars "),
      "Show health bar values": new CheckBoxInput(
        false,
        "ren_raw_health_values "
      ),
      "Scoreboar names": new CheckBoxInput(true, "ren_scoreboard_names "),
      Scoreboard: new CheckBoxInput(true, "ren_scoreboard "),
      "Minimap viewport": new CheckBoxInput(false, "ren_minimap_viewport "),
      UI: new CheckBoxInput(true, "ren_ui "),
      "UI scale": new NumberInput(1, "ren_ui_scale ", 0.01, 0, null, true),

      "Pattern grid": new CheckBoxInput(true, "ren_pattern_grid "),
      "Debug collisions": new CheckBoxInput(false, "ren_debug_collisions "),
    },
  };

  const CONTAINER = document.createElement("div");
  CONTAINER.id = "themes";
  CONTAINER.innerHTML = `
		<button class="themes__switcher" style="background: #00ffff">Themes Menu</button>
		<div id="main-content" style="display: none;">
		  <div id="global-themes"></div>
	 
		  <button class="themes__switcher" style="background: rgb(255, 212, 0);" >My
			  themes</button>
		  <div id="users-themes"></div>
		</div>
		`;
  document.body.append(CONTAINER);

  const DASHBOARD = document.createElement("div");
  DASHBOARD.id = "dashboard";
  DASHBOARD.style.display = "none";
  DASHBOARD.innerHTML = `<div id="dashboard__header"></div><div id="dashboard__body"></div>`;
  document.body.append(DASHBOARD);

  //  const CLOSE = document.createElement("a");
  //  CLOSE.id = "dashboard__close";
  //  CLOSE.innerText = "☓";
  //  CLOSE.onclick = () => {
  //    DASHBOARD.style.display = "none";
  //  };
  //  document.querySelector("#dashboard__header").append(CLOSE);

  function init() {
    const USERS_THEMES = JSON.parse(localStorage.getItem("users_themes"));
    const SELECTED_THEME = JSON.parse(localStorage.getItem("selected_theme"));

    for (let category in OPTS_LIB) {
      const OPTIONS = document.createElement("div");
      OPTIONS.className = "section__options";
      const HEADER = createHeader(category);

      for (let opt in OPTS_LIB[category]) {
        const PLAN = OPTS_LIB[category][opt];
        OPTIONS.append(createOption(opt, PLAN.el, PLAN.isLast));
      }

      addSection(HEADER, OPTIONS);
    }

    if (USERS_THEMES) {
      USERS_THEMES.map((t) => {
        createBthTheme(t.name, t.color, false, false);
      });
      [...CONTAINER.querySelectorAll(".themes__theme")].map((el) => {
        if (el.innerText === SELECTED_THEME.name) el.onclick();
      });
    }
  }

  function addSection(header, options) {
    const SECTION = document.createElement("div");
    SECTION.className = "section";

    SECTION.append(header, options);

    document.querySelector("#dashboard__body").append(SECTION);
  }

  function createHeader(text) {
    const HEADER = document.createElement("div");
    HEADER.className = "section__header";
    HEADER.innerText = text;

    HEADER.onclick = function () {
      const OPTIONS = HEADER.parentElement.querySelector(".section__options");
      if (OPTIONS) {
        if (OPTIONS.style.display != "none") {
          HEADER.classList.add("hidden");
          OPTIONS.style.display = "none";
        } else {
          HEADER.classList.remove("hidden");
          OPTIONS.style.display = "";
        }
      }
    };
    return HEADER;
  }

  function createOption(text, html, isLast = false) {
    const OPTION = document.createElement("div");
    OPTION.className = "section__option";

    const OPTION_LABEL = document.createElement("span");
    OPTION_LABEL.className = "option__label";
    OPTION_LABEL.innerText = text + ": ";

    const OPTION_VALUE = document.createElement("div");
    OPTION_VALUE.className = "option__value";
    OPTION_VALUE.append(html);

    OPTION.append(OPTION_LABEL, OPTION_VALUE);

    if (isLast) {
      OPTION.style.marginBottom = "10px";
    }

    return OPTION;
  }

  function initTheme(theme) {
    const { values } = theme;
    [
      ...document
        .querySelector("#dashboard__body")
        .querySelectorAll(".option__value *"),
    ].map((el) => el.setValue(values));

    localStorage.setItem("selected_theme", JSON.stringify(theme));
  }

  function createBthTheme(text, color, data, isGlobal = true) {
    const BUTTON = document.createElement("button");
    BUTTON.className = "themes__theme";
    BUTTON.style.backgroundColor = color;
    BUTTON.innerText = text;
    BUTTON.onclick = () => {
      if (!data) {
        initTheme(
          JSON.parse(localStorage.getItem("users_themes")).find(
            (el) => el.name === text
          )
        );
      } else {
        initTheme(data);
      }
    };

    if (!isGlobal) {
      document.querySelector("#users-themes").append(BUTTON);
      USERS_BUTTONS.push(BUTTON);
    } else document.querySelector("#global-themes").append(BUTTON);

    return BUTTON;
  }

  function createDashHeadBtn(text, color, onclick) {
    const BUTTON = document.createElement("button");
    BUTTON.className = "header__btn";
    BUTTON.style.backgroundColor = color;
    BUTTON.innerText = text;
    BUTTON.onclick = onclick;

    document.querySelector("#dashboard__header").append(BUTTON);
  }

  function saveTheme() {
    const THEME_NAME = prompt("Write your theme name.");
    if (!THEME_NAME) {
      return alert("Invalid value!");
    }
    const THEME = {};
    var USERS_THEMES = JSON.parse(localStorage.getItem("users_themes"));
    if (!USERS_THEMES) {
      USERS_THEMES = [];
    }
    const isAdded = USERS_THEMES.find((t) => t.name === THEME_NAME);
    if (isAdded) {
      if (
        !confirm(
          "There is already the theme with the same name, that one will be updated, are you sure?"
        )
      )
        return;
    }

    var THEME_COLOR = prompt(
      "Write your theme button color (hex color system but without #) or you can leave the current color if you click on 'Cancel'.\nExample: 'ff00ff' - piink."
    );
    if (THEME_COLOR !== null) {
      if (!/[a-f\d]{6}\b/i.test(THEME_COLOR)) {
        return alert("Invalid value! (a-f, 0-9)");
      }
      THEME_COLOR += "e6";
    }

    const VALUES = [
      ...document
        .querySelector("#dashboard__body")
        .querySelectorAll(".option__value *"),
    ].map((el) => el.getValue());

    if (!isAdded) {
      THEME.name = THEME_NAME;
      THEME.color = "#" + THEME_COLOR;
      THEME.values = VALUES;
      USERS_THEMES.push(THEME);
      createBthTheme(THEME.name, THEME.color, THEME, false);
    } else {
      if (THEME_COLOR !== null) isAdded.color = THEME_COLOR;
      isAdded.values = VALUES;
      if (
        !updateTheme(isAdded.name, isAdded.color, () => {
          isAdded.values.map((v) => input.execute(v));
        })
      ) {
        createBthTheme(
          THEME.name,
          THEME.color,
          () => THEME.values.map((v) => input.execute(v)),
          USERS_THEMES
        );
      }
    }
    localStorage.setItem("users_themes", JSON.stringify(USERS_THEMES));
  }

  function updateTheme(name, new_color, new_onclick) {
    const BUTTON = USERS_BUTTONS.find((btn) => btn.innerText === name);
    if (!BUTTON) {
      return false;
    }

    BUTTON.innerText = name;
    BUTTON.style.backgroundColor = new_color;
    BUTTON.onclick = () => {
      initTheme(
        JSON.parse(localStorage.getItem("users_themes")).find(
          (el) => el.name === name
        )
      );

      new_onclick();
    };

    return true;
  }
  function deleteTheme() {
    var USERS_THEMES = JSON.parse(localStorage.getItem("users_themes"));
    const NAME = prompt("Write theme name.");

    const INDX = USERS_THEMES.findIndex((el) => el.name === NAME);
    if (INDX < 0) {
      return alert("Theme with a such name wasn't found!");
    }
    if (confirm("Are you sure?")) {
      USERS_THEMES.splice(INDX, 1);
      localStorage.setItem("users_themes", JSON.stringify(USERS_THEMES));

      const BUTTON = USERS_BUTTONS.find((btn) => btn.innerText === NAME);
      if (BUTTON) {
        BUTTON.remove();
      }
    }
  }

  createDashHeadBtn("Save theme", "green", saveTheme);
  createDashHeadBtn("Delete theme", "red", deleteTheme);

  createBthTheme("Classic", "a5a5a5e6", { name: "Classic", values: [] });
  createBthTheme("Dark", "#222222e6", {
    name: "Dark",
    values: [
      "ren_border_color 0x858585",
      "ren_grid_color 0xffffff",
      "ren_background_color 0x101010",
    ],
  });
  createBthTheme("Arras", "#8bbe3de6", {
    name: "Arras",
    values: [
      "ren_score_bar_fill_color 0x8abc3f",
      "ren_xp_bar_fill_color 0xefc74b",
      "net_replace_color 0 0x484848",
      "net_replace_color 1 0xa7a7af",
      "net_replace_color 2 0x3ca4cb",
      "net_replace_color 3 0x3ca4cb",
      "net_replace_color 4 0xe03e41",
      "net_replace_color 5 0xcc669c",
      "net_replace_color 6 0x8abc3f",
      "net_replace_color 8 0xefc74b",
      "net_replace_color 9 0xe7896d",
      "net_replace_color 10 0x8d6adf",
      "net_replace_color 11 0xef99c3",
      "net_replace_color 12 0xfdf380",
      "net_replace_color 14 0xa7a7af",
      "net_replace_color 15 0xe03e41",
      "net_replace_color 17 0x726f6f",
    ],
  });
  createBthTheme("Neon", "#000000e6", {
    name: "Neon",
    values: [
      "ren_stroke_soft_color_intensity -100",
      "ren_solid_background true",
      "ren_stroke_soft_color true",
      "ren_background_color 0x000000",
      "ren_border_color 0xFFFFFF",
      "ren_border_alpha 100",
      "net_replace_color 0 0xFFFFFF",
      "net_replace_color 1 0x010101",
      "net_replace_color 2 0x000102",
      "net_replace_color 3 0x000102",
      "net_replace_color 4 0x020000",
      "net_replace_color 5 0x020002",
      "net_replace_color 6 0x000200",
      "net_replace_color 7 0x000100",
      "net_replace_color 8 0x010101",
      "net_replace_color 9 0x010101",
      "net_replace_color 10 0x010101",
      "net_replace_color 11 0x0e0e0e",
      "net_replace_color 12 0x020200",
      "net_replace_color 13 0x010101",
      "net_replace_color 14 0x010101",
      "net_replace_color 15 0x020000",
      "net_replace_color 16 0x010200",
      "net_replace_color 17 0x000202",
    ],
  });

  document.querySelector("#themes button").onclick = () =>
    hideEl(document.querySelector("#main-content"));
  document.querySelector("#main-content .themes__switcher").onclick = () =>
    hideEl(document.querySelector("#users-themes"));

  document.addEventListener("keydown", (event) => {
    if (["f", "а"].includes(event.key) && event.target == document.body) {
      hideEl(DASHBOARD);
    }
  });

  setDrag(DASHBOARD, document.querySelector("#dashboard__header"));
  DASHBOARD.append(
    document.querySelector("#dashboard__header"),
    document.querySelector("#dashboard__body")
  );

  const checking = setInterval(() => {
    try {
      if (input) {
        clearInterval(checking);

        init();
      }
    } catch (err) {}
  }, 10);
})();