176 |
177 |
178 | -
187 |
- Summarize the above content highlights. 188 |
- Summarize the above in 3 bullet points. 189 |
- What's key takeaways from the above? 190 |
- Extract the gist of the above. 191 |
25 |
No Transcription Available...
113 |114 | Try{' '} 115 | 120 | Youtube Whisperer 121 | {' '} 122 | to transcribe! 123 |
124 | > 125 | ) : ( 126 |
127 |
89 | Enjoy this extension? Give us a 5-star rating at{' '} 90 | 95 | Chrome Web Store 96 | 97 |
98 | )} */} 99 |106 | Please login and pass Cloudflare check at{' '} 107 | 108 | chat.openai.com 109 | 110 | {retry > 0 && 111 | (() => { 112 | if (isBraveBrowser()) { 113 | return ( 114 | 115 | Still not working? Follow{' '} 116 | 117 | Brave Troubleshooting 118 | 119 | 120 | ) 121 | } else { 122 | return ( 123 | 124 | OpenAI requires passing a security check every once in a while. If this keeps 125 | happening, change AI provider to OpenAI API in the extension options. 126 | 127 | ) 128 | } 129 | })()} 130 |
131 | ) 132 | } 133 | if (error) { 134 | return ( 135 |136 | Failed to load response from ChatGPT: 137 | {error} 138 | { 141 | setError('') 142 | setRetry((r) => r + 1) 143 | }} 144 | > 145 | Retry 146 | 147 |
148 | ) 149 | } 150 | 151 | returnWaiting for ChatGPT response...
152 | } 153 | 154 | export default memo(ChatGPTQuery) 155 | -------------------------------------------------------------------------------- /src/content-script/dark.scss: -------------------------------------------------------------------------------- 1 | .glarity--container.gpt--dark { 2 | .glarity--chatgpt { 3 | color: white; 4 | border-color: #3c4043; 5 | background-color: #0d1117; 6 | } 7 | 8 | .glarity--header, 9 | .glarity--main__header a, 10 | a.glarity--header__logo { 11 | color: #fff; 12 | 13 | &:visited { 14 | color: #fff; 15 | } 16 | } 17 | 18 | .glarity--main { 19 | border-top-color: #3c4043; 20 | } 21 | 22 | .glarity--main__header { 23 | border-bottom-color: #3c4043; 24 | } 25 | 26 | .glarity--main__container { 27 | color: #eee; 28 | 29 | a { 30 | color: #8ab4f8; 31 | } 32 | } 33 | 34 | pre code.hljs { 35 | display: block; 36 | overflow-x: auto; 37 | padding: 1em; 38 | } 39 | code.hljs { 40 | padding: 3px 5px; 41 | } /*! 42 | Theme: GitHub Dark 43 | Description: Dark theme as seen on github.com 44 | Author: github.com 45 | Maintainer: @Hirse 46 | Updated: 2021-05-15 47 | 48 | Outdated base version: https://github.com/primer/github-syntax-dark 49 | Current colors taken from GitHub's CSS 50 | */ 51 | .hljs { 52 | color: #c9d1d9; 53 | background: #0d1117; 54 | } 55 | .hljs-doctag, 56 | .hljs-keyword, 57 | .hljs-meta .hljs-keyword, 58 | .hljs-template-tag, 59 | .hljs-template-variable, 60 | .hljs-type, 61 | .hljs-variable.language_ { 62 | color: #ff7b72; 63 | } 64 | .hljs-title, 65 | .hljs-title.class_, 66 | .hljs-title.class_.inherited__, 67 | .hljs-title.function_ { 68 | color: #d2a8ff; 69 | } 70 | .hljs-attr, 71 | .hljs-attribute, 72 | .hljs-literal, 73 | .hljs-meta, 74 | .hljs-number, 75 | .hljs-operator, 76 | .hljs-selector-attr, 77 | .hljs-selector-class, 78 | .hljs-selector-id, 79 | .hljs-variable { 80 | color: #79c0ff; 81 | } 82 | .hljs-meta .hljs-string, 83 | .hljs-regexp, 84 | .hljs-string { 85 | color: #a5d6ff; 86 | } 87 | .hljs-built_in, 88 | .hljs-symbol { 89 | color: #ffa657; 90 | } 91 | .hljs-code, 92 | .hljs-comment, 93 | .hljs-formula { 94 | color: #8b949e; 95 | } 96 | .hljs-name, 97 | .hljs-quote, 98 | .hljs-selector-pseudo, 99 | .hljs-selector-tag { 100 | color: #7ee787; 101 | } 102 | .hljs-subst { 103 | color: #c9d1d9; 104 | } 105 | .hljs-section { 106 | color: #1f6feb; 107 | font-weight: 700; 108 | } 109 | .hljs-bullet { 110 | color: #f2cc60; 111 | } 112 | .hljs-emphasis { 113 | color: #c9d1d9; 114 | font-style: italic; 115 | } 116 | .hljs-strong { 117 | color: #c9d1d9; 118 | font-weight: 700; 119 | } 120 | .hljs-addition { 121 | color: #aff5b4; 122 | background-color: #033a16; 123 | } 124 | .hljs-deletion { 125 | color: #ffdcd7; 126 | background-color: #67060c; 127 | } 128 | 129 | .markdown-body { 130 | color-scheme: dark; 131 | -ms-text-size-adjust: 100%; 132 | -webkit-text-size-adjust: 100%; 133 | margin: 0; 134 | color: #c9d1d9; 135 | background-color: #0d1117; 136 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 137 | 'Apple Color Emoji', 'Segoe UI Emoji'; 138 | font-size: 16px; 139 | line-height: 1.5; 140 | word-wrap: break-word; 141 | } 142 | 143 | .markdown-body .octicon { 144 | display: inline-block; 145 | fill: currentColor; 146 | vertical-align: text-bottom; 147 | } 148 | 149 | .markdown-body h1:hover .anchor .octicon-link:before, 150 | .markdown-body h2:hover .anchor .octicon-link:before, 151 | .markdown-body h3:hover .anchor .octicon-link:before, 152 | .markdown-body h4:hover .anchor .octicon-link:before, 153 | .markdown-body h5:hover .anchor .octicon-link:before, 154 | .markdown-body h6:hover .anchor .octicon-link:before { 155 | width: 16px; 156 | height: 16px; 157 | content: ' '; 158 | display: inline-block; 159 | background-color: currentColor; 160 | -webkit-mask-image: url("data:image/svg+xml,"); 161 | mask-image: url("data:image/svg+xml,"); 162 | } 163 | 164 | .markdown-body details, 165 | .markdown-body figcaption, 166 | .markdown-body figure { 167 | display: block; 168 | } 169 | 170 | .markdown-body summary { 171 | display: list-item; 172 | } 173 | 174 | .markdown-body [hidden] { 175 | display: none !important; 176 | } 177 | 178 | .markdown-body a { 179 | background-color: transparent; 180 | color: #58a6ff; 181 | text-decoration: none; 182 | } 183 | 184 | .markdown-body a:active, 185 | .markdown-body a:hover { 186 | outline-width: 0; 187 | } 188 | 189 | .markdown-body abbr[title] { 190 | border-bottom: none; 191 | text-decoration: underline dotted; 192 | } 193 | 194 | .markdown-body b, 195 | .markdown-body strong { 196 | font-weight: 600; 197 | } 198 | 199 | .markdown-body dfn { 200 | font-style: italic; 201 | } 202 | 203 | .markdown-body h1 { 204 | margin: 0.67em 0; 205 | font-weight: 600; 206 | padding-bottom: 0.3em; 207 | font-size: 2em; 208 | border-bottom: 1px solid #21262d; 209 | } 210 | 211 | .markdown-body mark { 212 | background-color: rgba(187, 128, 9, 0.15); 213 | color: #c9d1d9; 214 | } 215 | 216 | .markdown-body small { 217 | font-size: 90%; 218 | } 219 | 220 | .markdown-body sub, 221 | .markdown-body sup { 222 | font-size: 75%; 223 | line-height: 0; 224 | position: relative; 225 | vertical-align: baseline; 226 | } 227 | 228 | .markdown-body sub { 229 | bottom: -0.25em; 230 | } 231 | 232 | .markdown-body sup { 233 | top: -0.5em; 234 | } 235 | 236 | .markdown-body img { 237 | border-style: none; 238 | max-width: 100%; 239 | box-sizing: content-box; 240 | background-color: #0d1117; 241 | } 242 | 243 | .markdown-body code, 244 | .markdown-body kbd, 245 | .markdown-body pre, 246 | .markdown-body samp { 247 | font-family: monospace, monospace; 248 | font-size: 1em; 249 | } 250 | 251 | .markdown-body figure { 252 | margin: 1em 40px; 253 | } 254 | 255 | .markdown-body hr { 256 | box-sizing: content-box; 257 | overflow: hidden; 258 | background: transparent; 259 | border-bottom: 1px solid #21262d; 260 | height: 0.25em; 261 | padding: 0; 262 | margin: 24px 0; 263 | background-color: #30363d; 264 | border: 0; 265 | } 266 | 267 | .markdown-body input { 268 | font: inherit; 269 | margin: 0; 270 | overflow: visible; 271 | font-family: inherit; 272 | font-size: inherit; 273 | line-height: inherit; 274 | } 275 | 276 | .markdown-body [type='button'], 277 | .markdown-body [type='reset'], 278 | .markdown-body [type='submit'] { 279 | -webkit-appearance: button; 280 | } 281 | 282 | .markdown-body [type='button']::-moz-focus-inner, 283 | .markdown-body [type='reset']::-moz-focus-inner, 284 | .markdown-body [type='submit']::-moz-focus-inner { 285 | border-style: none; 286 | padding: 0; 287 | } 288 | 289 | .markdown-body [type='button']:-moz-focusring, 290 | .markdown-body [type='reset']:-moz-focusring, 291 | .markdown-body [type='submit']:-moz-focusring { 292 | outline: 1px dotted ButtonText; 293 | } 294 | 295 | .markdown-body [type='checkbox'], 296 | .markdown-body [type='radio'] { 297 | box-sizing: border-box; 298 | padding: 0; 299 | } 300 | 301 | .markdown-body [type='number']::-webkit-inner-spin-button, 302 | .markdown-body [type='number']::-webkit-outer-spin-button { 303 | height: auto; 304 | } 305 | 306 | .markdown-body [type='search'] { 307 | -webkit-appearance: textfield; 308 | outline-offset: -2px; 309 | } 310 | 311 | .markdown-body [type='search']::-webkit-search-cancel-button, 312 | .markdown-body [type='search']::-webkit-search-decoration { 313 | -webkit-appearance: none; 314 | } 315 | 316 | .markdown-body ::-webkit-input-placeholder { 317 | color: inherit; 318 | opacity: 0.54; 319 | } 320 | 321 | .markdown-body ::-webkit-file-upload-button { 322 | -webkit-appearance: button; 323 | font: inherit; 324 | } 325 | 326 | .markdown-body a:hover { 327 | text-decoration: underline; 328 | } 329 | 330 | .markdown-body hr::before { 331 | display: table; 332 | content: ''; 333 | } 334 | 335 | .markdown-body hr::after { 336 | display: table; 337 | clear: both; 338 | content: ''; 339 | } 340 | 341 | .markdown-body table { 342 | border-spacing: 0; 343 | border-collapse: collapse; 344 | display: block; 345 | width: max-content; 346 | max-width: 100%; 347 | overflow: auto; 348 | } 349 | 350 | .markdown-body td, 351 | .markdown-body th { 352 | padding: 0; 353 | } 354 | 355 | .markdown-body details summary { 356 | cursor: pointer; 357 | } 358 | 359 | .markdown-body details:not([open]) > *:not(summary) { 360 | display: none !important; 361 | } 362 | 363 | .markdown-body kbd { 364 | display: inline-block; 365 | padding: 3px 5px; 366 | font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; 367 | line-height: 10px; 368 | color: #c9d1d9; 369 | vertical-align: middle; 370 | background-color: #161b22; 371 | border: solid 1px rgba(110, 118, 129, 0.4); 372 | border-bottom-color: rgba(110, 118, 129, 0.4); 373 | border-radius: 6px; 374 | box-shadow: inset 0 -1px 0 rgba(110, 118, 129, 0.4); 375 | } 376 | 377 | .markdown-body h1, 378 | .markdown-body h2, 379 | .markdown-body h3, 380 | .markdown-body h4, 381 | .markdown-body h5, 382 | .markdown-body h6 { 383 | margin-top: 24px; 384 | margin-bottom: 16px; 385 | font-weight: 600; 386 | line-height: 1.25; 387 | } 388 | 389 | .markdown-body h2 { 390 | font-weight: 600; 391 | padding-bottom: 0.3em; 392 | font-size: 1.5em; 393 | border-bottom: 1px solid #21262d; 394 | } 395 | 396 | .markdown-body h3 { 397 | font-weight: 600; 398 | font-size: 1.25em; 399 | } 400 | 401 | .markdown-body h4 { 402 | font-weight: 600; 403 | font-size: 1em; 404 | } 405 | 406 | .markdown-body h5 { 407 | font-weight: 600; 408 | font-size: 0.875em; 409 | } 410 | 411 | .markdown-body h6 { 412 | font-weight: 600; 413 | font-size: 0.85em; 414 | color: #8b949e; 415 | } 416 | 417 | .markdown-body p { 418 | margin-top: 0; 419 | margin-bottom: 10px; 420 | } 421 | 422 | .markdown-body blockquote { 423 | margin: 0; 424 | padding: 0 1em; 425 | color: #8b949e; 426 | border-left: 0.25em solid #30363d; 427 | } 428 | 429 | .markdown-body ul, 430 | .markdown-body ol { 431 | margin-top: 0; 432 | margin-bottom: 0; 433 | padding-left: 2em; 434 | } 435 | 436 | .markdown-body ol ol, 437 | .markdown-body ul ol { 438 | list-style-type: lower-roman; 439 | } 440 | 441 | .markdown-body ul ul ol, 442 | .markdown-body ul ol ol, 443 | .markdown-body ol ul ol, 444 | .markdown-body ol ol ol { 445 | list-style-type: lower-alpha; 446 | } 447 | 448 | .markdown-body dd { 449 | margin-left: 0; 450 | } 451 | 452 | .markdown-body tt, 453 | .markdown-body code { 454 | font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; 455 | font-size: 12px; 456 | } 457 | 458 | .markdown-body pre { 459 | margin-top: 0; 460 | margin-bottom: 0; 461 | font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; 462 | font-size: 12px; 463 | word-wrap: normal; 464 | } 465 | 466 | .markdown-body .octicon { 467 | display: inline-block; 468 | overflow: visible !important; 469 | vertical-align: text-bottom; 470 | fill: currentColor; 471 | } 472 | 473 | .markdown-body ::placeholder { 474 | color: #484f58; 475 | opacity: 1; 476 | } 477 | 478 | .markdown-body input::-webkit-outer-spin-button, 479 | .markdown-body input::-webkit-inner-spin-button { 480 | margin: 0; 481 | -webkit-appearance: none; 482 | appearance: none; 483 | } 484 | 485 | .markdown-body .pl-c { 486 | color: #8b949e; 487 | } 488 | 489 | .markdown-body .pl-c1, 490 | .markdown-body .pl-s .pl-v { 491 | color: #79c0ff; 492 | } 493 | 494 | .markdown-body .pl-e, 495 | .markdown-body .pl-en { 496 | color: #d2a8ff; 497 | } 498 | 499 | .markdown-body .pl-smi, 500 | .markdown-body .pl-s .pl-s1 { 501 | color: #c9d1d9; 502 | } 503 | 504 | .markdown-body .pl-ent { 505 | color: #7ee787; 506 | } 507 | 508 | .markdown-body .pl-k { 509 | color: #ff7b72; 510 | } 511 | 512 | .markdown-body .pl-s, 513 | .markdown-body .pl-pds, 514 | .markdown-body .pl-s .pl-pse .pl-s1, 515 | .markdown-body .pl-sr, 516 | .markdown-body .pl-sr .pl-cce, 517 | .markdown-body .pl-sr .pl-sre, 518 | .markdown-body .pl-sr .pl-sra { 519 | color: #a5d6ff; 520 | } 521 | 522 | .markdown-body .pl-v, 523 | .markdown-body .pl-smw { 524 | color: #ffa657; 525 | } 526 | 527 | .markdown-body .pl-bu { 528 | color: #f85149; 529 | } 530 | 531 | .markdown-body .pl-ii { 532 | color: #f0f6fc; 533 | background-color: #8e1519; 534 | } 535 | 536 | .markdown-body .pl-c2 { 537 | color: #f0f6fc; 538 | background-color: #b62324; 539 | } 540 | 541 | .markdown-body .pl-sr .pl-cce { 542 | font-weight: bold; 543 | color: #7ee787; 544 | } 545 | 546 | .markdown-body .pl-ml { 547 | color: #f2cc60; 548 | } 549 | 550 | .markdown-body .pl-mh, 551 | .markdown-body .pl-mh .pl-en, 552 | .markdown-body .pl-ms { 553 | font-weight: bold; 554 | color: #1f6feb; 555 | } 556 | 557 | .markdown-body .pl-mi { 558 | font-style: italic; 559 | color: #c9d1d9; 560 | } 561 | 562 | .markdown-body .pl-mb { 563 | font-weight: bold; 564 | color: #c9d1d9; 565 | } 566 | 567 | .markdown-body .pl-md { 568 | color: #ffdcd7; 569 | background-color: #67060c; 570 | } 571 | 572 | .markdown-body .pl-mi1 { 573 | color: #aff5b4; 574 | background-color: #033a16; 575 | } 576 | 577 | .markdown-body .pl-mc { 578 | color: #ffdfb6; 579 | background-color: #5a1e02; 580 | } 581 | 582 | .markdown-body .pl-mi2 { 583 | color: #c9d1d9; 584 | background-color: #1158c7; 585 | } 586 | 587 | .markdown-body .pl-mdr { 588 | font-weight: bold; 589 | color: #d2a8ff; 590 | } 591 | 592 | .markdown-body .pl-ba { 593 | color: #8b949e; 594 | } 595 | 596 | .markdown-body .pl-sg { 597 | color: #484f58; 598 | } 599 | 600 | .markdown-body .pl-corl { 601 | text-decoration: underline; 602 | color: #a5d6ff; 603 | } 604 | 605 | .markdown-body [data-catalyst] { 606 | display: block; 607 | } 608 | 609 | .markdown-body g-emoji { 610 | font-family: 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; 611 | font-size: 1em; 612 | font-style: normal !important; 613 | font-weight: 400; 614 | line-height: 1; 615 | vertical-align: -0.075em; 616 | } 617 | 618 | .markdown-body g-emoji img { 619 | width: 1em; 620 | height: 1em; 621 | } 622 | 623 | .markdown-body::before { 624 | display: table; 625 | content: ''; 626 | } 627 | 628 | .markdown-body::after { 629 | display: table; 630 | clear: both; 631 | content: ''; 632 | } 633 | 634 | .markdown-body > *:first-child { 635 | // margin-top: 0 !important; 636 | } 637 | 638 | .markdown-body > *:last-child { 639 | margin-bottom: 0 !important; 640 | } 641 | 642 | .markdown-body a:not([href]) { 643 | color: inherit; 644 | text-decoration: none; 645 | } 646 | 647 | .markdown-body .absent { 648 | color: #f85149; 649 | } 650 | 651 | .markdown-body .anchor { 652 | float: left; 653 | padding-right: 4px; 654 | margin-left: -20px; 655 | line-height: 1; 656 | } 657 | 658 | .markdown-body .anchor:focus { 659 | outline: none; 660 | } 661 | 662 | .markdown-body p, 663 | .markdown-body blockquote, 664 | .markdown-body ul, 665 | .markdown-body ol, 666 | .markdown-body dl, 667 | .markdown-body table, 668 | .markdown-body pre, 669 | .markdown-body details { 670 | margin-top: 0; 671 | margin-bottom: 16px; 672 | } 673 | 674 | .markdown-body blockquote > :first-child { 675 | margin-top: 0; 676 | } 677 | 678 | .markdown-body blockquote > :last-child { 679 | margin-bottom: 0; 680 | } 681 | 682 | .markdown-body sup > a::before { 683 | content: '['; 684 | } 685 | 686 | .markdown-body sup > a::after { 687 | content: ']'; 688 | } 689 | 690 | .markdown-body h1 .octicon-link, 691 | .markdown-body h2 .octicon-link, 692 | .markdown-body h3 .octicon-link, 693 | .markdown-body h4 .octicon-link, 694 | .markdown-body h5 .octicon-link, 695 | .markdown-body h6 .octicon-link { 696 | color: #c9d1d9; 697 | vertical-align: middle; 698 | visibility: hidden; 699 | } 700 | 701 | .markdown-body h1:hover .anchor, 702 | .markdown-body h2:hover .anchor, 703 | .markdown-body h3:hover .anchor, 704 | .markdown-body h4:hover .anchor, 705 | .markdown-body h5:hover .anchor, 706 | .markdown-body h6:hover .anchor { 707 | text-decoration: none; 708 | } 709 | 710 | .markdown-body h1:hover .anchor .octicon-link, 711 | .markdown-body h2:hover .anchor .octicon-link, 712 | .markdown-body h3:hover .anchor .octicon-link, 713 | .markdown-body h4:hover .anchor .octicon-link, 714 | .markdown-body h5:hover .anchor .octicon-link, 715 | .markdown-body h6:hover .anchor .octicon-link { 716 | visibility: visible; 717 | } 718 | 719 | .markdown-body h1 tt, 720 | .markdown-body h1 code, 721 | .markdown-body h2 tt, 722 | .markdown-body h2 code, 723 | .markdown-body h3 tt, 724 | .markdown-body h3 code, 725 | .markdown-body h4 tt, 726 | .markdown-body h4 code, 727 | .markdown-body h5 tt, 728 | .markdown-body h5 code, 729 | .markdown-body h6 tt, 730 | .markdown-body h6 code { 731 | padding: 0 0.2em; 732 | font-size: inherit; 733 | } 734 | 735 | .markdown-body ul.no-list, 736 | .markdown-body ol.no-list { 737 | padding: 0; 738 | list-style-type: none; 739 | } 740 | 741 | .markdown-body ol[type='1'] { 742 | list-style-type: decimal; 743 | } 744 | 745 | .markdown-body ol[type='a'] { 746 | list-style-type: lower-alpha; 747 | } 748 | 749 | .markdown-body ol[type='i'] { 750 | list-style-type: lower-roman; 751 | } 752 | 753 | .markdown-body div > ol:not([type]) { 754 | list-style-type: decimal; 755 | } 756 | 757 | .markdown-body ul ul, 758 | .markdown-body ul ol, 759 | .markdown-body ol ol, 760 | .markdown-body ol ul { 761 | margin-top: 0; 762 | margin-bottom: 0; 763 | } 764 | 765 | .markdown-body li > p { 766 | margin-top: 16px; 767 | } 768 | 769 | .markdown-body li + li { 770 | margin-top: 0.25em; 771 | } 772 | 773 | .markdown-body dl { 774 | padding: 0; 775 | } 776 | 777 | .markdown-body dl dt { 778 | padding: 0; 779 | margin-top: 16px; 780 | font-size: 1em; 781 | font-style: italic; 782 | font-weight: 600; 783 | } 784 | 785 | .markdown-body dl dd { 786 | padding: 0 16px; 787 | margin-bottom: 16px; 788 | } 789 | 790 | .markdown-body table th { 791 | font-weight: 600; 792 | } 793 | 794 | .markdown-body table th, 795 | .markdown-body table td { 796 | padding: 6px 13px; 797 | border: 1px solid #30363d; 798 | } 799 | 800 | .markdown-body table tr { 801 | background-color: #0d1117; 802 | border-top: 1px solid #21262d; 803 | } 804 | 805 | .markdown-body table tr:nth-child(2n) { 806 | background-color: #161b22; 807 | } 808 | 809 | .markdown-body table img { 810 | background-color: transparent; 811 | } 812 | 813 | .markdown-body img[align='right'] { 814 | padding-left: 20px; 815 | } 816 | 817 | .markdown-body img[align='left'] { 818 | padding-right: 20px; 819 | } 820 | 821 | .markdown-body .emoji { 822 | max-width: none; 823 | vertical-align: text-top; 824 | background-color: transparent; 825 | } 826 | 827 | .markdown-body span.frame { 828 | display: block; 829 | overflow: hidden; 830 | } 831 | 832 | .markdown-body span.frame > span { 833 | display: block; 834 | float: left; 835 | width: auto; 836 | padding: 7px; 837 | margin: 13px 0 0; 838 | overflow: hidden; 839 | border: 1px solid #30363d; 840 | } 841 | 842 | .markdown-body span.frame span img { 843 | display: block; 844 | float: left; 845 | } 846 | 847 | .markdown-body span.frame span span { 848 | display: block; 849 | padding: 5px 0 0; 850 | clear: both; 851 | color: #c9d1d9; 852 | } 853 | 854 | .markdown-body span.align-center { 855 | display: block; 856 | overflow: hidden; 857 | clear: both; 858 | } 859 | 860 | .markdown-body span.align-center > span { 861 | display: block; 862 | margin: 13px auto 0; 863 | overflow: hidden; 864 | text-align: center; 865 | } 866 | 867 | .markdown-body span.align-center span img { 868 | margin: 0 auto; 869 | text-align: center; 870 | } 871 | 872 | .markdown-body span.align-right { 873 | display: block; 874 | overflow: hidden; 875 | clear: both; 876 | } 877 | 878 | .markdown-body span.align-right > span { 879 | display: block; 880 | margin: 13px 0 0; 881 | overflow: hidden; 882 | text-align: right; 883 | } 884 | 885 | .markdown-body span.align-right span img { 886 | margin: 0; 887 | text-align: right; 888 | } 889 | 890 | .markdown-body span.float-left { 891 | display: block; 892 | float: left; 893 | margin-right: 13px; 894 | overflow: hidden; 895 | } 896 | 897 | .markdown-body span.float-left span { 898 | margin: 13px 0 0; 899 | } 900 | 901 | .markdown-body span.float-right { 902 | display: block; 903 | float: right; 904 | margin-left: 13px; 905 | overflow: hidden; 906 | } 907 | 908 | .markdown-body span.float-right > span { 909 | display: block; 910 | margin: 13px auto 0; 911 | overflow: hidden; 912 | text-align: right; 913 | } 914 | 915 | .markdown-body code, 916 | .markdown-body tt { 917 | padding: 0.2em 0.4em; 918 | margin: 0; 919 | font-size: 85%; 920 | background-color: rgba(110, 118, 129, 0.4); 921 | border-radius: 6px; 922 | } 923 | 924 | .markdown-body code br, 925 | .markdown-body tt br { 926 | display: none; 927 | } 928 | 929 | .markdown-body del code { 930 | text-decoration: inherit; 931 | } 932 | 933 | .markdown-body pre code { 934 | font-size: 100%; 935 | } 936 | 937 | .markdown-body pre > code { 938 | padding: 0; 939 | margin: 0; 940 | word-break: normal; 941 | white-space: pre; 942 | background: transparent; 943 | border: 0; 944 | } 945 | 946 | .markdown-body .highlight { 947 | margin-bottom: 16px; 948 | } 949 | 950 | .markdown-body .highlight pre { 951 | margin-bottom: 0; 952 | word-break: normal; 953 | } 954 | 955 | .markdown-body .highlight pre, 956 | .markdown-body pre { 957 | padding: 16px; 958 | overflow: auto; 959 | font-size: 85%; 960 | line-height: 1.45; 961 | background-color: #161b22; 962 | border-radius: 6px; 963 | } 964 | 965 | .markdown-body pre code, 966 | .markdown-body pre tt { 967 | display: inline; 968 | max-width: auto; 969 | padding: 0; 970 | margin: 0; 971 | overflow: visible; 972 | line-height: inherit; 973 | word-wrap: normal; 974 | background-color: transparent; 975 | border: 0; 976 | } 977 | 978 | .markdown-body .csv-data td, 979 | .markdown-body .csv-data th { 980 | padding: 5px; 981 | overflow: hidden; 982 | font-size: 12px; 983 | line-height: 1; 984 | text-align: left; 985 | white-space: nowrap; 986 | } 987 | 988 | .markdown-body .csv-data .blob-num { 989 | padding: 10px 8px 9px; 990 | text-align: right; 991 | background: #0d1117; 992 | border: 0; 993 | } 994 | 995 | .markdown-body .csv-data tr { 996 | border-top: 0; 997 | } 998 | 999 | .markdown-body .csv-data th { 1000 | font-weight: 600; 1001 | background: #161b22; 1002 | border-top: 0; 1003 | } 1004 | 1005 | .markdown-body .footnotes { 1006 | font-size: 12px; 1007 | color: #8b949e; 1008 | border-top: 1px solid #30363d; 1009 | } 1010 | 1011 | .markdown-body .footnotes ol { 1012 | padding-left: 16px; 1013 | } 1014 | 1015 | .markdown-body .footnotes li { 1016 | position: relative; 1017 | } 1018 | 1019 | .markdown-body .footnotes li:target::before { 1020 | position: absolute; 1021 | top: -8px; 1022 | right: -8px; 1023 | bottom: -8px; 1024 | left: -24px; 1025 | pointer-events: none; 1026 | content: ''; 1027 | border: 2px solid #1f6feb; 1028 | border-radius: 6px; 1029 | } 1030 | 1031 | .markdown-body .footnotes li:target { 1032 | color: #c9d1d9; 1033 | } 1034 | 1035 | .markdown-body .footnotes .data-footnote-backref g-emoji { 1036 | font-family: monospace; 1037 | } 1038 | 1039 | .markdown-body .task-list-item { 1040 | list-style-type: none; 1041 | } 1042 | 1043 | .markdown-body .task-list-item label { 1044 | font-weight: 400; 1045 | } 1046 | 1047 | .markdown-body .task-list-item.enabled label { 1048 | cursor: pointer; 1049 | } 1050 | 1051 | .markdown-body .task-list-item + .task-list-item { 1052 | margin-top: 3px; 1053 | } 1054 | 1055 | .markdown-body .task-list-item .handle { 1056 | display: none; 1057 | } 1058 | 1059 | .markdown-body .task-list-item-checkbox { 1060 | margin: 0 0.2em 0.25em -1.6em; 1061 | vertical-align: middle; 1062 | } 1063 | 1064 | .markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox { 1065 | margin: 0 -1.6em 0.25em 0.2em; 1066 | } 1067 | 1068 | .markdown-body ::-webkit-calendar-picker-indicator { 1069 | filter: invert(50%); 1070 | } 1071 | } 1072 | -------------------------------------------------------------------------------- /src/content-script/index.tsx: -------------------------------------------------------------------------------- 1 | import { render } from 'preact' 2 | import '../base.css' 3 | import { getUserConfig, Language, Theme } from '../config' 4 | import { detectSystemColorScheme } from '../utils' 5 | import ChatGPTContainer from './ChatGPTContainer' 6 | import { config, SearchEngine } from './search-engine-configs' 7 | import { 8 | getPossibleElementByQuerySelector, 9 | getSearchParam, 10 | getLangOptionsWithLink, 11 | getTranscriptHTML, 12 | getRawTranscript, 13 | waitForElm, 14 | getConverTranscript, 15 | } from './utils' 16 | import { getSummaryPrompt } from './prompt' 17 | import xss from 'xss' 18 | import { defaultPrompt } from '../utils' 19 | import './styles.scss' 20 | 21 | const siteRegex = new RegExp(Object.keys(config).join('|')) 22 | const siteName = location.hostname.match(siteRegex)![0] 23 | const siteConfig = config[siteName] 24 | 25 | async function mount( 26 | question: string, 27 | siteConfig: SearchEngine, 28 | transcript?: any, 29 | langOptionsWithLink?: any, 30 | ) { 31 | if (document.querySelector('div.glarity--container')) { 32 | document.querySelector('div.glarity--container')?.remove() 33 | } 34 | 35 | const container = document.createElement('div') 36 | container.className = 'glarity--container' 37 | 38 | const userConfig = await getUserConfig() 39 | let theme: Theme 40 | if (userConfig.theme === Theme.Auto) { 41 | theme = detectSystemColorScheme() 42 | } else { 43 | theme = userConfig.theme 44 | } 45 | if (theme === Theme.Dark) { 46 | container.classList.add('gpt--dark') 47 | } else { 48 | container.classList.add('gpt--light') 49 | } 50 | 51 | if (siteName === 'youtube') { 52 | container.classList.add('glarity--chatgpt--youtube') 53 | waitForElm('#secondary.style-scope.ytd-watch-flexy').then(() => { 54 | document.querySelector('#secondary.style-scope.ytd-watch-flexy')?.prepend(container) 55 | }) 56 | } else { 57 | const siderbarContainer = getPossibleElementByQuerySelector(siteConfig.sidebarContainerQuery) 58 | 59 | console.log( 60 | 'siderbarContainer', 61 | siderbarContainer, 62 | document.querySelector('#center_col')?.nextSibling, 63 | ) 64 | 65 | if (siderbarContainer) { 66 | siderbarContainer.prepend(container) 67 | } else { 68 | // container.classList.add('sidebar--free') 69 | // const appendContainer = getPossibleElementByQuerySelector(siteConfig.appendContainerQuery) 70 | // if (appendContainer) { 71 | // appendContainer.appendChild(container) 72 | // } 73 | 74 | if (siteConfig.extabarContainerQuery && document.querySelector('#center_col')?.nextSibling) { 75 | container.classList.add('glarity--full-container') 76 | const appendContainer = getPossibleElementByQuerySelector(siteConfig.extabarContainerQuery) 77 | if (appendContainer) { 78 | appendContainer.appendChild(container) 79 | } 80 | } else { 81 | container.classList.add('sidebar--free') 82 | const appendContainer = getPossibleElementByQuerySelector(siteConfig.appendContainerQuery) 83 | if (appendContainer) { 84 | appendContainer.appendChild(container) 85 | } 86 | } 87 | } 88 | } 89 | 90 | render( 91 |
176 |
177 |
178 | Glarity
35 | 36 | 37 |42 | Tip:{' '} 43 | 44 | setup shortcuts 45 | {' '} 46 | for faster access. 47 |
48 | )} 49 | {(() => { 50 | if (accessTokenQuery.isLoading) { 51 | return ( 52 |63 | Please login and pass Cloudflare check at{' '} 64 | 65 | chat.openai.com 66 | 67 |
68 |