## markdown-it-ftoc
> markdown-it plugin to add toc and anchor links in headings

Modified from [markdown-it-toc](https://github.com/tylerlong/markdown-it-toc) and apis like [markdown-it-toc-and-anchor](https://github.com/medfreeman/markdown-it-toc-and-anchor)

## Installation
```shell
yarn add markdown-it-ftoc
```

## Usage
### ES6
```javascript
import markdownIt from "markdown-it"
import markdownItFtoc from "markdown-it-ftoc"

markdownIt({
    html: true,
    linkify: true,
    typographer: true,
  })
    .use(markdownItFtoc, {
      // ...options
    })
    .render(md)
```


### browser
```javascript
var md = window.markdownit();
md = md.use(window.markdownItFtoc);
console.log(md.render('@[toc](list)\n\n# test\n\n## something'));
```

## Options

### tocClassName
(default: "markdown-toc")

Option to customize html class of the <ul> wrapping the toc. If no class is wanted set to null.

### tocFirstLevel
(default: 1)

Allows you to skip some heading level. Example: use 2 if you want to skip `<h1>`from the TOC.

### tocLastLevel
(default: 6)

### tocCallback
(default: null)

Allows you to get toc contents externally by executing a callback function returning toc elements, in addition / instead of using @[toc] tag in content. Example :
```javascript
  markdownIt({
    html: true,
    linkify: true,
    typographer: true,
  })
    .use(markdownItTocAndAnchor, {
      tocCallback: function(tocHtml) {
        console.log(tocHtml)
      }
    })
    .render(md)
```

### anchorLinkSymbol
(default: "#")

Allows you to customize the anchor link symbol

### anchorLinkSpace
(default: true)

Allows you to enable/disable inserting a space between the anchor link and heading.

### anchorLinkSymbolClassName
(default: "header-anchor")

Allows you to customize the anchor link symbol class name. If not null, symbol will be rendered as 
```html
<span class="anchorLinkSymbolClassName">anchorLinkSymbol</span>
```

### anchorClassName
(default: "markdown-toc-anchor")

### slugify
type: "function"
Allows you to customize the slug function that create ids from string.

Examples: use [uslug](https://www.npmjs.com/package/uslug)
```javascript
import uslug from 'uslug'
markdownIt({
    html: true,
    linkify: true,
    typographer: true,
  })
    .use(markdownItTocAndAnchor, {
      slugify: uslug
    })
    .render(md)

```


### slugifyArguments
arguments for slugify

type: arguments array
default: []
