diff options
author | Dillon <dillonzq@outlook.com> | 2022-05-25 20:51:17 +0300 |
---|---|---|
committer | Dillon <dillonzq@outlook.com> | 2022-05-25 20:51:17 +0300 |
commit | 61eccb2502064ee628d6e1983af9020ed6d1de57 (patch) | |
tree | 73d3db70df9c07f963b2902f3ea9e3769f5db9e0 /assets | |
parent | 487a77244226bf301d29a004c3f5601b7e6fafc6 (diff) |
feat(giscus): standardize configuration, support i18n and add lazyLoading config
Diffstat (limited to 'assets')
-rw-r--r-- | assets/js/theme.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/assets/js/theme.js b/assets/js/theme.js index d5175f8b..6f2f730d 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -865,6 +865,43 @@ var Theme = /*#__PURE__*/function () { this.switchThemeEventSet.add(this._utterancesOnSwitchTheme); } + + if (this.config.comment.giscus) { + var giscusConfig = this.config.comment.giscus; + var giscusScript = document.createElement('script'); + giscusScript.src = 'https://giscus.app/client.js'; + giscusScript.type = 'text/javascript'; + giscusScript.setAttribute('data-repo', giscusConfig.repo); + giscusScript.setAttribute('data-repo-id', giscusConfig.repoId); + giscusScript.setAttribute('data-category', giscusConfig.category); + giscusScript.setAttribute('data-category-id', giscusConfig.categoryId); + giscusScript.setAttribute('data-lang', giscusConfig.lang); + giscusScript.setAttribute('data-mapping', giscusConfig.mapping); + giscusScript.setAttribute('data-reactions-enabled', giscusConfig.reactionsEnabled); + giscusScript.setAttribute('data-emit-metadata', giscusConfig.emitMetadata); + giscusScript.setAttribute('data-input-position', giscusConfig.inputPosition); + if (giscusConfig.lazyLoading) giscusScript.setAttribute('data-loading', 'lazy'); + giscusScript.setAttribute('data-theme', this.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme); + giscusScript.crossOrigin = 'anonymous'; + giscusScript.async = true; + document.getElementById('giscus').appendChild(giscusScript); + + this._giscusOnSwitchTheme = this._giscusOnSwitchTheme || function () { + var message = { + setConfig: { + theme: _this11.isDark ? giscusConfig.darkTheme : giscusConfig.lightTheme, + reactionsEnabled: false + } + }; + var iframe = document.querySelector('iframe.giscus-frame'); + if (!iframe) return; + iframe.contentWindow.postMessage({ + giscus: message + }, 'https://giscus.app'); + }; + + this.switchThemeEventSet.add(this._giscusOnSwitchTheme); + } } } }, { |