From 366f4f6ebc65aaf3020b428cdc9702b5bb674e50 Mon Sep 17 00:00:00 2001 From: thepaperpilot Date: Wed, 10 Mar 2021 21:32:54 -0600 Subject: [PATCH] Set up webstorm and resolved a ton of its warnings --- .eslintrc.js | 7 +- .idea/The-Modding-Tree.iml | 13 + .idea/codeStyles/Project.xml | 21 + .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/inspectionProfiles/Project_Default.xml | 24 + .idea/jsLibraryMappings.xml | 7 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + demo.html | 118 --- index.html | 29 +- js/Demo/demoLayers.js | 515 ---------- js/Demo/demoMod.js | 77 -- js/Demo/demoTree.js | 49 - js/Layers/distill.js | 6 +- js/Layers/flowers.js | 6 +- js/Layers/generators.js | 12 +- js/Layers/sands.js | 8 +- js/Layers/study.js | 28 +- js/colors.js | 3 +- js/components.js | 231 +++-- js/game.js | 120 +-- js/mod.js | 5 +- js/technical/break_eternity.js | 6 +- js/technical/canvas.js | 85 +- js/technical/layerSupport.js | 73 +- js/technical/systemComponents.js | 120 ++- js/technical/temp.js | 63 +- js/tree.js | 11 +- js/utils.js | 73 +- ...NumberFormating.js => NumberFormatting.js} | 30 +- js/utils/options.js | 20 +- js/utils/save.js | 45 +- js/utils/themes.js | 14 +- kronos.sublime-workspace | 2 +- package-lock.json | 941 ++++++++++++++++++ popup.css | 9 +- style.css | 124 ++- 37 files changed, 1623 insertions(+), 1291 deletions(-) create mode 100644 .idea/The-Modding-Tree.iml create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml delete mode 100644 demo.html delete mode 100644 js/Demo/demoLayers.js delete mode 100644 js/Demo/demoMod.js delete mode 100644 js/Demo/demoTree.js rename js/utils/{NumberFormating.js => NumberFormatting.js} (81%) create mode 100644 package-lock.json diff --git a/.eslintrc.js b/.eslintrc.js index 86fba4e..488b3a2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,9 +1,14 @@ +// eslint-disable-next-line no-undef module.exports = { "env": { "browser": true, "es2021": true }, - "extends": "eslint:recommended", + "extends": [ + "eslint:recommended", + 'plugin:vue/recommended', + '@vue/standard' + ], "parserOptions": { "ecmaVersion": 12 }, diff --git a/.idea/The-Modding-Tree.iml b/.idea/The-Modding-Tree.iml new file mode 100644 index 0000000..7cb79e3 --- /dev/null +++ b/.idea/The-Modding-Tree.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..ba79a26 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..3de105d --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,24 @@ + + + + \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..1e5174d --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..e5bccca --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/demo.html b/demo.html deleted file mode 100644 index 1ec44e9..0000000 --- a/demo.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-

Loading... (If this takes too long it means there was a serious error!)←

-
-
-
-
-

{{modInfo.name}} {{VERSION.withoutName}}



-


-

Please check the Discord to see if there are new content updates!



-
It took you {{formatTime(player.timePlayed)}} to beat the game.
-
-      -


- {{modInfo.discordName}}
- The Modding Tree Discord
- Main - Prestige Tree server
-

-
- -
-
- {{VERSION.withoutName}}
- - -

i
- - -
-
- -
-
-
- -
-



- - - - -
- - - - -
-
-
- -
-
-
-
- \ No newline at end of file diff --git a/index.html b/index.html index 61d875b..387860a 100644 --- a/index.html +++ b/index.html @@ -23,7 +23,7 @@ - + @@ -36,6 +36,8 @@ + ❚◀RONOS + @@ -43,24 +45,25 @@

Loading...
(If this takes too long it means there was a serious error!)

-
+

{{modInfo.name}} {{VERSION.withoutName}}



