diff --git a/.eslintignore b/.eslintignore
index 5855520002..673cba7722 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,6 +1,5 @@
*.min.*
src/lib/markbind/src/lib/markdown-it/*
-src/lib/markbind/src/lib/vue-attribute-renderer/*
src/lib/markbind/src/lib/markdown-it-shared/*
!.eslintrc.js
diff --git a/docs/userGuide/syntax/boxes.mbdf b/docs/userGuide/syntax/boxes.mbdf
index ed7c8c216e..5179a6615b 100644
--- a/docs/userGuide/syntax/boxes.mbdf
+++ b/docs/userGuide/syntax/boxes.mbdf
@@ -70,7 +70,7 @@
dismissible info
-
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
diff --git a/docs/userGuide/syntax/footnotes.mbdf b/docs/userGuide/syntax/footnotes.mbdf
index 7ae4379b6b..9cb6ad107c 100644
--- a/docs/userGuide/syntax/footnotes.mbdf
+++ b/docs/userGuide/syntax/footnotes.mbdf
@@ -44,6 +44,13 @@ note.]
+
+
+Normal footnotes won't work when used inside the attributes of markbind components!
+
+For example, it won't work in the `header` attribute of [panels](../usingComponents.html#panels).
+
+
```html
diff --git a/docs/userGuide/syntax/textStyles.mbdf b/docs/userGuide/syntax/textStyles.mbdf
index 52ccc99bae..f0f06e29ab 100644
--- a/docs/userGuide/syntax/textStyles.mbdf
+++ b/docs/userGuide/syntax/textStyles.mbdf
@@ -41,12 +41,12 @@ Syntax added by MarkBind:
```markdown
-****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%
+****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%, Super^script^, Sub~script~
```
-****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%
+****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%, Super^script^, Sub~script~
@@ -57,11 +57,11 @@ Syntax added by MarkBind:
```markdown
**Bold**, _Italic_, ___Bold and Italic___, `Inline Code`
-~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%
+~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%, Super^script^, Sub~script~
```
**Bold**, _Italic_, ___Bold and Italic___, `Inline Code`
-~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%
-
\ No newline at end of file
+~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%, Super^script^, Sub~script~
+
diff --git a/src/Site.js b/src/Site.js
index 916cf0b9d7..9d276ddb80 100644
--- a/src/Site.js
+++ b/src/Site.js
@@ -10,7 +10,7 @@ const walkSync = require('walk-sync');
const MarkBind = require('./lib/markbind/src/parser');
const injectHtmlParser2SpecialTags = require('./lib/markbind/src/patches/htmlparser2');
const injectMarkdownItSpecialTags = require(
- './lib/markbind/src/lib/markdown-it-shared/markdown-it-escape-special-tags');
+ './lib/markbind/src/lib/markdown-it/markdown-it-escape-special-tags');
const _ = {};
_.difference = require('lodash/difference');
diff --git a/src/lib/markbind/src/lib/markdown-it/index.js b/src/lib/markbind/src/lib/markdown-it/index.js
index d89a5e31cb..72b06c0d3d 100644
--- a/src/lib/markbind/src/lib/markdown-it/index.js
+++ b/src/lib/markbind/src/lib/markdown-it/index.js
@@ -8,15 +8,17 @@ const slugify = require('@sindresorhus/slugify');
// markdown-it plugins
markdownIt.use(require('markdown-it-mark'))
.use(require('markdown-it-ins'))
+ .use(require('markdown-it-sub'))
+ .use(require('markdown-it-sup'))
.use(require('markdown-it-imsize'), {autofill: false})
.use(require('markdown-it-table-of-contents'))
.use(require('markdown-it-task-lists'), {enabled: true})
.use(require('markdown-it-linkify-images'), {imgClass: 'img-fluid'})
.use(require('markdown-it-attrs'))
- .use(require('../markdown-it-shared/markdown-it-dimmed'))
+ .use(require('./markdown-it-dimmed'))
.use(require('./markdown-it-radio-button'))
.use(require('./markdown-it-block-embed'))
- .use(require('../markdown-it-shared/markdown-it-icons'))
+ .use(require('./markdown-it-icons'))
.use(require('./markdown-it-footnotes'));
// fix link
@@ -134,7 +136,7 @@ markdownIt.renderer.rules.code_inline = (tokens, idx, options, env, slf) => {
}
};
-const fixedNumberEmojiDefs = require('../markdown-it-shared/markdown-it-emoji-fixed');
+const fixedNumberEmojiDefs = require('./markdown-it-emoji-fixed');
markdownIt.use(require('markdown-it-emoji'), {
defs: fixedNumberEmojiDefs
});
diff --git a/src/lib/markbind/src/lib/markdown-it-shared/markdown-it-dimmed.js b/src/lib/markbind/src/lib/markdown-it/markdown-it-dimmed.js
similarity index 100%
rename from src/lib/markbind/src/lib/markdown-it-shared/markdown-it-dimmed.js
rename to src/lib/markbind/src/lib/markdown-it/markdown-it-dimmed.js
diff --git a/src/lib/markbind/src/lib/markdown-it-shared/markdown-it-emoji-fixed.js b/src/lib/markbind/src/lib/markdown-it/markdown-it-emoji-fixed.js
similarity index 100%
rename from src/lib/markbind/src/lib/markdown-it-shared/markdown-it-emoji-fixed.js
rename to src/lib/markbind/src/lib/markdown-it/markdown-it-emoji-fixed.js
diff --git a/src/lib/markbind/src/lib/markdown-it-shared/markdown-it-escape-special-tags.js b/src/lib/markbind/src/lib/markdown-it/markdown-it-escape-special-tags.js
similarity index 98%
rename from src/lib/markbind/src/lib/markdown-it-shared/markdown-it-escape-special-tags.js
rename to src/lib/markbind/src/lib/markdown-it/markdown-it-escape-special-tags.js
index 04823cd36e..d0b31c2a9b 100644
--- a/src/lib/markbind/src/lib/markdown-it-shared/markdown-it-escape-special-tags.js
+++ b/src/lib/markbind/src/lib/markdown-it/markdown-it-escape-special-tags.js
@@ -1,4 +1,4 @@
-const markdownIt = require('../markdown-it');
+const markdownIt = require('./index');
/*
Custom patch for the api to escape content in certain special tags
diff --git a/src/lib/markbind/src/lib/markdown-it-shared/markdown-it-icons.js b/src/lib/markbind/src/lib/markdown-it/markdown-it-icons.js
similarity index 100%
rename from src/lib/markbind/src/lib/markdown-it-shared/markdown-it-icons.js
rename to src/lib/markbind/src/lib/markdown-it/markdown-it-icons.js
diff --git a/src/lib/markbind/src/lib/vue-attribute-renderer/index.js b/src/lib/markbind/src/lib/vue-attribute-renderer/index.js
deleted file mode 100644
index aa3f724955..0000000000
--- a/src/lib/markbind/src/lib/vue-attribute-renderer/index.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * markdownIt instance using a different set of plugins for parsing and rendering
- * markdown in vue components' attributes.
- *
- * Todo standardise this with the main markdown parser
- */
-
-const markdownIt = require('markdown-it')({
- html: true,
- linkify: true,
-});
-
-markdownIt.use(require('markdown-it-mark'))
- .use(require('markdown-it-ins'))
- .use(require('markdown-it-sub'))
- .use(require('markdown-it-sup'))
- .use(require('../markdown-it-shared/markdown-it-dimmed'))
- .use(require('../markdown-it-shared/markdown-it-icons'))
- .use(require('markdown-it-imsize'), {
- autofill: false,
- });
-
-const fixedNumberEmojiDefs = require('../markdown-it-shared/markdown-it-emoji-fixed');
-markdownIt.use(require('markdown-it-emoji'), {
- defs: fixedNumberEmojiDefs,
-});
-
-module.exports = markdownIt;
diff --git a/src/lib/markbind/src/parsers/componentParser.js b/src/lib/markbind/src/parsers/componentParser.js
index c9ed5eead3..e7054e79f6 100644
--- a/src/lib/markbind/src/parsers/componentParser.js
+++ b/src/lib/markbind/src/parsers/componentParser.js
@@ -3,7 +3,7 @@ const cheerio = require('cheerio');
const _ = {};
_.has = require('lodash/has');
-const vueAttrRenderer = require('../lib/vue-attribute-renderer');
+const md = require('../lib/markdown-it');
cheerio.prototype.options.xmlMode = true; // Enable xml mode for self-closing tag
cheerio.prototype.options.decodeEntities = false; // Don't escape HTML entities
@@ -27,9 +27,9 @@ function _parseAttributeWithoutOverride(node, attribute, isInline, slotName = at
if (!hasAttributeSlot && _.has(node.attribs, attribute)) {
let rendered;
if (isInline) {
- rendered = vueAttrRenderer.renderInline(node.attribs[attribute]);
+ rendered = md.renderInline(node.attribs[attribute]);
} else {
- rendered = vueAttrRenderer.render(node.attribs[attribute]);
+ rendered = md.render(node.attribs[attribute]);
}
const attributeSlotElement = cheerio.parseHTML(
diff --git a/test/unit/markdown-it-icons.test.js b/test/unit/markdown-it-icons.test.js
index f7b601bc4e..5d852e82f0 100644
--- a/test/unit/markdown-it-icons.test.js
+++ b/test/unit/markdown-it-icons.test.js
@@ -1,7 +1,7 @@
const expectedOcticon = require('@primer/octicons')['git-pull-request'].toSVG();
const markdownIt = require('markdown-it')()
- .use(require('../../src/lib/markbind/src/lib/markdown-it-shared/markdown-it-icons'));
+ .use(require('../../src/lib/markbind/src/lib/markdown-it/markdown-it-icons'));
test('markdown-it-icons renders icon syntax correctly', () => {
const source = ':fab-font-awesome: :glyphicon-home: :octicon-git-pull-request:';