@docusaurus/mdx-loader 2.1.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/loader.d.ts +2 -1
- package/lib/loader.d.ts.map +1 -1
- package/lib/loader.js +2 -0
- package/lib/loader.js.map +1 -1
- package/lib/remark/admonitions/index.d.ts.map +1 -1
- package/lib/remark/admonitions/index.js +35 -6
- package/lib/remark/admonitions/index.js.map +1 -1
- package/lib/remark/mermaid/index.d.ts +9 -0
- package/lib/remark/mermaid/index.d.ts.map +1 -0
- package/lib/remark/mermaid/index.js +33 -0
- package/lib/remark/mermaid/index.js.map +1 -0
- package/package.json +5 -5
- package/src/loader.ts +4 -1
- package/src/remark/admonitions/index.ts +42 -6
- package/src/remark/mermaid/index.ts +32 -0
package/lib/loader.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
+
import type { MarkdownConfig } from '@docusaurus/types';
|
|
7
8
|
import type { LoaderContext } from 'webpack';
|
|
8
9
|
import type { Plugin } from 'unified';
|
|
9
10
|
import type { AdmonitionOptions } from './remark/admonitions';
|
|
@@ -19,6 +20,7 @@ export declare type MDXOptions = {
|
|
|
19
20
|
beforeDefaultRehypePlugins: MDXPlugin[];
|
|
20
21
|
};
|
|
21
22
|
export declare type Options = Partial<MDXOptions> & {
|
|
23
|
+
markdownConfig: MarkdownConfig;
|
|
22
24
|
staticDirs: string[];
|
|
23
25
|
siteDir: string;
|
|
24
26
|
isMDXPartial?: (filePath: string) => boolean;
|
|
@@ -35,7 +37,6 @@ export declare type Options = Partial<MDXOptions> & {
|
|
|
35
37
|
}) => {
|
|
36
38
|
[key: string]: unknown;
|
|
37
39
|
};
|
|
38
|
-
filepath: string;
|
|
39
40
|
};
|
|
40
41
|
export declare function mdxLoader(this: LoaderContext<Options>, fileString: string): Promise<void>;
|
|
41
42
|
//# sourceMappingURL=loader.d.ts.map
|
package/lib/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAY,MAAM,EAAC,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAsB5D,oBAAY,SAAS,GAEnB;IAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IAAE,GAAG;CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAEvC,oBAAY,UAAU,GAAG;IACvB,WAAW,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACzC,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,0BAA0B,EAAE,SAAS,EAAE,CAAC;IACxC,0BAA0B,EAAE,SAAS,EAAE,CAAC;CACzC,CAAC;AAEF,oBAAY,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG;IAC1C,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE;QACxB,WAAW,EAAE;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAC,CAAC;QACtC,QAAQ,EAAE;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAC,CAAC;KACpC,KAAK;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAC;CAChC,CAAC;AA8EF,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA+Hf"}
|
package/lib/loader.js
CHANGED
|
@@ -19,6 +19,7 @@ const toc_1 = tslib_1.__importDefault(require("./remark/toc"));
|
|
|
19
19
|
const unwrapMdxCodeBlocks_1 = tslib_1.__importDefault(require("./remark/unwrapMdxCodeBlocks"));
|
|
20
20
|
const transformImage_1 = tslib_1.__importDefault(require("./remark/transformImage"));
|
|
21
21
|
const transformLinks_1 = tslib_1.__importDefault(require("./remark/transformLinks"));
|
|
22
|
+
const mermaid_1 = tslib_1.__importDefault(require("./remark/mermaid"));
|
|
22
23
|
const admonitions_1 = tslib_1.__importDefault(require("./remark/admonitions"));
|
|
23
24
|
const { loaders: { inlineMarkdownImageFileLoader }, } = (0, utils_1.getFileLoaderUtils)();
|
|
24
25
|
const pragma = `
|
|
@@ -111,6 +112,7 @@ async function mdxLoader(fileString) {
|
|
|
111
112
|
...(reqOptions.beforeDefaultRemarkPlugins ?? []),
|
|
112
113
|
...getAdmonitionsPlugins(reqOptions.admonitions ?? false),
|
|
113
114
|
...DEFAULT_OPTIONS.remarkPlugins,
|
|
115
|
+
...(reqOptions.markdownConfig.mermaid ? [mermaid_1.default] : []),
|
|
114
116
|
[
|
|
115
117
|
transformImage_1.default,
|
|
116
118
|
{
|
package/lib/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,gEAA0B;AAC1B,wEAAwC;AACxC,6CAK2B;AAC3B,qCAA2C;AAC3C,wEAAiC;AACjC,gFAA+C;AAE/C,yEAAyC;AACzC,+DAA+B;AAC/B,+FAA+D;AAC/D,qFAAqD;AACrD,qFAAqD;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/admonitions/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAyB,MAAM,EAAC,MAAM,SAAS,CAAC;AAK5D,oBAAY,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAatC,CAAC;AAgBF,QAAA,MAAM,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/admonitions/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAyB,MAAM,EAAC,MAAM,SAAS,CAAC;AAK5D,oBAAY,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,iBAatC,CAAC;AAgBF,QAAA,MAAM,MAAM,EAAE,MA4Kb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -36,9 +36,13 @@ const admonitionNodeType = 'admonitionHTML';
|
|
|
36
36
|
const plugin = function plugin(optionsInput = {}) {
|
|
37
37
|
const options = normalizeOptions(optionsInput);
|
|
38
38
|
const keywords = Object.values(options.keywords).map(escapeRegExp).join('|');
|
|
39
|
+
const nestingChar = escapeRegExp(options.tag.slice(0, 1));
|
|
39
40
|
const tag = escapeRegExp(options.tag);
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
// resolve th nesting level of an opening tag
|
|
42
|
+
// ::: -> 0, :::: -> 1, ::::: -> 2 ...
|
|
43
|
+
const nestingLevelRegex = new RegExp(`^${tag}(?<nestingLevel>${nestingChar}*)`);
|
|
44
|
+
const regex = new RegExp(`${tag}${nestingChar}*(${keywords})(?: *(.*))?\n`);
|
|
45
|
+
const escapeTag = new RegExp(escapeRegExp(`\\${options.tag}${options.tag.slice(0, 1)}*`), 'g');
|
|
42
46
|
// The tokenizer is called on blocks to determine if there is an admonition
|
|
43
47
|
// present and create tags for it
|
|
44
48
|
function blockTokenizer(eat, value, silent) {
|
|
@@ -55,6 +59,10 @@ const plugin = function plugin(optionsInput = {}) {
|
|
|
55
59
|
const [opening, keyword, title] = match;
|
|
56
60
|
const food = [];
|
|
57
61
|
const content = [];
|
|
62
|
+
// get the nesting level of the opening tag
|
|
63
|
+
const openingLevel = nestingLevelRegex.exec(opening).groups.nestingLevel.length;
|
|
64
|
+
// used as a stack to keep track of nested admonitions
|
|
65
|
+
const nestingLevels = [openingLevel];
|
|
58
66
|
let newValue = value;
|
|
59
67
|
// consume lines until a closing tag
|
|
60
68
|
let idx = newValue.indexOf(NEWLINE);
|
|
@@ -64,12 +72,33 @@ const plugin = function plugin(optionsInput = {}) {
|
|
|
64
72
|
const line = next !== -1 ? newValue.slice(idx + 1, next) : newValue.slice(idx + 1);
|
|
65
73
|
food.push(line);
|
|
66
74
|
newValue = newValue.slice(idx + 1);
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
75
|
+
const nesting = nestingLevelRegex.exec(line);
|
|
76
|
+
idx = newValue.indexOf(NEWLINE);
|
|
77
|
+
if (!nesting) {
|
|
78
|
+
content.push(line);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const tagLevel = nesting.groups.nestingLevel.length;
|
|
82
|
+
// first level
|
|
83
|
+
if (nestingLevels.length === 0) {
|
|
84
|
+
nestingLevels.push(tagLevel);
|
|
85
|
+
content.push(line);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const currentLevel = nestingLevels[nestingLevels.length - 1];
|
|
89
|
+
if (tagLevel < currentLevel) {
|
|
90
|
+
// entering a nested admonition block
|
|
91
|
+
nestingLevels.push(tagLevel);
|
|
92
|
+
}
|
|
93
|
+
else if (tagLevel === currentLevel) {
|
|
94
|
+
// closing a nested admonition block
|
|
95
|
+
nestingLevels.pop();
|
|
96
|
+
// the closing tag is NOT part of the content
|
|
97
|
+
if (nestingLevels.length === 0) {
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
70
100
|
}
|
|
71
101
|
content.push(line);
|
|
72
|
-
idx = newValue.indexOf(NEWLINE);
|
|
73
102
|
}
|
|
74
103
|
// consume the processed tag and replace escape sequences
|
|
75
104
|
const contentString = content.join(NEWLINE).replace(escapeTag, options.tag);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/admonitions/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,gFAAqC;AAIrC,MAAM,OAAO,GAAG,IAAI,CAAC;AAOR,QAAA,wBAAwB,GAAsB;IACzD,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE;QACR,WAAW;QACX,MAAM;QACN,SAAS;QACT,QAAQ;QACR,MAAM;QACN,KAAK;QACL,SAAS;QACT,WAAW;QACX,SAAS;KACV;CACF,CAAC;AAEF,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAmC;IAEnC,OAAO,EAAC,GAAG,gCAAwB,EAAE,GAAG,OAAO,EAAC,CAAC;AACnD,CAAC;AAED,yCAAyC;AACzC,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAE5C,MAAM,MAAM,GAAW,SAAS,MAAM,CAEpC,eAA2C,EAAE;IAE7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/admonitions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import type { Transformer } from 'unified';
|
|
8
|
+
export default function plugin(): Transformer;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remark/mermaid/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAOzC,MAAM,CAAC,OAAO,UAAU,MAAM,IAAI,WAAW,CAgB5C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const tslib_1 = require("tslib");
|
|
10
|
+
const unist_util_visit_1 = tslib_1.__importDefault(require("unist-util-visit"));
|
|
11
|
+
// TODO: this plugin shouldn't be in the core MDX loader
|
|
12
|
+
// After we allow plugins to provide Remark/Rehype plugins (see
|
|
13
|
+
// https://github.com/facebook/docusaurus/issues/6370), this should be provided
|
|
14
|
+
// by theme-mermaid itself
|
|
15
|
+
function plugin() {
|
|
16
|
+
return (root) => {
|
|
17
|
+
(0, unist_util_visit_1.default)(root, 'code', (node, index, parent) => {
|
|
18
|
+
if (node.lang === 'mermaid') {
|
|
19
|
+
parent.children.splice(index, 1, {
|
|
20
|
+
type: 'mermaidCodeBlock',
|
|
21
|
+
data: {
|
|
22
|
+
hName: 'mermaid',
|
|
23
|
+
hProperties: {
|
|
24
|
+
value: node.value,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.default = plugin;
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/remark/mermaid/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,gFAAqC;AAIrC,wDAAwD;AACxD,+DAA+D;AAC/D,+EAA+E;AAC/E,0BAA0B;AAC1B,SAAwB,MAAM;IAC5B,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,IAAA,0BAAK,EAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC3B,MAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;oBAChC,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE;wBACJ,KAAK,EAAE,SAAS;wBAChB,WAAW,EAAE;4BACX,KAAK,EAAE,IAAI,CAAC,KAAK;yBAClB;qBACF;iBACF,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAhBD,yBAgBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/mdx-loader",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Docusaurus Loader for MDX",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@babel/parser": "^7.18.8",
|
|
22
22
|
"@babel/traverse": "^7.18.8",
|
|
23
|
-
"@docusaurus/logger": "2.
|
|
24
|
-
"@docusaurus/utils": "2.
|
|
23
|
+
"@docusaurus/logger": "2.3.0",
|
|
24
|
+
"@docusaurus/utils": "2.3.0",
|
|
25
25
|
"@mdx-js/mdx": "^1.6.22",
|
|
26
26
|
"escape-html": "^1.0.3",
|
|
27
27
|
"file-loader": "^6.2.0",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"webpack": "^5.73.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@docusaurus/types": "2.
|
|
40
|
+
"@docusaurus/types": "2.3.0",
|
|
41
41
|
"@types/escape-html": "^1.0.2",
|
|
42
42
|
"@types/mdast": "^3.0.10",
|
|
43
43
|
"@types/stringify-object": "^3.3.1",
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"engines": {
|
|
58
58
|
"node": ">=16.14"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "ad477781bdca6a11fa9c6daef5048bdcec0ee37e"
|
|
61
61
|
}
|
package/src/loader.ts
CHANGED
|
@@ -22,8 +22,10 @@ import toc from './remark/toc';
|
|
|
22
22
|
import unwrapMdxCodeBlocks from './remark/unwrapMdxCodeBlocks';
|
|
23
23
|
import transformImage from './remark/transformImage';
|
|
24
24
|
import transformLinks from './remark/transformLinks';
|
|
25
|
+
import mermaid from './remark/mermaid';
|
|
25
26
|
|
|
26
27
|
import transformAdmonitions from './remark/admonitions';
|
|
28
|
+
import type {MarkdownConfig} from '@docusaurus/types';
|
|
27
29
|
import type {LoaderContext} from 'webpack';
|
|
28
30
|
import type {Processor, Plugin} from 'unified';
|
|
29
31
|
import type {AdmonitionOptions} from './remark/admonitions';
|
|
@@ -61,6 +63,7 @@ export type MDXOptions = {
|
|
|
61
63
|
};
|
|
62
64
|
|
|
63
65
|
export type Options = Partial<MDXOptions> & {
|
|
66
|
+
markdownConfig: MarkdownConfig;
|
|
64
67
|
staticDirs: string[];
|
|
65
68
|
siteDir: string;
|
|
66
69
|
isMDXPartial?: (filePath: string) => boolean;
|
|
@@ -71,7 +74,6 @@ export type Options = Partial<MDXOptions> & {
|
|
|
71
74
|
frontMatter: {[key: string]: unknown};
|
|
72
75
|
metadata: {[key: string]: unknown};
|
|
73
76
|
}) => {[key: string]: unknown};
|
|
74
|
-
filepath: string;
|
|
75
77
|
};
|
|
76
78
|
|
|
77
79
|
/**
|
|
@@ -171,6 +173,7 @@ export async function mdxLoader(
|
|
|
171
173
|
...(reqOptions.beforeDefaultRemarkPlugins ?? []),
|
|
172
174
|
...getAdmonitionsPlugins(reqOptions.admonitions ?? false),
|
|
173
175
|
...DEFAULT_OPTIONS.remarkPlugins,
|
|
176
|
+
...(reqOptions.markdownConfig.mermaid ? [mermaid] : []),
|
|
174
177
|
[
|
|
175
178
|
transformImage,
|
|
176
179
|
{
|
|
@@ -52,9 +52,20 @@ const plugin: Plugin = function plugin(
|
|
|
52
52
|
const options = normalizeOptions(optionsInput);
|
|
53
53
|
|
|
54
54
|
const keywords = Object.values(options.keywords).map(escapeRegExp).join('|');
|
|
55
|
+
const nestingChar = escapeRegExp(options.tag.slice(0, 1));
|
|
55
56
|
const tag = escapeRegExp(options.tag);
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
|
|
58
|
+
// resolve th nesting level of an opening tag
|
|
59
|
+
// ::: -> 0, :::: -> 1, ::::: -> 2 ...
|
|
60
|
+
const nestingLevelRegex = new RegExp(
|
|
61
|
+
`^${tag}(?<nestingLevel>${nestingChar}*)`,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
const regex = new RegExp(`${tag}${nestingChar}*(${keywords})(?: *(.*))?\n`);
|
|
65
|
+
const escapeTag = new RegExp(
|
|
66
|
+
escapeRegExp(`\\${options.tag}${options.tag.slice(0, 1)}*`),
|
|
67
|
+
'g',
|
|
68
|
+
);
|
|
58
69
|
|
|
59
70
|
// The tokenizer is called on blocks to determine if there is an admonition
|
|
60
71
|
// present and create tags for it
|
|
@@ -77,6 +88,11 @@ const plugin: Plugin = function plugin(
|
|
|
77
88
|
];
|
|
78
89
|
const food = [];
|
|
79
90
|
const content = [];
|
|
91
|
+
// get the nesting level of the opening tag
|
|
92
|
+
const openingLevel =
|
|
93
|
+
nestingLevelRegex.exec(opening)!.groups!.nestingLevel!.length;
|
|
94
|
+
// used as a stack to keep track of nested admonitions
|
|
95
|
+
const nestingLevels: number[] = [openingLevel];
|
|
80
96
|
|
|
81
97
|
let newValue = value;
|
|
82
98
|
// consume lines until a closing tag
|
|
@@ -88,12 +104,32 @@ const plugin: Plugin = function plugin(
|
|
|
88
104
|
next !== -1 ? newValue.slice(idx + 1, next) : newValue.slice(idx + 1);
|
|
89
105
|
food.push(line);
|
|
90
106
|
newValue = newValue.slice(idx + 1);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
107
|
+
const nesting = nestingLevelRegex.exec(line);
|
|
108
|
+
idx = newValue.indexOf(NEWLINE);
|
|
109
|
+
if (!nesting) {
|
|
110
|
+
content.push(line);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const tagLevel = nesting.groups!.nestingLevel!.length;
|
|
114
|
+
// first level
|
|
115
|
+
if (nestingLevels.length === 0) {
|
|
116
|
+
nestingLevels.push(tagLevel);
|
|
117
|
+
content.push(line);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const currentLevel = nestingLevels[nestingLevels.length - 1]!;
|
|
121
|
+
if (tagLevel < currentLevel) {
|
|
122
|
+
// entering a nested admonition block
|
|
123
|
+
nestingLevels.push(tagLevel);
|
|
124
|
+
} else if (tagLevel === currentLevel) {
|
|
125
|
+
// closing a nested admonition block
|
|
126
|
+
nestingLevels.pop();
|
|
127
|
+
// the closing tag is NOT part of the content
|
|
128
|
+
if (nestingLevels.length === 0) {
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
94
131
|
}
|
|
95
132
|
content.push(line);
|
|
96
|
-
idx = newValue.indexOf(NEWLINE);
|
|
97
133
|
}
|
|
98
134
|
|
|
99
135
|
// consume the processed tag and replace escape sequences
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import visit from 'unist-util-visit';
|
|
9
|
+
import type {Transformer} from 'unified';
|
|
10
|
+
import type {Code} from 'mdast';
|
|
11
|
+
|
|
12
|
+
// TODO: this plugin shouldn't be in the core MDX loader
|
|
13
|
+
// After we allow plugins to provide Remark/Rehype plugins (see
|
|
14
|
+
// https://github.com/facebook/docusaurus/issues/6370), this should be provided
|
|
15
|
+
// by theme-mermaid itself
|
|
16
|
+
export default function plugin(): Transformer {
|
|
17
|
+
return (root) => {
|
|
18
|
+
visit(root, 'code', (node: Code, index, parent) => {
|
|
19
|
+
if (node.lang === 'mermaid') {
|
|
20
|
+
parent!.children.splice(index, 1, {
|
|
21
|
+
type: 'mermaidCodeBlock',
|
|
22
|
+
data: {
|
|
23
|
+
hName: 'mermaid',
|
|
24
|
+
hProperties: {
|
|
25
|
+
value: node.value,
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
}
|