Skip to content

Commit 12b0f5f

Browse files
committed
Added more userscript menu entries (closes adamlui/chatgpt-widescreen#161)
1 parent 9a2feb9 commit 12b0f5f

File tree

1 file changed

+50
-8
lines changed

1 file changed

+50
-8
lines changed

chatgpt-widescreen/greasemonkey/chatgpt-widescreen-mode.user.js

Lines changed: 50 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@
235235
// @description:zu Thuthukisa iChatGPT ngemodi zesikrini ezibanzi/egcwele/ephezulu + imodi yokuvimbela i-spam. Futhi isebenza ku-poe.com!
236236
// @author Adam Lui
237237
// @namespace https://github.com/adamlui
238-
// @version 2025.8.18
238+
// @version 2025.8.19
239239
// @license MIT
240240
// @icon https://assets.chatgptwidescreen.com/images/icons/widescreen-robot-emoji/icon48.png?v=844b16e
241241
// @icon64 https://assets.chatgptwidescreen.com/images/icons/widescreen-robot-emoji/icon64.png?v=844b16e
@@ -258,9 +258,9 @@
258258
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@152a535/chromium/extension/lib/browser.js#sha256-7teBecqrjkazKH6oetGyxKlBkAk5U9ota/LNCB3Q+Jw=
259259
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@6da7673/chromium/extension/lib/chatbar.js#sha256-WHEkQoiOn0C2V+2lkpNft5pUIXntsL668Zt/7sohyN4=
260260
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@1e7f759/chromium/extension/lib/dom.min.js#sha256-IGNj9Eoecq7QgY7SAs75wONajgN9Wg0NmCjKTCfu9CY=
261-
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@58a5c12/chromium/extension/lib/settings.js#sha256-DaeFUYf3mgKvFxagVD4byHLYBJz4bRlhg52wl0VgZMY=
261+
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@6432f82/chromium/extension/lib/settings.js#sha256-h/jgEhUFXm8JDMTCH4/Xrg/clucllr+du1wxxCU+Lhg=
262262
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@1ede080/chromium/extension/lib/styles.js#sha256-sT2NK0JIEx2K2OZK4+GqQbMTxecVYdDZ9Jv+mrcsrok=
263-
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@401c2d2/chromium/extension/lib/sync.js#sha256-fsTpo+C1TIVg9/ePhNN9GWGr24qA/iJ7wh6dmEjO2bA=
263+
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@b4f5cfd/chromium/extension/lib/sync.js#sha256-wbaW/BRijKwN53FFvKau5x30QeyZG55chKgpsGoRSOg=
264264
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@f06fa5f/chromium/extension/lib/ui.js#sha256-niLmd2EMi/LCgGgs0MfX7AykWzzfQ9bXCo/6X08M6Ik=
265265
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@6da7673/chromium/extension/components/buttons.js#sha256-Ze4zyzL+sLPI+ei2PUScSdHUYKzb3FZIntnBCnLSpSQ=
266266
// @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-widescreen@511d193/chromium/extension/components/icons.js#sha256-6eK7coHHFB4zBfl8XXtjojrnfbBOFiEgYfQtz/Whv2E=
@@ -362,7 +362,7 @@
362362

363363
// Define MENU functions
364364

365-
const toolbarMenu = {
365+
window.toolbarMenu = {
366366
state: {
367367
symbols: ['❌', '✔️'], separator: env.scriptManager.name == 'Tampermonkey' ? ' — ' : ': ',
368368
words: [app.msgs.state_off.toUpperCase(), app.msgs.state_on.toUpperCase()]
@@ -396,8 +396,49 @@
396396
+ this.state.words[+settings.typeIsEnabled(key)]
397397
: ctrl.status ? ` — ${ctrl.status}` : '' }`
398398
return GM_registerMenuCommand(menuLabel, () => {
399-
settings.save(key, !config[key]) ; sync.configToUI({ updatedKey: key })
400-
notify(`${ctrl.label}: ${this.state.words[+settings.typeIsEnabled(key)]}`)
399+
if (ctrl.type == 'toggle') {
400+
settings.save(key, !config[key]) ; sync.configToUI({ updatedKey: key })
401+
notify(`${ctrl.label}: ${this.state.words[+settings.typeIsEnabled(key)]}`)
402+
} else if (ctrl.type == 'slider') {
403+
404+
// Stylize slider
405+
if (!window.sliderModalStyle?.isConnected)
406+
document.head.append(window.sliderModalStyle ||= dom.create.style(`
407+
.${app.slug}-modal:has(input.slider) h2 { text-align:center }
408+
.${app.slug}-modal input.slider {
409+
width: 100% ; margin: 7px 0 ; padding: 8.5px 3px ; cursor: pointer }
410+
.${app.slug}-modal .slider::-webkit-slider-thumb {
411+
transform: scale(1.325) ; cursor: ew-resize ;
412+
transition: transform 0.05s ease
413+
}
414+
.${app.slug}-modal .slider::-webkit-slider-thumb:hover {
415+
transform: scale(1.5) }`
416+
))
417+
418+
// Create/assemble slider
419+
const slider = {
420+
div: dom.create.elem('div'),
421+
input: dom.create.elem('input', { class: 'slider', type: 'range',
422+
min: ctrl.min || 0, max: ctrl.max || 100, value: config[key] })
423+
}
424+
slider.modal = modals.alert(
425+
`${ctrl.label}: ${slider.input.value}${ ctrl.labelSuffix || '' }`)
426+
if (ctrl.step || env.browser.isFF) // use val from ctrl data or default to 2% in FF for being laggy
427+
slider.input.step = ctrl.step || ( 0.02 * slider.input.max - slider.input.min )
428+
slider.div.append(slider.input)
429+
slider.modal.querySelector('button').parentNode.before(slider.div)
430+
431+
// Add listeners
432+
slider.input.oninput = ({ target: { value }}) => { // update UI
433+
slider.modal.querySelector('h2').textContent = `${
434+
ctrl.label}: ${value}${ctrl.labelSuffix || ''}`
435+
settings.save(key, parseInt(value)) ; sync.configToUI({ updatedKey: key })
436+
}
437+
slider.div.onwheel = event => { // move slider by 2 steps
438+
slider.input.value = parseInt(slider.input.value) -Math.sign(event.deltaY) *2
439+
slider.input.dispatchEvent(new Event('input'))
440+
}
441+
}
401442
}, env.scriptManager.supportsTooltips ? { title: ctrl.helptip || ' ' } : undefined )
402443
}
403444
})
@@ -651,7 +692,8 @@
651692
if (config.widescreen ^ styles.widescreen.node.isConnected) { // sync Widescreen
652693
suppressNotifs() ; toggleMode('widescreen') }
653694
if (sites[site].hasSidebar && ( config.fullWindow ^ await ui.isFullWin() )) { // sync Full-Window
654-
suppressNotifs() ; toggleMode('fullWindow') }
695+
suppressNotifs() ; toggleMode('fullWindow') }
696+
styles.update({ key: 'widescreen' }) // sync WW
655697
styles.update({ key: 'tweaks' }) // sync HH/HF/TCB/NCB/BA
656698
styles.update({ key: 'chatbar' }) // sync WCB
657699
chatbar.tweak() // update ChatGPT chatbar inner width or hack Poe btn pos
@@ -670,7 +712,7 @@
670712
if (config.notifDisabled) return
671713
settings.save('notifDisabled', true) // suppress notifs for cleaner UI
672714
setTimeout( // ...temporarily
673-
() => settings.save('notifDisabled', false), options?.updatedKey == 'widescreen' ? 1 : 15)
715+
() => settings.save('notifDisabled', false), options?.updatedKey == 'widescreen' ? 1 : 555)
674716
}
675717
}
676718

0 commit comments

Comments
 (0)