Untitled
unknown
javascript
a year ago
5.5 kB
3
Indexable
// ==UserScript== // @name Klavogonki_HideGames // @namespace klavogonki // @match *://klavogonki.ru/gamelist/* // @author Patcher // @description Adds the ability to hide already created or all the games in the game list. // @version 3.2.0 // @icon https://www.google.com/s2/favicons?sz=64&domain=klavogonki.ru // ==/UserScript== // Constants for SVG icon properties const toggleButtonIconSize = 16; const toggleButtonStrokeWidth = 2; // Function to encode SVG as base64 function encodeSVG(svg) { const base64 = btoa(svg); return `url("data:image/svg+xml;base64,${base64}")`; } // Eye Icon const eyeIcon = encodeSVG(` <svg xmlns='http://www.w3.org/2000/svg' width='${toggleButtonIconSize}' height='${toggleButtonIconSize}' viewBox='0 0 24 24' fill='none' stroke='lightgray' stroke-width='${toggleButtonStrokeWidth}' stroke-linecap='round' stroke-linejoin='round'> <path d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/> <circle cx='12' cy='12' r='3'/> </svg> `); // Eye Off Icon const eyeOffIcon = encodeSVG(` <svg xmlns='http://www.w3.org/2000/svg' width='${toggleButtonIconSize}' height='${toggleButtonIconSize}' viewBox='0 0 24 24' fill='none' stroke='lightgray' stroke-width='${toggleButtonStrokeWidth}' stroke-linecap='round' stroke-linejoin='round'> <path d='M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24'/> <line x1='1' y1='1' x2='23' y2='23'/> </svg> `); // Slash Icon const slashIcon = encodeSVG(` <svg xmlns='http://www.w3.org/2000/svg' width='${toggleButtonIconSize}' height='${toggleButtonIconSize}' viewBox='0 0 24 24' fill='none' stroke='lightgray' stroke-width='${toggleButtonStrokeWidth}' stroke-linecap='round' stroke-linejoin='round'> <circle cx='12' cy='12' r='10'/> <line x1='4.93' y1='4.93' x2='19.07' y2='19.07'/> </svg> `); // Restore saved style from localStorage if available const savedStyleElement = document.createElement('style'); savedStyleElement.id = 'hiddenGamesStyleElement'; savedStyleElement.innerHTML = localStorage.KG_HideGamesStyle || Null; document.body.appendChild(savedStyleElement); // Create a button to toggle hiding games const hideGamesButtonElement = document.createElement('span'); const hideGamesInput = document.createElement('input'); hideGamesInput.title = 'Hide Games'; hideGamesInput.type = 'button'; // Add some styles hideGamesInput.style.color = 'transparent'; hideGamesInput.style.border = 'none'; hideGamesInput.style.padding = '0'; hideGamesInput.style.display = 'inline-flex'; hideGamesInput.style.height = '35px'; hideGamesInput.style.width = '35px'; hideGamesInput.style.setProperty('border-radius', '50%', 'important'); hideGamesInput.style.cursor = 'pointer'; hideGamesInput.style.backgroundColor = '#585a5d'; hideGamesInput.style.backgroundRepeat = 'no-repeat'; hideGamesInput.style.backgroundPosition = 'center center'; hideGamesInput.style.transition = 'background-color 0.3s'; // Add hover effect hideGamesInput.addEventListener('mouseover', function() { hideGamesInput.style.backgroundColor = '#7a731f'; }); hideGamesInput.addEventListener('mouseout', function() { hideGamesInput.style.backgroundColor = '#585a5d'; }); // Get the localStorage value const localStorageValue = localStorage.KG_HideGamesStyle; // Assign className and icon based on localStorage values switch (localStorageValue) { case '#gamelist-active{display:none;}': hideGamesInput.className = 'hidden-active-races'; hideGamesInput.style.backgroundImage = eyeOffIcon; break; case '#gamelist{display:none;}': hideGamesInput.className = 'hidden-all-races'; hideGamesInput.style.backgroundImage = slashIcon; break; default: hideGamesInput.className = 'not-hidden-races'; hideGamesInput.style.backgroundImage = eyeIcon; } hideGamesButtonElement.appendChild(hideGamesInput); document.getElementById('delete').parentNode.insertBefore(hideGamesButtonElement, document.getElementById('delete').nextSibling); // Add an event listener to handle the toggle function hideGamesButtonElement.addEventListener('click', function() { const styleElement = document.getElementById('hiddenGamesStyleElement'); if (styleElement) { if (styleElement.innerHTML === '#gamelist-active{display:none;}') { localStorage.KG_HideGamesStyle = styleElement.innerHTML = '#gamelist{display:none;}'; hideGamesInput.className = 'hidden-all-races'; hideGamesInput.style.backgroundImage = slashIcon; } else { document.body.removeChild(styleElement); localStorage.KG_HideGamesStyle = 'Null'; hideGamesInput.className = 'not-hidden-races'; hideGamesInput.style.backgroundImage = eyeIcon; } } else { const newStyleElement = document.createElement('style'); newStyleElement.id = 'hiddenGamesStyleElement'; localStorage.KG_HideGamesStyle = newStyleElement.innerHTML = '#gamelist-active{display:none;}'; document.body.appendChild(newStyleElement); hideGamesInput.className = 'hidden-active-races'; hideGamesInput.style.backgroundImage = eyeOffIcon; } });
Editor is loading...
Leave a Comment