|
220 | 220 | // @description:zu *NGOKUPHEPHA* susa ukusetha kabusha ingxoxo yemizuzu eyi-10 + amaphutha enethiwekhi ahlala njalo + Ukuhlolwa kwe-Cloudflare ku-ChatGPT. |
221 | 221 | // @author Adam Lui |
222 | 222 | // @namespace https://github.com/adamlui |
223 | | -// @version 2026.7.24.1 |
| 223 | +// @version 2026.7.25 |
224 | 224 | // @license MIT |
225 | 225 | // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E |
226 | 226 | // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E |
|
365 | 365 |
|
366 | 366 | refresh() { |
367 | 367 | if (typeof GM_unregisterMenuCommand == 'undefined') return |
368 | | - this.entryIDs.forEach(id => GM_unregisterMenuCommand(id)) |
| 368 | + this.entryIDs.forEach(GM_unregisterMenuCommand) |
369 | 369 | this.register() |
370 | 370 | }, |
371 | 371 |
|
|
416 | 416 | } |
417 | 417 | } |
418 | 418 |
|
419 | | - window.updateCheck = () => { |
420 | | - env.xhr({ |
421 | | - method: 'GET', url: `${app.urls.update.gm}?t=${Date.now()}`, |
422 | | - headers: { 'Cache-Control': 'no-cache' }, |
423 | | - onload: ({ responseText }) => { |
424 | | - |
425 | | - // Compare versions, alert if update found |
426 | | - app.latestVer = /@version +(.*)/.exec(responseText)?.[1] |
427 | | - if (app.latestVer) for (let i = 0 ; i < 4 ; i++) { // loop thru subver's |
| 419 | + window.updateCheck = () => env.xhr({ |
| 420 | + method: 'GET', url: `${app.urls.update.gm}?t=${Date.now()}`, |
| 421 | + headers: { 'Cache-Control': 'no-cache' }, |
| 422 | + onload: ({ responseText }) => { |
| 423 | + app.latestVer = /@version +(.*)/.exec(responseText)?.[1] |
| 424 | + if (app.latestVer) |
| 425 | + for (let i = 0 ; i < 4 ; i++) { // loop thru subver's |
428 | 426 | const currentSubVer = parseInt(app.version.split('.')[i], 10) || 0, |
429 | 427 | latestSubVer = parseInt(app.latestVer.split('.')[i], 10) || 0 |
430 | 428 | if (currentSubVer > latestSubVer) break // out of comparison since not outdated |
431 | 429 | else if (latestSubVer > currentSubVer) // if outdated |
432 | 430 | return modals.open('update', 'available') |
433 | 431 | } |
434 | | - |
435 | | - // Alert to no update found, nav back to About |
436 | | - modals.open('update', 'unavailable') ; modals.open('about') |
437 | | - }}) |
438 | | - } |
| 432 | + modals.open('update', 'unavailable') ; modals.open('about') |
| 433 | + } |
| 434 | + }) |
439 | 435 |
|
440 | 436 | // Define FEEDBACK functions |
441 | 437 |
|
|
521 | 517 | btn.replaceWith(btn = btn.cloneNode(true)) |
522 | 518 | btn.onclick = () => modals.safeWinOpen(app.urls[ |
523 | 519 | btn.textContent.includes(app.msgs.btnLabel_getSupport) ? 'support' |
524 | | - : btn.textContent.includes(app.msgs.btnLabel_discuss) ? 'discuss' : 'relatedExtensions' |
| 520 | + : btn.textContent.includes(app.msgs.btnLabel_discuss) ? 'discuss' |
| 521 | + : 'relatedExtensions' |
525 | 522 | ]) |
526 | 523 | } |
527 | 524 |
|
|
551 | 548 |
|
552 | 549 | init(modal) { // requires lib/css.js |
553 | 550 | this.stylize() |
554 | | - modal.classList.add(this.class) ; modal.parentNode.classList.add(`${this.class}-bg`) |
| 551 | + modal.classList.add(this.class) |
| 552 | + modal.parentNode.classList.add(`${this.class}-bg`) |
555 | 553 | css.addRisingParticles(modal) |
556 | 554 | setTimeout(() => { // dim bg |
557 | 555 | modal.parentNode.style.backgroundColor = `rgba(67,70,72, ${ env.ui.scheme == 'dark' ? 0.62 : 0.33 })` |
|
561 | 559 |
|
562 | 560 | observeRemoval(modal, modalType, modalSubType) { // to maintain stack for proper nav |
563 | 561 | const modalBG = modal.parentNode |
564 | | - new MutationObserver(([mutation], obs) => { |
565 | | - mutation.removedNodes.forEach(removedNode => { if (removedNode == modalBG) { |
| 562 | + new MutationObserver(([mutation], obs) => |
| 563 | + mutation.removedNodes.forEach(removedNode => { |
| 564 | + if (removedNode != modalBG) return |
566 | 565 | if (modals.stack[0].includes(modalSubType || modalType)) { // new modal not launched so nav back |
567 | 566 | modals.stack.shift() // remove this modal type from stack 1st |
568 | 567 | const prevModalType = modals.stack[0] |
|
572 | 571 | } |
573 | 572 | } |
574 | 573 | obs.disconnect() |
575 | | - }}) |
576 | | - }).observe(modalBG.parentNode, { childList: true, subtree: true }) |
| 574 | + }) |
| 575 | + ).observe(modalBG.parentNode, { childList: true, subtree: true }) |
577 | 576 | }, |
578 | 577 |
|
579 | 578 | open(modalType, modalSubType) { |
|
729 | 728 | const firstLink = chatgpt.getNewChatLink() |
730 | 729 | if (firstLink && !this.classesBorrowed) { // borrow/assign classes from sidebar elems |
731 | 730 | const firstIcon = firstLink.querySelector('div:first-child'), |
732 | | - firstLabel = firstLink.querySelector('div:nth-child(2)') |
| 731 | + firstLabel = firstLink.querySelector('div:nth-child(2)') |
733 | 732 | this.div.classList.add(...firstLink.classList, ...(firstLabel?.classList || [])) |
734 | 733 | this.div.querySelector('img')?.classList.add(...(firstIcon?.classList || [])) |
735 | 734 | this.classesBorrowed = true |
|
0 commit comments