mirror of https://github.com/status-im/codimd.git
added an option to set the TOC depth directly inside the [toc] tag
Signed-off-by: Gereon Dusella <git@gereondusella.de>
This commit is contained in:
parent
56e01fa76e
commit
b15c59e15e
|
@ -1015,14 +1015,19 @@ export function renderTOC (view) {
|
||||||
target.html('')
|
target.html('')
|
||||||
/* eslint-disable no-unused-vars */
|
/* eslint-disable no-unused-vars */
|
||||||
|
|
||||||
|
const specificDepth = parseInt(toc.data('toc-depth'))
|
||||||
|
|
||||||
var tocOptions = md.meta.toc || {}
|
var tocOptions = md.meta.toc || {}
|
||||||
var maxLevel = (typeof tocOptions.maxLevel === 'number' && tocOptions.maxLevel > 0) ? tocOptions.maxLevel : window.defaultTocDepth
|
var yamlMaxDepth = (typeof tocOptions.maxLevel === 'number' && tocOptions.maxLevel > 0) ? tocOptions.maxLevel : window.defaultTocDepth
|
||||||
|
|
||||||
|
var maxLevel = specificDepth || yamlMaxDepth
|
||||||
|
|
||||||
const TOC = new window.Toc('doc', {
|
const TOC = new window.Toc('doc', {
|
||||||
level: maxLevel,
|
level: maxLevel,
|
||||||
top: -1,
|
top: -1,
|
||||||
class: 'toc',
|
class: 'toc',
|
||||||
targetId: id,
|
targetId: id,
|
||||||
|
data: { tocDepth: specificDepth },
|
||||||
process: getHeaderContent
|
process: getHeaderContent
|
||||||
})
|
})
|
||||||
/* eslint-enable no-unused-vars */
|
/* eslint-enable no-unused-vars */
|
||||||
|
@ -1268,9 +1273,12 @@ const gistPlugin = new Plugin(
|
||||||
// TOC
|
// TOC
|
||||||
const tocPlugin = new Plugin(
|
const tocPlugin = new Plugin(
|
||||||
// regexp to match
|
// regexp to match
|
||||||
/^\[TOC\]$/i,
|
/^\[TOC(|\s*maxLevel=\d+?)\]$/i,
|
||||||
|
|
||||||
(match, utils) => '<div class="toc"></div>'
|
(match, utils) => {
|
||||||
|
const tocDepth = match[1].split(/[?&=]+/)[1]
|
||||||
|
return `<div class="toc" data-toc-depth="${tocDepth}"></div>`
|
||||||
|
}
|
||||||
)
|
)
|
||||||
// slideshare
|
// slideshare
|
||||||
const slidesharePlugin = new Plugin(
|
const slidesharePlugin = new Plugin(
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
/**
|
/**
|
||||||
* md-toc.js v1.0.2
|
* md-toc.js v1.0.2
|
||||||
* https://github.com/yijian166/md-toc.js
|
* https://github.com/yijian166/md-toc.js
|
||||||
|
*
|
||||||
|
* Adapted to accept data attributes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function (window) {
|
(function (window) {
|
||||||
|
@ -15,6 +17,7 @@
|
||||||
this.tocTop = parseInt(options.top) || 0
|
this.tocTop = parseInt(options.top) || 0
|
||||||
this.elChilds = this.el.children
|
this.elChilds = this.el.children
|
||||||
this.process = options['process']
|
this.process = options['process']
|
||||||
|
this.data = options.data || {}
|
||||||
if (!this.elChilds.length) return
|
if (!this.elChilds.length) return
|
||||||
this._init()
|
this._init()
|
||||||
}
|
}
|
||||||
|
@ -123,6 +126,9 @@
|
||||||
this.toc = document.createElement('div')
|
this.toc = document.createElement('div')
|
||||||
this.toc.innerHTML = this.tocContent
|
this.toc.innerHTML = this.tocContent
|
||||||
this.toc.setAttribute('class', this.tocClass)
|
this.toc.setAttribute('class', this.tocClass)
|
||||||
|
if (this.data.tocDepth) {
|
||||||
|
this.toc.dataset.tocDepth = this.data.tocDepth
|
||||||
|
}
|
||||||
if (!this.options.targetId) {
|
if (!this.options.targetId) {
|
||||||
this.el.appendChild(this.toc)
|
this.el.appendChild(this.toc)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue