mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-04-12 22:17:06 +08:00
Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21f71cd0f2 | ||
|
|
f775e97548 | ||
|
|
54a4fa381d | ||
|
|
bf3a43e62a | ||
|
|
274a499aff | ||
|
|
48781800f3 | ||
|
|
449fe2f876 | ||
|
|
06ab48f607 | ||
|
|
e0382c80ae | ||
|
|
a1589c0212 | ||
|
|
ff6fc30743 | ||
|
|
fef6dcf6c6 | ||
|
|
5fd171bab0 | ||
|
|
0b0cb38b59 | ||
|
|
65b1ad32c8 | ||
|
|
13cf15c369 | ||
|
|
6b7d0d9806 | ||
|
|
c17b0cb553 | ||
|
|
c866315b87 | ||
|
|
2404eee5c1 | ||
|
|
5e656b7072 | ||
|
|
a405217462 | ||
|
|
8cfa1665b9 | ||
|
|
d12f5be271 | ||
|
|
26f2c1b4e3 | ||
|
|
bb7fc446fc | ||
|
|
49e4903b34 | ||
|
|
91641646a7 | ||
|
|
4b8492a377 | ||
|
|
a36c9ca6d2 | ||
|
|
6361f28328 | ||
|
|
dbb31dec99 |
20
.github/stale.yml
vendored
20
.github/stale.yml
vendored
@@ -1,20 +0,0 @@
|
|||||||
# Number of days of inactivity before an issue becomes stale
|
|
||||||
daysUntilStale: 30
|
|
||||||
# Number of days of inactivity before a stale issue is closed
|
|
||||||
daysUntilClose: 7
|
|
||||||
# Issues with these labels will never be considered stale
|
|
||||||
exemptLabels:
|
|
||||||
- pinned
|
|
||||||
- security
|
|
||||||
- bug
|
|
||||||
- enhancement
|
|
||||||
- documentation
|
|
||||||
# Label to use when marking an issue as stale
|
|
||||||
staleLabel: stale
|
|
||||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
|
||||||
markComment: >
|
|
||||||
This issue has been automatically marked as stale because it has not had
|
|
||||||
recent activity. It will be closed if no further activity occurs. Thank you
|
|
||||||
for your contributions.
|
|
||||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
|
||||||
closeComment: false
|
|
||||||
19
.github/workflows/stale.yml
vendored
Normal file
19
.github/workflows/stale.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
name: 'Close stale issues and PRs'
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '30 1 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/stale@v5
|
||||||
|
with:
|
||||||
|
days-before-issue-stale: 30
|
||||||
|
days-before-pr-stale: -1
|
||||||
|
days-before-close: 7
|
||||||
|
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
|
||||||
|
close-pr-message: 'This issue has not seen any activity since it was marked stale. Closing.'
|
||||||
|
stale-issue-label: 'Stale'
|
||||||
|
exempt-issue-labels: 'pinned,bug,enhancement,documentation,Plan'
|
||||||
|
operations-per-run: 1000
|
||||||
@@ -79,9 +79,9 @@ npm i hexo-theme-butterfly
|
|||||||
- [x] Related articles
|
- [x] Related articles
|
||||||
- [x] Displays outdated notice for a post
|
- [x] Displays outdated notice for a post
|
||||||
- [x] Share (AddThis/Sharejs/Addtoany)
|
- [x] Share (AddThis/Sharejs/Addtoany)
|
||||||
- [X] Comment (Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42)
|
- [X] Comment (Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42/artalk)
|
||||||
- [x] Multiple Comment System Support
|
- [x] Multiple Comment System Support
|
||||||
- [x] Online Chats (Chatra/Tidio/Daovoice/Gitter/Crisp)
|
- [x] Online Chats (Chatra/Tidio/Daovoice/Gitter/Crisp/messenger)
|
||||||
- [x] Web analytics
|
- [x] Web analytics
|
||||||
- [x] Google AdSense
|
- [x] Google AdSense
|
||||||
- [x] Webmaster Verification
|
- [x] Webmaster Verification
|
||||||
@@ -89,7 +89,7 @@ npm i hexo-theme-butterfly
|
|||||||
- [x] Typewriter Effect: activate_power_mode
|
- [x] Typewriter Effect: activate_power_mode
|
||||||
- [x] Background effects (Canvas ribbon/canvas_ribbon_piao/canvas_nest)
|
- [x] Background effects (Canvas ribbon/canvas_ribbon_piao/canvas_nest)
|
||||||
- [x] Mouse click effects (Fireworks/Heart/Text)
|
- [x] Mouse click effects (Fireworks/Heart/Text)
|
||||||
- [x] Preloader/Loading Animation
|
- [x] Preloader/Loading Animation/pace.js
|
||||||
- [x] Busuanzi visitor counter
|
- [x] Busuanzi visitor counter
|
||||||
- [x] Medium Zoom/Fancybox
|
- [x] Medium Zoom/Fancybox
|
||||||
- [x] Mermaid
|
- [x] Mermaid
|
||||||
|
|||||||
@@ -79,9 +79,9 @@ theme: butterfly
|
|||||||
- [x] 顯示相關文章
|
- [x] 顯示相關文章
|
||||||
- [x] 過期文章提醒
|
- [x] 過期文章提醒
|
||||||
- [x] 多種分享系統(AddThis/Sharejs/Addtoany)
|
- [x] 多種分享系統(AddThis/Sharejs/Addtoany)
|
||||||
- [X] 多種評論系統(Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42)
|
- [X] 多種評論系統(Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42/artalk)
|
||||||
- [x] 支持雙評論部署
|
- [x] 支持雙評論部署
|
||||||
- [x] 多種在線聊天(Chatra/Tidio/Daovoice/Gitter/Crisp)
|
- [x] 多種在線聊天(Chatra/Tidio/Daovoice/Gitter/Crisp/messenger)
|
||||||
- [x] 多種分析系統
|
- [x] 多種分析系統
|
||||||
- [x] 谷歌廣告/手動廣告位置
|
- [x] 谷歌廣告/手動廣告位置
|
||||||
- [x] 各種站長驗證(Google/Bing/Baidu/360/Yandex)
|
- [x] 各種站長驗證(Google/Bing/Baidu/360/Yandex)
|
||||||
@@ -89,7 +89,7 @@ theme: butterfly
|
|||||||
- [x] 打字特效 activate_power_mode
|
- [x] 打字特效 activate_power_mode
|
||||||
- [x] 多種背景特效(靜止彩帶/動態彩帶/Canvas Nest)
|
- [x] 多種背景特效(靜止彩帶/動態彩帶/Canvas Nest)
|
||||||
- [x] 多種鼠標點擊特效(煙花/文字/愛心)
|
- [x] 多種鼠標點擊特效(煙花/文字/愛心)
|
||||||
- [x] 內置一種 Preloader 加載動畫
|
- [x] 內置一種 Preloader 加載動畫和 pace.js 加載動畫條
|
||||||
- [x] 不蒜子訪問統計
|
- [x] 不蒜子訪問統計
|
||||||
- [x] 兩種大圖模式(Medium Zoom/Fancybox)
|
- [x] 兩種大圖模式(Medium Zoom/Fancybox)
|
||||||
- [x] Mermaid 圖表顯示
|
- [x] Mermaid 圖表顯示
|
||||||
@@ -97,7 +97,7 @@ theme: butterfly
|
|||||||
- [x] 圖片懶加載
|
- [x] 圖片懶加載
|
||||||
- [x] Instantpage/Pangu/Snackbar彈窗/PWA......
|
- [x] Instantpage/Pangu/Snackbar彈窗/PWA......
|
||||||
|
|
||||||
## ✨ 贡献者
|
## ✨ 貢獻者
|
||||||
|
|
||||||
<a href="https://github.com/jerryc127/hexo-theme-butterfly/graphs/contributors">
|
<a href="https://github.com/jerryc127/hexo-theme-butterfly/graphs/contributors">
|
||||||
<img src="https://contrib.rocks/image?repo=jerryc127/hexo-theme-butterfly" />
|
<img src="https://contrib.rocks/image?repo=jerryc127/hexo-theme-butterfly" />
|
||||||
|
|||||||
53
_config.yml
53
_config.yml
@@ -168,8 +168,12 @@ index_post_content:
|
|||||||
length: 500 # if you set method to 2 or 3, the length need to config
|
length: 500 # if you set method to 2 or 3, the length need to config
|
||||||
|
|
||||||
# anchor
|
# anchor
|
||||||
# when you scroll in post, the URL will update according to header id.
|
anchor:
|
||||||
anchor: false
|
button:
|
||||||
|
enable: false
|
||||||
|
always_show: false
|
||||||
|
icon: # the unicode value of Font Awesome icon, such as '\3423'
|
||||||
|
auto_update: false # when you scroll in post, the URL will update according to header id.
|
||||||
|
|
||||||
# Post
|
# Post
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
@@ -259,7 +263,7 @@ addtoany:
|
|||||||
|
|
||||||
comments:
|
comments:
|
||||||
# Up to two comments system, the first will be shown as default
|
# Up to two comments system, the first will be shown as default
|
||||||
# Choose: Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42
|
# Choose: Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances/Facebook Comments/Twikoo/Giscus/Remark42/Artalk
|
||||||
use: # Valine,Disqus
|
use: # Valine,Disqus
|
||||||
text: true # Display the comment name next to the button
|
text: true # Display the comment name next to the button
|
||||||
# lazyload: The comment system will be load when comment element enters the browser's viewport.
|
# lazyload: The comment system will be load when comment element enters the browser's viewport.
|
||||||
@@ -333,7 +337,7 @@ facebook_comments:
|
|||||||
user_id: # optional
|
user_id: # optional
|
||||||
pageSize: 10 # The number of comments to show
|
pageSize: 10 # The number of comments to show
|
||||||
order_by: social # social/time/reverse_time
|
order_by: social # social/time/reverse_time
|
||||||
lang: en_US # Language en_US/zh_CN/zh_TW and so on
|
lang: zh_TW # Language en_US/zh_CN/zh_TW and so on
|
||||||
|
|
||||||
# Twikoo
|
# Twikoo
|
||||||
# https://github.com/imaegoo/twikoo
|
# https://github.com/imaegoo/twikoo
|
||||||
@@ -361,6 +365,14 @@ remark42:
|
|||||||
siteId: # Your Site ID
|
siteId: # Your Site ID
|
||||||
option:
|
option:
|
||||||
|
|
||||||
|
# Artalk
|
||||||
|
# https://artalk.js.org/guide/frontend/config.html
|
||||||
|
artalk:
|
||||||
|
server:
|
||||||
|
site:
|
||||||
|
visitor: false
|
||||||
|
option:
|
||||||
|
|
||||||
# Chat Services
|
# Chat Services
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
|
|
||||||
@@ -401,6 +413,13 @@ crisp:
|
|||||||
enable: false
|
enable: false
|
||||||
website_id:
|
website_id:
|
||||||
|
|
||||||
|
# messenger
|
||||||
|
# https://developers.facebook.com/docs/messenger-platform/discovery/facebook-chat-plugin/
|
||||||
|
messenger:
|
||||||
|
enable: false
|
||||||
|
pageID:
|
||||||
|
lang: zh_TW # Language en_US/zh_CN/zh_TW and so on
|
||||||
|
|
||||||
# Footer Settings
|
# Footer Settings
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
footer:
|
footer:
|
||||||
@@ -604,6 +623,10 @@ subtitle:
|
|||||||
enable: false
|
enable: false
|
||||||
# Typewriter Effect (打字效果)
|
# Typewriter Effect (打字效果)
|
||||||
effect: true
|
effect: true
|
||||||
|
# Effect Speed Options (打字效果速度參數)
|
||||||
|
startDelay: 300 # time before typing starts in milliseconds
|
||||||
|
typeSpeed: 150 # type speed in milliseconds
|
||||||
|
backSpeed: 50 # backspacing speed in milliseconds
|
||||||
# loop (循環打字)
|
# loop (循環打字)
|
||||||
loop: true
|
loop: true
|
||||||
# source 調用第三方服務
|
# source 調用第三方服務
|
||||||
@@ -617,7 +640,14 @@ subtitle:
|
|||||||
sub:
|
sub:
|
||||||
|
|
||||||
# Loading Animation (加載動畫)
|
# Loading Animation (加載動畫)
|
||||||
preloader: false
|
preloader:
|
||||||
|
enable: false
|
||||||
|
# source
|
||||||
|
# 1. fullpage-loading
|
||||||
|
# 2. pace (progress bar)
|
||||||
|
source: 1
|
||||||
|
# pace theme (see https://codebyzach.github.io/pace/)
|
||||||
|
pace_css_url:
|
||||||
|
|
||||||
# aside (側邊欄)
|
# aside (側邊欄)
|
||||||
# --------------------------------------
|
# --------------------------------------
|
||||||
@@ -827,7 +857,16 @@ lazyload:
|
|||||||
|
|
||||||
# Open graph meta tags
|
# Open graph meta tags
|
||||||
# https://developers.facebook.com/docs/sharing/webmasters/
|
# https://developers.facebook.com/docs/sharing/webmasters/
|
||||||
Open_Graph_meta: true
|
Open_Graph_meta:
|
||||||
|
enable: true
|
||||||
|
option:
|
||||||
|
# twitter_card:
|
||||||
|
# twitter_image:
|
||||||
|
# twitter_id:
|
||||||
|
# twitter_site:
|
||||||
|
# google_plus:
|
||||||
|
# fb_admins:
|
||||||
|
# fb_app_id:
|
||||||
|
|
||||||
# Add the vendor prefixes to ensure compatibility
|
# Add the vendor prefixes to ensure compatibility
|
||||||
css_prefix: true
|
css_prefix: true
|
||||||
@@ -912,3 +951,5 @@ CDN:
|
|||||||
# prismjs_js:
|
# prismjs_js:
|
||||||
# prismjs_lineNumber_js:
|
# prismjs_lineNumber_js:
|
||||||
# prismjs_autoloader:
|
# prismjs_autoloader:
|
||||||
|
# artalk_js:
|
||||||
|
# artalk_css:
|
||||||
@@ -30,9 +30,6 @@ div
|
|||||||
else if theme.local_search.enable
|
else if theme.local_search.enable
|
||||||
script(src=url_for(theme.asset.local_search))
|
script(src=url_for(theme.asset.local_search))
|
||||||
|
|
||||||
if theme.preloader
|
|
||||||
!= partial("includes/loading/loading-js", {}, { cache: true })
|
|
||||||
|
|
||||||
.js-pjax
|
.js-pjax
|
||||||
if needLoadCountJs
|
if needLoadCountJs
|
||||||
!= partial("includes/third-party/card-post-count/index", {}, { cache: true })
|
!= partial("includes/third-party/card-post-count/index", {}, { cache: true })
|
||||||
|
|||||||
@@ -1,19 +1,12 @@
|
|||||||
- var pageTitle
|
- var pageTitle
|
||||||
- if (is_archive()) pageTitle = fragment_cache('findArchivesTitle', function(){return findArchivesTitle(theme.menu);})
|
- is_archive() ? page.title = findArchivesTitle(page, theme.menu, date) : ''
|
||||||
- else if (is_tag()) pageTitle = _p('page.tag') + ': ' + page.tag
|
- if (is_tag()) pageTitle = _p('page.tag') + ': ' + page.tag
|
||||||
- else if (is_category()) pageTitle = _p('page.category') + ': ' + page.category
|
- else if (is_category()) pageTitle = _p('page.category') + ': ' + page.category
|
||||||
- else if (is_month()) pageTitle += ': ' + page.month + '/' + page.year
|
|
||||||
- else if (is_year()) pageTitle += ': ' + page.year
|
|
||||||
- else if (is_current('/404.html', [strict])) pageTitle = _p('error404')
|
- else if (is_current('/404.html', [strict])) pageTitle = _p('error404')
|
||||||
- else pageTitle = page.title || config.title || ''
|
- else pageTitle = page.title || config.title || ''
|
||||||
|
|
||||||
- var isSubtitle = config.subtitle ? ' - ' + config.subtitle : ''
|
- var isSubtitle = config.subtitle ? ' - ' + config.subtitle : ''
|
||||||
- var tabTitle = is_home() || !pageTitle ? config.title + isSubtitle : pageTitle + ' | ' + config.title
|
- var tabTitle = is_home() || !pageTitle ? config.title + isSubtitle : pageTitle + ' | ' + config.title
|
||||||
|
|
||||||
- var pageKeywords
|
|
||||||
- if (page.keywords) pageKeywords = Array.isArray(page.keywords) ? (page.keywords).join(',') : ([]).join(',') || page.keywords
|
|
||||||
- else if (page.tags && page.tags.length) pageKeywords = page.tags.data.map(function(tag) {return tag.name;}).join(',')
|
|
||||||
- else pageKeywords = Array.isArray(config.keywords) ? (config.keywords).join(','): ([]).join(',') || config.keywords
|
|
||||||
- var pageAuthor = config.email ? config.author + ',' + config.email : config.author
|
- var pageAuthor = config.email ? config.author + ',' + config.email : config.author
|
||||||
- var pageCopyright = config.copyright || config.author
|
- var pageCopyright = config.copyright || config.author
|
||||||
- var themeColorLight = theme.theme_color && theme.theme_color.enable && theme.theme_color.meta_theme_color_light || '#ffffff'
|
- var themeColorLight = theme.theme_color && theme.theme_color.enable && theme.theme_color.meta_theme_color_light || '#ffffff'
|
||||||
@@ -24,8 +17,6 @@ meta(charset='UTF-8')
|
|||||||
meta(http-equiv="X-UA-Compatible" content="IE=edge")
|
meta(http-equiv="X-UA-Compatible" content="IE=edge")
|
||||||
meta(name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no")
|
meta(name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no")
|
||||||
title= tabTitle
|
title= tabTitle
|
||||||
if pageKeywords
|
|
||||||
meta(name="keywords" content=pageKeywords)
|
|
||||||
meta(name="author" content=pageAuthor)
|
meta(name="author" content=pageAuthor)
|
||||||
meta(name="copyright" content=pageCopyright)
|
meta(name="copyright" content=pageCopyright)
|
||||||
meta(name ="format-detection" content="telephone=no")
|
meta(name ="format-detection" content="telephone=no")
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
if theme.Open_Graph_meta
|
if theme.Open_Graph_meta.enable
|
||||||
- let contentType = is_post() ? 'article' : 'website'
|
-
|
||||||
- let metaImage = (page.cover || theme.avatar.img) ? full_url_for(page.cover || theme.avatar.img) : ''
|
let ogOption = Object.assign({
|
||||||
- let fb_appId = theme.facebook_comments.app_id || ''
|
type: is_post() ? 'article' : 'website',
|
||||||
- let fb_admins = theme.facebook_comments.user_id || ''
|
image: (page.cover || theme.avatar.img) ? full_url_for(page.cover || theme.avatar.img) : '',
|
||||||
|
fb_admins: theme.facebook_comments.user_id || '',
|
||||||
!= open_graph({type: contentType, image: metaImage, fb_admins: fb_admins, fb_app_id: fb_appId})
|
fb_app_id: theme.facebook_comments.app_id || '',
|
||||||
|
}, theme.Open_Graph_meta.option)
|
||||||
|
-
|
||||||
|
!= open_graph(ogOption)
|
||||||
else
|
else
|
||||||
meta(name="description" content=page_description())
|
meta(name="description" content=page_description())
|
||||||
|
|
||||||
|
|||||||
@@ -120,5 +120,5 @@ script.
|
|||||||
},
|
},
|
||||||
isPhotoFigcaption: !{theme.photofigcaption},
|
isPhotoFigcaption: !{theme.photofigcaption},
|
||||||
islazyload: !{theme.lazyload.enable},
|
islazyload: !{theme.lazyload.enable},
|
||||||
isAnchor: !{theme.anchor}
|
isAnchor: !{theme.anchor.auto_update}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ if !theme.disable_top_img && page.top_img !== false
|
|||||||
if top_img !== false
|
if top_img !== false
|
||||||
- var imgSource = top_img && top_img.indexOf('/') !== -1 ? `background-image: url('${url_for(top_img)}')` : `background: ${top_img}`
|
- var imgSource = top_img && top_img.indexOf('/') !== -1 ? `background-image: url('${url_for(top_img)}')` : `background: ${top_img}`
|
||||||
- var bg_img = top_img ? imgSource : ''
|
- var bg_img = top_img ? imgSource : ''
|
||||||
- var site_title = is_archive() ? findArchivesTitle(page, theme.menu, date) : page.title || page.tag || page.category || config.title
|
- var site_title = page.title || page.tag || page.category || config.title
|
||||||
- var isHomeClass = is_home() ? 'full_page' : 'not-home-page'
|
- var isHomeClass = is_home() ? 'full_page' : 'not-home-page'
|
||||||
- is_post() ? isHomeClass = 'post-bg' : isHomeClass
|
- is_post() ? isHomeClass = 'post-bg' : isHomeClass
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
block
|
block
|
||||||
|
|
||||||
- const commentUse = comments.use
|
- const commentUse = comments.use
|
||||||
if commentUse && !comments.lazyload
|
if page.comments !== false && commentUse && !comments.lazyload
|
||||||
if commentUse[0] === 'Valine' && theme.valine.visitor
|
if commentUse[0] === 'Valine' && theme.valine.visitor
|
||||||
+pvBlock(url_for(page.path),'leancloud_visitors',page.title)
|
+pvBlock(url_for(page.path),'leancloud_visitors',page.title)
|
||||||
span.leancloud-visitors-count
|
span.leancloud-visitors-count
|
||||||
@@ -75,6 +75,10 @@
|
|||||||
+pvBlock('','','')
|
+pvBlock('','','')
|
||||||
span#twikoo_visitors
|
span#twikoo_visitors
|
||||||
i.fa-solid.fa-spinner.fa-spin
|
i.fa-solid.fa-spinner.fa-spin
|
||||||
|
else if commentUse[0] === 'Artalk' && theme.artalk.visitor
|
||||||
|
+pvBlock('','','')
|
||||||
|
span#ArtalkPV
|
||||||
|
i.fa-solid.fa-spinner.fa-spin
|
||||||
else if theme.busuanzi.page_pv
|
else if theme.busuanzi.page_pv
|
||||||
+pvBlock('','post-meta-pv-cv','')
|
+pvBlock('','post-meta-pv-cv','')
|
||||||
span#busuanzi_value_page_pv
|
span#busuanzi_value_page_pv
|
||||||
@@ -130,9 +134,13 @@
|
|||||||
+countBlock
|
+countBlock
|
||||||
a(href=url_for(page.path) + '#post-comment')
|
a(href=url_for(page.path) + '#post-comment')
|
||||||
span.fb-comments-count(data-href=urlNoIndex())
|
span.fb-comments-count(data-href=urlNoIndex())
|
||||||
i.fa-solid.fa-spinner.fa-spin
|
|
||||||
when 'Remark42'
|
when 'Remark42'
|
||||||
+countBlock
|
+countBlock
|
||||||
a(href=url_for(page.path) + '#post-comment')
|
a(href=url_for(page.path) + '#post-comment')
|
||||||
span.remark42__counter(data-url=urlNoIndex())
|
span.remark42__counter(data-url=urlNoIndex())
|
||||||
i.fa-solid.fa-spinner.fa-spin
|
i.fa-solid.fa-spinner.fa-spin
|
||||||
|
when 'Artalk'
|
||||||
|
+countBlock
|
||||||
|
a(href=url_for(page.path) + '#post-comment')
|
||||||
|
span.artalk-count
|
||||||
|
i.fa-solid.fa-spinner.fa-spin
|
||||||
@@ -8,8 +8,8 @@ html(lang=config.language data-theme=theme.display_mode class=htmlClassHideAside
|
|||||||
head
|
head
|
||||||
include ./head.pug
|
include ./head.pug
|
||||||
body
|
body
|
||||||
if theme.preloader
|
if theme.preloader.enable
|
||||||
!=partial('includes/loading/loading', {}, {cache: true})
|
!=partial('includes/loading/index', {}, {cache: true})
|
||||||
|
|
||||||
if theme.background
|
if theme.background
|
||||||
#web_bg
|
#web_bg
|
||||||
|
|||||||
28
layout/includes/loading/fullpage-loading.pug
Normal file
28
layout/includes/loading/fullpage-loading.pug
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#loading-box
|
||||||
|
.loading-left-bg
|
||||||
|
.loading-right-bg
|
||||||
|
.spinner-box
|
||||||
|
.configure-border-1
|
||||||
|
.configure-core
|
||||||
|
.configure-border-2
|
||||||
|
.configure-core
|
||||||
|
.loading-word= _p('loading')
|
||||||
|
|
||||||
|
script.
|
||||||
|
const preloader = {
|
||||||
|
endLoading: () => {
|
||||||
|
document.body.style.overflow = 'auto';
|
||||||
|
document.getElementById('loading-box').classList.add("loaded")
|
||||||
|
},
|
||||||
|
initLoading: () => {
|
||||||
|
document.body.style.overflow = '';
|
||||||
|
document.getElementById('loading-box').classList.remove("loaded")
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
window.addEventListener('load',()=> { preloader.endLoading() })
|
||||||
|
|
||||||
|
if (!{theme.pjax && theme.pjax.enable}) {
|
||||||
|
document.addEventListener('pjax:send', () => { preloader.initLoading() })
|
||||||
|
document.addEventListener('pjax:complete', () => { preloader.endLoading() })
|
||||||
|
}
|
||||||
4
layout/includes/loading/index.pug
Normal file
4
layout/includes/loading/index.pug
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
if theme.preloader.source === 1
|
||||||
|
include ./fullpage-loading.pug
|
||||||
|
else
|
||||||
|
include ./pace.pug
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
script.
|
|
||||||
var preloader = {
|
|
||||||
endLoading: () => {
|
|
||||||
document.body.style.overflow = 'auto';
|
|
||||||
document.getElementById('loading-box').classList.add("loaded")
|
|
||||||
},
|
|
||||||
initLoading: () => {
|
|
||||||
document.body.style.overflow = '';
|
|
||||||
document.getElementById('loading-box').classList.remove("loaded")
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
window.addEventListener('load',preloader.endLoading())
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#loading-box
|
|
||||||
.loading-left-bg
|
|
||||||
.loading-right-bg
|
|
||||||
.spinner-box
|
|
||||||
.configure-border-1
|
|
||||||
.configure-core
|
|
||||||
.configure-border-2
|
|
||||||
.configure-core
|
|
||||||
.loading-word= _p('loading')
|
|
||||||
2
layout/includes/loading/pace.pug
Normal file
2
layout/includes/loading/pace.pug
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
link(rel="stylesheet", href=url_for(theme.preloader.pace_css_url || theme.asset.pace_default_css))
|
||||||
|
script(src=url_for(theme.asset.pace_js))
|
||||||
@@ -96,12 +96,16 @@ mixin postUI(posts)
|
|||||||
+countBlockInIndex
|
+countBlockInIndex
|
||||||
a(href=url_for(link) + '#post-comment')
|
a(href=url_for(link) + '#post-comment')
|
||||||
span.fb-comments-count(data-href=urlNoIndex(article.permalink))
|
span.fb-comments-count(data-href=urlNoIndex(article.permalink))
|
||||||
i.fa-solid.fa-spinner.fa-spin
|
|
||||||
when 'Remark42'
|
when 'Remark42'
|
||||||
+countBlockInIndex
|
+countBlockInIndex
|
||||||
a(href=url_for(link) + '#post-comment')
|
a(href=url_for(link) + '#post-comment')
|
||||||
span.remark42__counter(data-url=urlNoIndex(article.permalink))
|
span.remark42__counter(data-url=urlNoIndex(article.permalink))
|
||||||
i.fa-solid.fa-spinner.fa-spin
|
i.fa-solid.fa-spinner.fa-spin
|
||||||
|
when 'Artalk'
|
||||||
|
+countBlockInIndex
|
||||||
|
a(href=url_for(link) + '#post-comment')
|
||||||
|
span.artalk-count(data-page-key=url_for(link))
|
||||||
|
i.fa-solid.fa-spinner.fa-spin
|
||||||
|
|
||||||
//- Display the article introduction on homepage
|
//- Display the article introduction on homepage
|
||||||
case theme.index_post_content.method
|
case theme.index_post_content.method
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#article-container
|
#article-container
|
||||||
.flink
|
.flink
|
||||||
|
- let pageContent = page.content
|
||||||
if page.flink_url
|
if page.flink_url
|
||||||
script.
|
script.
|
||||||
(()=>{
|
(()=>{
|
||||||
@@ -63,6 +64,6 @@
|
|||||||
|
|
||||||
- result += `${className}${classDesc} <div class="flink-list">${listResult}</div>`
|
- result += `${className}${classDesc} <div class="flink-list">${listResult}</div>`
|
||||||
|
|
||||||
- page.content = result + page.content
|
- pageContent = result + pageContent
|
||||||
!= page.content
|
!= pageContent
|
||||||
|
|
||||||
|
|||||||
20
layout/includes/third-party/card-post-count/artalk.pug
vendored
Normal file
20
layout/includes/third-party/card-post-count/artalk.pug
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
- const { server, site } = theme.artalk
|
||||||
|
|
||||||
|
script.
|
||||||
|
(() => {
|
||||||
|
const getArtalkCount = () => {
|
||||||
|
const runWidget = () => {
|
||||||
|
Artalk.LoadCountWidget({
|
||||||
|
server: '!{server}',
|
||||||
|
site: '!{site}',
|
||||||
|
countEl: '.artalk-count'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof Artalk === 'function') runWidget()
|
||||||
|
else getScript('!{theme.asset.artalk_js}').then(runWidget)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
window.pjax ? getArtalkCount() : window.addEventListener('load', getArtalkCount)
|
||||||
|
})()
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
|
- const fbSDKVer = 'v15.0'
|
||||||
|
- const fbSDK = theme.messenger.enable ? `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk/xfbml.customerchat.js#xfbml=1&version=${fbSDKVer}` : `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk.js#xfbml=1&version=${fbSDKVer}`
|
||||||
|
|
||||||
script.
|
script.
|
||||||
(()=>{
|
(()=>{
|
||||||
function loadFBComment () {
|
function loadFBComment () {
|
||||||
if (typeof FB === 'object') FB.XFBML.parse()
|
if (typeof FB === 'object') FB.XFBML.parse(document.getElementById('recent-posts'))
|
||||||
else {
|
else {
|
||||||
let ele = document.createElement('script')
|
let ele = document.createElement('script')
|
||||||
ele.setAttribute('src','https://connect.facebook.net/!{theme.facebook_comments.lang}/sdk.js#xfbml=1&version=v9.0')
|
ele.setAttribute('src','!{fbSDK}')
|
||||||
ele.setAttribute('async', 'true')
|
ele.setAttribute('async', 'true')
|
||||||
ele.setAttribute('defer', 'true')
|
ele.setAttribute('defer', 'true')
|
||||||
ele.setAttribute('crossorigin', 'anonymous')
|
ele.setAttribute('crossorigin', 'anonymous')
|
||||||
|
|||||||
@@ -12,3 +12,5 @@ case theme.comments.use[0]
|
|||||||
include ./fb.pug
|
include ./fb.pug
|
||||||
when 'Remark42'
|
when 'Remark42'
|
||||||
include ./remark42.pug
|
include ./remark42.pug
|
||||||
|
when 'Artalk'
|
||||||
|
include ./artalk.pug
|
||||||
2
layout/includes/third-party/chat/index.pug
vendored
2
layout/includes/third-party/chat/index.pug
vendored
@@ -8,3 +8,5 @@ else if theme.gitter && theme.gitter.enable
|
|||||||
include ./gitter.pug
|
include ./gitter.pug
|
||||||
else if theme.crisp && theme.crisp.enable
|
else if theme.crisp && theme.crisp.enable
|
||||||
include ./crisp.pug
|
include ./crisp.pug
|
||||||
|
else if theme.messenger && theme.messenger.enable
|
||||||
|
include ./messenger.pug
|
||||||
42
layout/includes/third-party/chat/messenger.pug
vendored
Normal file
42
layout/includes/third-party/chat/messenger.pug
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
- let { pageID, lang } = theme.messenger
|
||||||
|
- lang = theme.comments.use && theme.comments.use.includes('Facebook Comments') ? theme.facebook_comments.lang : lang
|
||||||
|
|
||||||
|
#fb-customer-chat.fb-customerchat(page_id=pageID attribution='biz_inbox')
|
||||||
|
|
||||||
|
script.
|
||||||
|
document.getElementById('fb-root') ? '' : document.body.insertAdjacentHTML('afterend', '<div id="fb-root"></div>')
|
||||||
|
|
||||||
|
window.fbAsyncInit = function() {
|
||||||
|
FB.init({
|
||||||
|
xfbml: true,
|
||||||
|
version: 'v15.0'
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
(function(d, s, id) {
|
||||||
|
var js, fjs = d.getElementsByTagName(s)[0];
|
||||||
|
if (d.getElementById(id)) return;
|
||||||
|
js = d.createElement(s); js.id = id;
|
||||||
|
js.src = 'https://connect.facebook.net/!{lang}/sdk/xfbml.customerchat.js';
|
||||||
|
fjs.parentNode.insertBefore(js, fjs);
|
||||||
|
}(document, 'script', 'facebook-jssdk'));
|
||||||
|
|
||||||
|
if (!{theme.chat_btn}) {
|
||||||
|
var chatBtnFn = () => {
|
||||||
|
var chatBtn = document.getElementById("chat_btn")
|
||||||
|
chatBtn.addEventListener("click", function(){
|
||||||
|
FB.CustomerChat.show();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
chatBtnFn()
|
||||||
|
} else {
|
||||||
|
if (!{theme.chat_hide_show}) {
|
||||||
|
function chatBtnHide () {
|
||||||
|
FB.CustomerChat.hide()
|
||||||
|
}
|
||||||
|
function chatBtnShow () {
|
||||||
|
FB.CustomerChat.show(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
45
layout/includes/third-party/comments/artalk.pug
vendored
Normal file
45
layout/includes/third-party/comments/artalk.pug
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
- const { server, site, option } = theme.artalk
|
||||||
|
|
||||||
|
script.
|
||||||
|
function addArtalkSource () {
|
||||||
|
const ele = document.createElement('link')
|
||||||
|
ele.rel = 'stylesheet'
|
||||||
|
ele.href= '!{theme.asset.artalk_css}'
|
||||||
|
document.getElementsByTagName('head')[0].appendChild(ele)
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadArtalk () {
|
||||||
|
function initArtalk () {
|
||||||
|
window.artalkItem = new Artalk(Object.assign({
|
||||||
|
el: '#artalk-wrap',
|
||||||
|
server: '!{server}',
|
||||||
|
site: '!{site}',
|
||||||
|
pageKey: location.pathname,
|
||||||
|
darkMode: document.documentElement.getAttribute('data-theme') === 'dark',
|
||||||
|
countEl: '.artalk-count'
|
||||||
|
},!{JSON.stringify(option)}))
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof window.artalkItem === 'object') setTimeout(()=>{initArtalk()},200)
|
||||||
|
else {
|
||||||
|
addArtalkSource()
|
||||||
|
typeof Artalk !== 'function' ? getScript('!{theme.asset.artalk_js}').then(initArtalk)
|
||||||
|
: setTimeout(()=>{initArtalk()},200)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById('darkmode').addEventListener('click',()=> {
|
||||||
|
if (typeof window.artalkItem !== 'object') return
|
||||||
|
let isDark = document.documentElement.getAttribute('data-theme') === 'dark'
|
||||||
|
window.artalkItem.setDarkMode(!isDark)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if ('!{theme.comments.use[0]}' === 'Artalk' || !!{theme.comments.lazyload}) {
|
||||||
|
if (!{theme.comments.lazyload}) btf.loadComment(document.getElementById('artalk-wrap'), loadArtalk)
|
||||||
|
else loadArtalk()
|
||||||
|
} else {
|
||||||
|
function loadOtherComment () {
|
||||||
|
loadArtalk()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,16 +1,26 @@
|
|||||||
#fb-root
|
- const fbSDKVer = 'v15.0'
|
||||||
|
- const fbSDK = theme.messenger.enable ? `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk/xfbml.customerchat.js#xfbml=1&version=${fbSDKVer}` : `https://connect.facebook.net/${theme.facebook_comments.lang}/sdk.js#xfbml=1&version=${fbSDKVer}`
|
||||||
|
|
||||||
script.
|
script.
|
||||||
function loadFBComment () {
|
function loadFBComment () {
|
||||||
var themeNow = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light'
|
document.getElementById('fb-root') ? '' : document.body.insertAdjacentHTML('afterend', '<div id="fb-root"></div>')
|
||||||
document.getElementsByClassName('fb-comments')[0].setAttribute('data-colorscheme',themeNow)
|
|
||||||
|
|
||||||
if (typeof FB === 'object') FB.XFBML.parse()
|
const themeNow = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light'
|
||||||
|
const $fbComment = document.getElementsByClassName('fb-comments')[0]
|
||||||
|
$fbComment.setAttribute('data-colorscheme',themeNow)
|
||||||
|
$fbComment.setAttribute('data-href', '!{urlNoIndex(page.permalink)}')
|
||||||
|
|
||||||
|
if (typeof FB === 'object') {
|
||||||
|
FB.XFBML.parse(document.getElementsByClassName('post-meta-commentcount')[0])
|
||||||
|
FB.XFBML.parse(document.getElementById('post-comment'))
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
let ele = document.createElement('script')
|
let ele = document.createElement('script')
|
||||||
ele.setAttribute('src','https://connect.facebook.net/!{theme.facebook_comments.lang}/sdk.js#xfbml=1&version=v13.0&appId=!{theme.facebook_comments.app_id}&autoLogAppEvents=1')
|
ele.setAttribute('src','!{fbSDK}')
|
||||||
ele.setAttribute('async', 'true')
|
ele.setAttribute('async', 'true')
|
||||||
ele.setAttribute('defer', 'true')
|
ele.setAttribute('defer', 'true')
|
||||||
ele.setAttribute('crossorigin', 'anonymous')
|
ele.setAttribute('crossorigin', 'anonymous')
|
||||||
|
ele.setAttribute('id', 'facebook-jssdk')
|
||||||
document.getElementById('fb-root').insertAdjacentElement('afterbegin',ele)
|
document.getElementById('fb-root').insertAdjacentElement('afterbegin',ele)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,3 +42,5 @@ hr
|
|||||||
data-width="100%")
|
data-width="100%")
|
||||||
when 'Remark42'
|
when 'Remark42'
|
||||||
#remark42
|
#remark42
|
||||||
|
when 'Artalk'
|
||||||
|
#artalk-wrap
|
||||||
|
|||||||
4
layout/includes/third-party/comments/js.pug
vendored
4
layout/includes/third-party/comments/js.pug
vendored
@@ -19,6 +19,8 @@ each name in theme.comments.use
|
|||||||
when 'Giscus'
|
when 'Giscus'
|
||||||
!=partial('includes/third-party/comments/giscus', {}, {cache: true})
|
!=partial('includes/third-party/comments/giscus', {}, {cache: true})
|
||||||
when 'Facebook Comments'
|
when 'Facebook Comments'
|
||||||
!=partial('includes/third-party/comments/facebook_comments', {}, {cache: true})
|
include ./facebook_comments.pug
|
||||||
when 'Remark42'
|
when 'Remark42'
|
||||||
!=partial('includes/third-party/comments/remark42', {}, {cache: true})
|
!=partial('includes/third-party/comments/remark42', {}, {cache: true})
|
||||||
|
when 'Artalk'
|
||||||
|
!=partial('includes/third-party/comments/artalk', {}, {cache: true})
|
||||||
82
layout/includes/third-party/newest-comments/artalk.pug
vendored
Normal file
82
layout/includes/third-party/newest-comments/artalk.pug
vendored
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
- const { server, option } = theme.artalk
|
||||||
|
- const avatarCdn = option !== null && option.gravatar ? option.gravatar.mirror : 'https://sdn.geekzu.org/avatar/'
|
||||||
|
- const avatarDefault = option !== null && option.gravatar ? option.gravatar.default : 'mp'
|
||||||
|
|
||||||
|
script.
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
const changeContent = (content) => {
|
||||||
|
if (content === '') return content
|
||||||
|
|
||||||
|
content = content.replace(/<img.*?src="(.*?)"?[^\>]+>/ig, '[!{_p("aside.card_newest_comments.image")}]') // replace image link
|
||||||
|
content = content.replace(/<a[^>]+?href=["']?([^"']+)["']?[^>]*>([^<]+)<\/a>/gi, '[!{_p("aside.card_newest_comments.link")}]') // replace url
|
||||||
|
content = content.replace(/<pre><code>.*?<\/pre>/gi, '[!{_p("aside.card_newest_comments.code")}]') // replace code
|
||||||
|
content = content.replace(/<[^>]+>/g,"") // remove html tag
|
||||||
|
|
||||||
|
if (content.length > 150) {
|
||||||
|
content = content.substring(0,150) + '...'
|
||||||
|
}
|
||||||
|
return content
|
||||||
|
}
|
||||||
|
|
||||||
|
const generateHtml = array => {
|
||||||
|
let result = ''
|
||||||
|
|
||||||
|
if (array.length) {
|
||||||
|
for (let i = 0; i < array.length; i++) {
|
||||||
|
result += '<div class=\'aside-list-item\'>'
|
||||||
|
|
||||||
|
if (!{theme.newest_comments.avatar}) {
|
||||||
|
const name = '!{theme.lazyload.enable ? "data-lazy-src" : "src"}'
|
||||||
|
result += `<a href='${array[i].url}' class='thumbnail'><img ${name}='${array[i].avatar}' alt='${array[i].nick}'></a>`
|
||||||
|
}
|
||||||
|
|
||||||
|
result += `<div class='content'>
|
||||||
|
<a class='comment' href='${array[i].url}' title='${array[i].content}'>${array[i].content}</a>
|
||||||
|
<div class='name'><span>${array[i].nick} / </span><time datetime="${array[i].date}">${btf.diffDate(array[i].date, true)}</time></div>
|
||||||
|
</div></div>`
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result += '!{_p("aside.card_newest_comments.zero")}'
|
||||||
|
}
|
||||||
|
|
||||||
|
let $dom = document.querySelector('#card-newest-comments .aside-list')
|
||||||
|
$dom.innerHTML= result
|
||||||
|
window.lazyLoadInstance && window.lazyLoadInstance.update()
|
||||||
|
window.pjax && window.pjax.refresh($dom)
|
||||||
|
}
|
||||||
|
|
||||||
|
const getComment = () => {
|
||||||
|
fetch('!{server}/api/stat?type=latest_comments&limit=!{theme.newest_comments.limit}',{method: "POST"})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(d => {
|
||||||
|
const artalk = d.data.map(function (e) {
|
||||||
|
return {
|
||||||
|
'avatar': '!{avatarCdn}' + e.email_encrypted + '?d=!{avatarDefault}',
|
||||||
|
'content': changeContent(e.content_marked),
|
||||||
|
'nick': e.nick,
|
||||||
|
'url': e.page_url,
|
||||||
|
'date': e.date,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
saveToLocal.set('artalk-newest-comments', JSON.stringify(artalk), !{theme.newest_comments.storage}/(60*24))
|
||||||
|
generateHtml(artalk)
|
||||||
|
}).catch(e => {
|
||||||
|
const $dom = document.querySelector('#card-newest-comments .aside-list')
|
||||||
|
$dom.innerHTML= "!{_p('aside.card_newest_comments.error')}"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const newestCommentInit = () => {
|
||||||
|
if (document.querySelector('#card-newest-comments .aside-list')) {
|
||||||
|
const data = saveToLocal.get('artalk-newest-comments')
|
||||||
|
if (data) {
|
||||||
|
generateHtml(JSON.parse(data))
|
||||||
|
} else {
|
||||||
|
getComment()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
newestCommentInit()
|
||||||
|
document.addEventListener('pjax:complete', newestCommentInit)
|
||||||
|
})
|
||||||
@@ -26,3 +26,5 @@ if use
|
|||||||
include ./github-issues.pug
|
include ./github-issues.pug
|
||||||
when 'Remark42'
|
when 'Remark42'
|
||||||
include ./remark42.pug
|
include ./remark42.pug
|
||||||
|
when 'Artalk'
|
||||||
|
include ./artalk.pug
|
||||||
@@ -66,7 +66,7 @@ script.
|
|||||||
|
|
||||||
const newestCommentInit = () => {
|
const newestCommentInit = () => {
|
||||||
if (document.querySelector('#card-newest-comments .aside-list')) {
|
if (document.querySelector('#card-newest-comments .aside-list')) {
|
||||||
const data = saveToLocal.get('valine-newest-comments')
|
const data = saveToLocal.get('remark42-newest-comments')
|
||||||
if (data) {
|
if (data) {
|
||||||
generateHtml(JSON.parse(data))
|
generateHtml(JSON.parse(data))
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
5
layout/includes/third-party/pjax.pug
vendored
5
layout/includes/third-party/pjax.pug
vendored
@@ -7,7 +7,7 @@ if theme.pjax.exclude
|
|||||||
|
|
||||||
- let choose = theme.comments.use
|
- let choose = theme.comments.use
|
||||||
if choose
|
if choose
|
||||||
if theme.Open_Graph_meta && (choose.includes('Livere') || choose.includes('Utterances') || choose.includes('Giscus'))
|
if theme.Open_Graph_meta.enable && (choose.includes('Livere') || choose.includes('Utterances') || choose.includes('Giscus'))
|
||||||
- pjaxSelectors.unshift('meta[property="og:image"]', 'meta[property="og:title"]', 'meta[property="og:url"]')
|
- pjaxSelectors.unshift('meta[property="og:image"]', 'meta[property="og:title"]', 'meta[property="og:url"]')
|
||||||
if choose.includes('Utterances') || choose.includes('Giscus')
|
if choose.includes('Utterances') || choose.includes('Giscus')
|
||||||
- pjaxSelectors.unshift('link[rel="canonical"]')
|
- pjaxSelectors.unshift('link[rel="canonical"]')
|
||||||
@@ -30,7 +30,6 @@ script.
|
|||||||
window.tocScrollFn && window.removeEventListener('scroll', window.tocScrollFn)
|
window.tocScrollFn && window.removeEventListener('scroll', window.tocScrollFn)
|
||||||
window.scrollCollect && window.removeEventListener('scroll', scrollCollect)
|
window.scrollCollect && window.removeEventListener('scroll', scrollCollect)
|
||||||
|
|
||||||
typeof preloader === 'object' && preloader.initLoading()
|
|
||||||
document.getElementById('rightside').style.cssText = "opacity: ''; transform: ''"
|
document.getElementById('rightside').style.cssText = "opacity: ''; transform: ''"
|
||||||
|
|
||||||
if (window.aplayers) {
|
if (window.aplayers) {
|
||||||
@@ -76,8 +75,6 @@ script.
|
|||||||
|
|
||||||
// prismjs
|
// prismjs
|
||||||
typeof Prism === 'object' && Prism.highlightAll()
|
typeof Prism === 'object' && Prism.highlightAll()
|
||||||
|
|
||||||
typeof preloader === 'object' && preloader.endLoading()
|
|
||||||
})
|
})
|
||||||
|
|
||||||
document.addEventListener('pjax:error', (e) => {
|
document.addEventListener('pjax:error', (e) => {
|
||||||
|
|||||||
26
layout/includes/third-party/subtitle.pug
vendored
26
layout/includes/third-party/subtitle.pug
vendored
@@ -1,4 +1,4 @@
|
|||||||
- const { effect,loop,source,sub } = theme.subtitle
|
- const { effect,loop,source,sub,startDelay,typeSpeed,backSpeed } = theme.subtitle
|
||||||
- let subContent = sub || new Array()
|
- let subContent = sub || new Array()
|
||||||
|
|
||||||
case source
|
case source
|
||||||
@@ -14,10 +14,10 @@ case source
|
|||||||
sub.unshift(data.hitokoto, from)
|
sub.unshift(data.hitokoto, from)
|
||||||
window.typed = new Typed('#subtitle', {
|
window.typed = new Typed('#subtitle', {
|
||||||
strings: sub,
|
strings: sub,
|
||||||
startDelay: 300,
|
startDelay: !{startDelay},
|
||||||
typeSpeed: 150,
|
typeSpeed: !{typeSpeed},
|
||||||
loop: !{loop},
|
loop: !{loop},
|
||||||
backSpeed: 50,
|
backSpeed: !{backSpeed},
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
document.getElementById('subtitle').innerHTML = data.hitokoto
|
document.getElementById('subtitle').innerHTML = data.hitokoto
|
||||||
@@ -46,10 +46,10 @@ case source
|
|||||||
sub.unshift(con, from)
|
sub.unshift(con, from)
|
||||||
window.typed = new Typed('#subtitle', {
|
window.typed = new Typed('#subtitle', {
|
||||||
strings: sub,
|
strings: sub,
|
||||||
startDelay: 300,
|
startDelay: !{startDelay},
|
||||||
typeSpeed: 150,
|
typeSpeed: !{typeSpeed},
|
||||||
loop: !{loop},
|
loop: !{loop},
|
||||||
backSpeed: 50,
|
backSpeed: !{backSpeed},
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
document.getElementById('subtitle').innerHTML = con
|
document.getElementById('subtitle').innerHTML = con
|
||||||
@@ -78,10 +78,10 @@ case source
|
|||||||
sub.unshift(content)
|
sub.unshift(content)
|
||||||
window.typed = new Typed('#subtitle', {
|
window.typed = new Typed('#subtitle', {
|
||||||
strings: sub,
|
strings: sub,
|
||||||
startDelay: 300,
|
startDelay: !{startDelay},
|
||||||
typeSpeed: 150,
|
typeSpeed: !{typeSpeed},
|
||||||
loop: !{loop},
|
loop: !{loop},
|
||||||
backSpeed: 50,
|
backSpeed: !{backSpeed},
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
document.getElementById('subtitle').innerHTML = result.data.content
|
document.getElementById('subtitle').innerHTML = result.data.content
|
||||||
@@ -107,10 +107,10 @@ case source
|
|||||||
if (!{effect}) {
|
if (!{effect}) {
|
||||||
window.typed = new Typed("#subtitle", {
|
window.typed = new Typed("#subtitle", {
|
||||||
strings: !{JSON.stringify(subContent)},
|
strings: !{JSON.stringify(subContent)},
|
||||||
startDelay: 300,
|
startDelay: !{startDelay},
|
||||||
typeSpeed: 150,
|
typeSpeed: !{typeSpeed},
|
||||||
loop: !{loop},
|
loop: !{loop},
|
||||||
backSpeed: 50
|
backSpeed: !{backSpeed}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
document.getElementById("subtitle").innerHTML = '!{subContent[0]}'
|
document.getElementById("subtitle").innerHTML = '!{subContent[0]}'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hexo-theme-butterfly",
|
"name": "hexo-theme-butterfly",
|
||||||
"version": "4.3.0",
|
"version": "4.5.0",
|
||||||
"description": "A Simple and Card UI Design theme for Hexo",
|
"description": "A Simple and Card UI Design theme for Hexo",
|
||||||
"main": "package.json",
|
"main": "package.json",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
60
plugins.yml
60
plugins.yml
@@ -1,11 +1,11 @@
|
|||||||
algolia_search_v4:
|
algolia_search_v4:
|
||||||
name: algoliasearch
|
name: algoliasearch
|
||||||
file: dist/algoliasearch-lite.umd.js
|
file: dist/algoliasearch-lite.umd.js
|
||||||
version: 4.13.1
|
version: 4.14.2
|
||||||
instantsearch_v4:
|
instantsearch_v4:
|
||||||
name: instantsearch.js
|
name: instantsearch.js
|
||||||
file: dist/instantsearch.production.min.js
|
file: dist/instantsearch.production.min.js
|
||||||
version: 4.42.0
|
version: 4.48.1
|
||||||
pjax:
|
pjax:
|
||||||
name: pjax
|
name: pjax
|
||||||
file: pjax.min.js
|
file: pjax.min.js
|
||||||
@@ -13,11 +13,11 @@ pjax:
|
|||||||
gitalk:
|
gitalk:
|
||||||
name: gitalk
|
name: gitalk
|
||||||
file: dist/gitalk.min.js
|
file: dist/gitalk.min.js
|
||||||
version: 1.7.2
|
version: 1.8.0
|
||||||
gitalk_css:
|
gitalk_css:
|
||||||
name: gitalk
|
name: gitalk
|
||||||
file: dist/gitalk.css
|
file: dist/gitalk.css
|
||||||
version: 1.7.2
|
version: 1.8.0
|
||||||
blueimp_md5:
|
blueimp_md5:
|
||||||
name: blueimp-md5
|
name: blueimp-md5
|
||||||
file: js/md5.min.js
|
file: js/md5.min.js
|
||||||
@@ -25,29 +25,29 @@ blueimp_md5:
|
|||||||
valine:
|
valine:
|
||||||
name: valine
|
name: valine
|
||||||
file: dist/Valine.min.js
|
file: dist/Valine.min.js
|
||||||
version: 1.4.18
|
version: 1.5.1
|
||||||
disqusjs:
|
disqusjs:
|
||||||
name: disqusjs
|
name: disqusjs
|
||||||
file: dist/browser/disqusjs.es2015.umd.min.js
|
file: dist/browser/disqusjs.es2015.umd.min.js
|
||||||
version: 3.0.1
|
version: 3.0.2
|
||||||
disqusjs_css:
|
disqusjs_css:
|
||||||
name: disqusjs
|
name: disqusjs
|
||||||
file: dist/browser/styles/disqusjs.css
|
file: dist/browser/styles/disqusjs.css
|
||||||
version: 3.0.1
|
version: 3.0.2
|
||||||
twikoo:
|
twikoo:
|
||||||
name: twikoo
|
name: twikoo
|
||||||
file: dist/twikoo.all.min.js
|
file: dist/twikoo.all.min.js
|
||||||
version: 1.5.11
|
version: 1.6.7
|
||||||
waline_js:
|
waline_js:
|
||||||
name: '@waline/client'
|
name: '@waline/client'
|
||||||
file: dist/waline.js
|
file: dist/waline.js
|
||||||
other_name: waline
|
other_name: waline
|
||||||
version: 2.6.1
|
version: 2.13.0
|
||||||
waline_css:
|
waline_css:
|
||||||
name: '@waline/client'
|
name: '@waline/client'
|
||||||
file: dist/waline.css
|
file: dist/waline.css
|
||||||
other_name: waline
|
other_name: waline
|
||||||
version: 2.6.1
|
version: 2.13.0
|
||||||
sharejs:
|
sharejs:
|
||||||
name: butterfly-extsrc
|
name: butterfly-extsrc
|
||||||
file: sharejs/dist/js/social-share.min.js
|
file: sharejs/dist/js/social-share.min.js
|
||||||
@@ -64,16 +64,16 @@ katex:
|
|||||||
name: katex
|
name: katex
|
||||||
file: dist/katex.min.css
|
file: dist/katex.min.css
|
||||||
other_name: KaTeX
|
other_name: KaTeX
|
||||||
version: 0.16.0
|
version: 0.16.2
|
||||||
katex_copytex:
|
katex_copytex:
|
||||||
name: katex
|
name: katex
|
||||||
file: dist/contrib/copy-tex.min.js
|
file: dist/contrib/copy-tex.min.js
|
||||||
other_name: KaTeX
|
other_name: KaTeX
|
||||||
version: 0.16.0
|
version: 0.16.2
|
||||||
mermaid:
|
mermaid:
|
||||||
name: mermaid
|
name: mermaid
|
||||||
file: dist/mermaid.min.js
|
file: dist/mermaid.min.js
|
||||||
version: 9.1.2
|
version: 9.1.7
|
||||||
canvas_ribbon:
|
canvas_ribbon:
|
||||||
name: butterfly-extsrc
|
name: butterfly-extsrc
|
||||||
file: dist/canvas-ribbon.min.js
|
file: dist/canvas-ribbon.min.js
|
||||||
@@ -105,11 +105,11 @@ ClickShowText:
|
|||||||
lazyload:
|
lazyload:
|
||||||
name: vanilla-lazyload
|
name: vanilla-lazyload
|
||||||
file: dist/lazyload.iife.min.js
|
file: dist/lazyload.iife.min.js
|
||||||
version: 17.3.1
|
version: 17.8.3
|
||||||
instantpage:
|
instantpage:
|
||||||
name: instant.page
|
name: instant.page
|
||||||
file: instantpage.js
|
file: instantpage.js
|
||||||
version: 5.1.0
|
version: 5.1.1
|
||||||
typed:
|
typed:
|
||||||
name: typed.js
|
name: typed.js
|
||||||
file: lib/typed.min.js
|
file: lib/typed.min.js
|
||||||
@@ -121,12 +121,12 @@ pangu:
|
|||||||
fancybox_css_v4:
|
fancybox_css_v4:
|
||||||
name: '@fancyapps/ui'
|
name: '@fancyapps/ui'
|
||||||
file: dist/fancybox.css
|
file: dist/fancybox.css
|
||||||
version: 4.0.27
|
version: 4.0.31
|
||||||
other_name: fancyapps-ui
|
other_name: fancyapps-ui
|
||||||
fancybox_v4:
|
fancybox_v4:
|
||||||
name: '@fancyapps/ui'
|
name: '@fancyapps/ui'
|
||||||
file: dist/fancybox.umd.js
|
file: dist/fancybox.umd.js
|
||||||
version: 4.0.27
|
version: 4.0.31
|
||||||
other_name: fancyapps-ui
|
other_name: fancyapps-ui
|
||||||
medium_zoom:
|
medium_zoom:
|
||||||
name: medium-zoom
|
name: medium-zoom
|
||||||
@@ -144,7 +144,7 @@ fontawesomeV6:
|
|||||||
name: '@fortawesome/fontawesome-free'
|
name: '@fortawesome/fontawesome-free'
|
||||||
file: css/all.min.css
|
file: css/all.min.css
|
||||||
other_name: font-awesome
|
other_name: font-awesome
|
||||||
version: 6.1.1
|
version: 6.2.0
|
||||||
flickr_justified_gallery_js:
|
flickr_justified_gallery_js:
|
||||||
name: flickr-justified-gallery
|
name: flickr-justified-gallery
|
||||||
file: dist/fjGallery.min.js
|
file: dist/fjGallery.min.js
|
||||||
@@ -169,14 +169,32 @@ prismjs_js:
|
|||||||
name: prismjs
|
name: prismjs
|
||||||
file: prism.js
|
file: prism.js
|
||||||
other_name: prism
|
other_name: prism
|
||||||
version: 1.28.0
|
version: 1.29.0
|
||||||
prismjs_lineNumber_js:
|
prismjs_lineNumber_js:
|
||||||
name: prismjs
|
name: prismjs
|
||||||
file: plugins/line-numbers/prism-line-numbers.min.js
|
file: plugins/line-numbers/prism-line-numbers.min.js
|
||||||
other_name: prism
|
other_name: prism
|
||||||
version: 1.28.0
|
version: 1.29.0
|
||||||
prismjs_autoloader:
|
prismjs_autoloader:
|
||||||
name: prismjs
|
name: prismjs
|
||||||
file: plugins/autoloader/prism-autoloader.min.js
|
file: plugins/autoloader/prism-autoloader.min.js
|
||||||
other_name: prism
|
other_name: prism
|
||||||
version: 1.28.0
|
version: 1.29.0
|
||||||
|
artalk_js:
|
||||||
|
name: artalk
|
||||||
|
file: dist/Artalk.js
|
||||||
|
version: 2.4.2
|
||||||
|
artalk_css:
|
||||||
|
name: artalk
|
||||||
|
file: dist/Artalk.css
|
||||||
|
version: 2.4.2
|
||||||
|
pace_js:
|
||||||
|
name: pace-js
|
||||||
|
other_name: pace
|
||||||
|
file: pace.min.js
|
||||||
|
version: 1.2.4
|
||||||
|
pace_default_css:
|
||||||
|
name: pace-js
|
||||||
|
other_name: pace
|
||||||
|
file: themes/blue/pace-theme-minimal.css
|
||||||
|
version: 1.2.4
|
||||||
|
|||||||
@@ -6,3 +6,12 @@ if hexo-config('chat_btn') == true && hexo-config('chatra.enable')
|
|||||||
height: 1px !important
|
height: 1px !important
|
||||||
opacity: 0 !important
|
opacity: 0 !important
|
||||||
pointer-events: none
|
pointer-events: none
|
||||||
|
|
||||||
|
if hexo-config('chat_btn') == true && hexo-config('messenger.enable')
|
||||||
|
.fb_dialog,
|
||||||
|
.fb-customerchat
|
||||||
|
visibility: hidden !important
|
||||||
|
width: 1px !important
|
||||||
|
height: 1px !important
|
||||||
|
opacity: 0 !important
|
||||||
|
pointer-events: none
|
||||||
@@ -301,10 +301,10 @@
|
|||||||
margin-top: 8px
|
margin-top: 8px
|
||||||
padding: 0
|
padding: 0
|
||||||
width: max-content
|
width: max-content
|
||||||
|
border-radius: 5px
|
||||||
background-color: var(--sidebar-bg)
|
background-color: var(--sidebar-bg)
|
||||||
box-shadow: 0 5px 20px -4px rgba($dark-black, .5)
|
box-shadow: 0 5px 20px -4px rgba($dark-black, .5)
|
||||||
animation: sub_menus .3s .1s ease both
|
animation: sub_menus .3s .1s ease both
|
||||||
border-radius: 5px
|
|
||||||
|
|
||||||
&:before
|
&:before
|
||||||
position: absolute
|
position: absolute
|
||||||
@@ -321,9 +321,13 @@
|
|||||||
background: var(--text-bg-hover)
|
background: var(--text-bg-hover)
|
||||||
|
|
||||||
&:first-child
|
&:first-child
|
||||||
border-radius: 5px 5px 0 0
|
border-top-left-radius: 5px
|
||||||
|
border-top-right-radius: 5px
|
||||||
|
|
||||||
&:last-child
|
&:last-child
|
||||||
border-radius: 0 0 5px 5px
|
border-bottom-right-radius: 5px
|
||||||
|
border-bottom-left-radius: 5px
|
||||||
|
|
||||||
a
|
a
|
||||||
display: inline-block
|
display: inline-block
|
||||||
padding: 8px 16px
|
padding: 8px 16px
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
if hexo-config('preloader')
|
if hexo-config('preloader.enable') && hexo-config('preloader.source') == 1
|
||||||
.loading-bg
|
.loading-bg
|
||||||
position: fixed
|
position: fixed
|
||||||
z-index: 1000
|
z-index: 1000
|
||||||
|
|||||||
@@ -102,21 +102,25 @@ beautify()
|
|||||||
font-family: Monaco, 'Ubuntu Mono', monospace
|
font-family: Monaco, 'Ubuntu Mono', monospace
|
||||||
line-height: 1em
|
line-height: 1em
|
||||||
|
|
||||||
if hexo-config('anchor')
|
if hexo-config('anchor.button.enable')
|
||||||
a.headerlink
|
a.headerlink
|
||||||
&:after
|
&:after
|
||||||
@extend .fontawesomeIcon
|
@extend .fontawesomeIcon
|
||||||
float: right
|
float: right
|
||||||
color: var(--headline-presudo)
|
color: var(--headline-presudo)
|
||||||
content: '\f0c1'
|
content: $archor-button-icon
|
||||||
font-size: .95em
|
font-size: .95em
|
||||||
opacity: 0
|
|
||||||
transition: all .3s
|
transition: all .3s
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
&:after
|
&:after
|
||||||
color: var(--pseudo-hover)
|
color: var(--pseudo-hover)
|
||||||
|
|
||||||
|
if !hexo-config('anchor.button.always_show')
|
||||||
|
a.headerlink
|
||||||
|
&:after
|
||||||
|
opacity: 0
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
h2,
|
h2,
|
||||||
h3,
|
h3,
|
||||||
|
|||||||
@@ -25,11 +25,8 @@
|
|||||||
--waline-theme-color: $button-bg
|
--waline-theme-color: $button-bg
|
||||||
--waline-active-color: $button-hover-color
|
--waline-active-color: $button-hover-color
|
||||||
|
|
||||||
.vuser
|
.wl-comment-actions > button:not(last-child)
|
||||||
transition: all .5s
|
padding-right: 4px
|
||||||
|
|
||||||
&:hover
|
|
||||||
transform: rotate(360deg)
|
|
||||||
|
|
||||||
if hexo-config('valine.bg')
|
if hexo-config('valine.bg')
|
||||||
#vcomment
|
#vcomment
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ $button-hover-color = $themeColorEnable && hexo-config('theme_color.button_hover
|
|||||||
$button-bg = $theme-color
|
$button-bg = $theme-color
|
||||||
$pseudo-hover = $button-hover-color
|
$pseudo-hover = $button-hover-color
|
||||||
// scrollbar
|
// scrollbar
|
||||||
$scrollbar-color= $themeColorEnable && hexo-config('theme_color.scrollbar_color') ? convert(hexo-config('theme_color.scrollbar_color')) : $theme-color
|
$scrollbar-color = $themeColorEnable && hexo-config('theme_color.scrollbar_color') ? convert(hexo-config('theme_color.scrollbar_color')) : $theme-color
|
||||||
// table
|
// table
|
||||||
$table-thead-bg = #99a9bf
|
$table-thead-bg = #99a9bf
|
||||||
// reward
|
// reward
|
||||||
@@ -181,3 +181,5 @@ $tab-button-active-bg = $card-bg
|
|||||||
$tab-to-top-color = #99a9bf
|
$tab-to-top-color = #99a9bf
|
||||||
// Tag Plugins - timeline
|
// Tag Plugins - timeline
|
||||||
$timeline-default-color = $theme-color
|
$timeline-default-color = $theme-color
|
||||||
|
// archor
|
||||||
|
$archor-button-icon = hexo-config('anchor.button.icon') ? hexo-config('anchor.button.icon') : '\f0c1'
|
||||||
@@ -14,7 +14,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let hideMenuIndex = ''
|
let hideMenuIndex = ''
|
||||||
if (window.innerWidth < 768) hideMenuIndex = true
|
if (window.innerWidth <= 768) hideMenuIndex = true
|
||||||
else hideMenuIndex = blogNameWidth + menusWidth + searchWidth > $nav.offsetWidth - 120
|
else hideMenuIndex = blogNameWidth + menusWidth + searchWidth > $nav.offsetWidth - 120
|
||||||
|
|
||||||
if (hideMenuIndex) {
|
if (hideMenuIndex) {
|
||||||
@@ -277,8 +277,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
const isChatBtnHide = typeof chatBtnHide === 'function'
|
const isChatBtnHide = typeof chatBtnHide === 'function'
|
||||||
const isChatBtnShow = typeof chatBtnShow === 'function'
|
const isChatBtnShow = typeof chatBtnShow === 'function'
|
||||||
|
|
||||||
window.scrollCollect = () => {
|
const scrollTask = btf.throttle(() => {
|
||||||
return btf.throttle(function (e) {
|
|
||||||
const currentTop = window.scrollY || document.documentElement.scrollTop
|
const currentTop = window.scrollY || document.documentElement.scrollTop
|
||||||
const isDown = scrollDirection(currentTop)
|
const isDown = scrollDirection(currentTop)
|
||||||
if (currentTop > 56) {
|
if (currentTop > 56) {
|
||||||
@@ -309,8 +308,9 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
if (document.body.scrollHeight <= innerHeight) {
|
if (document.body.scrollHeight <= innerHeight) {
|
||||||
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
|
$rightside.style.cssText = 'opacity: 0.8; transform: translateX(-58px)'
|
||||||
}
|
}
|
||||||
}, 200)()
|
}, 200)
|
||||||
}
|
|
||||||
|
window.scrollCollect = scrollTask
|
||||||
|
|
||||||
window.addEventListener('scroll', scrollCollect)
|
window.addEventListener('scroll', scrollCollect)
|
||||||
}
|
}
|
||||||
@@ -477,7 +477,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
// handle some cases
|
// handle some cases
|
||||||
typeof utterancesTheme === 'function' && utterancesTheme()
|
typeof utterancesTheme === 'function' && utterancesTheme()
|
||||||
typeof changeGiscusTheme === 'function' && changeGiscusTheme()
|
typeof changeGiscusTheme === 'function' && changeGiscusTheme()
|
||||||
typeof FB === 'object' && window.loadFBComment()
|
typeof FB === 'object' && window.loadFBComment && window.loadFBComment()
|
||||||
typeof runMermaid === 'function' && window.runMermaid()
|
typeof runMermaid === 'function' && window.runMermaid()
|
||||||
},
|
},
|
||||||
showOrHideBtn: (e) => { // rightside 點擊設置 按鈕 展開
|
showOrHideBtn: (e) => { // rightside 點擊設置 按鈕 展開
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user