mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-04-10 21:17:07 +08:00
feat: 適配 hexo-blog-encrypt fix: 修復 hexo 新版本下,prismjs 的問題 improvement: 在 pjax 關閉的情況下。減少不必要的全局變量 improvement: 更新依賴版本 improvement: 頁面進入效果優化 improvement: 添加平滑滾動 improvement: 兼容性優化 improvement: 優化 lighthouse 分數 improvement: 優化代碼
40 lines
1.5 KiB
Plaintext
40 lines
1.5 KiB
Plaintext
script.
|
|
(() => {
|
|
const runMermaid = (ele) => {
|
|
window.loadMermaid = true
|
|
const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? '!{theme.mermaid.theme.dark}' : '!{theme.mermaid.theme.light}'
|
|
|
|
Array.from(ele).forEach((item, index) => {
|
|
const mermaidSrc = item.firstElementChild
|
|
const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n'
|
|
const mermaidID = 'mermaid-' + index
|
|
const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent
|
|
|
|
const renderFn = mermaid.render(mermaidID, mermaidDefinition)
|
|
|
|
const renderV10 = () => {
|
|
renderFn.then(({svg}) => {
|
|
mermaidSrc.insertAdjacentHTML('afterend', svg)
|
|
})
|
|
}
|
|
|
|
const renderV9 = svg => {
|
|
mermaidSrc.insertAdjacentHTML('afterend', svg)
|
|
}
|
|
|
|
typeof renderFn === 'string' ? renderV9(renderFn) : renderV10()
|
|
})
|
|
}
|
|
|
|
const loadMermaid = () => {
|
|
const $mermaid = document.querySelectorAll('#article-container .mermaid-wrap')
|
|
if ($mermaid.length === 0) return
|
|
|
|
const runMermaidFn = () => runMermaid($mermaid)
|
|
btf.addGlobalFn('themeChange', runMermaidFn, 'mermaid')
|
|
window.loadMermaid ? runMermaidFn() : btf.getScript('!{url_for(theme.asset.mermaid)}').then(runMermaidFn)
|
|
}
|
|
|
|
btf.addGlobalFn('encrypt', loadMermaid, 'mermaid')
|
|
window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid)
|
|
})() |