Emphasize Quotes

Makes surrounding text lighter while making text within quotations stand out. Supports Safari and works with FixSpacing.

当前为 2023-04-17 提交的版本,查看 最新版本

// ==UserScript==
// @name         Emphasize Quotes
// @namespace    ChatFormatting
// @match        https://beta.character.ai/chat*
// @grant        none
// @license      MIT
// @version      1.1
// @author       Anon
// @description  Makes surrounding text lighter while making text within quotations stand out. Supports Safari and works with FixSpacing.
// @run-at document-end
// ==/UserScript==

// Color of text wrapped in quotations
// Default: "#FFFFFF";
const quoteColor = "#FFFFFF";

// Color of surrounding text
// Default: "#B2B2B2";
const textColor = "#B2B2B2";

// How big do you want quoted text to be? (Non-Safari ONLY!)
// Default: "1.05em";
const fontSize = "1.05em";

(function () {

    // Apply the base CSS for gray text and better spacing
    let css = `
        .markdown-wrapper p { color: ${textColor}; }
    `;

    var head = document.getElementsByTagName("head")[0];
    var style = document.createElement("style");
    style.setAttribute("type", 'text/css');
    style.innerHTML = css;
    head.appendChild(style);

    // Emphasize quotes by making them the specified color
    let timeoutId;
    const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);

    function changeColors() {
        clearTimeout(timeoutId);
        const pTags = document.getElementsByTagName('p');
        let changed = false;
        for (let i = 0; i < pTags.length; i++) {
            const pTag = pTags[i];
            if (pTag.dataset.colorChanged === 'true') {
				continue;
            }
            let text = pTag.innerHTML;
            if (text.match(/(["“”«»].*?["“”«»])/)) {
				text = text.replace(/(["“”«»].*?["“”«»])/g, '<span style="color: ' + quoteColor + (isSafari ? '' : '; font-size: ' + fontSize) + '">$1</span>');
                pTag.innerHTML = text;
                pTag.dataset.colorChanged = 'true';
                changed = true;
            }
        }
    }

    function checkForChanges(mutations) {
        if (mutations.length > 0) {
            changeColors();
        }
    }

    const observer = new MutationObserver(checkForChanges);
    observer.observe(document.body, { attributes: true, childList: true, subtree: true });

})();