1
- <script src =" https://giscus.app/client.js"
2
- data-repo =" <%- giscus.repo %>"
3
- data-repo-id =" <%- giscus['repo-id'] %>"
4
- data-category =" <%- giscus.category %>"
5
- data-category-id =" <%- giscus['category-id'] %>"
6
- data-mapping =" <%- giscus.mapping %>"
7
- data-reactions-enabled =" <%- giscus['reactions-enabled'] ? 1 : 0 %>"
8
- data-emit-metadata =" 0"
9
- data-input-position =" <%- giscus['input-position'] %>"
10
- data-theme =" <%- giscus.theme %>"
11
- data-lang =" <%- giscus.language %>"
12
- crossorigin =" anonymous"
13
- <%- giscus.loading ? `data-loading =${giscus.loading} ` : ' ' % >
14
- async >
15
- </script >
16
- <script type =" application/javascript" >
17
- const giscusIframeObserver = new MutationObserver (function (mutations ) {
18
- mutations .forEach (function (mutation ) {
19
- mutation .addedNodes .forEach (function (addedNode ) {
20
- if (addedNode .matches && addedNode .matches (' div.giscus' )) {
21
- const giscusIframe = addedNode .querySelector (' iframe.giscus-frame' );
22
- if (giscusIframe) {
23
- giscusIframe .addEventListener (" load" , function () {
24
- window .setTimeout (() => {
25
- toggleGiscusIfUsed (hasAlternateSentinel (), authorPrefersDark);
26
- }, 100 );
27
- });
28
- giscusIframeObserver .disconnect ();
29
- }
30
- }
31
- });
32
- });
33
- });
34
- giscusIframeObserver .observe (document .body , { childList: true , subtree: true });
35
- </script >
36
1
<input type =" hidden" id =" giscus-base-theme" value =" <%- giscus.baseTheme %>" >
37
- <input type =" hidden" id =" giscus-alt-theme" value =" <%- giscus.altTheme %>" >
2
+ <input type =" hidden" id =" giscus-alt-theme" value =" <%- giscus.altTheme %>" >
3
+ <script >
4
+ function loadGiscus () {
5
+ // Function to get the theme based on body class
6
+ const getTheme = () => {
7
+ let baseTheme = document .getElementById (' giscus-base-theme' ).value ;
8
+ let altTheme = document .getElementById (' giscus-alt-theme' ).value ;
9
+ if (authorPrefersDark) {
10
+ [baseTheme, altTheme] = [altTheme, baseTheme];
11
+ }
12
+ return document .body .classList .contains (' quarto-dark' ) ? altTheme : baseTheme;
13
+ };
14
+ const script = document .createElement (" script" );
15
+ script .src = " https://giscus.app/client.js" ;
16
+ script .async = true ;
17
+ script .dataset .repo = " <%- giscus.repo %>" ;
18
+ script .dataset .repoId = " <%- giscus['repo-id'] %>" ;
19
+ script .dataset .category = " <%- giscus.category %>" ;
20
+ script .dataset .categoryId = " <%- giscus['category-id'] %>" ;
21
+ script .dataset .mapping = " <%- giscus.mapping %>" ;
22
+ script .dataset .reactionsEnabled = " <%- giscus['reactions-enabled'] ? 1 : 0 %>" ;
23
+ script .dataset .emitMetadata = " 0" ;
24
+ script .dataset .inputPosition = " <%- giscus['input-position'] %>" ;
25
+ script .dataset .theme = getTheme ();
26
+ script .dataset .lang = " <%- giscus.language %>" ;
27
+ script .crossOrigin = " anonymous" ;
28
+
29
+ // Append the script to the desired div instead of at the end of the body
30
+ document .getElementById (" quarto-content" ).appendChild (script);
31
+ }
32
+ loadGiscus ();
33
+ </script >
0 commit comments