Quizlet Login Bypass 2024

Unblur text, Remove ads, Clean UI

// ==UserScript==
// @name         Quizlet Login Bypass 2024
// @description  Unblur text, Remove ads, Clean UI
// @match        *://quizlet.com/*
// @author       daijro
// @version      1.7.2
// @icon         https://assets.quizlet.com/a/j/dist/i/favicon.6e263725c926227.ico
// @run-at       document-start
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @namespace    https://greasyfork.org/users/795282
// ==/UserScript==

(function() {
    'use strict';

    let style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML =
        // Unblur text
        '.SetPageTerm-side, .b1sa2ccx, .b1xkd811 {filter: none !important;} ' +
        // Hide ads
        '.sdnrmc1, .SiteAd, .SetPageEmbeddedAd-wrapper, .bx-slab, .SetPageTerms-embeddedDesktopAdz, .SetPageTerms-embeddedMobileAdz, .OutOfPageAdContainer, .SetPageTermsStickyBanner.SetPageTermsStickyBanner--hasAdz, [data-testid=ExplanationsLayoutSidebarAd], ' +
        // Hide the sign up box, user info, footer, popups, nav bar, & more
        '.TopNavigationWrapper, #credential_picker_iframe, #credential_picker_container, .TextbookRecommendations, .SetPageStudyModesBanner-body, .credentials-picker-container, footer, .SetPage-flickrAttributions, .LoginBottomBar, .bb8jmnf, .c1vv5ssw, .SetPageWall.SetPageWall--normal, .SetPage-setDetailsInfoWrapper, .wugyavo, .SetPage-setLinksWrapper, [data-testid=PayWallOverlay] {display: none !important;} ' +
        // Force text cursor over flashcard text
        '.hcszxtp, .h3797oo {cursor: text !important;} ' +
        // Fix margin between flashcards
        '.SetPageTerms-term {margin-top: 0.625rem;} ' +
        // Disable the 12.5em max height on explanations
        '.hnqbbas {max-height: none !important;}'
    ;
    document.head.appendChild(style);

    // Kill TTS
    window.addEventListener('load', function killtts() {
        document.querySelectorAll("[data-testid='set-page-card-side']").forEach(function(el) {
          el.addEventListener('click', function(event) {
              event.preventDefault();
              event.stopPropagation();
              event.stopImmediatePropagation();
          });
        });
        window.removeEventListener('load', killtts);
    });

    // Dark Mode
    let isDark = () => GM_getValue('darkMode', 'Disabled') === 'Enabled';
    let setDark = (dark) => {
        dark ? document.body.classList.replace('theme-default', 'theme-night') :
               document.body.classList.replace('theme-night', 'theme-default');
    }
    let menuId = GM_registerMenuCommand(
        'Force night theme: ' + GM_getValue('darkMode', 'Disabled'),
        function toggleDark() {
            GM_setValue('darkMode', isDark() ? 'Disabled' : 'Enabled');
            setDark(isDark());
            GM_unregisterMenuCommand(menuId);
            menuId = GM_registerMenuCommand('Force night theme: ' + GM_getValue('darkMode'), toggleDark);
        }
    );
    // Apply dark mode when body is added
    if (!isDark()) return
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            if (mutation.target.nodeName === 'BODY') setDark(isDark())
        });
    });
    observer.observe(document.documentElement, { childList: true, subtree: true, attributeFilter: ['class'] });
})();