|
225 | 225 | // @description:zu Dlala izimpendulo ze-ChatGPT ngokuzenzakalela
|
226 | 226 | // @author Adam Lui
|
227 | 227 | // @namespace https://github.com/adamlui
|
228 |
| -// @version 2025.4.28.1 |
| 228 | +// @version 2025.4.28.2 |
229 | 229 | // @license MIT
|
230 | 230 | // @icon https://assets.chatgptautotalk.com/images/icons/openai/black/icon48.png?v=9f1ed3c
|
231 | 231 | // @icon64 https://assets.chatgptautotalk.com/images/icons/openai/black/icon64.png?v=9f1ed3c
|
|
745 | 745 | class: `${app.slug}-sidebar-toggle`,
|
746 | 746 |
|
747 | 747 | create() {
|
| 748 | + const firstLink = chatgpt.getNewChatLink() |
748 | 749 |
|
749 | 750 | // Init toggle elems
|
750 | 751 | this.div = dom.create.elem('div', { class: this.class })
|
|
760 | 761 |
|
761 | 762 | // Stylize elems
|
762 | 763 | this.stylize() // create/append stylesheet
|
763 |
| - if (env.ui.firstLink) { // borrow/assign classes from sidebar elems |
764 |
| - const firstIcon = env.ui.firstLink.querySelector('div:first-child'), |
765 |
| - firstLabel = env.ui.firstLink.querySelector('div:nth-child(2)') |
| 764 | + if (firstLink) { // borrow/assign classes from sidebar elems |
| 765 | + const firstIcon = firstLink.querySelector('div:first-child'), |
| 766 | + firstLabel = firstLink.querySelector('div:nth-child(2)') |
766 | 767 | this.div.classList.add(
|
767 |
| - ...env.ui.firstLink.classList, ...(firstLabel?.classList || [])) |
| 768 | + ...firstLink.classList, ...(firstLabel?.classList || [])) |
768 | 769 | this.div.querySelector('img')?.classList.add(...(firstIcon?.classList || []))
|
769 | 770 | }
|
770 | 771 |
|
|
783 | 784 | },
|
784 | 785 |
|
785 | 786 | stylize() {
|
| 787 | + const firstLink = chatgpt.getNewChatLink() |
786 | 788 | document.head.append(this.styles = dom.create.style(
|
787 | 789 | `:root { /* vars */
|
788 | 790 | --switch-enabled-bg-color: #ad68ff ; --switch-disabled-bg-color: #ccc ;
|
|
795 | 797 | + `.${this.class} { /* parent div */
|
796 | 798 | max-height: 37px ; margin: 2px 0 ; user-select: none ; cursor: pointer ;
|
797 | 799 | opacity: 1 !important ; /* overcome OpenAI click-dim */
|
| 800 | + justify-content: unset ; /* overcome OpenAI .justify-center */ |
798 | 801 | flex-grow: unset } /* overcome OpenAI .grow */
|
799 | 802 | .${this.class} > img { /* navicon */
|
800 | 803 | width: 1.25rem ; height: 1.25rem ; margin-left: 2px ; margin-right: 4px }
|
801 | 804 | .${this.class} > input { display: none } /* hide checkbox */
|
802 | 805 | .${this.class} > span { /* switch span */
|
803 | 806 | position: relative ; width: 30px ; height: 15px ; border-radius: 28px ;
|
804 | 807 | background-color: var(--switch-disabled-bg-color) ;
|
805 |
| - bottom: ${ env.ui.firstLink ? 0 : -0.15 }em ; |
806 |
| - left: ${ env.browser.isMobile ? 169 : env.ui.firstLink ? 154 : 160 }px ; |
| 808 | + bottom: ${ firstLink ? '0.5px' : '-0.15em' } ; |
| 809 | + left: ${ env.browser.isMobile ? 169 : firstLink ? 154 : 160 }px ; |
807 | 810 | transition: 0.4s ; -webkit-transition: 0.4s ; -moz-transition: 0.4s ;
|
808 | 811 | -o-transition: 0.4s ; -ms-transition: 0.4s }
|
809 | 812 | .${this.class} > span.enabled { /* switch on */
|
|
827 | 830 | transition: 0.4s ; -webkit-transition: 0.4s ; -moz-transition: 0.4s ;
|
828 | 831 | -o-transition: 0.4s ; -ms-transition: 0.4s }
|
829 | 832 | .${this.class} > label { /* toggle label */
|
830 |
| - cursor: pointer ; overflow: hidden ; text-overflow: ellipsis ; |
831 |
| - width: ${ env.browser.isMobile ? 201 : 148 }px ; |
832 |
| - margin-left: -${ env.ui.firstLink ? 41 : 23 }px ; /* left-shift to navicon */ |
833 |
| - ${ env.ui.firstLink ? '' : 'font-size: 0.875rem ; font-weight: 600' }}` |
| 833 | + cursor: pointer ; overflow: hidden ; text-overflow: ellipsis ; white-space: nowrap ; |
| 834 | + color: black ; width: 153px ; margin-left: -22px ; |
| 835 | + ${ firstLink ? 'font-size: var(--text-sm)' : 'font-size: 0.875rem ; font-weight: 600' }}` |
834 | 836 |
|
835 | 837 | // Dark scheme mods
|
836 | 838 | + `.${this.class}.dark > span.enabled { /* switch on */
|
|
845 | 847 | .${this.class}.dark > span > span { /* knob span */
|
846 | 848 | box-shadow: var(--knob-box-shadow-dark) ; /* make 3D-er */
|
847 | 849 | -webkit-box-shadow: var(--knob-box-shadow-dark) ;
|
848 |
| - -moz-box-shadow: var(--knob-box-shadow-dark) }` |
| 850 | + -moz-box-shadow: var(--knob-box-shadow-dark) } |
| 851 | + .${this.class}.dark > label { color: white } /* toggle label */` |
849 | 852 | ))
|
850 | 853 | },
|
851 | 854 |
|
852 | 855 | insert() {
|
853 |
| - if (this.status?.startsWith('insert') || document.querySelector(`.${this.class}`)) return |
854 |
| - const sidebar = document.querySelectorAll('nav')[+env.browser.isMobile] ; if (!sidebar) return |
| 856 | + const sidebar = document.querySelector(chatgpt.selectors.sidebar) |
| 857 | + if (!sidebar || this.status?.startsWith('insert') || document.querySelector(`.${this.class}`)) return |
855 | 858 | this.status = 'inserting' ; if (!this.div) this.create()
|
856 |
| - sidebar.children[1].before(this.div) ; this.status = 'inserted' |
| 859 | + sidebar.querySelector('div#sidebar-header').after(this.div) ; this.status = 'inserted' |
857 | 860 | },
|
858 | 861 |
|
859 | 862 | update: {
|
|
901 | 904 | toggles.sidebar.update.navicon({ preload: true }) // preload sidebar NAVICON variants
|
902 | 905 |
|
903 | 906 | // Init BROWSER/UI props
|
904 |
| - await Promise.race([chatgpt.isLoaded(), new Promise(resolve => setTimeout(resolve, 5000))]) // initial UI loaded |
905 |
| - await chatgpt.sidebar.isLoaded() |
906 |
| - env.ui.firstLink = chatgpt.getNewChatLink(); |
| 907 | + await Promise.race([chatgpt.isLoaded(), new Promise(resolve => setTimeout(resolve, 5000))]); // initial UI loaded |
907 | 908 |
|
908 | 909 | // Add RISING PARTICLES styles
|
909 | 910 | ['rpg', 'rpw'].forEach(cssType => document.head.append(dom.create.style(GM_getResourceText(`${cssType}CSS`))))
|
|
924 | 925 |
|
925 | 926 | // Monitor NODE CHANGES to maintain sidebar toggle visibility
|
926 | 927 | new MutationObserver(() => {
|
927 |
| - if (!config.toggleHidden && !document.querySelector(`.${toggles.sidebar.class}`) |
928 |
| - && toggles.sidebar.status != 'inserting') { |
929 |
| - toggles.sidebar.status = 'missing' ; toggles.sidebar.insert() } |
| 928 | + if (!config.toggleHidden && document.querySelector(chatgpt.selectors.sidebar) |
| 929 | + && !document.querySelector(`.${toggles.sidebar.class}`) |
| 930 | + && toggles.sidebar.status != 'inserting' |
| 931 | + ) { toggles.sidebar.status = 'missing' ; toggles.sidebar.insert() } |
930 | 932 | }).observe(document.body, { attributes: true, subtree: true })
|
931 | 933 |
|
932 | 934 | // Monitor SCHEME PREF changes to update sidebar toggle + modal colors
|
|
0 commit comments