@lowlighter/markdown 2.0.0 → 3.0.1
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/README.md +31 -33
- package/mod.d.ts +34 -0
- package/mod.js +22 -0
- package/package.json +117 -40
- package/plugins/anchors.d.ts +11 -0
- package/plugins/anchors.js +39 -0
- package/plugins/callouts.d.ts +14 -0
- package/plugins/callouts.js +31 -0
- package/plugins/directives.d.ts +24 -0
- package/plugins/directives.js +76 -0
- package/plugins/emojis.d.ts +11 -0
- package/plugins/emojis.js +15 -0
- package/plugins/frontmatter.d.ts +20 -0
- package/plugins/frontmatter.js +49 -0
- package/plugins/gfm.d.ts +18 -0
- package/plugins/gfm.js +43 -0
- package/plugins/{highlighting.ts → highlighting.d.ts} +2 -11
- package/plugins/highlighting.js +24 -0
- package/plugins/markers.d.ts +15 -0
- package/plugins/markers.js +30 -0
- package/plugins/math.d.ts +21 -0
- package/plugins/math.js +75 -0
- package/plugins/mermaid.d.ts +25 -0
- package/plugins/mermaid.js +32 -0
- package/plugins/mod.d.ts +15 -0
- package/plugins/mod.js +14 -0
- package/plugins/{ruby.ts → ruby.d.ts} +2 -11
- package/plugins/ruby.js +28 -0
- package/plugins/uncomments.d.ts +13 -0
- package/plugins/uncomments.js +28 -0
- package/plugins/wikilinks.d.ts +26 -0
- package/plugins/wikilinks.js +45 -0
- package/presets/default.d.ts +3 -0
- package/presets/default.js +9 -0
- package/presets/svg.d.ts +3 -0
- package/presets/svg.js +11 -0
- package/presets/text.d.ts +3 -0
- package/presets/text.js +11 -0
- package/presets/web.d.ts +3 -0
- package/presets/web.js +12 -0
- package/renderer.d.ts +62 -0
- package/renderer.js +70 -0
- package/types.d.ts +85 -0
- package/types.js +10 -0
- package/deno.jsonc +0 -124
- package/deno.lock +0 -2282
- package/mod.mjs +0 -1
- package/mod.ts +0 -2
- package/mod_test.ts +0 -1
- package/plugins/anchors.mjs +0 -1
- package/plugins/anchors.ts +0 -21
- package/plugins/anchors_test.ts +0 -8
- package/plugins/directives.mjs +0 -1
- package/plugins/directives.ts +0 -112
- package/plugins/directives_test.ts +0 -13
- package/plugins/emojis.mjs +0 -1
- package/plugins/emojis.ts +0 -20
- package/plugins/emojis_test.ts +0 -8
- package/plugins/frontmatter.mjs +0 -1
- package/plugins/frontmatter.ts +0 -43
- package/plugins/frontmatter_test.ts +0 -18
- package/plugins/gfm.mjs +0 -1
- package/plugins/gfm.ts +0 -14
- package/plugins/gfm_test.ts +0 -28
- package/plugins/highlighting.mjs +0 -1
- package/plugins/highlighting_test.ts +0 -8
- package/plugins/linebreaks.mjs +0 -1
- package/plugins/linebreaks.ts +0 -21
- package/plugins/linebreaks_test.ts +0 -8
- package/plugins/markers.mjs +0 -1
- package/plugins/markers.ts +0 -25
- package/plugins/markers_test.ts +0 -13
- package/plugins/math.mjs +0 -1
- package/plugins/math.ts +0 -25
- package/plugins/math_test.ts +0 -8
- package/plugins/mermaid.mjs +0 -1
- package/plugins/mermaid.ts +0 -41
- package/plugins/mermaid_test.ts +0 -8
- package/plugins/mod.mjs +0 -1
- package/plugins/mod.ts +0 -14
- package/plugins/ruby.mjs +0 -1
- package/plugins/ruby_test.ts +0 -8
- package/plugins/sanitize.mjs +0 -1
- package/plugins/sanitize.ts +0 -26
- package/plugins/sanitize_test.ts +0 -15
- package/plugins/uncomments.mjs +0 -1
- package/plugins/uncomments.ts +0 -20
- package/plugins/uncomments_test.ts +0 -8
- package/plugins/wikilinks.mjs +0 -1
- package/plugins/wikilinks.ts +0 -40
- package/plugins/wikilinks_test.ts +0 -14
- package/renderer.mjs +0 -1
- package/renderer.ts +0 -138
- package/renderer_test.ts +0 -19
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
import { parse } from "@std/yaml/parse";
|
|
3
|
+
/**
|
|
4
|
+
* Support for frontmatter.
|
|
5
|
+
*
|
|
6
|
+
* Passing `metadata: true` to the markdown rendering method is required to retrieve the frontmatter.
|
|
7
|
+
* The frontmatter is automatically parsed as YAML.
|
|
8
|
+
*
|
|
9
|
+
* ```md
|
|
10
|
+
* ---
|
|
11
|
+
* title: foo
|
|
12
|
+
* ---
|
|
13
|
+
* ```
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { Renderer } from "../renderer.ts"
|
|
16
|
+
*
|
|
17
|
+
* const markdown = new Renderer({ frontmatter: true })
|
|
18
|
+
* const { metadata } = markdown.render("---\ntitle: foo\n---\nbar", { metadata: true })
|
|
19
|
+
* console.log(metadata.frontmatter) // { title: "foo" }
|
|
20
|
+
* ```
|
|
21
|
+
*/ export default function frontmatter(engine) {
|
|
22
|
+
engine.block.ruler.before("table", "frontmatter", (state, startLine, endLine, silent)=>{
|
|
23
|
+
if (startLine !== 0 || state.blkIndent !== 0 || state.tShift[0] > 0) return false;
|
|
24
|
+
if (state.src.slice(state.bMarks[0], state.eMarks[0]).trimEnd() !== "---") return false;
|
|
25
|
+
let close = -1;
|
|
26
|
+
for(let line = 1; line < endLine; line++){
|
|
27
|
+
const text = state.src.slice(state.bMarks[line], state.eMarks[line]).trimEnd();
|
|
28
|
+
if (text === "---" || text === "...") {
|
|
29
|
+
close = line;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (close < 0) return false;
|
|
34
|
+
let parsed;
|
|
35
|
+
try {
|
|
36
|
+
parsed = parse(state.getLines(1, close, 0, false));
|
|
37
|
+
} catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
if (!silent) {
|
|
41
|
+
const env = state.env;
|
|
42
|
+
env.metadata ??= {};
|
|
43
|
+
env.metadata.frontmatter = parsed;
|
|
44
|
+
state.line = close + 1;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy9mcm9udG1hdHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgdHlwZSB7IE1hcmtkb3duSXQgfSBmcm9tIFwiLi4vdHlwZXMuanNcIlxuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiQHN0ZC95YW1sL3BhcnNlXCJcblxuLyoqXG4gKiBTdXBwb3J0IGZvciBmcm9udG1hdHRlci5cbiAqXG4gKiBQYXNzaW5nIGBtZXRhZGF0YTogdHJ1ZWAgdG8gdGhlIG1hcmtkb3duIHJlbmRlcmluZyBtZXRob2QgaXMgcmVxdWlyZWQgdG8gcmV0cmlldmUgdGhlIGZyb250bWF0dGVyLlxuICogVGhlIGZyb250bWF0dGVyIGlzIGF1dG9tYXRpY2FsbHkgcGFyc2VkIGFzIFlBTUwuXG4gKlxuICogYGBgbWRcbiAqIC0tLVxuICogdGl0bGU6IGZvb1xuICogLS0tXG4gKiBgYGBcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBSZW5kZXJlciB9IGZyb20gXCIuLi9yZW5kZXJlci50c1wiXG4gKlxuICogY29uc3QgbWFya2Rvd24gPSBuZXcgUmVuZGVyZXIoeyBmcm9udG1hdHRlcjogdHJ1ZSB9KVxuICogY29uc3QgeyBtZXRhZGF0YSB9ID0gbWFya2Rvd24ucmVuZGVyKFwiLS0tXFxudGl0bGU6IGZvb1xcbi0tLVxcbmJhclwiLCB7IG1ldGFkYXRhOiB0cnVlIH0pXG4gKiBjb25zb2xlLmxvZyhtZXRhZGF0YS5mcm9udG1hdHRlcikgLy8geyB0aXRsZTogXCJmb29cIiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZnJvbnRtYXR0ZXIoZW5naW5lOiBNYXJrZG93bkl0KTogdm9pZCB7XG4gIGVuZ2luZS5ibG9jay5ydWxlci5iZWZvcmUoXCJ0YWJsZVwiLCBcImZyb250bWF0dGVyXCIsIChzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpID0+IHtcbiAgICBpZiAoKHN0YXJ0TGluZSAhPT0gMCkgfHwgKHN0YXRlLmJsa0luZGVudCAhPT0gMCkgfHwgKHN0YXRlLnRTaGlmdFswXSA+IDApKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgaWYgKHN0YXRlLnNyYy5zbGljZShzdGF0ZS5iTWFya3NbMF0sIHN0YXRlLmVNYXJrc1swXSkudHJpbUVuZCgpICE9PSBcIi0tLVwiKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgbGV0IGNsb3NlID0gLTFcbiAgICBmb3IgKGxldCBsaW5lID0gMTsgbGluZSA8IGVuZExpbmU7IGxpbmUrKykge1xuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlLnNyYy5zbGljZShzdGF0ZS5iTWFya3NbbGluZV0sIHN0YXRlLmVNYXJrc1tsaW5lXSkudHJpbUVuZCgpXG4gICAgICBpZiAoKHRleHQgPT09IFwiLS0tXCIpIHx8ICh0ZXh0ID09PSBcIi4uLlwiKSkge1xuICAgICAgICBjbG9zZSA9IGxpbmVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNsb3NlIDwgMClcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIGxldCBwYXJzZWRcbiAgICB0cnkge1xuICAgICAgcGFyc2VkID0gcGFyc2Uoc3RhdGUuZ2V0TGluZXMoMSwgY2xvc2UsIDAsIGZhbHNlKSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgY29uc3QgZW52ID0gc3RhdGUuZW52IGFzIHsgbWV0YWRhdGE/OiBSZWNvcmQ8UHJvcGVydHlLZXksIHVua25vd24+IH1cbiAgICAgIGVudi5tZXRhZGF0YSA/Pz0ge31cbiAgICAgIGVudi5tZXRhZGF0YS5mcm9udG1hdHRlciA9IHBhcnNlZFxuICAgICAgc3RhdGUubGluZSA9IGNsb3NlICsgMVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxuICB9KVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFFVixTQUFTLEtBQUssUUFBUSxrQkFBaUI7QUFFdkM7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCQyxHQUNELGVBQWUsU0FBUyxZQUFZLE1BQWtCO0VBQ3BELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxlQUFlLENBQUMsT0FBTyxXQUFXLFNBQVM7SUFDNUUsSUFBSSxBQUFDLGNBQWMsS0FBTyxNQUFNLFNBQVMsS0FBSyxLQUFPLE1BQU0sTUFBTSxDQUFDLEVBQUUsR0FBRyxHQUNyRSxPQUFPO0lBQ1QsSUFBSSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLE9BQU8sT0FDbEUsT0FBTztJQUNULElBQUksUUFBUSxDQUFDO0lBQ2IsSUFBSyxJQUFJLE9BQU8sR0FBRyxPQUFPLFNBQVMsT0FBUTtNQUN6QyxNQUFNLE9BQU8sTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTztNQUM1RSxJQUFJLEFBQUMsU0FBUyxTQUFXLFNBQVMsT0FBUTtRQUN4QyxRQUFRO1FBQ1I7TUFDRjtJQUNGO0lBQ0EsSUFBSSxRQUFRLEdBQ1YsT0FBTztJQUNULElBQUk7SUFDSixJQUFJO01BQ0YsU0FBUyxNQUFNLE1BQU0sUUFBUSxDQUFDLEdBQUcsT0FBTyxHQUFHO0lBQzdDLEVBQUUsT0FBTTtNQUNOLE9BQU87SUFDVDtJQUNBLElBQUksQ0FBQyxRQUFRO01BQ1gsTUFBTSxNQUFNLE1BQU0sR0FBRztNQUNyQixJQUFJLFFBQVEsS0FBSyxDQUFDO01BQ2xCLElBQUksUUFBUSxDQUFDLFdBQVcsR0FBRztNQUMzQixNQUFNLElBQUksR0FBRyxRQUFRO0lBQ3ZCO0lBQ0EsT0FBTztFQUNUO0FBQ0YifQ==
|
package/plugins/gfm.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { MarkdownIt } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Enable GitHub Flavored Markdown (GFM).
|
|
4
|
+
*
|
|
5
|
+
* The markdown-it defaults already cover tables and strikethrough, this plugin adds footnotes and tasklists.
|
|
6
|
+
* Autolinks are covered by the `linkify` option of markdown-it itself.
|
|
7
|
+
*
|
|
8
|
+
* {@link https://github.github.com/gfm | See GitHub Flavored Markdown specification for more information}.
|
|
9
|
+
*
|
|
10
|
+
* ```md
|
|
11
|
+
* - [x] foo
|
|
12
|
+
* ```
|
|
13
|
+
* ```html
|
|
14
|
+
* <ul class="contains-task-list">
|
|
15
|
+
* <li class="task-list-item"><input type="checkbox" disabled checked> foo</li>
|
|
16
|
+
* </ul>
|
|
17
|
+
* ```
|
|
18
|
+
*/ export default function gfm(engine: MarkdownIt): void;
|
package/plugins/gfm.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
import footnote from "markdown-it-footnote";
|
|
3
|
+
/**
|
|
4
|
+
* Enable GitHub Flavored Markdown (GFM).
|
|
5
|
+
*
|
|
6
|
+
* The markdown-it defaults already cover tables and strikethrough, this plugin adds footnotes and tasklists.
|
|
7
|
+
* Autolinks are covered by the `linkify` option of markdown-it itself.
|
|
8
|
+
*
|
|
9
|
+
* {@link https://github.github.com/gfm | See GitHub Flavored Markdown specification for more information}.
|
|
10
|
+
*
|
|
11
|
+
* ```md
|
|
12
|
+
* - [x] foo
|
|
13
|
+
* ```
|
|
14
|
+
* ```html
|
|
15
|
+
* <ul class="contains-task-list">
|
|
16
|
+
* <li class="task-list-item"><input type="checkbox" disabled checked> foo</li>
|
|
17
|
+
* </ul>
|
|
18
|
+
* ```
|
|
19
|
+
*/ export default function gfm(engine) {
|
|
20
|
+
engine.use(footnote);
|
|
21
|
+
engine.core.ruler.after("inline", "tasklists", (state)=>{
|
|
22
|
+
const tokens = state.tokens;
|
|
23
|
+
const lists = [];
|
|
24
|
+
for(let i = 0; i < tokens.length; i++){
|
|
25
|
+
const token = tokens[i];
|
|
26
|
+
if (token.type === "bullet_list_open" || token.type === "ordered_list_open") lists.push(token);
|
|
27
|
+
if (token.type === "bullet_list_close" || token.type === "ordered_list_close") lists.pop();
|
|
28
|
+
if (token.type !== "inline" || !token.children?.length || tokens[i - 1]?.type !== "paragraph_open" || tokens[i - 2]?.type !== "list_item_open") continue;
|
|
29
|
+
const text = token.children[0];
|
|
30
|
+
if (text.type !== "text") continue;
|
|
31
|
+
const match = text.content.match(/^\[([ xX])\](?: |$)/);
|
|
32
|
+
if (!match) continue;
|
|
33
|
+
text.content = text.content.slice(match[0].length);
|
|
34
|
+
const checkbox = new state.Token("html_inline", "", 0);
|
|
35
|
+
checkbox.content = `<input type="checkbox" disabled${match[1] === " " ? "" : " checked"}> `;
|
|
36
|
+
token.children.unshift(checkbox);
|
|
37
|
+
tokens[i - 2].attrJoin("class", "task-list-item");
|
|
38
|
+
const list = lists.at(-1);
|
|
39
|
+
if (list && !`${list.attrGet("class")}`.includes("contains-task-list")) list.attrJoin("class", "contains-task-list");
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy9nZm0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IHR5cGUgeyBNYXJrZG93bkl0IH0gZnJvbSBcIi4uL3R5cGVzLmpzXCJcbmltcG9ydCBmb290bm90ZSBmcm9tIFwibWFya2Rvd24taXQtZm9vdG5vdGVcIlxuXG4vKipcbiAqIEVuYWJsZSBHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24gKEdGTSkuXG4gKlxuICogVGhlIG1hcmtkb3duLWl0IGRlZmF1bHRzIGFscmVhZHkgY292ZXIgdGFibGVzIGFuZCBzdHJpa2V0aHJvdWdoLCB0aGlzIHBsdWdpbiBhZGRzIGZvb3Rub3RlcyBhbmQgdGFza2xpc3RzLlxuICogQXV0b2xpbmtzIGFyZSBjb3ZlcmVkIGJ5IHRoZSBgbGlua2lmeWAgb3B0aW9uIG9mIG1hcmtkb3duLWl0IGl0c2VsZi5cbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuZ2l0aHViLmNvbS9nZm0gfCBTZWUgR2l0SHViIEZsYXZvcmVkIE1hcmtkb3duIHNwZWNpZmljYXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb259LlxuICpcbiAqIGBgYG1kXG4gKiAtIFt4XSBmb29cbiAqIGBgYFxuICogYGBgaHRtbFxuICogPHVsIGNsYXNzPVwiY29udGFpbnMtdGFzay1saXN0XCI+XG4gKiAgIDxsaSBjbGFzcz1cInRhc2stbGlzdC1pdGVtXCI+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGRpc2FibGVkIGNoZWNrZWQ+IGZvbzwvbGk+XG4gKiA8L3VsPlxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdmbShlbmdpbmU6IE1hcmtkb3duSXQpOiB2b2lkIHtcbiAgZW5naW5lLnVzZShmb290bm90ZSlcbiAgZW5naW5lLmNvcmUucnVsZXIuYWZ0ZXIoXCJpbmxpbmVcIiwgXCJ0YXNrbGlzdHNcIiwgKHN0YXRlKSA9PiB7XG4gICAgY29uc3QgdG9rZW5zID0gc3RhdGUudG9rZW5zXG4gICAgY29uc3QgbGlzdHMgPSBbXSBhcyB0eXBlb2YgdG9rZW5zXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2ldXG4gICAgICBpZiAoKHRva2VuLnR5cGUgPT09IFwiYnVsbGV0X2xpc3Rfb3BlblwiKSB8fCAodG9rZW4udHlwZSA9PT0gXCJvcmRlcmVkX2xpc3Rfb3BlblwiKSlcbiAgICAgICAgbGlzdHMucHVzaCh0b2tlbilcbiAgICAgIGlmICgodG9rZW4udHlwZSA9PT0gXCJidWxsZXRfbGlzdF9jbG9zZVwiKSB8fCAodG9rZW4udHlwZSA9PT0gXCJvcmRlcmVkX2xpc3RfY2xvc2VcIikpXG4gICAgICAgIGxpc3RzLnBvcCgpXG4gICAgICBpZiAoKHRva2VuLnR5cGUgIT09IFwiaW5saW5lXCIpIHx8ICghdG9rZW4uY2hpbGRyZW4/Lmxlbmd0aCkgfHwgKHRva2Vuc1tpIC0gMV0/LnR5cGUgIT09IFwicGFyYWdyYXBoX29wZW5cIikgfHwgKHRva2Vuc1tpIC0gMl0/LnR5cGUgIT09IFwibGlzdF9pdGVtX29wZW5cIikpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICBjb25zdCB0ZXh0ID0gdG9rZW4uY2hpbGRyZW5bMF1cbiAgICAgIGlmICh0ZXh0LnR5cGUgIT09IFwidGV4dFwiKVxuICAgICAgICBjb250aW51ZVxuICAgICAgY29uc3QgbWF0Y2ggPSB0ZXh0LmNvbnRlbnQubWF0Y2goL15cXFsoWyB4WF0pXFxdKD86IHwkKS8pXG4gICAgICBpZiAoIW1hdGNoKVxuICAgICAgICBjb250aW51ZVxuICAgICAgdGV4dC5jb250ZW50ID0gdGV4dC5jb250ZW50LnNsaWNlKG1hdGNoWzBdLmxlbmd0aClcbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gbmV3IHN0YXRlLlRva2VuKFwiaHRtbF9pbmxpbmVcIiwgXCJcIiwgMClcbiAgICAgIGNoZWNrYm94LmNvbnRlbnQgPSBgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGRpc2FibGVkJHttYXRjaFsxXSA9PT0gXCIgXCIgPyBcIlwiIDogXCIgY2hlY2tlZFwifT4gYFxuICAgICAgdG9rZW4uY2hpbGRyZW4udW5zaGlmdChjaGVja2JveClcbiAgICAgIHRva2Vuc1tpIC0gMl0uYXR0ckpvaW4oXCJjbGFzc1wiLCBcInRhc2stbGlzdC1pdGVtXCIpXG4gICAgICBjb25zdCBsaXN0ID0gbGlzdHMuYXQoLTEpXG4gICAgICBpZiAobGlzdCAmJiAoIWAke2xpc3QuYXR0ckdldChcImNsYXNzXCIpfWAuaW5jbHVkZXMoXCJjb250YWlucy10YXNrLWxpc3RcIikpKVxuICAgICAgICBsaXN0LmF0dHJKb2luKFwiY2xhc3NcIiwgXCJjb250YWlucy10YXNrLWxpc3RcIilcbiAgICB9XG4gIH0pXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUVWLE9BQU8sY0FBYyx1QkFBc0I7QUFFM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDRCxlQUFlLFNBQVMsSUFBSSxNQUFrQjtFQUM1QyxPQUFPLEdBQUcsQ0FBQztFQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxhQUFhLENBQUM7SUFDOUMsTUFBTSxTQUFTLE1BQU0sTUFBTTtJQUMzQixNQUFNLFFBQVEsRUFBRTtJQUNoQixJQUFLLElBQUksSUFBSSxHQUFHLElBQUksT0FBTyxNQUFNLEVBQUUsSUFBSztNQUN0QyxNQUFNLFFBQVEsTUFBTSxDQUFDLEVBQUU7TUFDdkIsSUFBSSxBQUFDLE1BQU0sSUFBSSxLQUFLLHNCQUF3QixNQUFNLElBQUksS0FBSyxxQkFDekQsTUFBTSxJQUFJLENBQUM7TUFDYixJQUFJLEFBQUMsTUFBTSxJQUFJLEtBQUssdUJBQXlCLE1BQU0sSUFBSSxLQUFLLHNCQUMxRCxNQUFNLEdBQUc7TUFDWCxJQUFJLEFBQUMsTUFBTSxJQUFJLEtBQUssWUFBYyxDQUFDLE1BQU0sUUFBUSxFQUFFLFVBQVksTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsb0JBQXNCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLGtCQUNuSTtNQUNGLE1BQU0sT0FBTyxNQUFNLFFBQVEsQ0FBQyxFQUFFO01BQzlCLElBQUksS0FBSyxJQUFJLEtBQUssUUFDaEI7TUFDRixNQUFNLFFBQVEsS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDO01BQ2pDLElBQUksQ0FBQyxPQUNIO01BQ0YsS0FBSyxPQUFPLEdBQUcsS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTTtNQUNqRCxNQUFNLFdBQVcsSUFBSSxNQUFNLEtBQUssQ0FBQyxlQUFlLElBQUk7TUFDcEQsU0FBUyxPQUFPLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztNQUMzRixNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7TUFDdkIsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTO01BQ2hDLE1BQU0sT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFDO01BQ3ZCLElBQUksUUFBUyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyx1QkFDaEQsS0FBSyxRQUFRLENBQUMsU0FBUztJQUMzQjtFQUNGO0FBQ0YifQ==
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Plugin } from "../renderer.ts"
|
|
3
|
-
import rehypeHighlight from "rehype-highlight"
|
|
4
|
-
|
|
1
|
+
import type { MarkdownIt } from "../types.js";
|
|
5
2
|
/**
|
|
6
3
|
* Highlight code blocks.
|
|
7
4
|
*
|
|
8
|
-
* @example
|
|
9
5
|
* ````md
|
|
10
6
|
* ```ts
|
|
11
7
|
* const foo = 'bar'
|
|
@@ -16,9 +12,4 @@ import rehypeHighlight from "rehype-highlight"
|
|
|
16
12
|
* <code class="hljs language-ts"><span class="hljs-keyword">const</span> foo = <span class="hljs-string">'bar'</span></code>
|
|
17
13
|
* </pre>
|
|
18
14
|
* ```
|
|
19
|
-
*/
|
|
20
|
-
export default {
|
|
21
|
-
rehype(processor) {
|
|
22
|
-
return processor.use(rehypeHighlight)
|
|
23
|
-
},
|
|
24
|
-
} as Plugin
|
|
15
|
+
*/ export default function highlighting(engine: MarkdownIt): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
import hljs from "highlight.js/lib/common";
|
|
3
|
+
/**
|
|
4
|
+
* Highlight code blocks.
|
|
5
|
+
*
|
|
6
|
+
* ````md
|
|
7
|
+
* ```ts
|
|
8
|
+
* const foo = 'bar'
|
|
9
|
+
* ```
|
|
10
|
+
* ````
|
|
11
|
+
* ```html
|
|
12
|
+
* <pre>
|
|
13
|
+
* <code class="hljs language-ts"><span class="hljs-keyword">const</span> foo = <span class="hljs-string">'bar'</span></code>
|
|
14
|
+
* </pre>
|
|
15
|
+
* ```
|
|
16
|
+
*/ export default function highlighting(engine) {
|
|
17
|
+
engine.options.highlight = (code, language)=>{
|
|
18
|
+
if (!language || !hljs.getLanguage(language)) return "";
|
|
19
|
+
return `<pre><code class="hljs language-${engine.utils.escapeHtml(language)}">${hljs.highlight(code, {
|
|
20
|
+
language
|
|
21
|
+
}).value}</code></pre>`;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy9oaWdobGlnaHRpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IHR5cGUgeyBNYXJrZG93bkl0IH0gZnJvbSBcIi4uL3R5cGVzLmpzXCJcbmltcG9ydCBobGpzIGZyb20gXCJoaWdobGlnaHQuanMvbGliL2NvbW1vblwiXG5cbi8qKlxuICogSGlnaGxpZ2h0IGNvZGUgYmxvY2tzLlxuICpcbiAqIGBgYGBtZFxuICogYGBgdHNcbiAqIGNvbnN0IGZvbyA9ICdiYXInXG4gKiBgYGBcbiAqIGBgYGBcbiAqIGBgYGh0bWxcbiAqIDxwcmU+XG4gKiAgIDxjb2RlIGNsYXNzPVwiaGxqcyBsYW5ndWFnZS10c1wiPjxzcGFuIGNsYXNzPVwiaGxqcy1rZXl3b3JkXCI+Y29uc3Q8L3NwYW4+IGZvbyA9IDxzcGFuIGNsYXNzPVwiaGxqcy1zdHJpbmdcIj4nYmFyJzwvc3Bhbj48L2NvZGU+XG4gKiA8L3ByZT5cbiAqIGBgYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoaWdobGlnaHRpbmcoZW5naW5lOiBNYXJrZG93bkl0KTogdm9pZCB7XG4gIGVuZ2luZS5vcHRpb25zLmhpZ2hsaWdodCA9IChjb2RlLCBsYW5ndWFnZSkgPT4ge1xuICAgIGlmICgoIWxhbmd1YWdlKSB8fCAoIWhsanMuZ2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpKSlcbiAgICAgIHJldHVybiBcIlwiXG4gICAgcmV0dXJuIGA8cHJlPjxjb2RlIGNsYXNzPVwiaGxqcyBsYW5ndWFnZS0ke2VuZ2luZS51dGlscy5lc2NhcGVIdG1sKGxhbmd1YWdlKX1cIj4ke2hsanMuaGlnaGxpZ2h0KGNvZGUsIHsgbGFuZ3VhZ2UgfSkudmFsdWV9PC9jb2RlPjwvcHJlPmBcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFFVixPQUFPLFVBQVUsMEJBQXlCO0FBRTFDOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRCxlQUFlLFNBQVMsYUFBYSxNQUFrQjtFQUNyRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxNQUFNO0lBQ2hDLElBQUksQUFBQyxDQUFDLFlBQWMsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxXQUNwQyxPQUFPO0lBQ1QsT0FBTyxDQUFDLGdDQUFnQyxFQUFFLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLFNBQVMsQ0FBQyxNQUFNO01BQUU7SUFBUyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7RUFDekk7QUFDRiJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MarkdownIt } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Add support for markers.
|
|
4
|
+
*
|
|
5
|
+
* Markers may be assigned a single-letter attribute (e.g. for colors) using the `=x=foo=` syntax.
|
|
6
|
+
*
|
|
7
|
+
* ```md
|
|
8
|
+
* ==foo==
|
|
9
|
+
* =r=bar=
|
|
10
|
+
* ```
|
|
11
|
+
* ```html
|
|
12
|
+
* <p><mark>foo</mark></p>
|
|
13
|
+
* <p><mark r="">bar</mark></p>
|
|
14
|
+
* ```
|
|
15
|
+
*/ export default function markers(engine: MarkdownIt): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
/**
|
|
3
|
+
* Add support for markers.
|
|
4
|
+
*
|
|
5
|
+
* Markers may be assigned a single-letter attribute (e.g. for colors) using the `=x=foo=` syntax.
|
|
6
|
+
*
|
|
7
|
+
* ```md
|
|
8
|
+
* ==foo==
|
|
9
|
+
* =r=bar=
|
|
10
|
+
* ```
|
|
11
|
+
* ```html
|
|
12
|
+
* <p><mark>foo</mark></p>
|
|
13
|
+
* <p><mark r="">bar</mark></p>
|
|
14
|
+
* ```
|
|
15
|
+
*/ export default function markers(engine) {
|
|
16
|
+
engine.inline.ruler.after("escape", "markers", (state, silent)=>{
|
|
17
|
+
if (state.src[state.pos] !== "=") return false;
|
|
18
|
+
const match = /^=(?:([a-z])=|=)([^=\s](?:[^=\n]*[^=\s])?)=(=)?/.exec(state.src.slice(state.pos, state.posMax));
|
|
19
|
+
if (!match) return false;
|
|
20
|
+
if (!silent) {
|
|
21
|
+
const token = state.push("mark_open", "mark", 1);
|
|
22
|
+
if (match[1]) token.attrSet(match[1], "");
|
|
23
|
+
state.push("text", "", 0).content = match[2];
|
|
24
|
+
state.push("mark_close", "mark", -1);
|
|
25
|
+
}
|
|
26
|
+
state.pos += match[0].length;
|
|
27
|
+
return true;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy9tYXJrZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCB0eXBlIHsgTWFya2Rvd25JdCB9IGZyb20gXCIuLi90eXBlcy5qc1wiXG5cbi8qKlxuICogQWRkIHN1cHBvcnQgZm9yIG1hcmtlcnMuXG4gKlxuICogTWFya2VycyBtYXkgYmUgYXNzaWduZWQgYSBzaW5nbGUtbGV0dGVyIGF0dHJpYnV0ZSAoZS5nLiBmb3IgY29sb3JzKSB1c2luZyB0aGUgYD14PWZvbz1gIHN5bnRheC5cbiAqXG4gKiBgYGBtZFxuICogPT1mb289PVxuICogPXI9YmFyPVxuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8cD48bWFyaz5mb288L21hcms+PC9wPlxuICogPHA+PG1hcmsgcj1cIlwiPmJhcjwvbWFyaz48L3A+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFya2VycyhlbmdpbmU6IE1hcmtkb3duSXQpOiB2b2lkIHtcbiAgZW5naW5lLmlubGluZS5ydWxlci5hZnRlcihcImVzY2FwZVwiLCBcIm1hcmtlcnNcIiwgKHN0YXRlLCBzaWxlbnQpID0+IHtcbiAgICBpZiAoc3RhdGUuc3JjW3N0YXRlLnBvc10gIT09IFwiPVwiKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgY29uc3QgbWF0Y2ggPSAvXj0oPzooW2Etel0pPXw9KShbXj1cXHNdKD86W149XFxuXSpbXj1cXHNdKT8pPSg9KT8vLmV4ZWMoc3RhdGUuc3JjLnNsaWNlKHN0YXRlLnBvcywgc3RhdGUucG9zTWF4KSlcbiAgICBpZiAoIW1hdGNoKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gc3RhdGUucHVzaChcIm1hcmtfb3BlblwiLCBcIm1hcmtcIiwgMSlcbiAgICAgIGlmIChtYXRjaFsxXSlcbiAgICAgICAgdG9rZW4uYXR0clNldChtYXRjaFsxXSwgXCJcIilcbiAgICAgIHN0YXRlLnB1c2goXCJ0ZXh0XCIsIFwiXCIsIDApLmNvbnRlbnQgPSBtYXRjaFsyXVxuICAgICAgc3RhdGUucHVzaChcIm1hcmtfY2xvc2VcIiwgXCJtYXJrXCIsIC0xKVxuICAgIH1cbiAgICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBR1Y7Ozs7Ozs7Ozs7Ozs7Q0FhQyxHQUNELGVBQWUsU0FBUyxRQUFRLE1BQWtCO0VBQ2hELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxXQUFXLENBQUMsT0FBTztJQUNyRCxJQUFJLE1BQU0sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssS0FDM0IsT0FBTztJQUNULE1BQU0sUUFBUSxrREFBa0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxNQUFNLE1BQU07SUFDNUcsSUFBSSxDQUFDLE9BQ0gsT0FBTztJQUNULElBQUksQ0FBQyxRQUFRO01BQ1gsTUFBTSxRQUFRLE1BQU0sSUFBSSxDQUFDLGFBQWEsUUFBUTtNQUM5QyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQ1YsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRTtNQUMxQixNQUFNLElBQUksQ0FBQyxRQUFRLElBQUksR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUU7TUFDNUMsTUFBTSxJQUFJLENBQUMsY0FBYyxRQUFRLENBQUM7SUFDcEM7SUFDQSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU07SUFDNUIsT0FBTztFQUNUO0FBQ0YifQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { MarkdownIt } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Add support for math expressions.
|
|
4
|
+
*
|
|
5
|
+
* Expressions are rendered as `.math` elements containing the raw TeX source, intended for client-side processing:
|
|
6
|
+
* ```html
|
|
7
|
+
* <script type="module">
|
|
8
|
+
* import katex from "https://esm.sh/katex"
|
|
9
|
+
* for (const element of document.querySelectorAll(".math")) {
|
|
10
|
+
* katex.render(element.textContent, element, { displayMode: element.classList.contains("math-display") })
|
|
11
|
+
* }
|
|
12
|
+
* </script>
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* ```md
|
|
16
|
+
* $$\pi$$
|
|
17
|
+
* ```
|
|
18
|
+
* ```html
|
|
19
|
+
* <div class="math math-display">\pi</div>
|
|
20
|
+
* ```
|
|
21
|
+
*/ export default function math(engine: MarkdownIt): void;
|
package/plugins/math.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
/**
|
|
3
|
+
* Add support for math expressions.
|
|
4
|
+
*
|
|
5
|
+
* Expressions are rendered as `.math` elements containing the raw TeX source, intended for client-side processing:
|
|
6
|
+
* ```html
|
|
7
|
+
* <script type="module">
|
|
8
|
+
* import katex from "https://esm.sh/katex"
|
|
9
|
+
* for (const element of document.querySelectorAll(".math")) {
|
|
10
|
+
* katex.render(element.textContent, element, { displayMode: element.classList.contains("math-display") })
|
|
11
|
+
* }
|
|
12
|
+
* </script>
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* ```md
|
|
16
|
+
* $$\pi$$
|
|
17
|
+
* ```
|
|
18
|
+
* ```html
|
|
19
|
+
* <div class="math math-display">\pi</div>
|
|
20
|
+
* ```
|
|
21
|
+
*/ export default function math(engine) {
|
|
22
|
+
engine.inline.ruler.after("escape", "math_inline", (state, silent)=>{
|
|
23
|
+
const { src, pos, posMax } = state;
|
|
24
|
+
if (src[pos] !== "$" || src[pos + 1] === "$" || pos + 1 >= posMax) return false;
|
|
25
|
+
let end = pos + 1;
|
|
26
|
+
while(end < posMax && src[end] !== "$")end++;
|
|
27
|
+
if (end >= posMax || end === pos + 1) return false;
|
|
28
|
+
const content = src.slice(pos + 1, end);
|
|
29
|
+
if (/^\s/.test(content) || /\s$/.test(content)) return false;
|
|
30
|
+
if (!silent) state.push("math_inline", "span", 0).content = content;
|
|
31
|
+
state.pos = end + 1;
|
|
32
|
+
return true;
|
|
33
|
+
});
|
|
34
|
+
engine.block.ruler.after("fence", "math_block", (state, startLine, endLine, silent)=>{
|
|
35
|
+
let pos = state.bMarks[startLine] + state.tShift[startLine];
|
|
36
|
+
let max = state.eMarks[startLine];
|
|
37
|
+
if (pos + 2 > max || state.src.slice(pos, pos + 2) !== "$$") return false;
|
|
38
|
+
if (silent) return true;
|
|
39
|
+
let firstLine = state.src.slice(pos + 2, max);
|
|
40
|
+
let lastLine = "";
|
|
41
|
+
let found = false;
|
|
42
|
+
if (firstLine.trim().endsWith("$$")) {
|
|
43
|
+
firstLine = firstLine.trim().slice(0, -2);
|
|
44
|
+
found = true;
|
|
45
|
+
}
|
|
46
|
+
let next = startLine;
|
|
47
|
+
while(!found){
|
|
48
|
+
next++;
|
|
49
|
+
if (next >= endLine) return false;
|
|
50
|
+
pos = state.bMarks[next] + state.tShift[next];
|
|
51
|
+
max = state.eMarks[next];
|
|
52
|
+
const line = state.src.slice(pos, max);
|
|
53
|
+
if (line.trim().endsWith("$$")) {
|
|
54
|
+
lastLine = line.slice(0, line.lastIndexOf("$$"));
|
|
55
|
+
found = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
state.line = next + 1;
|
|
59
|
+
const token = state.push("math_block", "div", 0);
|
|
60
|
+
token.block = true;
|
|
61
|
+
token.content = [
|
|
62
|
+
firstLine,
|
|
63
|
+
next > startLine + 1 ? state.getLines(startLine + 1, next, state.tShift[startLine], false) : "",
|
|
64
|
+
lastLine
|
|
65
|
+
].filter((part)=>part.trim()).join("\n");
|
|
66
|
+
token.map = [
|
|
67
|
+
startLine,
|
|
68
|
+
state.line
|
|
69
|
+
];
|
|
70
|
+
return true;
|
|
71
|
+
});
|
|
72
|
+
engine.renderer.rules.math_inline = (tokens, index)=>`<span class="math math-inline">${engine.utils.escapeHtml(tokens[index].content)}</span>`;
|
|
73
|
+
engine.renderer.rules.math_block = (tokens, index)=>`<div class="math math-display">${engine.utils.escapeHtml(tokens[index].content)}</div>\n`;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy9tYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCB0eXBlIHsgTWFya2Rvd25JdCB9IGZyb20gXCIuLi90eXBlcy5qc1wiXG5cbi8qKlxuICogQWRkIHN1cHBvcnQgZm9yIG1hdGggZXhwcmVzc2lvbnMuXG4gKlxuICogRXhwcmVzc2lvbnMgYXJlIHJlbmRlcmVkIGFzIGAubWF0aGAgZWxlbWVudHMgY29udGFpbmluZyB0aGUgcmF3IFRlWCBzb3VyY2UsIGludGVuZGVkIGZvciBjbGllbnQtc2lkZSBwcm9jZXNzaW5nOlxuICogYGBgaHRtbFxuICogPHNjcmlwdCB0eXBlPVwibW9kdWxlXCI+XG4gKiAgIGltcG9ydCBrYXRleCBmcm9tIFwiaHR0cHM6Ly9lc20uc2gva2F0ZXhcIlxuICogICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5tYXRoXCIpKSB7XG4gKiAgICAga2F0ZXgucmVuZGVyKGVsZW1lbnQudGV4dENvbnRlbnQsIGVsZW1lbnQsIHsgZGlzcGxheU1vZGU6IGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwibWF0aC1kaXNwbGF5XCIpIH0pXG4gKiAgIH1cbiAqIDwvc2NyaXB0PlxuICogYGBgXG4gKlxuICogYGBgbWRcbiAqICQkXFxwaSQkXG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxkaXYgY2xhc3M9XCJtYXRoIG1hdGgtZGlzcGxheVwiPlxccGk8L2Rpdj5cbiAqIGBgYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtYXRoKGVuZ2luZTogTWFya2Rvd25JdCk6IHZvaWQge1xuICBlbmdpbmUuaW5saW5lLnJ1bGVyLmFmdGVyKFwiZXNjYXBlXCIsIFwibWF0aF9pbmxpbmVcIiwgKHN0YXRlLCBzaWxlbnQpID0+IHtcbiAgICBjb25zdCB7IHNyYywgcG9zLCBwb3NNYXggfSA9IHN0YXRlXG4gICAgaWYgKChzcmNbcG9zXSAhPT0gXCIkXCIpIHx8IChzcmNbcG9zICsgMV0gPT09IFwiJFwiKSB8fCAocG9zICsgMSA+PSBwb3NNYXgpKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgbGV0IGVuZCA9IHBvcyArIDFcbiAgICB3aGlsZSAoKGVuZCA8IHBvc01heCkgJiYgKHNyY1tlbmRdICE9PSBcIiRcIikpXG4gICAgICBlbmQrK1xuICAgIGlmICgoZW5kID49IHBvc01heCkgfHwgKGVuZCA9PT0gcG9zICsgMSkpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICBjb25zdCBjb250ZW50ID0gc3JjLnNsaWNlKHBvcyArIDEsIGVuZClcbiAgICBpZiAoKC9eXFxzLy50ZXN0KGNvbnRlbnQpKSB8fCAoL1xccyQvLnRlc3QoY29udGVudCkpKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgaWYgKCFzaWxlbnQpXG4gICAgICBzdGF0ZS5wdXNoKFwibWF0aF9pbmxpbmVcIiwgXCJzcGFuXCIsIDApLmNvbnRlbnQgPSBjb250ZW50XG4gICAgc3RhdGUucG9zID0gZW5kICsgMVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG4gIGVuZ2luZS5ibG9jay5ydWxlci5hZnRlcihcImZlbmNlXCIsIFwibWF0aF9ibG9ja1wiLCAoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSA9PiB7XG4gICAgbGV0IHBvcyA9IHN0YXRlLmJNYXJrc1tzdGFydExpbmVdICsgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV1cbiAgICBsZXQgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV1cbiAgICBpZiAoKHBvcyArIDIgPiBtYXgpIHx8IChzdGF0ZS5zcmMuc2xpY2UocG9zLCBwb3MgKyAyKSAhPT0gXCIkJFwiKSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIGlmIChzaWxlbnQpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGxldCBmaXJzdExpbmUgPSBzdGF0ZS5zcmMuc2xpY2UocG9zICsgMiwgbWF4KVxuICAgIGxldCBsYXN0TGluZSA9IFwiXCJcbiAgICBsZXQgZm91bmQgPSBmYWxzZVxuICAgIGlmIChmaXJzdExpbmUudHJpbSgpLmVuZHNXaXRoKFwiJCRcIikpIHtcbiAgICAgIGZpcnN0TGluZSA9IGZpcnN0TGluZS50cmltKCkuc2xpY2UoMCwgLTIpXG4gICAgICBmb3VuZCA9IHRydWVcbiAgICB9XG4gICAgbGV0IG5leHQgPSBzdGFydExpbmVcbiAgICB3aGlsZSAoIWZvdW5kKSB7XG4gICAgICBuZXh0KytcbiAgICAgIGlmIChuZXh0ID49IGVuZExpbmUpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW25leHRdICsgc3RhdGUudFNoaWZ0W25leHRdXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3NbbmV4dF1cbiAgICAgIGNvbnN0IGxpbmUgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpXG4gICAgICBpZiAobGluZS50cmltKCkuZW5kc1dpdGgoXCIkJFwiKSkge1xuICAgICAgICBsYXN0TGluZSA9IGxpbmUuc2xpY2UoMCwgbGluZS5sYXN0SW5kZXhPZihcIiQkXCIpKVxuICAgICAgICBmb3VuZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gICAgc3RhdGUubGluZSA9IG5leHQgKyAxXG4gICAgY29uc3QgdG9rZW4gPSBzdGF0ZS5wdXNoKFwibWF0aF9ibG9ja1wiLCBcImRpdlwiLCAwKVxuICAgIHRva2VuLmJsb2NrID0gdHJ1ZVxuICAgIHRva2VuLmNvbnRlbnQgPSBbZmlyc3RMaW5lLCBuZXh0ID4gc3RhcnRMaW5lICsgMSA/IHN0YXRlLmdldExpbmVzKHN0YXJ0TGluZSArIDEsIG5leHQsIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLCBmYWxzZSkgOiBcIlwiLCBsYXN0TGluZV0uZmlsdGVyKChwYXJ0KSA9PiBwYXJ0LnRyaW0oKSkuam9pbihcIlxcblwiKVxuICAgIHRva2VuLm1hcCA9IFtzdGFydExpbmUsIHN0YXRlLmxpbmVdXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcbiAgZW5naW5lLnJlbmRlcmVyLnJ1bGVzLm1hdGhfaW5saW5lID0gKHRva2VucywgaW5kZXgpID0+IGA8c3BhbiBjbGFzcz1cIm1hdGggbWF0aC1pbmxpbmVcIj4ke2VuZ2luZS51dGlscy5lc2NhcGVIdG1sKHRva2Vuc1tpbmRleF0uY29udGVudCl9PC9zcGFuPmBcbiAgZW5naW5lLnJlbmRlcmVyLnJ1bGVzLm1hdGhfYmxvY2sgPSAodG9rZW5zLCBpbmRleCkgPT4gYDxkaXYgY2xhc3M9XCJtYXRoIG1hdGgtZGlzcGxheVwiPiR7ZW5naW5lLnV0aWxzLmVzY2FwZUh0bWwodG9rZW5zW2luZGV4XS5jb250ZW50KX08L2Rpdj5cXG5gXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUdWOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUJDLEdBQ0QsZUFBZSxTQUFTLEtBQUssTUFBa0I7RUFDN0MsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLGVBQWUsQ0FBQyxPQUFPO0lBQ3pELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHO0lBQzdCLElBQUksQUFBQyxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQVMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLE9BQVMsTUFBTSxLQUFLLFFBQzlELE9BQU87SUFDVCxJQUFJLE1BQU0sTUFBTTtJQUNoQixNQUFPLEFBQUMsTUFBTSxVQUFZLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFDckM7SUFDRixJQUFJLEFBQUMsT0FBTyxVQUFZLFFBQVEsTUFBTSxHQUNwQyxPQUFPO0lBQ1QsTUFBTSxVQUFVLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRztJQUNuQyxJQUFJLEFBQUMsTUFBTSxJQUFJLENBQUMsWUFBYyxNQUFNLElBQUksQ0FBQyxVQUN2QyxPQUFPO0lBQ1QsSUFBSSxDQUFDLFFBQ0gsTUFBTSxJQUFJLENBQUMsZUFBZSxRQUFRLEdBQUcsT0FBTyxHQUFHO0lBQ2pELE1BQU0sR0FBRyxHQUFHLE1BQU07SUFDbEIsT0FBTztFQUNUO0VBQ0EsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLGNBQWMsQ0FBQyxPQUFPLFdBQVcsU0FBUztJQUMxRSxJQUFJLE1BQU0sTUFBTSxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLFVBQVU7SUFDM0QsSUFBSSxNQUFNLE1BQU0sTUFBTSxDQUFDLFVBQVU7SUFDakMsSUFBSSxBQUFDLE1BQU0sSUFBSSxPQUFTLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sT0FBTyxNQUN4RCxPQUFPO0lBQ1QsSUFBSSxRQUNGLE9BQU87SUFDVCxJQUFJLFlBQVksTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRztJQUN6QyxJQUFJLFdBQVc7SUFDZixJQUFJLFFBQVE7SUFDWixJQUFJLFVBQVUsSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPO01BQ25DLFlBQVksVUFBVSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUN2QyxRQUFRO0lBQ1Y7SUFDQSxJQUFJLE9BQU87SUFDWCxNQUFPLENBQUMsTUFBTztNQUNiO01BQ0EsSUFBSSxRQUFRLFNBQ1YsT0FBTztNQUNULE1BQU0sTUFBTSxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLEtBQUs7TUFDN0MsTUFBTSxNQUFNLE1BQU0sQ0FBQyxLQUFLO01BQ3hCLE1BQU0sT0FBTyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztNQUNsQyxJQUFJLEtBQUssSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPO1FBQzlCLFdBQVcsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQztRQUMxQyxRQUFRO01BQ1Y7SUFDRjtJQUNBLE1BQU0sSUFBSSxHQUFHLE9BQU87SUFDcEIsTUFBTSxRQUFRLE1BQU0sSUFBSSxDQUFDLGNBQWMsT0FBTztJQUM5QyxNQUFNLEtBQUssR0FBRztJQUNkLE1BQU0sT0FBTyxHQUFHO01BQUM7TUFBVyxPQUFPLFlBQVksSUFBSSxNQUFNLFFBQVEsQ0FBQyxZQUFZLEdBQUcsTUFBTSxNQUFNLE1BQU0sQ0FBQyxVQUFVLEVBQUUsU0FBUztNQUFJO0tBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFTLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQztJQUMxSyxNQUFNLEdBQUcsR0FBRztNQUFDO01BQVcsTUFBTSxJQUFJO0tBQUM7SUFDbkMsT0FBTztFQUNUO0VBQ0EsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLFFBQVEsUUFBVSxDQUFDLCtCQUErQixFQUFFLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7RUFDaEosT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLFFBQVEsUUFBVSxDQUFDLCtCQUErQixFQUFFLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7QUFDbEoifQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MarkdownIt } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Add support for Mermaid diagrams.
|
|
4
|
+
*
|
|
5
|
+
* Diagrams are rendered as `<pre class="mermaid">` elements intended for client-side processing:
|
|
6
|
+
* ```html
|
|
7
|
+
* <script type="module">
|
|
8
|
+
* import mermaid from "https://esm.sh/mermaid"
|
|
9
|
+
* mermaid.run()
|
|
10
|
+
* </script>
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* {@link https://mermaid-js.github.io/mermaid | See Mermaid documentation for more information}.
|
|
14
|
+
*
|
|
15
|
+
* ````md
|
|
16
|
+
* ```mermaid
|
|
17
|
+
* graph TD;
|
|
18
|
+
* A-->B;
|
|
19
|
+
* ```
|
|
20
|
+
* ````
|
|
21
|
+
* ```html
|
|
22
|
+
* <pre class="mermaid">graph TD;
|
|
23
|
+
* A-->B;</pre>
|
|
24
|
+
* ```
|
|
25
|
+
*/ export default function mermaid(engine: MarkdownIt): void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
/**
|
|
3
|
+
* Add support for Mermaid diagrams.
|
|
4
|
+
*
|
|
5
|
+
* Diagrams are rendered as `<pre class="mermaid">` elements intended for client-side processing:
|
|
6
|
+
* ```html
|
|
7
|
+
* <script type="module">
|
|
8
|
+
* import mermaid from "https://esm.sh/mermaid"
|
|
9
|
+
* mermaid.run()
|
|
10
|
+
* </script>
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* {@link https://mermaid-js.github.io/mermaid | See Mermaid documentation for more information}.
|
|
14
|
+
*
|
|
15
|
+
* ````md
|
|
16
|
+
* ```mermaid
|
|
17
|
+
* graph TD;
|
|
18
|
+
* A-->B;
|
|
19
|
+
* ```
|
|
20
|
+
* ````
|
|
21
|
+
* ```html
|
|
22
|
+
* <pre class="mermaid">graph TD;
|
|
23
|
+
* A-->B;</pre>
|
|
24
|
+
* ```
|
|
25
|
+
*/ export default function mermaid(engine) {
|
|
26
|
+
const fence = engine.renderer.rules.fence;
|
|
27
|
+
engine.renderer.rules.fence = (tokens, index, options, env, self)=>{
|
|
28
|
+
if (tokens[index].info.trim() === "mermaid") return `<pre class="mermaid">${engine.utils.escapeHtml(tokens[index].content.trim())}</pre>\n`;
|
|
29
|
+
return fence(tokens, index, options, env, self);
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy9tZXJtYWlkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCB0eXBlIHsgTWFya2Rvd25JdCB9IGZyb20gXCIuLi90eXBlcy5qc1wiXG5cbi8qKlxuICogQWRkIHN1cHBvcnQgZm9yIE1lcm1haWQgZGlhZ3JhbXMuXG4gKlxuICogRGlhZ3JhbXMgYXJlIHJlbmRlcmVkIGFzIGA8cHJlIGNsYXNzPVwibWVybWFpZFwiPmAgZWxlbWVudHMgaW50ZW5kZWQgZm9yIGNsaWVudC1zaWRlIHByb2Nlc3Npbmc6XG4gKiBgYGBodG1sXG4gKiA8c2NyaXB0IHR5cGU9XCJtb2R1bGVcIj5cbiAqICAgaW1wb3J0IG1lcm1haWQgZnJvbSBcImh0dHBzOi8vZXNtLnNoL21lcm1haWRcIlxuICogICBtZXJtYWlkLnJ1bigpXG4gKiA8L3NjcmlwdD5cbiAqIGBgYFxuICpcbiAqIHtAbGluayBodHRwczovL21lcm1haWQtanMuZ2l0aHViLmlvL21lcm1haWQgfCBTZWUgTWVybWFpZCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9ufS5cbiAqXG4gKiBgYGBgbWRcbiAqIGBgYG1lcm1haWRcbiAqIGdyYXBoIFREO1xuICogICBBLS0+QjtcbiAqIGBgYFxuICogYGBgYFxuICogYGBgaHRtbFxuICogPHByZSBjbGFzcz1cIm1lcm1haWRcIj5ncmFwaCBURDtcbiAqICAgQS0tPkI7PC9wcmU+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVybWFpZChlbmdpbmU6IE1hcmtkb3duSXQpOiB2b2lkIHtcbiAgY29uc3QgZmVuY2UgPSBlbmdpbmUucmVuZGVyZXIucnVsZXMuZmVuY2UhXG4gIGVuZ2luZS5yZW5kZXJlci5ydWxlcy5mZW5jZSA9ICh0b2tlbnMsIGluZGV4LCBvcHRpb25zLCBlbnYsIHNlbGYpID0+IHtcbiAgICBpZiAodG9rZW5zW2luZGV4XS5pbmZvLnRyaW0oKSA9PT0gXCJtZXJtYWlkXCIpXG4gICAgICByZXR1cm4gYDxwcmUgY2xhc3M9XCJtZXJtYWlkXCI+JHtlbmdpbmUudXRpbHMuZXNjYXBlSHRtbCh0b2tlbnNbaW5kZXhdLmNvbnRlbnQudHJpbSgpKX08L3ByZT5cXG5gXG4gICAgcmV0dXJuIGZlbmNlKHRva2VucywgaW5kZXgsIG9wdGlvbnMsIGVudiwgc2VsZilcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFHVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F1QkMsR0FDRCxlQUFlLFNBQVMsUUFBUSxNQUFrQjtFQUNoRCxNQUFNLFFBQVEsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUs7RUFDekMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLFFBQVEsT0FBTyxTQUFTLEtBQUs7SUFDMUQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sV0FDaEMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDO0lBQ2hHLE9BQU8sTUFBTSxRQUFRLE9BQU8sU0FBUyxLQUFLO0VBQzVDO0FBQ0YifQ==
|
package/plugins/mod.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { default as anchors } from "./anchors.js";
|
|
2
|
+
export { default as callouts } from "./callouts.js";
|
|
3
|
+
export { default as directives } from "./directives.js";
|
|
4
|
+
export type * from "./directives.js";
|
|
5
|
+
export { default as emojis } from "./emojis.js";
|
|
6
|
+
export { default as frontmatter } from "./frontmatter.js";
|
|
7
|
+
export { default as gfm } from "./gfm.js";
|
|
8
|
+
export { default as highlighting } from "./highlighting.js";
|
|
9
|
+
export { default as markers } from "./markers.js";
|
|
10
|
+
export { default as math } from "./math.js";
|
|
11
|
+
export { default as mermaid } from "./mermaid.js";
|
|
12
|
+
export { default as ruby } from "./ruby.js";
|
|
13
|
+
export { default as uncomments } from "./uncomments.js";
|
|
14
|
+
export { default as wikilinks } from "./wikilinks.js";
|
|
15
|
+
export type * from "./wikilinks.js";
|
package/plugins/mod.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { default as anchors } from "./anchors.js";
|
|
2
|
+
export { default as callouts } from "./callouts.js";
|
|
3
|
+
export { default as directives } from "./directives.js";
|
|
4
|
+
export { default as emojis } from "./emojis.js";
|
|
5
|
+
export { default as frontmatter } from "./frontmatter.js";
|
|
6
|
+
export { default as gfm } from "./gfm.js";
|
|
7
|
+
export { default as highlighting } from "./highlighting.js";
|
|
8
|
+
export { default as markers } from "./markers.js";
|
|
9
|
+
export { default as math } from "./math.js";
|
|
10
|
+
export { default as mermaid } from "./mermaid.js";
|
|
11
|
+
export { default as ruby } from "./ruby.js";
|
|
12
|
+
export { default as uncomments } from "./uncomments.js";
|
|
13
|
+
export { default as wikilinks } from "./wikilinks.js";
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBhbmNob3JzIH0gZnJvbSBcIi4vYW5jaG9ycy5qc1wiXG5leHBvcnQgeyBkZWZhdWx0IGFzIGNhbGxvdXRzIH0gZnJvbSBcIi4vY2FsbG91dHMuanNcIlxuZXhwb3J0IHsgZGVmYXVsdCBhcyBkaXJlY3RpdmVzIH0gZnJvbSBcIi4vZGlyZWN0aXZlcy5qc1wiXG5leHBvcnQgdHlwZSAqIGZyb20gXCIuL2RpcmVjdGl2ZXMuanNcIlxuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbW9qaXMgfSBmcm9tIFwiLi9lbW9qaXMuanNcIlxuZXhwb3J0IHsgZGVmYXVsdCBhcyBmcm9udG1hdHRlciB9IGZyb20gXCIuL2Zyb250bWF0dGVyLmpzXCJcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2ZtIH0gZnJvbSBcIi4vZ2ZtLmpzXCJcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaGlnaGxpZ2h0aW5nIH0gZnJvbSBcIi4vaGlnaGxpZ2h0aW5nLmpzXCJcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWFya2VycyB9IGZyb20gXCIuL21hcmtlcnMuanNcIlxuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXRoIH0gZnJvbSBcIi4vbWF0aC5qc1wiXG5leHBvcnQgeyBkZWZhdWx0IGFzIG1lcm1haWQgfSBmcm9tIFwiLi9tZXJtYWlkLmpzXCJcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcnVieSB9IGZyb20gXCIuL3J1YnkuanNcIlxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bmNvbW1lbnRzIH0gZnJvbSBcIi4vdW5jb21tZW50cy5qc1wiXG5leHBvcnQgeyBkZWZhdWx0IGFzIHdpa2lsaW5rcyB9IGZyb20gXCIuL3dpa2lsaW5rcy5qc1wiXG5leHBvcnQgdHlwZSAqIGZyb20gXCIuL3dpa2lsaW5rcy5qc1wiXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxXQUFXLE9BQU8sUUFBUSxlQUFjO0FBQ2pELFNBQVMsV0FBVyxRQUFRLFFBQVEsZ0JBQWU7QUFDbkQsU0FBUyxXQUFXLFVBQVUsUUFBUSxrQkFBaUI7QUFFdkQsU0FBUyxXQUFXLE1BQU0sUUFBUSxjQUFhO0FBQy9DLFNBQVMsV0FBVyxXQUFXLFFBQVEsbUJBQWtCO0FBQ3pELFNBQVMsV0FBVyxHQUFHLFFBQVEsV0FBVTtBQUN6QyxTQUFTLFdBQVcsWUFBWSxRQUFRLG9CQUFtQjtBQUMzRCxTQUFTLFdBQVcsT0FBTyxRQUFRLGVBQWM7QUFDakQsU0FBUyxXQUFXLElBQUksUUFBUSxZQUFXO0FBQzNDLFNBQVMsV0FBVyxPQUFPLFFBQVEsZUFBYztBQUNqRCxTQUFTLFdBQVcsSUFBSSxRQUFRLFlBQVc7QUFDM0MsU0FBUyxXQUFXLFVBQVUsUUFBUSxrQkFBaUI7QUFDdkQsU0FBUyxXQUFXLFNBQVMsUUFBUSxpQkFBZ0IifQ==
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Plugin } from "../renderer.ts"
|
|
3
|
-
import remarkRuby from "remark-ruby"
|
|
4
|
-
|
|
1
|
+
import type { MarkdownIt } from "../types.js";
|
|
5
2
|
/**
|
|
6
3
|
* Add support for {@link https://developer.mozilla.org/docs/Web/HTML/Element/ruby | ruby} text.
|
|
7
4
|
*
|
|
8
|
-
* @example
|
|
9
5
|
* ```md
|
|
10
6
|
* {漢字}^(kanji)
|
|
11
7
|
* ```
|
|
12
8
|
* ```html
|
|
13
9
|
* <ruby>漢字<rp>(</rp><rt>kanji</rt><rp>)</rp></ruby>
|
|
14
10
|
* ```
|
|
15
|
-
*/
|
|
16
|
-
export default {
|
|
17
|
-
remark(processor) {
|
|
18
|
-
return processor.use(remarkRuby)
|
|
19
|
-
},
|
|
20
|
-
} as Plugin
|
|
11
|
+
*/ export default function ruby(engine: MarkdownIt): void;
|
package/plugins/ruby.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
/**
|
|
3
|
+
* Add support for {@link https://developer.mozilla.org/docs/Web/HTML/Element/ruby | ruby} text.
|
|
4
|
+
*
|
|
5
|
+
* ```md
|
|
6
|
+
* {漢字}^(kanji)
|
|
7
|
+
* ```
|
|
8
|
+
* ```html
|
|
9
|
+
* <ruby>漢字<rp>(</rp><rt>kanji</rt><rp>)</rp></ruby>
|
|
10
|
+
* ```
|
|
11
|
+
*/ export default function ruby(engine) {
|
|
12
|
+
engine.inline.ruler.after("escape", "ruby", (state, silent)=>{
|
|
13
|
+
if (state.src[state.pos] !== "{") return false;
|
|
14
|
+
const match = /^\{([^}\n]+)\}\^\(([^)\n]+)\)/.exec(state.src.slice(state.pos, state.posMax));
|
|
15
|
+
if (!match) return false;
|
|
16
|
+
if (!silent) state.push("ruby", "ruby", 0).meta = {
|
|
17
|
+
base: match[1],
|
|
18
|
+
annotation: match[2]
|
|
19
|
+
};
|
|
20
|
+
state.pos += match[0].length;
|
|
21
|
+
return true;
|
|
22
|
+
});
|
|
23
|
+
engine.renderer.rules.ruby = (tokens, index)=>{
|
|
24
|
+
const { base, annotation } = tokens[index].meta;
|
|
25
|
+
return `<ruby>${engine.utils.escapeHtml(base)}<rp>(</rp><rt>${engine.utils.escapeHtml(annotation)}</rt><rp>)</rp></ruby>`;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy9ydWJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCB0eXBlIHsgTWFya2Rvd25JdCB9IGZyb20gXCIuLi90eXBlcy5qc1wiXG5cbi8qKlxuICogQWRkIHN1cHBvcnQgZm9yIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvcnVieSB8IHJ1Ynl9IHRleHQuXG4gKlxuICogYGBgbWRcbiAqIHvmvKLlrZd9XihrYW5qaSlcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPHJ1Ynk+5ryi5a2XPHJwPig8L3JwPjxydD5rYW5qaTwvcnQ+PHJwPik8L3JwPjwvcnVieT5cbiAqIGBgYFxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBydWJ5KGVuZ2luZTogTWFya2Rvd25JdCk6IHZvaWQge1xuICBlbmdpbmUuaW5saW5lLnJ1bGVyLmFmdGVyKFwiZXNjYXBlXCIsIFwicnVieVwiLCAoc3RhdGUsIHNpbGVudCkgPT4ge1xuICAgIGlmIChzdGF0ZS5zcmNbc3RhdGUucG9zXSAhPT0gXCJ7XCIpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICBjb25zdCBtYXRjaCA9IC9eXFx7KFtefVxcbl0rKVxcfVxcXlxcKChbXilcXG5dKylcXCkvLmV4ZWMoc3RhdGUuc3JjLnNsaWNlKHN0YXRlLnBvcywgc3RhdGUucG9zTWF4KSlcbiAgICBpZiAoIW1hdGNoKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgaWYgKCFzaWxlbnQpXG4gICAgICBzdGF0ZS5wdXNoKFwicnVieVwiLCBcInJ1YnlcIiwgMCkubWV0YSA9IHsgYmFzZTogbWF0Y2hbMV0sIGFubm90YXRpb246IG1hdGNoWzJdIH1cbiAgICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoXG4gICAgcmV0dXJuIHRydWVcbiAgfSlcbiAgZW5naW5lLnJlbmRlcmVyLnJ1bGVzLnJ1YnkgPSAodG9rZW5zLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgYmFzZSwgYW5ub3RhdGlvbiB9ID0gdG9rZW5zW2luZGV4XS5tZXRhIGFzIHsgYmFzZTogc3RyaW5nOyBhbm5vdGF0aW9uOiBzdHJpbmcgfVxuICAgIHJldHVybiBgPHJ1Ynk+JHtlbmdpbmUudXRpbHMuZXNjYXBlSHRtbChiYXNlKX08cnA+KDwvcnA+PHJ0PiR7ZW5naW5lLnV0aWxzLmVzY2FwZUh0bWwoYW5ub3RhdGlvbil9PC9ydD48cnA+KTwvcnA+PC9ydWJ5PmBcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFHVjs7Ozs7Ozs7O0NBU0MsR0FDRCxlQUFlLFNBQVMsS0FBSyxNQUFrQjtFQUM3QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsUUFBUSxDQUFDLE9BQU87SUFDbEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEtBQzNCLE9BQU87SUFDVCxNQUFNLFFBQVEsZ0NBQWdDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNO0lBQzFGLElBQUksQ0FBQyxPQUNILE9BQU87SUFDVCxJQUFJLENBQUMsUUFDSCxNQUFNLElBQUksQ0FBQyxRQUFRLFFBQVEsR0FBRyxJQUFJLEdBQUc7TUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFO01BQUUsWUFBWSxLQUFLLENBQUMsRUFBRTtJQUFDO0lBQzlFLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTTtJQUM1QixPQUFPO0VBQ1Q7RUFDQSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUTtJQUNwQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSTtJQUMvQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLGNBQWMsRUFBRSxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxzQkFBc0IsQ0FBQztFQUMzSDtBQUNGIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MarkdownIt } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Remove HTML comments.
|
|
4
|
+
*
|
|
5
|
+
* Code blocks are left untouched.
|
|
6
|
+
*
|
|
7
|
+
* ```md
|
|
8
|
+
* foo<!-- baz -->bar
|
|
9
|
+
* ```
|
|
10
|
+
* ```html
|
|
11
|
+
* <p>foobar</p>
|
|
12
|
+
* ```
|
|
13
|
+
*/ export default function uncomments(engine: MarkdownIt): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
/**
|
|
3
|
+
* Remove HTML comments.
|
|
4
|
+
*
|
|
5
|
+
* Code blocks are left untouched.
|
|
6
|
+
*
|
|
7
|
+
* ```md
|
|
8
|
+
* foo<!-- baz -->bar
|
|
9
|
+
* ```
|
|
10
|
+
* ```html
|
|
11
|
+
* <p>foobar</p>
|
|
12
|
+
* ```
|
|
13
|
+
*/ export default function uncomments(engine) {
|
|
14
|
+
engine.core.ruler.push("uncomments", (state)=>{
|
|
15
|
+
const walk = (tokens)=>{
|
|
16
|
+
for (const token of tokens){
|
|
17
|
+
if (token.children) walk(token.children);
|
|
18
|
+
if ([
|
|
19
|
+
"html_block",
|
|
20
|
+
"html_inline",
|
|
21
|
+
"text"
|
|
22
|
+
].includes(token.type)) token.content = token.content.replace(/<!--[\s\S]*?-->/g, "");
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
walk(state.tokens);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy91bmNvbW1lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCB0eXBlIHsgTWFya2Rvd25JdCB9IGZyb20gXCIuLi90eXBlcy5qc1wiXG5cbi8qKlxuICogUmVtb3ZlIEhUTUwgY29tbWVudHMuXG4gKlxuICogQ29kZSBibG9ja3MgYXJlIGxlZnQgdW50b3VjaGVkLlxuICpcbiAqIGBgYG1kXG4gKiBmb288IS0tIGJheiAtLT5iYXJcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPHA+Zm9vYmFyPC9wPlxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuY29tbWVudHMoZW5naW5lOiBNYXJrZG93bkl0KTogdm9pZCB7XG4gIGVuZ2luZS5jb3JlLnJ1bGVyLnB1c2goXCJ1bmNvbW1lbnRzXCIsIChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IHdhbGsgPSAodG9rZW5zOiB0eXBlb2Ygc3RhdGUudG9rZW5zKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgICBpZiAodG9rZW4uY2hpbGRyZW4pXG4gICAgICAgICAgd2Fsayh0b2tlbi5jaGlsZHJlbilcbiAgICAgICAgaWYgKFtcImh0bWxfYmxvY2tcIiwgXCJodG1sX2lubGluZVwiLCBcInRleHRcIl0uaW5jbHVkZXModG9rZW4udHlwZSkpXG4gICAgICAgICAgdG9rZW4uY29udGVudCA9IHRva2VuLmNvbnRlbnQucmVwbGFjZSgvPCEtLVtcXHNcXFNdKj8tLT4vZywgXCJcIilcbiAgICAgIH1cbiAgICB9XG4gICAgd2FsayhzdGF0ZS50b2tlbnMpXG4gIH0pXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUdWOzs7Ozs7Ozs7OztDQVdDLEdBQ0QsZUFBZSxTQUFTLFdBQVcsTUFBa0I7RUFDbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDcEMsTUFBTSxPQUFPLENBQUM7TUFDWixLQUFLLE1BQU0sU0FBUyxPQUFRO1FBQzFCLElBQUksTUFBTSxRQUFRLEVBQ2hCLEtBQUssTUFBTSxRQUFRO1FBQ3JCLElBQUk7VUFBQztVQUFjO1VBQWU7U0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksR0FDM0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQjtNQUM5RDtJQUNGO0lBQ0EsS0FBSyxNQUFNLE1BQU07RUFDbkI7QUFDRiJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { MarkdownIt } from "../types.js";
|
|
2
|
+
/** Wiki links options. */ export type WikilinksOptions = {
|
|
3
|
+
/** Indicate which possible slugs are possible for a given reference. */ slugify?: (name: string) => string[];
|
|
4
|
+
/** Indicate how to resolve a link to a URL. */ resolve?: (link: string) => string;
|
|
5
|
+
/** List of existing permalinks (any link not present in the list will possess the `new` class). */ existing?: string[];
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Add support for wiki links.
|
|
9
|
+
*
|
|
10
|
+
* Use the `existing` option to provide a list of existing permalinks.
|
|
11
|
+
* Any link not present in the list will possess the `new` class.
|
|
12
|
+
*
|
|
13
|
+
* Use the `slugify` option to indicate which possible slugs are possible for a given reference.
|
|
14
|
+
* The first slug present in the list of existing permalinks is used, defaulting to the first generated slug.
|
|
15
|
+
*
|
|
16
|
+
* Use the `resolve` option to indicate how to resolve a link to a URL.
|
|
17
|
+
*
|
|
18
|
+
* All links generated by this plugin will have the `wikilink` class.
|
|
19
|
+
*
|
|
20
|
+
* ```md
|
|
21
|
+
* [[foo]]
|
|
22
|
+
* ```
|
|
23
|
+
* ```html
|
|
24
|
+
* <a class="wikilink" href="/pages/foo">foo</a>
|
|
25
|
+
* ```
|
|
26
|
+
*/ export default function wikilinks(engine: MarkdownIt, {}: WikilinksOptions = {} as never): void;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
import { slugify as slug } from "@std/text/unstable-slugify";
|
|
3
|
+
/**
|
|
4
|
+
* Add support for wiki links.
|
|
5
|
+
*
|
|
6
|
+
* Use the `existing` option to provide a list of existing permalinks.
|
|
7
|
+
* Any link not present in the list will possess the `new` class.
|
|
8
|
+
*
|
|
9
|
+
* Use the `slugify` option to indicate which possible slugs are possible for a given reference.
|
|
10
|
+
* The first slug present in the list of existing permalinks is used, defaulting to the first generated slug.
|
|
11
|
+
*
|
|
12
|
+
* Use the `resolve` option to indicate how to resolve a link to a URL.
|
|
13
|
+
*
|
|
14
|
+
* All links generated by this plugin will have the `wikilink` class.
|
|
15
|
+
*
|
|
16
|
+
* ```md
|
|
17
|
+
* [[foo]]
|
|
18
|
+
* ```
|
|
19
|
+
* ```html
|
|
20
|
+
* <a class="wikilink" href="/pages/foo">foo</a>
|
|
21
|
+
* ```
|
|
22
|
+
*/ export default function wikilinks(engine, { slugify = (name)=>[
|
|
23
|
+
slug(name)
|
|
24
|
+
], resolve = (link)=>`/pages/${link}`, existing } = {}) {
|
|
25
|
+
engine.inline.ruler.before("link", "wikilinks", (state, silent)=>{
|
|
26
|
+
if (state.src.slice(state.pos, state.pos + 2) !== "[[") return false;
|
|
27
|
+
const match = /^\[\[([^\]|\n]+)(?:\|([^\]\n]+))?\]\]/.exec(state.src.slice(state.pos, state.posMax));
|
|
28
|
+
if (!match) return false;
|
|
29
|
+
if (!silent) {
|
|
30
|
+
const name = match[1].trim();
|
|
31
|
+
const label = match[2]?.trim() || name;
|
|
32
|
+
const slugs = slugify(name);
|
|
33
|
+
const target = slugs.find((slugged)=>existing?.includes(slugged)) ?? slugs[0] ?? name;
|
|
34
|
+
const created = Array.isArray(existing) && !existing.includes(target);
|
|
35
|
+
const open = state.push("link_open", "a", 1);
|
|
36
|
+
open.attrSet("class", `wikilink${created ? " new" : ""}`);
|
|
37
|
+
open.attrSet("href", resolve(target));
|
|
38
|
+
state.push("text", "", 0).content = label;
|
|
39
|
+
state.push("link_close", "a", -1);
|
|
40
|
+
}
|
|
41
|
+
state.pos += match[0].length;
|
|
42
|
+
return true;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcGx1Z2lucy93aWtpbGlua3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IHR5cGUgeyBNYXJrZG93bkl0IH0gZnJvbSBcIi4uL3R5cGVzLmpzXCJcbmltcG9ydCB7IHNsdWdpZnkgYXMgc2x1ZyB9IGZyb20gXCJAc3RkL3RleHQvdW5zdGFibGUtc2x1Z2lmeVwiXG5cbi8qKiBXaWtpIGxpbmtzIG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBXaWtpbGlua3NPcHRpb25zID0ge1xuICAvKiogSW5kaWNhdGUgd2hpY2ggcG9zc2libGUgc2x1Z3MgYXJlIHBvc3NpYmxlIGZvciBhIGdpdmVuIHJlZmVyZW5jZS4gKi9cbiAgc2x1Z2lmeT86IChuYW1lOiBzdHJpbmcpID0+IHN0cmluZ1tdXG4gIC8qKiBJbmRpY2F0ZSBob3cgdG8gcmVzb2x2ZSBhIGxpbmsgdG8gYSBVUkwuICovXG4gIHJlc29sdmU/OiAobGluazogc3RyaW5nKSA9PiBzdHJpbmdcbiAgLyoqIExpc3Qgb2YgZXhpc3RpbmcgcGVybWFsaW5rcyAoYW55IGxpbmsgbm90IHByZXNlbnQgaW4gdGhlIGxpc3Qgd2lsbCBwb3NzZXNzIHRoZSBgbmV3YCBjbGFzcykuICovXG4gIGV4aXN0aW5nPzogc3RyaW5nW11cbn1cblxuLyoqXG4gKiBBZGQgc3VwcG9ydCBmb3Igd2lraSBsaW5rcy5cbiAqXG4gKiBVc2UgdGhlIGBleGlzdGluZ2Agb3B0aW9uIHRvIHByb3ZpZGUgYSBsaXN0IG9mIGV4aXN0aW5nIHBlcm1hbGlua3MuXG4gKiBBbnkgbGluayBub3QgcHJlc2VudCBpbiB0aGUgbGlzdCB3aWxsIHBvc3Nlc3MgdGhlIGBuZXdgIGNsYXNzLlxuICpcbiAqIFVzZSB0aGUgYHNsdWdpZnlgIG9wdGlvbiB0byBpbmRpY2F0ZSB3aGljaCBwb3NzaWJsZSBzbHVncyBhcmUgcG9zc2libGUgZm9yIGEgZ2l2ZW4gcmVmZXJlbmNlLlxuICogVGhlIGZpcnN0IHNsdWcgcHJlc2VudCBpbiB0aGUgbGlzdCBvZiBleGlzdGluZyBwZXJtYWxpbmtzIGlzIHVzZWQsIGRlZmF1bHRpbmcgdG8gdGhlIGZpcnN0IGdlbmVyYXRlZCBzbHVnLlxuICpcbiAqIFVzZSB0aGUgYHJlc29sdmVgIG9wdGlvbiB0byBpbmRpY2F0ZSBob3cgdG8gcmVzb2x2ZSBhIGxpbmsgdG8gYSBVUkwuXG4gKlxuICogQWxsIGxpbmtzIGdlbmVyYXRlZCBieSB0aGlzIHBsdWdpbiB3aWxsIGhhdmUgdGhlIGB3aWtpbGlua2AgY2xhc3MuXG4gKlxuICogYGBgbWRcbiAqIFtbZm9vXV1cbiAqIGBgYFxuICogYGBgaHRtbFxuICogPGEgY2xhc3M9XCJ3aWtpbGlua1wiIGhyZWY9XCIvcGFnZXMvZm9vXCI+Zm9vPC9hPlxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdpa2lsaW5rcyhlbmdpbmU6IE1hcmtkb3duSXQsIHsgc2x1Z2lmeSA9IChuYW1lKSA9PiBbc2x1ZyhuYW1lKV0sIHJlc29sdmUgPSAobGluaykgPT4gYC9wYWdlcy8ke2xpbmt9YCwgZXhpc3RpbmcgfTogV2lraWxpbmtzT3B0aW9ucyA9IHt9KTogdm9pZCB7XG4gIGVuZ2luZS5pbmxpbmUucnVsZXIuYmVmb3JlKFwibGlua1wiLCBcIndpa2lsaW5rc1wiLCAoc3RhdGUsIHNpbGVudCkgPT4ge1xuICAgIGlmIChzdGF0ZS5zcmMuc2xpY2Uoc3RhdGUucG9zLCBzdGF0ZS5wb3MgKyAyKSAhPT0gXCJbW1wiKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgY29uc3QgbWF0Y2ggPSAvXlxcW1xcWyhbXlxcXXxcXG5dKykoPzpcXHwoW15cXF1cXG5dKykpP1xcXVxcXS8uZXhlYyhzdGF0ZS5zcmMuc2xpY2Uoc3RhdGUucG9zLCBzdGF0ZS5wb3NNYXgpKVxuICAgIGlmICghbWF0Y2gpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgY29uc3QgbmFtZSA9IG1hdGNoWzFdLnRyaW0oKVxuICAgICAgY29uc3QgbGFiZWwgPSBtYXRjaFsyXT8udHJpbSgpIHx8IG5hbWVcbiAgICAgIGNvbnN0IHNsdWdzID0gc2x1Z2lmeShuYW1lKVxuICAgICAgY29uc3QgdGFyZ2V0ID0gc2x1Z3MuZmluZCgoc2x1Z2dlZCkgPT4gZXhpc3Rpbmc/LmluY2x1ZGVzKHNsdWdnZWQpKSA/PyBzbHVnc1swXSA/PyBuYW1lXG4gICAgICBjb25zdCBjcmVhdGVkID0gQXJyYXkuaXNBcnJheShleGlzdGluZykgJiYgKCFleGlzdGluZy5pbmNsdWRlcyh0YXJnZXQpKVxuICAgICAgY29uc3Qgb3BlbiA9IHN0YXRlLnB1c2goXCJsaW5rX29wZW5cIiwgXCJhXCIsIDEpXG4gICAgICBvcGVuLmF0dHJTZXQoXCJjbGFzc1wiLCBgd2lraWxpbmske2NyZWF0ZWQgPyBcIiBuZXdcIiA6IFwiXCJ9YClcbiAgICAgIG9wZW4uYXR0clNldChcImhyZWZcIiwgcmVzb2x2ZSh0YXJnZXQpKVxuICAgICAgc3RhdGUucHVzaChcInRleHRcIiwgXCJcIiwgMCkuY29udGVudCA9IGxhYmVsXG4gICAgICBzdGF0ZS5wdXNoKFwibGlua19jbG9zZVwiLCBcImFcIiwgLTEpXG4gICAgfVxuICAgIHN0YXRlLnBvcyArPSBtYXRjaFswXS5sZW5ndGhcbiAgICByZXR1cm4gdHJ1ZVxuICB9KVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFFVixTQUFTLFdBQVcsSUFBSSxRQUFRLDZCQUE0QjtBQVk1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CQyxHQUNELGVBQWUsU0FBUyxVQUFVLE1BQWtCLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBUztJQUFDLEtBQUs7R0FBTSxFQUFFLFVBQVUsQ0FBQyxPQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQW9CLEdBQUcsQ0FBQyxDQUFDO0VBQy9KLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxhQUFhLENBQUMsT0FBTztJQUN0RCxJQUFJLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxNQUFNLEdBQUcsR0FBRyxPQUFPLE1BQ2hELE9BQU87SUFDVCxNQUFNLFFBQVEsd0NBQXdDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsTUFBTSxNQUFNO0lBQ2xHLElBQUksQ0FBQyxPQUNILE9BQU87SUFDVCxJQUFJLENBQUMsUUFBUTtNQUNYLE1BQU0sT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUk7TUFDMUIsTUFBTSxRQUFRLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVTtNQUNsQyxNQUFNLFFBQVEsUUFBUTtNQUN0QixNQUFNLFNBQVMsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFZLFVBQVUsU0FBUyxhQUFhLEtBQUssQ0FBQyxFQUFFLElBQUk7TUFDbkYsTUFBTSxVQUFVLE1BQU0sT0FBTyxDQUFDLGFBQWMsQ0FBQyxTQUFTLFFBQVEsQ0FBQztNQUMvRCxNQUFNLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxLQUFLO01BQzFDLEtBQUssT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxTQUFTLElBQUk7TUFDeEQsS0FBSyxPQUFPLENBQUMsUUFBUSxRQUFRO01BQzdCLE1BQU0sSUFBSSxDQUFDLFFBQVEsSUFBSSxHQUFHLE9BQU8sR0FBRztNQUNwQyxNQUFNLElBQUksQ0FBQyxjQUFjLEtBQUssQ0FBQztJQUNqQztJQUNBLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTTtJQUM1QixPQUFPO0VBQ1Q7QUFDRiJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Imports
|
|
2
|
+
import { Renderer } from "../renderer.js";
|
|
3
|
+
/** Renderer instance. */ const renderer = new Renderer();
|
|
4
|
+
/**
|
|
5
|
+
* Renders a markdown expression (GitHub Flavored Markdown, raw HTML escaped).
|
|
6
|
+
*/ export function markdown(text) {
|
|
7
|
+
return renderer.render(text);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9saWJzL2xpYnMvQGxpYnMvbWFya2Rvd24vcHJlc2V0cy9kZWZhdWx0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSBcIi4uL3JlbmRlcmVyLmpzXCJcblxuLyoqIFJlbmRlcmVyIGluc3RhbmNlLiAqL1xuY29uc3QgcmVuZGVyZXIgPSBuZXcgUmVuZGVyZXIoKVxuXG4vKipcbiAqIFJlbmRlcnMgYSBtYXJrZG93biBleHByZXNzaW9uIChHaXRIdWIgRmxhdm9yZWQgTWFya2Rvd24sIHJhdyBIVE1MIGVzY2FwZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya2Rvd24odGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlbmRlcmVyLnJlbmRlcih0ZXh0KVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixTQUFTLFFBQVEsUUFBUSxpQkFBZ0I7QUFFekMsdUJBQXVCLEdBQ3ZCLE1BQU0sV0FBVyxJQUFJO0FBRXJCOztDQUVDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsSUFBWTtFQUNuQyxPQUFPLFNBQVMsTUFBTSxDQUFDO0FBQ3pCIn0=
|