-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathindex.js
35 lines (31 loc) · 1.12 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const { Transformer } = require('markmap-lib')
const { mainTemplate, containerTemplate, afterRender, scriptTemplate } = require('./lib/template')
const { fold } = require('./lib/extension')
const get = require('lodash.get')
const fget = (path) => get(config, path, false)
const { config } = hexo
const transformer = new Transformer()
const options = {
pjaxEnable: fget("hexo_markmap.pjax"),
katexEnable: fget("hexo_markmap.katex"),
prismEnable: fget("hexo_markmap.prism"),
userCDN: fget("hexo_markmap.userCDN"),
lockView: fget("hexo_markmap.lockView"),
fixSVGAttrNaN: fget("hexo_markmap.fixSVGAttrNaN")
}
hexo.extend.tag.register('markmap', ([height, depth], markdown) => {
const { root: svgData } = transformer.transform(markdown)
return containerTemplate(fold(svgData, depth), { height })
},
{ ends: true }
)
hexo.extend.generator.register('markmap_asset', () => [{
path: 'js/markmap.js',
data: () => mainTemplate(options)
}]
)
hexo.extend.filter.register('after_render:html', (content) =>
afterRender(content, scriptTemplate(fget('root')), {
pjaxEnable: options.pjaxEnable,
})
)