5/29/2023, 10:32:31 AM
// ==UserScript==
// @name ChatGPT ReadMode Alt+R
// @namespace Violentmonkey Scripts
// @match https://chat.openai.com/c/*
// @grant none
// @version 1.0
// @author -
// @description 5/29/2023, 10:32:31 AM
// @license MIT
// ==/UserScript==
let readMode = false
let sidebar, chatPane, formBlock
waitFor(isMainPresent).then(assignListener)
function waitFor(predicateFn) {
return new Promise(resolve => {
setTimeout(() => {
const result = predicateFn()
if (result) resolve(result)
else waitFor(predicateFn).then(resolve)
})
})
}
function isMainPresent() {
return document.querySelector('.w-full.h-full')
}
function assignListener(main) {
[sideBar, chatPane] = main.children
addEventListener('keydown', e => {
if (e.key == 'r' && e.altKey) toggleReadMode()
})
}
function toggleReadMode() {
formBlock = chatPane.querySelector('.absolute.bottom-0')
readMode = !readMode
document.documentElement.style.fontSize = readMode ? '24px' : null
sideBar.hidden = readMode
if (formBlock) formBlock.hidden = readMode
}