markmap / mkdocs-markmap

MkDocs plugin and extension to create mindmaps from markdown using markmap
MIT License
47 stars 5 forks source link

Support for Markdown frontmatter #45

Closed endless-accenture closed 1 year ago

endless-accenture commented 1 year ago

I'm trying to use the markmap frontmatter options as described in https://markmap.js.org/docs/json-options#markdown-frontmatter.

Is this possible with mkdocs-markmap?

I tried to use the following code without success:

```markmap
---
markmap:
  maxWidth: 50
---

# Test1 Test1 Test1 Test1 Test1 

## Test2 Test2 Test2 Test2 Test2 

## Test3 Test3 Test3 Test3 Test3 

I've also tried to specify the latest versions of the libraries in the mkdocs.yml file as follows with no difference in the final result:
endless-accenture commented 1 year ago

Not sure if this is the best way, but I got it working by changing the mkdocs_markmap/static_files/mkdocs-markmap.js file, where I replaced the following lines (5 to 11):

        var el, content, svg, root, m;
        for (var i = 0; i < markmaps.length; i++) {
            el = markmaps[i];
            content = el.getAttribute('data-markdown').replaceAll('&#10;', '\n');
            svg = el.querySelector('svg');
            root = markmap_transformer.transform(content).root;
            m = markmap.Markmap.create(svg, null, root);

with the following code:

        var el, content, svg, transformedContent, root, options, m;
        for (var i = 0; i < markmaps.length; i++) {
            el = markmaps[i];
            content = el.getAttribute('data-markdown').replaceAll('&#10;', '\n');
            svg = el.querySelector('svg');

            transformedContent = markmap_transformer.transform(content);
            root = transformedContent.root;
            if ("frontmatter" in transformedContent) {
                options = markmap.deriveOptions(transformedContent.frontmatter.markmap)
            } else {
                options = null
            }

            m = markmap.Markmap.create(svg, options, root);