NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name ChatGPT Sidebar Toggle
// @name:es Alternar Barra Lateral de ChatGPT
// @namespace http://tampermonkey.net/
// @version 0.2
// @description This userscript adds a little button to ChatGPT's Sidebar so that you can hide it.
// @description:es Este usescript agrega un pequeño botón a la barra lateral de ChatGPT para que la puedas esconder.
// @author CFUEN (https://github.com/cfuendev)
// @match https://chat.openai.com/*
// @match https://chat.openai.com/c/*
// @icon https://chat.openai.com/favicon-16x16.png
// @license MIT
// @grant none
// @run-at
// ==/UserScript==
(function () {
'use strict';
let sidebarElm;
let sidebarHidden = false;
const hideSidebarButtonElm = document.createElement('button');
hideSidebarButtonElm.style = "padding: 3px; border-top-right-radius: 6px; border-bottom-right-radius: 6px; background-color: #202123; border-top: 1px solid rgba(255, 255, 255, 0.2); border-right: 1px solid rgba(255, 255, 255, 0.2); border-bottom: 1px solid rgba(255, 255, 255, 0.2); position: absolute; left: 100%; top:30px;";
hideSidebarButtonElm.innerHTML = '<svg class="h-4 w-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none"><path d="M24 0v24H0V0h24ZM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035c-.01-.004-.019-.001-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427c-.002-.01-.009-.017-.017-.018Zm.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093c.012.004.023 0 .029-.008l.004-.014l-.034-.614c-.003-.012-.01-.02-.02-.022Zm-.715.002a.023.023 0 0 0-.027.006l-.006.014l-.034.614c0 .012.007.02.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01l-.184-.092Z"/><path fill="currentColor" d="M3.636 11.293a1 1 0 0 0 0 1.414l5.657 5.657a1 1 0 0 0 1.414-1.414L6.757 13H20a1 1 0 1 0 0-2H6.757l3.95-3.95a1 1 0 0 0-1.414-1.414l-5.657 5.657Z"/></g></svg>'
const scriptInterval = setInterval(() => {
sidebarElm = document.querySelector('html body div#__next div.overflow-hidden.w-full.h-full.relative.flex.z-0 div.flex-shrink-0.overflow-x-hidden.bg-gray-900');
if (sidebarElm) {
clearInterval(scriptInterval);
sidebarElm.id = "Sidebar";
const hideSidebarButtonElm = document.createElement('button');
hideSidebarButtonElm.style = "padding: 3px; border-top-right-radius: 6px; border-bottom-right-radius: 6px; background-color: #202123; border-top: 1px solid rgba(255, 255, 255, 0.2); border-right: 1px solid rgba(255, 255, 255, 0.2); border-bottom: 1px solid rgba(255, 255, 255, 0.2); position: absolute; left: 100%; top:30px;";
hideSidebarButtonElm.innerHTML = '<svg class="h-4 w-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none"><path d="M24 0v24H0V0h24ZM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035c-.01-.004-.019-.001-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427c-.002-.01-.009-.017-.017-.018Zm.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093c.012.004.023 0 .029-.008l.004-.014l-.034-.614c-.003-.012-.01-.02-.02-.022Zm-.715.002a.023.023 0 0 0-.027.006l-.006.014l-.034.614c0 .012.007.02.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01l-.184-.092Z"/><path fill="currentColor" d="M3.636 11.293a1 1 0 0 0 0 1.414l5.657 5.657a1 1 0 0 0 1.414-1.414L6.757 13H20a1 1 0 1 0 0-2H6.757l3.95-3.95a1 1 0 0 0-1.414-1.414l-5.657 5.657Z"/></g></svg>'
hideSidebarButtonElm.addEventListener('click', (e) => {
if (sidebarHidden) {
sidebarElm.style.transform = '';
sidebarElm.style.position = 'relative';
hideSidebarButtonElm.querySelector('svg').style.transform = "rotateY(0deg)";
sidebarHidden = false;
}
else {
sidebarElm.style.transform = 'translateX(-100%)';
sidebarElm.style.position = 'absolute';
hideSidebarButtonElm.querySelector('svg').style.transform = "rotateY(180deg)";
sidebarHidden = true;
}
})
sidebarElm.style.position = 'relative';
sidebarElm.style.overflowX = 'visible';
sidebarElm.style.zIndex = '2';
sidebarElm.style.borderRight = '1px solid rgba(255, 255, 255, 0.2)'
sidebarElm.append(hideSidebarButtonElm);
}
}, 5)
// Select the node that will be observed for mutations
const targetNode = document.getElementById("__next");
// Options for the observer (which mutations to observe)
const config = {
attributes: true,
childList: true,
subtree: false
};
// Callback function to execute when mutations are observed
const callback = function (mutationsList, observer) {
// Handle changes to the targetNode here
const scriptInterval = setInterval(() => {
sidebarElm = document.querySelector('html body div#__next div.overflow-hidden.w-full.h-full.relative.flex.z-0 div.flex-shrink-0.overflow-x-hidden.bg-gray-900');
if (sidebarElm) {
clearInterval(scriptInterval);
sidebarElm.id = "Sidebar";
hideSidebarButtonElm.addEventListener('click', (e) => {
if (sidebarHidden) {
sidebarElm.style.transform = '';
sidebarElm.style.position = 'relative';
hideSidebarButtonElm.querySelector('svg').style.transform = "rotateY(0deg)";
sidebarHidden = false;
}
else {
sidebarElm.style.transform = 'translateX(-100%)';
sidebarElm.style.position = 'absolute';
hideSidebarButtonElm.querySelector('svg').style.transform = "rotateY(180deg)";
sidebarHidden = true;
}
})
sidebarElm.style.position = 'relative';
sidebarElm.style.overflowX = 'visible';
sidebarElm.style.zIndex = '2';
sidebarElm.style.borderRight = '1px solid rgba(255, 255, 255, 0.2)'
sidebarElm.append(hideSidebarButtonElm);
}
}, 5)
};
// Create a new observer instance
const observer = new MutationObserver(callback);
// Start observing the target node for configured mutations
observer.observe(targetNode, config);
// sidebarElm.style.display = 'block';
})();