@@ -81,8 +84,8 @@
- + v-bind:class="{ fullWidth: (player.tab === 'none' || player.navTab === 'none'), col: (player.tab !== 'none' && player.navTab !== 'none'), left: (player.tab !== 'none' && player.navTab !== 'none')}"> +
@@ -92,19 +95,19 @@
+ v-bind:class="{ fullWidth: (player.tab === 'none' || player.navTab === 'none'), col: (player.tab !== 'none' && player.navTab !== 'none'), left: (player.tab !== 'none' && player.navTab !== 'none')}">
- +
` }); @@ -441,16 +498,22 @@ function loadVue() { Vue.component("sell-one", { props: ["layer", "data"], template: ` - - ` + + ` }); Vue.component("sell-all", { props: ["layer", "data"], template: ` - - ` + + ` }); // SYSTEM COMPONENTS diff --git a/js/game.js b/js/game.js index e42e455..4b27e24 100644 --- a/js/game.js +++ b/js/game.js @@ -1,7 +1,7 @@ -var player; -var needCanvasUpdate = true; -var gameEnded = false; -var scrolled = false; +let player; +let needCanvasUpdate = true; +let gameEnded = false; + // Don't change this const TMT_VERSION = { @@ -17,19 +17,19 @@ function getResetGain(layer, useType = null) { return layers[layer].getResetGain(); } } - if(tmp[layer].type == "none") { + if(tmp[layer].type === "none") { return new Decimal (0); } if (tmp[layer].gainExp.eq(0)) { return new Decimal(0); } - if (type=="static") { + if (type==="static") { if ((!tmp[layer].canBuyMax) || tmp[layer].baseAmount.lt(tmp[layer].requires)) { return new Decimal(1); } let gain = tmp[layer].baseAmount.div(tmp[layer].requires).div(tmp[layer].gainMult).max(1).log(tmp[layer].base).times(tmp[layer].gainExp).pow(Decimal.pow(tmp[layer].exponent, -1)); return gain.floor().sub(player[layer].points).add(1).max(1); - } else if (type=="normal"){ + } else if (type==="normal"){ if (tmp[layer].baseAmount.lt(tmp[layer].requires)) { return new Decimal(0); } @@ -38,7 +38,7 @@ function getResetGain(layer, useType = null) { gain = gain.pow(tmp[layer].softcapPower).times(tmp[layer].softcap.pow(decimalOne.sub(tmp[layer].softcapPower))); } return gain.floor().max(0); - } else if (type=="custom"){ + } else if (type==="custom"){ return layers[layer].getResetGain(); } else { return new Decimal(0); @@ -54,7 +54,7 @@ function getNextAt(layer, canMax=false, useType = null) { } } - if(tmp[layer].type == "none") { + if(tmp[layer].type === "none") { return new Decimal (Infinity); } @@ -65,7 +65,7 @@ function getNextAt(layer, canMax=false, useType = null) { return new Decimal(Infinity); } - if (type=="static") { + if (type==="static") { if (!tmp[layer].canBuyMax) { canMax = false; } @@ -76,7 +76,7 @@ function getNextAt(layer, canMax=false, useType = null) { cost = cost.ceil(); } return cost; - } else if (type=="normal"){ + } else if (type==="normal"){ let next = tmp[layer].resetGain.add(1); if (next.gte(tmp[layer].softcap)) { next = next.div(tmp[layer].softcap.pow(decimalOne.sub(tmp[layer].softcapPower))).pow(decimalOne.div(tmp[layer].softcapPower)); @@ -86,7 +86,7 @@ function getNextAt(layer, canMax=false, useType = null) { next = next.ceil(); } return next; - } else if (type=="custom"){ + } else if (type==="custom"){ return layers[layer].getNextAt(canMax); } else { return new Decimal(0); @@ -103,10 +103,10 @@ function softcap(value, cap, power = 0.5) { // Return true if the layer should be highlighted. By default checks for upgrades only. function shouldNotify(layer){ - if (player.tab == layer || player.navTab == layer) { + if (player.tab === layer || player.navTab === layer) { return false; } - for (id in tmp[layer].upgrades){ + for (let id in tmp[layer].upgrades){ if (!isNaN(id)){ if (canAffordUpgrade(layer, id) && !hasUpgrade(layer, id) && tmp[layer].upgrades[id].unlocked){ return true; @@ -118,15 +118,15 @@ function shouldNotify(layer){ } if (isPlainObject(tmp[layer].tabFormat)) { - for (subtab in tmp[layer].tabFormat){ + for (let subtab in tmp[layer].tabFormat){ if (subtabShouldNotify(layer, "mainTabs", subtab)) { return true; } } } - for (family in tmp[layer].microtabs) { - for (subtab in tmp[layer].microtabs[family]){ + for (let family in tmp[layer].microtabs) { + for (let subtab in tmp[layer].microtabs[family]){ if (subtabShouldNotify(layer, family, subtab)) { return true; } @@ -140,9 +140,9 @@ function shouldNotify(layer){ function canReset(layer) { if (layers[layer].canReset!== undefined) { return run(layers[layer].canReset, layers[layer]); - } else if(tmp[layer].type == "normal") { + } else if(tmp[layer].type === "normal") { return tmp[layer].baseAmount.gte(tmp[layer].requires); - } else if(tmp[layer].type== "static") { + } else if(tmp[layer].type=== "static") { return tmp[layer].baseAmount.gte(tmp[layer].nextAt); } else { return false; @@ -150,7 +150,7 @@ function canReset(layer) { } function rowReset(row, layer) { - for (lr in ROW_LAYERS[row]){ + for (let lr in ROW_LAYERS[row]){ if(layers[lr].doReset) { player[lr].activeChallenge = null; // Exit challenges on any row reset on an equal or higher row @@ -165,7 +165,7 @@ function rowReset(row, layer) { function layerDataReset(layer, keep = []) { let storedData = {unlocked: player[layer].unlocked}; // Always keep unlocked - for (thing in keep) { + for (let thing in keep) { if (player[layer][keep[thing]] !== undefined) { storedData[keep[thing]] = player[layer][keep[thing]]; } @@ -184,7 +184,7 @@ function layerDataReset(layer, keep = []) { if (layers[layer].clickables && !player[layer].clickables) { player[layer].clickables = getStartClickables(layer); } - for (thing in storedData) { + for (let thing in storedData) { player[layer][thing] =storedData[thing]; } } @@ -214,10 +214,10 @@ function generatePoints(layer, diff) { addPoints(layer, tmp[layer].resetGain.times(diff)); } -var prevOnReset; +let prevOnReset; function doReset(layer, force=false) { - if (tmp[layer].type == "none") { + if (tmp[layer].type === "none") { return; } let row = tmp[layer].row; @@ -226,13 +226,13 @@ function doReset(layer, force=false) { return; } let gain = tmp[layer].resetGain; - if (tmp[layer].type=="static") { + if (tmp[layer].type==="static") { if (tmp[layer].baseAmount.lt(tmp[layer].nextAt)) { return; } gain =(tmp[layer].canBuyMax ? gain : 1); } - if (tmp[layer].type=="custom") { + if (tmp[layer].type==="custom") { if (!tmp[layer].canReset) { return; } @@ -251,8 +251,8 @@ function doReset(layer, force=false) { needCanvasUpdate = true; if (tmp[layer].increaseUnlockOrder){ - lrs = tmp[layer].increaseUnlockOrder; - for (lr in lrs) { + let lrs = tmp[layer].increaseUnlockOrder; + for (let lr in lrs) { if (!player[lrs[lr]].unlocked) { player[lrs[lr]].unlockOrder++; } @@ -268,14 +268,14 @@ function doReset(layer, force=false) { } - for (layerResetting in layers) { - if (row >= layers[layerResetting].row && (!force || layerResetting != layer)) { + for (let layerResetting in layers) { + if (row >= layers[layerResetting].row && (!force || layerResetting !== layer)) { completeChallenge(layerResetting); } } prevOnReset = {...player}; //Deep Copy - player.points = (row == 0 ? new Decimal(0) : getStartPoints()); + player.points = (row === 0 ? new Decimal(0) : getStartPoints()); for (let x = row; x >= 0; x--) { rowReset(x, layer); @@ -289,32 +289,12 @@ function doReset(layer, force=false) { updateTemp(); } -function resetRow(row) { - if (prompt("Are you sure you want to reset this row? It is highly recommended that you wait until the end of your current run before doing this! Type \"I WANT TO RESET THIS\" to confirm")!="I WANT TO RESET THIS") { - return; - } - let pre_layers = ROW_LAYERS[row-1]; - let layers = ROW_LAYERS[row]; - let post_layers = ROW_LAYERS[row+1]; - rowReset(row+1, post_layers[0]); - doReset(pre_layers[0], true); - for (let layer in layers) { - player[layer].unlocked = false; - if (player[layer].unlockOrder) { - player[layer].unlockOrder = 0; - } - } - player.points = getStartPoints(); - updateTemp(); - resizeCanvas(); -} - function startChallenge(layer, x) { let enter = false; if (!player[layer].unlocked) { return; } - if (player[layer].activeChallenge == x) { + if (player[layer].activeChallenge === x) { completeChallenge(layer, x); player[layer].activeChallenge = null; } else { @@ -329,7 +309,7 @@ function startChallenge(layer, x) { } function canCompleteChallenge(layer, x) { - if (x != player[layer].activeChallenge) { + if (x !== player[layer].activeChallenge) { return; } let challenge = tmp[layer].challenges[x]; @@ -353,8 +333,8 @@ function canCompleteChallenge(layer, x) { } -function completeChallenge(layer, x) { - var x = player[layer].activeChallenge; +function completeChallenge(layer) { + let x = player[layer].activeChallenge; if (!x) { return; } @@ -384,7 +364,7 @@ function autobuyUpgrades(layer){ if (!tmp[layer].upgrades) { return; } - for (id in tmp[layer].upgrades) { + for (let id in tmp[layer].upgrades) { if (isPlainObject(tmp[layer].upgrades[id]) && (layers[layer].upgrades[id].canAfford === undefined || layers[layer].upgrades[id].canAfford() === true)) { buyUpg(layer, id); } @@ -413,8 +393,8 @@ function gameLoop(diff) { addTime(diff); player.points = player.points.add(tmp.pointGen.times(diff)).max(0); - for (x = 0; x <= maxRow; x++){ - for (item in TREE_LAYERS[x]) { + for (let x = 0; x <= maxRow; x++){ + for (let item in TREE_LAYERS[x]) { let layer = TREE_LAYERS[x][item]; player[layer].resetTime += diff; if (tmp[layer].passiveGeneration) { @@ -426,8 +406,8 @@ function gameLoop(diff) { } } - for (row in OTHER_LAYERS){ - for (item in OTHER_LAYERS[row]) { + for (let row in OTHER_LAYERS){ + for (let item in OTHER_LAYERS[row]) { let layer = OTHER_LAYERS[row][item]; player[layer].resetTime += diff; if (tmp[layer].passiveGeneration) { @@ -439,8 +419,8 @@ function gameLoop(diff) { } } - for (x = maxRow; x >= 0; x--){ - for (item in TREE_LAYERS[x]) { + for (let x = maxRow; x >= 0; x--){ + for (let item in TREE_LAYERS[x]) { let layer = TREE_LAYERS[x][item]; if (tmp[layer].autoPrestige && tmp[layer].canReset) { doReset(layer); @@ -454,8 +434,8 @@ function gameLoop(diff) { } } - for (row in OTHER_LAYERS){ - for (item in OTHER_LAYERS[row]) { + for (let row in OTHER_LAYERS){ + for (let item in OTHER_LAYERS[row]) { let layer = OTHER_LAYERS[row][item]; if (tmp[layer].autoPrestige && tmp[layer].canReset) { doReset(layer); @@ -470,7 +450,7 @@ function gameLoop(diff) { } } - for (layer in layers){ + for (let layer in layers){ if (layers[layer].milestones) { updateMilestones(layer); } @@ -490,16 +470,16 @@ function hardReset() { window.location.reload(); } -var ticking = false; +let ticking = false; -var interval = setInterval(function() { - if (player===undefined||tmp===undefined) { +const interval = setInterval(function () { + if (player === undefined || tmp === undefined) { return; } if (ticking) { return; } - if (gameEnded&&!player.keepGoing) { + if (gameEnded && !player.keepGoing) { return; } ticking = true; @@ -522,7 +502,7 @@ var interval = setInterval(function() { diff *= player.devSpeed; } player.time = now; - if (needCanvasUpdate){ + if (needCanvasUpdate) { resizeCanvas(); needCanvasUpdate = false; } diff --git a/js/mod.js b/js/mod.js index 82076f5..efb631f 100644 --- a/js/mod.js +++ b/js/mod.js @@ -53,7 +53,7 @@ let winText = "Congratulations! You have reached the end and beaten this game, b // If you add new functions anywhere inside of a layer, and those functions have an effect when called, add them here. // (The ones here are examples, all official functions are already taken care of) -var doNotCallTheseFunctionsEveryTick = ["onAddPoints", "touchstart", "touchend"]; +const doNotCallTheseFunctionsEveryTick = ["onAddPoints", "touchstart", "touchend"]; function getStartPoints(){ return new Decimal(modInfo.initialStartPoints); @@ -85,8 +85,7 @@ function addedPlayerData() { } // Display extra things at the top of the page -var displayThings = [ -]; +const displayThings = []; // Determines when the game "ends" function isEndgame() { diff --git a/js/technical/break_eternity.js b/js/technical/break_eternity.js index 891d0d2..3df6e02 100644 --- a/js/technical/break_eternity.js +++ b/js/technical/break_eternity.js @@ -1054,7 +1054,7 @@ if (newparts.length === 2) { this.sign = 1; - if (newparts[0].charAt(0) == "-") + if (newparts[0].charAt(0) === "-") { this.sign = -1; } @@ -1467,7 +1467,7 @@ var b; //Which number is bigger in terms of its multiplicative distance from 1? - if ((this.layer > decimal.layer) || (this.layer == decimal.layer && Math.abs(this.mag) > Math.abs(decimal.mag))) + if ((this.layer > decimal.layer) || (this.layer === decimal.layer && Math.abs(this.mag) > Math.abs(decimal.mag))) { a = this; b = decimal; @@ -2400,7 +2400,7 @@ //Other sroots are possible to calculate probably through guess and check methods, this one is easy though. // https://en.wikipedia.org/wiki/Tetration#Super-root Decimal.prototype.ssqrt = function() { - if (this.sign == 1 && this.layer >= 3) + if (this.sign === 1 && this.layer >= 3) { return FC_NN(this.sign, this.layer-1, this.mag) } diff --git a/js/technical/canvas.js b/js/technical/canvas.js index e7c8739..30eb817 100644 --- a/js/technical/canvas.js +++ b/js/technical/canvas.js @@ -1,28 +1,34 @@ -var canvas; -var ctx; +let canvas; +let ctx; window.addEventListener("resize", (_=>resizeCanvas())); function retrieveCanvasData() { - let treeCanv = document.getElementById("treeCanvas") - let treeTab = document.getElementById("treeTab") - if (treeCanv===undefined||treeCanv===null) return false; - if (treeTab===undefined||treeTab===null) return false; + let treeCanv = document.getElementById("treeCanvas"); + let treeTab = document.getElementById("treeTab"); + if (treeCanv===undefined||treeCanv===null) { + return false; + } + if (treeTab===undefined||treeTab===null) { + return false; + } canvas = treeCanv; ctx = canvas.getContext("2d"); return true; } function resizeCanvas() { - if (!retrieveCanvasData()) return + if (!retrieveCanvasData()) { + return; + } canvas.width = 0; - canvas.height = 0; + canvas.height = 0; canvas.width = window.innerWidth; canvas.height = window.innerHeight; - drawTree(); + drawTree(); } -var colors = { +const colors = { default: { 1: "#ffffff", 2: "#bfbfbf", @@ -33,47 +39,50 @@ var colors = { 2: "#8fa7bf", 3: "#5f6f7f", }, -} -var colors_theme +}; +let colors_theme; function drawTree() { - if (!retrieveCanvasData()) return; + if (!retrieveCanvasData()) { + return; + } ctx.clearRect(0, 0, canvas.width, canvas.height); - for (layer in layers){ - if (tmp[layer].layerShown == true && tmp[layer].branches){ - for (branch in tmp[layer].branches) - { - drawTreeBranch(layer, tmp[layer].branches[branch]) - } + for (let layer in layers){ + if (tmp[layer].layerShown === true && tmp[layer].branches){ + for (let branch in tmp[layer].branches) { + drawTreeBranch(layer, tmp[layer].branches[branch]); + } } } } function drawTreeBranch(num1, data) { // taken from Antimatter Dimensions & adjusted slightly - let num2 = data - let color_id = 1 + let num2 = data; + let color_id = 1; if (Array.isArray(data)){ - num2 = data[0] - color_id = data[1] + num2 = data[0]; + color_id = data[1]; } - if(typeof(color_id) == "number") - color_id = colors_theme[color_id] + if(typeof(color_id) == "number") { + color_id = colors_theme[color_id]; + } - if (document.getElementById(num1) == null || document.getElementById(num2) == null) - return + if (document.getElementById(num1) == null || document.getElementById(num2) == null) { + return; + } let start = document.getElementById(num1).getBoundingClientRect(); - let end = document.getElementById(num2).getBoundingClientRect(); - let x1 = start.left + (start.width / 2) + document.body.scrollLeft; - let y1 = start.top + (start.height / 2) + document.body.scrollTop - 50; - let x2 = end.left + (end.width / 2) + document.body.scrollLeft; - let y2 = end.top + (end.height / 2) + document.body.scrollTop - 50; - ctx.lineWidth = 15; - ctx.beginPath(); - ctx.strokeStyle = color_id - ctx.moveTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.stroke(); + let end = document.getElementById(num2).getBoundingClientRect(); + let x1 = start.left + (start.width / 2) + document.body.scrollLeft; + let y1 = start.top + (start.height / 2) + document.body.scrollTop - 50; + let x2 = end.left + (end.width / 2) + document.body.scrollLeft; + let y2 = end.top + (end.height / 2) + document.body.scrollTop - 50; + ctx.lineWidth = 15; + ctx.beginPath(); + ctx.strokeStyle = color_id; + ctx.moveTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.stroke(); } \ No newline at end of file diff --git a/js/technical/layerSupport.js b/js/technical/layerSupport.js index 6a9433f..cae046e 100644 --- a/js/technical/layerSupport.js +++ b/js/technical/layerSupport.js @@ -1,4 +1,4 @@ -var layers = {} +const layers = {}; const decimalZero = new Decimal(0) const decimalOne = new Decimal(1) @@ -8,19 +8,19 @@ function layerShown(layer){ return tmp[layer].layerShown; } -var LAYERS = Object.keys(layers); +let LAYERS = Object.keys(layers); -var hotkeys = {}; +let hotkeys = {}; -var maxRow = 0; +let maxRow = 0; function updateHotkeys() { hotkeys = {}; - for (layer in layers){ - hk = layers[layer].hotkeys + for (let layer in layers){ + let hk = layers[layer].hotkeys if (hk){ - for (id in hk){ + for (let id in hk){ hotkeys[hk[id].key] = hk[id] hotkeys[hk[id].key].layer = layer hotkeys[hk[id].key].id = id @@ -31,30 +31,30 @@ function updateHotkeys() } } -var ROW_LAYERS = {} -var TREE_LAYERS = {} -var OTHER_LAYERS = {} +let ROW_LAYERS = {}; +let TREE_LAYERS = {}; +let OTHER_LAYERS = {}; function updateLayers(){ LAYERS = Object.keys(layers); ROW_LAYERS = {} TREE_LAYERS = {} OTHER_LAYERS = {} - for (layer in layers){ + for (let layer in layers){ setupLayer(layer) } - for (row in OTHER_LAYERS) { + for (let row in OTHER_LAYERS) { OTHER_LAYERS[row].sort((a, b) => (a.position > b.position) ? 1 : -1) - for (layer in OTHER_LAYERS[row]) + for (let layer in OTHER_LAYERS[row]) OTHER_LAYERS[row][layer] = OTHER_LAYERS[row][layer].layer } - for (row in TREE_LAYERS) { + for (let row in TREE_LAYERS) { TREE_LAYERS[row].sort((a, b) => (a.position > b.position) ? 1 : -1) - for (layer in TREE_LAYERS[row]) + for (let layer in TREE_LAYERS[row]) TREE_LAYERS[row][layer] = TREE_LAYERS[row][layer].layer } let treeLayers2 = [] - for (x = 0; x < maxRow + 1; x++) { + for (let x = 0; x < maxRow + 1; x++) { if (TREE_LAYERS[x]) treeLayers2.push(TREE_LAYERS[x]) } TREE_LAYERS = treeLayers2 @@ -64,7 +64,7 @@ function updateLayers(){ function setupLayer(layer){ layers[layer].layer = layer if (layers[layer].upgrades){ - for (thing in layers[layer].upgrades){ + for (let thing in layers[layer].upgrades){ if (!isNaN(thing)){ layers[layer].upgrades[thing].id = thing layers[layer].upgrades[thing].layer = layer @@ -74,7 +74,7 @@ function setupLayer(layer){ } } if (layers[layer].milestones){ - for (thing in layers[layer].milestones){ + for (let thing in layers[layer].milestones){ if (!isNaN(thing)){ layers[layer].milestones[thing].id = thing layers[layer].milestones[thing].layer = layer @@ -84,7 +84,7 @@ function setupLayer(layer){ } } if (layers[layer].achievements){ - for (thing in layers[layer].achievements){ + for (let thing in layers[layer].achievements){ if (!isNaN(thing)){ layers[layer].achievements[thing].id = thing layers[layer].achievements[thing].layer = layer @@ -94,7 +94,7 @@ function setupLayer(layer){ } } if (layers[layer].challenges){ - for (thing in layers[layer].challenges){ + for (let thing in layers[layer].challenges){ if (!isNaN(thing)){ layers[layer].challenges[thing].id = thing layers[layer].challenges[thing].layer = layer @@ -108,7 +108,7 @@ function setupLayer(layer){ } if (layers[layer].buyables){ layers[layer].buyables.layer = layer - for (thing in layers[layer].buyables){ + for (let thing in layers[layer].buyables){ if (!isNaN(thing)){ layers[layer].buyables[thing].id = thing layers[layer].buyables[thing].layer = layer @@ -120,7 +120,7 @@ function setupLayer(layer){ if (layers[layer].clickables){ layers[layer].clickables.layer = layer - for (thing in layers[layer].clickables){ + for (let thing in layers[layer].clickables){ if (!isNaN(thing)){ layers[layer].clickables[thing].id = thing layers[layer].clickables[thing].layer = layer @@ -132,7 +132,7 @@ function setupLayer(layer){ if (layers[layer].bars){ layers[layer].bars.layer = layer - for (thing in layers[layer].bars){ + for (let thing in layers[layer].bars){ layers[layer].bars[thing].id = thing layers[layer].bars[thing].layer = layer if (layers[layer].bars[thing].unlocked === undefined) @@ -141,16 +141,16 @@ function setupLayer(layer){ } if (layers[layer].infoboxes){ - for (thing in layers[layer].infoboxes){ + for (let thing in layers[layer].infoboxes){ layers[layer].infoboxes[thing].id = thing layers[layer].infoboxes[thing].layer = layer if (layers[layer].infoboxes[thing].unlocked === undefined) layers[layer].infoboxes[thing].unlocked = true } } - + if (layers[layer].startData) { - data = layers[layer].startData() + let data = layers[layer].startData() if (data.best !== undefined && data.showBest === undefined) layers[layer].showBest = true if (data.total !== undefined && data.showTotal === undefined) layers[layer].showTotal = true } @@ -193,14 +193,14 @@ function addLayer(layerName, layerData, tabLayers = null){ // Call this to add l if (tabLayers !== null) { let format = {} - for (id in tabLayers) { - layer = tabLayers[id] + for (let id in tabLayers) { + let layer = tabLayers[id] format[(layers[layer].name ? layers[layer].name : layer)] = { embedLayer: layer, buttonStyle() { if (!tmp[this.embedLayer].nodeStyle) return {'border-color': tmp[this.embedLayer].color} else { - style = tmp[this.embedLayer].nodeStyle + let style = tmp[this.embedLayer].nodeStyle if (style['border-color'] === undefined) style['border-color'] = tmp[this.embedLayer].color return style } @@ -217,21 +217,6 @@ function addNode(layerName, layerData){ // Does the same thing, but for non-laye layers[layerName].isLayer = false } -// If data is a function, return the result of calling it. Otherwise, return the data. -function readData(data, args=null){ - if ((!!data && data.constructor && data.call && data.apply)) - return data(args); - else - return data; -} - -function someLayerUnlocked(row){ - for (layer in ROW_LAYERS[row]) - if (player[layer].unlocked) - return true - return false -} - // This isn't worth making a .ts file over const UP = 0 diff --git a/js/technical/systemComponents.js b/js/technical/systemComponents.js index 4734a5b..ffc1a9c 100644 --- a/js/technical/systemComponents.js +++ b/js/technical/systemComponents.js @@ -1,27 +1,31 @@ -var systemComponents = { +// noinspection SpellCheckingInspection +const systemComponents = { "tab-buttons": { props: ["layer", "data", "name"], template: ` -
-
- -
-
+
+
+ +
+
` }, "tree-node": { props: ["layer", "abb", "size"], template: ` - + v-bind:style="tmp[layer].computedNodeStyle"> + {{ (abb !== '' && tmp[layer].image === undefined) ? abb : ' ' }} + ` }, "layer-tab": { props: ["layer", "back", "spacing", "embedded"], - template: `
-
-
-
- - -
- -
- - -
- -
- - - - - -

-
-
-
- -
-
-
- -
- - -
-
- ` + template: ` +
+
+ +
+
+
+ + +
+ +
+ + +
+ +
+ + + + + +

+
+
+
+
+ +
+
+
+ +
+ + +
+
+
+ ` }, "overlay-head": { diff --git a/js/technical/temp.js b/js/technical/temp.js index 9b83527..67f63e9 100644 --- a/js/technical/temp.js +++ b/js/technical/temp.js @@ -1,22 +1,23 @@ -var tmp = {} -var temp = tmp // Proxy for tmp -var funcs = {} -var NaNalert = false; +let tmp = {}; +let temp = tmp; // Proxy for tmp +let funcs = {}; +// noinspection SpellCheckingInspection +let NaNalert = false; // Tmp will not call these -var activeFunctions = [ +const activeFunctions = [ "startData", "onPrestige", "doReset", "update", "automate", "buy", "buyMax", "respec", "onComplete", "onPurchase", "onPress", "onClick", "masterButtonPress", "sellOne", "sellAll", "pay", -] +]; -var noCall = doNotCallTheseFunctionsEveryTick -for (item in noCall) { +const noCall = doNotCallTheseFunctionsEveryTick; +for (let item in noCall) { activeFunctions.push(noCall[item]) } // Add the names of classes to traverse -var traversableClasses = [] +const traversableClasses = []; function setupTemp() { tmp = {} @@ -26,7 +27,7 @@ function setupTemp() { funcs = {} setupTempData(layers, tmp, funcs) - for (layer in layers){ + for (let layer in layers){ tmp[layer].resetGain = {} tmp[layer].nextAt = {} tmp[layer].nextAtDisp = {} @@ -41,7 +42,7 @@ function setupTemp() { } function setupTempData(layerData, tmpData, funcsData) { - for (item in layerData){ + for (let item in layerData){ if (layerData[item] == null) { tmpData[item] = null } @@ -61,11 +62,13 @@ function setupTempData(layerData, tmpData, funcsData) { tmpData[item] = new layerData[item].constructor() funcsData[item] = new layerData[item].constructor() } - else if (isFunction(layerData[item]) && !activeFunctions.includes(item)){ - funcsData[item] = layerData[item] - tmpData[item] = new Decimal(1) // The safest thing to put probably? - } else { - tmpData[item] = layerData[item] + else { // noinspection JSUnfilteredForInLoop + if (isFunction(layerData[item]) && !activeFunctions.includes(item)){ + funcsData[item] = layerData[item] + tmpData[item] = new Decimal(1) // The safest thing to put probably? + } else { + tmpData[item] = layerData[item] + } } } } @@ -76,7 +79,7 @@ function updateTemp() { updateTempData(layers, tmp, funcs) - for (layer in layers){ + for (let layer in layers){ tmp[layer].resetGain = getResetGain(layer) tmp[layer].nextAt = getNextAt(layer) tmp[layer].nextAtDisp = getNextAt(layer, true) @@ -93,7 +96,7 @@ function updateTemp() { tmp.pointGen = getPointGen() tmp.displayThings = [] - for (thing in displayThings){ + for (let thing in displayThings){ let text = displayThings[thing] if (isFunction(text)) text = text() tmp.displayThings.push(text) @@ -103,7 +106,7 @@ function updateTemp() { function updateTempData(layerData, tmpData, funcsData) { - for (item in funcsData){ + for (let item in funcsData){ if (Array.isArray(layerData[item])) { updateTempData(layerData[item], tmpData[item], funcsData[item]) } @@ -137,13 +140,13 @@ function updateChallengeTemp(layer) } function updateChallengeDisplay(layer) { - for (id in player[layer].challenges) { + for (let id in player[layer].challenges) { let style = "locked" - if (player[layer].activeChallenge == id && canCompleteChallenge(layer, id)) style = "canComplete" + if (player[layer].activeChallenge === id && canCompleteChallenge(layer, id)) style = "canComplete" else if (hasChallenge(layer, id)) style = "done" tmp[layer].challenges[id].defaultStyle = style - tmp[layer].challenges[id].buttonText = (player[layer].activeChallenge==(id)?(canCompleteChallenge(layer, id)?"Finish":"Exit Early"):(hasChallenge(layer, id)?"Completed":"Start")) + tmp[layer].challenges[id].buttonText = (player[layer].activeChallenge===(id)?(canCompleteChallenge(layer, id)?"Finish":"Exit Early"):(hasChallenge(layer, id)?"Completed":"Start")) } } @@ -172,8 +175,8 @@ function constructNodeStyle(layer){ function constructAchievementStyles(layer){ - for (id in tmp[layer].achievements) { - ach = tmp[layer].achievements[id] + for (let id in tmp[layer].achievements) { + let ach = tmp[layer].achievements[id] if (isPlainObject(ach)) { let style = [] if (ach.image){ @@ -189,7 +192,7 @@ function constructAchievementStyles(layer){ function constructBarStyles(layer){ if (layers[layer].bars === undefined) return - for (id in layers[layer].bars){ + for (let id in layers[layer].bars){ if (id !== "layer") { let bar = tmp[layer].bars[id] if (bar.progress instanceof Decimal) @@ -202,16 +205,16 @@ function constructBarStyles(layer){ if (dir !== undefined) { bar.fillDims['clip-path'] = 'inset(0% 50% 0% 0%)' - if(dir == UP){ + if(dir === UP){ bar.fillDims['clip-path'] = 'inset(' + bar.progress + '% 0% 0% 0%)' } - else if(dir == DOWN){ + else if(dir === DOWN){ bar.fillDims['clip-path'] = 'inset(0% 0% ' + bar.progress + '% 0%)' } - else if(dir == RIGHT){ + else if(dir === RIGHT){ bar.fillDims['clip-path'] = 'inset(0% ' + bar.progress + '% 0% 0%)' } - else if(dir == LEFT){ + else if(dir === LEFT){ bar.fillDims['clip-path'] = 'inset(0% 0% 0% ' + bar.progress + '%)' } @@ -224,7 +227,7 @@ function constructBarStyles(layer){ function setupBarStyles(layer){ if (layers[layer].bars === undefined) return - for (id in layers[layer].bars){ + for (let id in layers[layer].bars){ let bar = tmp[layer].bars[id] bar.dims = {} bar.fillDims = {} diff --git a/js/tree.js b/js/tree.js index 23e812b..d659c61 100644 --- a/js/tree.js +++ b/js/tree.js @@ -1,4 +1,4 @@ -var layoutInfo = { +const layoutInfo = { startTab: "none", showTree: true, treeLayout: "" @@ -9,6 +9,7 @@ Vue.component("job", { template: ` +

{{layers[data].jobName}}

Lv. {{formatWhole(getJobLevel(data))}} @@ -28,6 +29,14 @@ function getJobLevel(job) { return softcap(player[job].xp.clampMin(1).log10().floor().add(1), new Decimal(25)).floor(); } +function checkJobXP(job) { + let jobLevel = new Decimal(getJobLevel(job)); + if (jobLevel.neq(player[job].lastLevel)) { + doPopup("none", `Level ${jobLevel}`, "Level Up!", 3, layers[job].color); + player[job].lastLevel = jobLevel; + } +} + function getJobProgressBar(job) { return { direction: RIGHT, diff --git a/js/utils.js b/js/utils.js index e27b98b..be812da 100644 --- a/js/utils.js +++ b/js/utils.js @@ -155,7 +155,7 @@ function buyUpg(layer, id) { } } player[layer].upgrades.push(id); - if (upg.onPurchase != undefined) { + if (upg.onPurchase !== undefined) { run(upg.onPurchase, upg); } } @@ -215,7 +215,7 @@ function inChallenge(layer, id) { return false; } id = toNumber(id); - if (challenge == id) { + if (challenge === id) { return true; } @@ -226,7 +226,8 @@ function inChallenge(layer, id) { // ************ Misc ************ -var onTreeTab = true; +const onTreeTab = true; + function showTab(name) { if (LAYERS.includes(name) && !layerunlocked(name)) { return; @@ -234,9 +235,9 @@ function showTab(name) { if (player.tab === name && isPlainObject(tmp[name].tabFormat)) { player.subtabs[name].mainTabs = Object.keys(layers[name].tabFormat)[0]; } - var toTreeTab = name == "none"; + player.tab = name; - if (player.navTab == "none" && (tmp[name].row !== "side") && (tmp[name].row !== "otherside")) { + if (player.navTab === "none" && (tmp[name].row !== "side") && (tmp[name].row !== "otherside")) { player.lastSafeTab = name; } delete player.notify[name]; @@ -249,7 +250,7 @@ function showNavTab(name) { return; } - var toTreeTab = name == "tree"; + player.navTab = name; player.notify[name] = false; needCanvasUpdate = true; @@ -281,9 +282,9 @@ function prestigeNotify(layer) { return layers[layer].prestigeNotify(); } else if (tmp[layer].autoPrestige || tmp[layer].passiveGeneration) { return false; - } else if (tmp[layer].type == "static") { + } else if (tmp[layer].type === "static") { return tmp[layer].canReset; - } else if (tmp[layer].type == "normal") { + } else if (tmp[layer].type === "normal") { return (tmp[layer].canReset && (tmp[layer].resetGain.gte(player[layer].points.div(10)))); } else { return false; @@ -291,15 +292,15 @@ function prestigeNotify(layer) { } function notifyLayer(name) { - if (player.tab == name || !layerunlocked(name)) { + if (player.tab === name || !layerunlocked(name)) { return; } player.notify[name] = 1; } function subtabShouldNotify(layer, family, id) { - let subtab = {}; - if (family == "mainTabs") { + let subtab; + if (family === "mainTabs") { subtab = tmp[layer].tabFormat[id]; } else { subtab = tmp[layer].microtabs[family][id]; @@ -313,8 +314,8 @@ function subtabShouldNotify(layer, family, id) { } function subtabResetNotify(layer, family, id) { - let subtab = {}; - if (family == "mainTabs") { + let subtab; + if (family === "mainTabs") { subtab = tmp[layer].tabFormat[id]; } else { subtab = tmp[layer].microtabs[family][id]; @@ -327,19 +328,13 @@ function subtabResetNotify(layer, family, id) { } function nodeShown(layer) { - if (layerShown(layer)) { - return true; - } - switch (layer) { - case "idk": - return player.idk.unlocked; - break; - } - return false; + return layerShown(layer); + } +// noinspection SpellCheckingInspection function layerunlocked(layer) { - if (tmp[layer] && tmp[layer].type == "none") { + if (tmp[layer] && tmp[layer].type === "none") { return (player[layer].unlocked); } return LAYERS.includes(layer) && (player[layer].unlocked || (tmp[layer].canReset && tmp[layer].layerShown)); @@ -361,7 +356,7 @@ function toNumber(x) { } function updateMilestones(layer) { - for (id in layers[layer].milestones) { + for (let id in layers[layer].milestones) { if (!(hasMilestone(layer, id)) && layers[layer].milestones[id].done()) { player[layer].milestones.push(id); if (isFunction(layers[layer].milestones[id].onComplete)) { @@ -375,7 +370,7 @@ function updateMilestones(layer) { } function updateAchievements(layer) { - for (id in layers[layer].achievements) { + for (let id in layers[layer].achievements) { if (isPlainObject(layers[layer].achievements[id]) && !(hasAchievement(layer, id)) && layers[layer].achievements[id].done()) { player[layer].achievements.push(id); if (layers[layer].achievements[id].onComplete) { @@ -400,7 +395,7 @@ function addTime(diff, layer) { if (time + 0 !== time) { console.log("Memory leak detected. Trying to fix..."); time = toNumber(time); - if (isNaN(time) || time == 0) { + if (isNaN(time) || time === 0) { console.log("Couldn't fix! Resetting..."); time = layer ? player.timePlayed : 0; if (!layer) { @@ -417,6 +412,7 @@ function addTime(diff, layer) { } } +let onFocused; document.onkeydown = function (e) { if (player === undefined) { return; @@ -424,7 +420,7 @@ document.onkeydown = function (e) { if (gameEnded && !player.keepGoing) { return; } - let shiftDown = e.shiftKey; + let ctrlDown = e.ctrlKey; let key = e.key; if (ctrlDown) { @@ -443,7 +439,8 @@ document.onkeydown = function (e) { } }; -var onFocused = false; +onFocused = false; + function focused(x) { onFocused = x; } @@ -451,12 +448,12 @@ function focused(x) { function prestigeButtonText(layer) { if (layers[layer].prestigeButtonText !== undefined) { return layers[layer].prestigeButtonText(); - } else if (tmp[layer].type == "normal") { + } else if (tmp[layer].type === "normal") { return `${player[layer].points.lt(1e3) ? (tmp[layer].resetDescription !== undefined ? tmp[layer].resetDescription : "Reset for ") : ""}+${formatWhole(tmp[layer].resetGain)} ${tmp[layer].resource} ${tmp[layer].resetGain.lt(100) && player[layer].points.lt(1e3) ? `

Next at ${(tmp[layer].roundUpCost ? formatWhole(tmp[layer].nextAt) : format(tmp[layer].nextAt))} ${tmp[layer].baseResource}` : ""}`; - } else if (tmp[layer].type == "static") { + } else if (tmp[layer].type === "static") { return `${tmp[layer].resetDescription !== undefined ? tmp[layer].resetDescription : "Reset for "}+${formatWhole(tmp[layer].resetGain)} ${tmp[layer].resource}

${player[layer].points.lt(30) ? (tmp[layer].baseAmount.gte(tmp[layer].nextAt) && (tmp[layer].canBuyMax !== undefined) && tmp[layer].canBuyMax ? "Next:" : "Req:") : ""} ${formatWhole(tmp[layer].baseAmount)} / ${(tmp[layer].roundUpCost ? formatWhole(tmp[layer].nextAtDisp) : format(tmp[layer].nextAtDisp))} ${tmp[layer].baseResource} `; - } else if (tmp[layer].type == "none") { + } else if (tmp[layer].type === "none") { return ""; } else { return "You need prestige button text"; @@ -476,11 +473,12 @@ document.title = modInfo.name; // Variables that must be defined to display popups -var activePopups = []; -var popupID = 0; +const activePopups = []; +let popupID = 0; // Function to show popups function doPopup(type = "none", text = "This is a test popup.", title = "", timer = 3, color = "") { + let popupTitle, popupType switch (type) { case "achievement": popupTitle = "Achievement Unlocked!"; @@ -495,20 +493,17 @@ function doPopup(type = "none", text = "This is a test popup.", title = "", time popupType = "default-popup"; break; } - if (title != "") { + if (title !== "") { popupTitle = title; } - popupMessage = text; - popupTimer = timer; - - activePopups.push({ "time": popupTimer, "type": popupType, "title": popupTitle, "message": (popupMessage + "\n"), "id": popupID, "color": color }); + activePopups.push({ "time": timer, "type": popupType, "title": popupTitle, "message": (text + "\n"), "id": popupID, "color": color }); popupID++; } //Function to reduce time on active popups function adjustPopupTime(diff) { - for (popup in activePopups) { + for (let popup in activePopups) { activePopups[popup].time -= diff; if (activePopups[popup]["time"] < 0) { activePopups.splice(popup, 1); // Remove popup when time hits 0 diff --git a/js/utils/NumberFormating.js b/js/utils/NumberFormatting.js similarity index 81% rename from js/utils/NumberFormating.js rename to js/utils/NumberFormatting.js index d2d7c8e..fc326e9 100644 --- a/js/utils/NumberFormating.js +++ b/js/utils/NumberFormatting.js @@ -2,7 +2,7 @@ function exponentialFormat(num, precision, mantissa = true) { let e = num.log10().floor(); let m = num.div(Decimal.pow(10, e)); - if(m.toStringWithDecimalPlaces(precision) == 10) { + if(m.toStringWithDecimalPlaces(precision) === 10) { m = new Decimal(1); e = e.add(1); } @@ -23,9 +23,9 @@ function commaFormat(num, precision) { } if (precision === null || precision === undefined) { if (num.layer > 1) { - firstPart = new Decimal(num); + let firstPart = new Decimal(num); firstPart.mag = Math.floor(num.mag); - secondPart = new Decimal(num); + let secondPart = new Decimal(num); secondPart.layer = 0; secondPart.mag = num.mag - firstPart.mag; return firstPart.floor().toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") + secondPart.toStringWithDecimalPlaces(2).substr(1); @@ -48,18 +48,6 @@ function regularFormat(num, precision) { return num.toStringWithDecimalPlaces(precision); } -function fixValue(x, y = 0) { - return x || new Decimal(y); -} - -function sumValues(x) { - x = Object.values(x); - if (!x[0]) { - return new Decimal(0); - } - return x.reduce((a, b) => Decimal.add(a, b)); -} - function format(decimal, precision=2,) { decimal = new Decimal(decimal); if (isNaN(decimal.sign)||isNaN(decimal.layer)||isNaN(decimal.mag)) { @@ -69,11 +57,11 @@ function format(decimal, precision=2,) { if (decimal.sign<0) { return "-"+format(decimal.neg(), precision); } - if (decimal.mag == Number.POSITIVE_INFINITY) { + if (decimal.mag === Number.POSITIVE_INFINITY) { return "Infinity"; } if (decimal.gte("eeee1000")) { - var slog = decimal.slog(); + const slog = decimal.slog(); if (slog.gte(1e6)) { return "F" + format(slog.floor()); } else { @@ -117,11 +105,3 @@ function formatTime(s) { } } -function toPlaces(x, precision, maxAccepted) { - x = new Decimal(x); - let result = x.toStringWithDecimalPlaces(precision); - if (new Decimal(result).gte(maxAccepted)) { - result = new Decimal(maxAccepted-Math.pow(0.1, precision)).toStringWithDecimalPlaces(precision); - } - return result; -} diff --git a/js/utils/options.js b/js/utils/options.js index 01e03be..950bafc 100644 --- a/js/utils/options.js +++ b/js/utils/options.js @@ -1,15 +1,17 @@ +let styleCooldown = 0; + // ************ Options ************ function toggleOpt(name) { - if (name == "oldStyle" && styleCooldown > 0) + if (name === "oldStyle" && styleCooldown > 0) return; player[name] = !player[name]; - if (name == "hqTree") + if (name === "hqTree") changeTreeQuality(); - if (name == "oldStyle") + if (name === "oldStyle") updateStyle(); } -var styleCooldown = 0; + function updateStyle() { styleCooldown = 1; let css = document.getElementById("styleStuff"); @@ -17,7 +19,7 @@ function updateStyle() { needCanvasUpdate = true; } function changeTreeQuality() { - var on = player.hqTree; + const on = player.hqTree; document.body.style.setProperty('--hqProperty1', on ? "2px solid" : "4px solid"); document.body.style.setProperty('--hqProperty2a', on ? "-4px -4px 4px rgba(0, 0, 0, 0.25) inset" : "-4px -4px 4px rgba(0, 0, 0, 0) inset"); document.body.style.setProperty('--hqProperty2b', on ? "0px 0px 20px var(--background)" : ""); @@ -31,22 +33,18 @@ function adjustMSDisp() { player.msDisplay = displays[(displays.indexOf(player.msDisplay) + 1) % 4]; } function milestoneShown(layer, id) { - complete = player[layer].milestones.includes(id); - auto = layers[layer].milestones[id].toggles; + let complete = player[layer].milestones.includes(id); + let auto = layers[layer].milestones[id].toggles; switch (player.msDisplay) { case "always": return true; - break; case "automation": return (auto) || !complete; - break; case "incomplete": return !complete; - break; case "never": return false; - break; } return false; } diff --git a/js/utils/save.js b/js/utils/save.js index df55291..02cd2a6 100644 --- a/js/utils/save.js +++ b/js/utils/save.js @@ -25,17 +25,17 @@ function startPlayerBase() { }; } function getStartPlayer() { - playerdata = startPlayerBase(); + let playerdata = startPlayerBase(); if (addedPlayerData) { - extradata = addedPlayerData(); - for (thing in extradata) { + let extradata = addedPlayerData(); + for (let thing in extradata) { playerdata[thing] = extradata[thing]; } } playerdata.infoboxes = {}; - for (layer in layers) { + for (let layer in layers) { playerdata[layer] = getStartLayerData(layer); if (layers[layer].tabFormat && !Array.isArray(layers[layer].tabFormat)) { @@ -43,7 +43,7 @@ function getStartPlayer() { playerdata.subtabs[layer].mainTabs = Object.keys(layers[layer].tabFormat)[0]; } if (layers[layer].microtabs) { - if (playerdata.subtabs[layer] == undefined) { + if (playerdata.subtabs[layer] === undefined) { playerdata.subtabs[layer] = {}; } for (item in layers[layer].microtabs) { @@ -51,7 +51,7 @@ function getStartPlayer() { } } if (layers[layer].infoboxes) { - if (playerdata.infoboxes[layer] == undefined) { + if (playerdata.infoboxes[layer] === undefined) { playerdata.infoboxes[layer] = {}; } for (item in layers[layer].infoboxes) { @@ -63,7 +63,7 @@ function getStartPlayer() { return playerdata; } function getStartLayerData(layer) { - layerdata = {}; + let layerdata = {}; if (layers[layer].startData) { layerdata = layers[layer].startData(); } @@ -82,7 +82,7 @@ function getStartLayerData(layer) { } layerdata.buyables = getStartBuyables(layer); - if (layerdata.clickables == undefined) { + if (layerdata.clickables === undefined) { layerdata.clickables = getStartClickables(layer); } layerdata.spentOnBuyables = new Decimal(0); @@ -95,7 +95,7 @@ function getStartLayerData(layer) { function getStartBuyables(layer) { let data = {}; if (layers[layer].buyables) { - for (id in layers[layer].buyables) { + for (let id in layers[layer].buyables) { if (isPlainObject(layers[layer].buyables[id])) { data[id] = new Decimal(0); } @@ -106,7 +106,7 @@ function getStartBuyables(layer) { function getStartClickables(layer) { let data = {}; if (layers[layer].clickables) { - for (id in layers[layer].clickables) { + for (let id in layers[layer].clickables) { if (isPlainObject(layers[layer].clickables[id])) { data[id] = ""; } @@ -117,7 +117,7 @@ function getStartClickables(layer) { function getStartChallenges(layer) { let data = {}; if (layers[layer].challenges) { - for (id in layers[layer].challenges) { + for (let id in layers[layer].challenges) { if (isPlainObject(layers[layer].challenges[id])) { data[id] = 0; } @@ -126,12 +126,12 @@ function getStartChallenges(layer) { return data; } function fixSave() { - defaultData = getStartPlayer(); + let defaultData = getStartPlayer(); fixData(defaultData, player); setBuyableAmount("distill", "retort", (getBuyableAmount("distill", "retort") || new Decimal(0)).max(5)); player.sands.chipping = false; - for (layer in layers) { + for (let layer in layers) { if (player[layer].best !== undefined) { player[layer].best = new Decimal(player[layer].best); } @@ -146,7 +146,7 @@ function fixSave() { } } if (layers[layer].microtabs) { - for (item in layers[layer].microtabs) { + for (let item in layers[layer].microtabs) { if (!Object.keys(layers[layer].microtabs[item]).includes(player.subtabs[layer][item])) { player.subtabs[layer][item] = Object.keys(layers[layer].microtabs[item])[0]; } @@ -155,7 +155,7 @@ function fixSave() { } } function fixData(defaultData, newData) { - for (item in defaultData) { + for (let item in defaultData) { if (defaultData[item] == null) { if (newData[item] === undefined) { newData[item] = null; @@ -220,8 +220,9 @@ function setupModInfo() { function fixNaNs() { NaNcheck(player); } +// noinspection SpellCheckingInspection function NaNcheck(data) { - for (item in data) { + for (let item in data) { if (data[item] == null) { } else if (Array.isArray(data[item])) { NaNcheck(data[item]); @@ -256,8 +257,8 @@ function importSave(imported = undefined, forced = false) { imported = prompt("Paste your save here"); } try { - tempPlr = Object.assign(getStartPlayer(), JSON.parse(atob(imported))); - if (tempPlr.versionType != modInfo.id && !forced && !confirm("This save appears to be for a different mod! Are you sure you want to import?")) // Wrong save (use "Forced" to force it to accept.) + let tempPlr = Object.assign(getStartPlayer(), JSON.parse(atob(imported))); + if (tempPlr.versionType !== modInfo.id && !forced && !confirm("This save appears to be for a different mod! Are you sure you want to import?")) // Wrong save (use "Forced" to force it to accept.) { return; } @@ -268,7 +269,7 @@ function importSave(imported = undefined, forced = false) { save(); window.location.reload(); } catch (e) { - return; + } } function versionCheck() { @@ -280,7 +281,7 @@ function versionCheck() { } if (setVersion) { - if (player.versionType == modInfo.id && VERSION.num > player.version) { + if (player.versionType === modInfo.id && VERSION.num > player.version) { player.keepGoing = false; if (fixOldSave) { fixOldSave(player.version); @@ -291,7 +292,9 @@ function versionCheck() { player.beta = VERSION.beta; } } -var saveInterval = setInterval(function () { + +// noinspection JSUnusedGlobalSymbols +const saveInterval = setInterval(function () { if (player === undefined) { return; } diff --git a/js/utils/themes.js b/js/utils/themes.js index d44ed3a..25f52b3 100644 --- a/js/utils/themes.js +++ b/js/utils/themes.js @@ -6,7 +6,7 @@ const theme_names = { aqua: "Aqua" }; function changeTheme() { - let aqua = player.theme == "aqua"; + let aqua = player.theme === "aqua"; colors_theme = colors[player.theme || "default"]; document.body.style.setProperty("--background", backgroundColor); document.body.style.setProperty("--background_tooltip", aqua ? "rgba(0, 15, 31, 0.75)" : "rgba(0, 0, 0, 0.75)"); @@ -17,15 +17,3 @@ function changeTheme() { function getThemeName() { return player.theme ? theme_names[player.theme] : "Default"; } -function switchTheme() { - if (player.theme === undefined) { - player.theme = themes[1]; - } else { - player.theme = themes[Object.keys(themes)[player.theme] + 1]; - if (!player.theme) { - delete player.theme; - } - } - changeTheme(); - resizeCanvas(); -} diff --git a/kronos.sublime-workspace b/kronos.sublime-workspace index 43ea100..949448a 100644 --- a/kronos.sublime-workspace +++ b/kronos.sublime-workspace @@ -828,7 +828,7 @@ "/D/projects/The-Modding-Tree/index.html", "/D/projects/The-Modding-Tree/js/technical/systemComponents.js", "/D/projects/The-Modding-Tree/js/utils/themes.js", - "/D/projects/The-Modding-Tree/js/utils/NumberFormating.js", + "/D/projects/The-Modding-Tree/js/utils/NumberFormatting.js", "/D/projects/The-Modding-Tree/style.css", "/D/projects/The-Modding-Tree/js/components.js", "/D/projects/OptiSpeech 2/.git/COMMIT_EDITMSG", diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a29267d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,941 @@ +{ + "name": "kronos", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz", + "integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.20", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "requires": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ajv": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", + "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/popup.css b/popup.css index 765401f..f7ba369 100644 --- a/popup.css +++ b/popup.css @@ -1,5 +1,4 @@ .popup { - border: 4px solid; border-radius: 7px; width: 300px; min-height: 60px; @@ -8,7 +7,7 @@ margin-top: 30px; padding-top: 15px; padding-bottom: 15px; - border-color: rgba(0, 0, 0, 0.25); + border: 4px solid rgba(0, 0, 0, 0.25); } @@ -19,26 +18,32 @@ width: 300px; } +/*noinspection CssUnusedSymbol*/ .achievement-popup { background: #7182BC; } +/*noinspection CssUnusedSymbol*/ .milestone-popup { background: #D1C23C; } +/*noinspection CssUnusedSymbol,CssUnusedSymbol*/ .fade-enter-active, .fade-leave-active { transition: opacity .3s } +/*noinspection CssUnusedSymbol*/ .fade-transition { transition: opacity .3s } +/*noinspection CssUnusedSymbol,CssUnusedSymbol*/ .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { opacity: 0 } +/*noinspection CssUnusedSymbol*/ .redtext { color: red; } diff --git a/style.css b/style.css index c7c6e55..627c0c7 100644 --- a/style.css +++ b/style.css @@ -54,6 +54,7 @@ td { vertical-align: 0 } +/*noinspection CssUnusedSymbol*/ .bigUpgAlign { vertical-align: 0 } @@ -63,7 +64,7 @@ h1, h2, h3, b, input { } - +/*noinspection CssUnresolvedCustomProperty,CssUnresolvedCustomProperty,CssUnresolvedCustomProperty,CssUnresolvedCustomProperty*/ .treeNode { height: 100px; width: 100px; @@ -78,6 +79,7 @@ h1, h2, h3, b, input { } +/*noinspection CssUnresolvedCustomProperty,CssUnresolvedCustomProperty,CssUnresolvedCustomProperty,CssUnresolvedCustomProperty,CssUnusedSymbol*/ .treeButton { height: 100px; width: 100px; @@ -93,6 +95,7 @@ h1, h2, h3, b, input { } +/*noinspection CssUnusedSymbol*/ .smallNode { height: 60px; width: 60px; @@ -100,6 +103,7 @@ h1, h2, h3, b, input { } +/*noinspection CssUnusedSymbol*/ .locked { background-color: #3a3e45; color: white; @@ -116,17 +120,20 @@ h1, h2, h3, b, input { } +/*noinspection CssUnresolvedCustomProperty,CssUnusedSymbol*/ .resetNotify { box-shadow: var(--hqProperty2a), 0 0 8px #ffffff; z-index: 3 } +/*noinspection CssUnresolvedCustomProperty*/ .treeNode.can:hover { transform: scale(1.15, 1.15); box-shadow: var(--hqProperty2a), 0 0 20px var(--points); z-index: 4 } +/*noinspection CssUnresolvedCustomProperty,CssUnusedSymbol*/ .notify { transform: scale(1.05, 1.05); border-color: rgba(0, 0, 0, 0.125); @@ -134,11 +141,13 @@ h1, h2, h3, b, input { z-index: 3 } +/*noinspection CssUnusedSymbol*/ .bought { background-color: #5C8A58; cursor: default; } +/*noinspection CssUnusedSymbol*/ .back { position: absolute; top: 0; @@ -167,11 +176,13 @@ h1, h2, h3, b, input { padding-bottom: 20px; } +/*noinspection CssUnusedSymbol*/ .back:hover { transform: scale(1.1, 1.1); text-shadow: 0 0 7px var(--color); } +/*noinspection CssUnusedSymbol*/ .barBase { overflow: hidden; -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC); @@ -193,7 +204,6 @@ h1, h2, h3, b, input { vertical-align: middle; display: flex; justify-content: center; - align-items: left; position: absolute; } @@ -203,13 +213,14 @@ h1, h2, h3, b, input { position: absolute; overflow: hidden; margin-left: -0.5px; - transition-property: : clip-path; + transition-property: clip-path; } .overlayText { z-index: 6; } +/*noinspection CssUnusedSymbol*/ .tabButton { background-color: transparent; color: var(--color); @@ -219,10 +230,10 @@ h1, h2, h3, b, input { margin: 5px; border-radius: 10px; border: 2px solid; - color: var(--color); } +/*noinspection CssUnusedSymbol*/ .tabButton:hover { transform: scale(1.1, 1.1); text-shadow: 0 0 7px var(--color); @@ -232,30 +243,31 @@ h1, h2, h3, b, input { height: 120px; width: 180px; border-radius: 25%; - border: 4px solid; - border-color: rgba(0, 0, 0, 0.125); + border: 4px solid rgba(0, 0, 0, 0.125); } +/*noinspection CssUnusedSymbol*/ .upg { height: 150px; width: 150px; border-radius: 5px; - border: 2px solid; - border-color: rgba(0, 0, 0, 0.125); + border: 2px solid rgba(0, 0, 0, 0.125); font-size: 10px; margin: 5px; } +/*noinspection CssUnusedSymbol*/ .achievement { height: 90px; width: 90px; border-radius: 25%; - border: 2px solid; - border-color: rgba(0, 0, 0, 0.125); + border: 2px solid rgba(0, 0, 0, 0.125); font-size: 10px; color: white; text-shadow: 0 0 2px #000000; } + +/*noinspection CssUnusedSymbol*/ .achievement:hover { box-shadow: 0 0 10px var(--points); z-index: 7; @@ -265,17 +277,16 @@ h1, h2, h3, b, input { height: 200px; width: 200px; border-radius: 5px; - border: 2px solid; - border-color: rgba(0, 0, 0, 0.125); + border: 2px solid rgba(0, 0, 0, 0.125); font-size: 10px; } +/*noinspection CssUnusedSymbol*/ .upgBig { height: 200px; width: 200px; border-radius: 25%; - border: 2px solid; - border-color: rgba(0, 0, 0, 0.125); + border: 2px solid rgba(0, 0, 0, 0.125); } .longUpg { @@ -283,8 +294,7 @@ h1, h2, h3, b, input { width: 120px; background: var(--points); border-radius: 50%; - border: 2px solid; - border-color: rgba(0, 0, 0, 0.125); + border: 2px solid rgba(0, 0, 0, 0.125); font-size: 10px; } @@ -292,8 +302,7 @@ h1, h2, h3, b, input { height: 40px; width: 40px; border-radius: 5px; - border: 2px solid; - border-color: rgba(0, 0, 0, 0.125); + border: 2px solid rgba(0, 0, 0, 0.125); margin-top: 4px; } @@ -328,9 +337,8 @@ a { height: 100px; width: 100px; border-radius: 25%; - border: 4px solid; background-color: var(--color); - border-color: rgba(0, 0, 0, 0.125); + border: 4px solid rgba(0, 0, 0, 0.125); color: rgba(0, 0, 0, 0.5); cursor: pointer; } @@ -351,6 +359,7 @@ a { z-index: -999; } +/*noinspection CssUnusedSymbol*/ .milestone { width: 100%; min-width: 120px; @@ -358,12 +367,12 @@ a { padding-right: 5px; height: 75px; background-color: #3a3e45; - border: 4px solid; border-radius: 4px; - border-color: rgba(0, 0, 0, 0.125); + border: 4px solid rgba(0, 0, 0, 0.125); color: rgba(0, 0, 0, 0.5); } +/*noinspection CssUnusedSymbol*/ .milestoneDone { width: 100%; min-width: 120px; @@ -372,9 +381,8 @@ a { height: 75px; background-color: #5C8A58; - border: 4px solid; border-radius: 4px; - border-color: rgba(0, 0, 0, 0.125); + border: 4px solid rgba(0, 0, 0, 0.125); color: rgba(0, 0, 0, 0.5); } @@ -383,16 +391,19 @@ a { left: 0; } +/*noinspection CssUnusedSymbol*/ .remove { height: 24px; width: 24px; cursor: pointer; } +/*noinspection CssUnusedSymbol*/ .remove:hover { transform: scale(1.1, 1.1); } +/*noinspection CssUnusedSymbol*/ .col { min-width: 49.5%; max-width: 49.5%; @@ -412,10 +423,12 @@ a { transition-duration: 0s !important } +/*noinspection CssUnusedSymbol*/ .fast { - transition:color none + transition:color 0s; } +/*noinspection CssUnusedSymbol*/ .col.right { top: 50px; right: 0; @@ -424,11 +437,14 @@ a { #app { column-count: 2; - column-width: 50%; min-height: calc(100% - 50px); margin-top: 50px; } +#app { + column-width: 50%; +} + .vl { border-left: 6px solid var(--color); height: 100%; @@ -451,10 +467,10 @@ ul { list-style-type: none; } +/*noinspection CssUnusedSymbol*/ .hChallenge { background-color: #bf8f8f; - border: 4px solid; - border-color: rgba(0, 0, 0, 0.125); + border: 4px solid rgba(0, 0, 0, 0.125); color: rgba(0, 0, 0, 0.5); width: 300px; height: 300px; @@ -462,10 +478,12 @@ ul { border-radius: 33.33%; } +/*noinspection CssUnusedSymbol*/ .hChallenge.done { background-color: #77bf5f; } +/*noinspection CssUnusedSymbol,CssUnusedSymbol*/ .hChallenge.canComplete { background-color: #ffbf00; } @@ -496,6 +514,7 @@ ul { -webkit-transform:translate3d(0,0,0); } +/*noinspection CssUnresolvedCustomProperty*/ [tooltip]:before { position: absolute; bottom: 100%; @@ -517,6 +536,7 @@ ul { white-space: pre-wrap; } +/*noinspection CssUnresolvedCustomProperty*/ [tooltip]:after { position: absolute; bottom: 100%; @@ -574,10 +594,12 @@ button > * { pointer-events:none; } +/*noinspection CssUnusedSymbol*/ .ghost { visibility: hidden } +/*noinspection CssUnresolvedCustomProperty,CssUnusedSymbol*/ .story { width: 600px; max-width: 95%; @@ -585,6 +607,7 @@ button > * { color: var(--lore-color); } +/*noinspection CssUnresolvedCustomProperty*/ .story-title { text-align: left; font-size: 24px; @@ -607,9 +630,8 @@ button > * { .story-text { padding: 8px; - border: solid 4px; - border-color: inherit; - max-height: 100%; + border: 4px solid; + max-height: 100%; overflow-y: hidden; transition-duration: 0s; } @@ -681,8 +703,8 @@ button > * { #info:hover { transform: scale(1.2, 1.2); - text-shadow: 5px 0px 10px #02f2f2, - -3px 0px 12px #02f2f2; + text-shadow: 5px 0 10px #02f2f2, + -3px 0 12px #02f2f2; } #discord { @@ -699,8 +721,7 @@ button > * { #discord-links { position: fixed; top: 0; - padding: 30px; - padding-top: 80px; + padding: 80px 30px 30px; right: -280px; width: 200px; transition: right .25s ease; @@ -722,10 +743,11 @@ button > * { #version:hover { transform: scale(1.2, 1.2); - text-shadow: 5px 0px 10px var(--points), - -3px 0px 12px var(--points); + text-shadow: 5px 0 10px var(--points), + -3px 0 12px var(--points); } +/*noinspection CssUnusedSymbol*/ .tutorial { animation: shockwave 2s infinite; } @@ -760,6 +782,7 @@ button > * { } @media only screen and (max-width: 1200px) { + /*noinspection CssUnusedSymbol*/ .col.right { min-width: 100%; background: var(--background); @@ -772,7 +795,7 @@ button > * { display: flex; flex-direction: column; justify-content: space-evenly; - box-shadow: black 4px 4px 8px 0px; + box-shadow: black 4px 4px 8px 0; border-radius: 10px; position: relative; margin: 10px auto; @@ -803,12 +826,14 @@ button > * { max-height: 100%; } +/*noinspection CssUnusedSymbol,CssUnusedSymbol*/ .selectedCard, .selectedCard:hover { transform: scale(1.2); box-shadow: black 0 0 16px 8px; z-index: 2; } +/*noinspection CssUnusedSymbol*/ .flipCard { animation: flip 1s; } @@ -823,6 +848,7 @@ button > * { } } +/*noinspection CssUnusedSymbol*/ .cursor { cursor: pointer; } @@ -845,6 +871,7 @@ button > * { background: white; } +/*noinspection CssUnresolvedCustomProperty,CssUnresolvedCustomProperty*/ .hourglass { --polygonH: polygon(0% 0%,100% 0%,100% 5.55%,95% 5.55%,95% 28%,60% 46%,60% 54%,95% 72%,95% 94.45%,100% 94.45%,100% 100%,0% 100%,0% 94.45%,5% 94.45%,5% 72%,40% 54%,40% 46%,5% 28%,5% 5.55%,0% 5.55%); animation-name: flipHourglass; @@ -867,6 +894,8 @@ button > * { display: block; position: absolute; } + +/*noinspection CssUnresolvedCustomProperty,CssUnresolvedCustomProperty,CssUnresolvedCustomProperty*/ .hourglass:before { --polygonB1: polygon(0% 0%,100% 0%,100% 24%,50% 47%,50% 47%,50% 47%,50% 47%,50% 47%,50% 47%,50% 47%,50% 47%,0% 24%); --polygonB2: polygon(0% 4%,100% 4%,100% 24%,55% 45%,55% 100%,55% 100%,55% 100%,45% 100%,45% 100%,45% 100%,45% 45%,0% 24%); @@ -887,16 +916,14 @@ button > * { height: 8em; z-index: 1; } + +/*noinspection CssUnresolvedCustomProperty,CssUnresolvedCustomProperty*/ .hourglass:after { animation-name: glare; animation-duration: var(--flip-duration); animation-delay: 0s; animation-play-state: var(--flip-state); - background: - linear-gradient(90deg,#0000 0.5em,#0003 0.5em 1.5em,#0000 1.5em 3.5em,#fff3 3.5em 4.5em,#fff0 4.5em 6.5em,#0003 6.5em 7.5em,#0000 7.5em) 0 0 / 100% 0.5em, - linear-gradient(90deg,#0000 0.75em,#0003 0.75em 1.25em,#0000 1.25em 3.75em,#fff3 3.75em 4.25em,#fff0 4.25em 6.75em,#0003 6.75em 7.25em,#0000 7.25em) 0 0.5em / 100% 8em, - linear-gradient(90deg,#0000 0.5em,#0003 0.5em 1.5em,#0000 1.5em 3.5em,#fff3 3.5em 4.5em,#fff0 4.5em 6.5em,#0003 6.5em 7.5em,#0000 7.5em) 0 100% / 100% 0.5em; - background-repeat: repeat-x; + background: linear-gradient(90deg, #0000 0.5em, #0003 0.5em 1.5em, #0000 1.5em 3.5em, #fff3 3.5em 4.5em, #fff0 4.5em 6.5em, #0003 6.5em 7.5em, #0000 7.5em) linear-gradient(90deg, #0000 0.75em, #0003 0.75em 1.25em, #0000 1.25em 3.75em, #fff3 3.75em 4.25em, #fff0 4.25em 6.75em, #0003 6.75em 7.25em, #0000 7.25em) linear-gradient(90deg, #0000 0.5em, #0003 0.5em 1.5em, #0000 1.5em 3.5em, #fff3 3.5em 4.5em, #fff0 4.5em 6.5em, #0003 6.5em 7.5em, #0000 7.5em) repeat-x 0 0 0 0.5em 0 100%; top: 0; left: -3em; width: 200%; @@ -946,11 +973,14 @@ b, h3 { text-shadow: 0 0 black; } +/*noinspection CssUnusedSymbol*/ .gradient-border { --border-width: 4px; position: relative; background-clip: content-box; } + +/*noinspection CssUnusedSymbol*/ .gradient-border::before { position: absolute; content: ""; @@ -962,6 +992,8 @@ b, h3 { bottom: 0; border-radius: 5px; } + +/*noinspection CssUnusedSymbol*/ .gradient-border::after { position: absolute; content: ""; @@ -970,9 +1002,8 @@ b, h3 { z-index: -2; width: calc(100% + var(--border-width) * 2); height: calc(100% + var(--border-width) * 2); - background: linear-gradient(60deg, rgba(14,0,255,1) 0%, rgba(4,194,118,1) 16%, rgba(9,9,121,1) 35%, rgba(6,139,170,1) 59%, rgba(113,3,216,1) 81%, rgba(0,212,255,1) 100%); background-size: 300% 300%; - background-position: 0 50%; + background: linear-gradient(60deg, rgba(14, 0, 255, 1) 0%, rgba(4, 194, 118, 1) 16%, rgba(9, 9, 121, 1) 35%, rgba(6, 139, 170, 1) 59%, rgba(113, 3, 216, 1) 81%, rgba(0, 212, 255, 1) 100%) 0 50%; border-radius: 5px; animation: moveGradient 8s alternate infinite; } @@ -993,6 +1024,7 @@ b, h3 { flex-flow: column; } +/*noinspection CssUnresolvedCustomProperty*/ .instrument::before { content: ""; position: absolute; @@ -1022,7 +1054,7 @@ b, h3 { width: 100px; border-bottom: solid 2px; border-radius: 20px; - background: rgb(1, 1, 1, .25); + background: rgba(1, 1, 1, .25); } .battery path {