diff options
author | xwi88 <278810732@qq.com> | 2022-05-18 14:52:30 +0300 |
---|---|---|
committer | xwi88 <278810732@qq.com> | 2022-05-25 03:24:42 +0300 |
commit | 487a77244226bf301d29a004c3f5601b7e6fafc6 (patch) | |
tree | 3107cdd0251deee2cf1bbdb75df5a21e7cc86d49 /src | |
parent | a73149864dae8ecb8acca5a6276d9e9ec8a1d037 (diff) |
support comment plugin giscus
Diffstat (limited to 'src')
-rw-r--r-- | src/js/theme.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/js/theme.js b/src/js/theme.js index a00bd28e..98dc54e5 100644 --- a/src/js/theme.js +++ b/src/js/theme.js @@ -645,6 +645,42 @@ class Theme { }); this.switchThemeEventSet.add(this._utterancesOnSwitchTheme); } + + if (this.config.comment.giscus) { + const giscusConfig = this.config.comment.giscus; + const giscusScript = document.createElement('script'); + let dataTheme = this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme + giscusScript.src = 'https://giscus.app/client.js'; + giscusScript.type = 'text/javascript'; + giscusScript.setAttribute('data-repo', giscusConfig.repo); + giscusScript.setAttribute('data-repo-id', giscusConfig.repo_id); + giscusScript.setAttribute('data-category', giscusConfig.category); + giscusScript.setAttribute('data-category-id', giscusConfig.category_id); + giscusScript.setAttribute('data-mapping', giscusConfig.mapping); + giscusScript.setAttribute('data-reactions-enabled', giscusConfig.reactions_enabled); + giscusScript.setAttribute('data-emit-metadata', giscusConfig.emit_metadata); + giscusScript.setAttribute('data-input-position', giscusConfig.input_position); + giscusScript.setAttribute('data-lang', giscusConfig.lang); + if (giscusConfig.label) giscusScript.setAttribute('label', giscusConfig.label); + giscusScript.setAttribute('data-theme', dataTheme); + giscusScript.crossOrigin = 'anonymous'; + giscusScript.async = true; + document.getElementById('giscus').appendChild(giscusScript); + this._giscusOnSwitchTheme = this._giscusOnSwitchTheme || (() => { + dataTheme = this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme + const message = { + setConfig: { + // theme: 'https://giscus.app/themes/custom_example.css', + theme: dataTheme, + reactionsEnabled: false, + } + }; + const iframe = document.querySelector('iframe.giscus-frame'); + if (!iframe) return; + iframe.contentWindow.postMessage({ giscus: message }, 'https://giscus.app'); + }); + this.switchThemeEventSet.add(this._giscusOnSwitchTheme); + } } } |