@lowlighter/markdown 2.0.0 → 4.0.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.
Files changed (94) hide show
  1. package/README.md +31 -33
  2. package/mod.d.ts +36 -0
  3. package/mod.js +23 -0
  4. package/package.json +119 -38
  5. package/plugins/anchors.d.ts +11 -0
  6. package/plugins/anchors.js +39 -0
  7. package/plugins/callouts.d.ts +14 -0
  8. package/plugins/callouts.js +31 -0
  9. package/plugins/directives.d.ts +24 -0
  10. package/plugins/directives.js +76 -0
  11. package/plugins/emojis.d.ts +11 -0
  12. package/plugins/emojis.js +15 -0
  13. package/plugins/frontmatter.d.ts +20 -0
  14. package/plugins/frontmatter.js +49 -0
  15. package/plugins/gfm.d.ts +18 -0
  16. package/plugins/gfm.js +43 -0
  17. package/plugins/{highlighting.ts → highlighting.d.ts} +2 -11
  18. package/plugins/highlighting.js +24 -0
  19. package/plugins/markers.d.ts +15 -0
  20. package/plugins/markers.js +30 -0
  21. package/plugins/math.d.ts +21 -0
  22. package/plugins/math.js +75 -0
  23. package/plugins/mermaid.d.ts +25 -0
  24. package/plugins/mermaid.js +32 -0
  25. package/plugins/mod.d.ts +15 -0
  26. package/plugins/mod.js +14 -0
  27. package/plugins/{ruby.ts → ruby.d.ts} +2 -11
  28. package/plugins/ruby.js +28 -0
  29. package/plugins/uncomments.d.ts +13 -0
  30. package/plugins/uncomments.js +28 -0
  31. package/plugins/wikilinks.d.ts +26 -0
  32. package/plugins/wikilinks.js +45 -0
  33. package/presets/default.d.ts +3 -0
  34. package/presets/default.js +9 -0
  35. package/presets/svg.d.ts +3 -0
  36. package/presets/svg.js +11 -0
  37. package/presets/text.d.ts +3 -0
  38. package/presets/text.js +11 -0
  39. package/presets/web.d.ts +3 -0
  40. package/presets/web.js +12 -0
  41. package/renderer.d.ts +64 -0
  42. package/renderer.js +70 -0
  43. package/types.d.ts +88 -0
  44. package/types.js +10 -0
  45. package/deno.jsonc +0 -124
  46. package/deno.lock +0 -2282
  47. package/mod.mjs +0 -1
  48. package/mod.ts +0 -2
  49. package/mod_test.ts +0 -1
  50. package/plugins/anchors.mjs +0 -1
  51. package/plugins/anchors.ts +0 -21
  52. package/plugins/anchors_test.ts +0 -8
  53. package/plugins/directives.mjs +0 -1
  54. package/plugins/directives.ts +0 -112
  55. package/plugins/directives_test.ts +0 -13
  56. package/plugins/emojis.mjs +0 -1
  57. package/plugins/emojis.ts +0 -20
  58. package/plugins/emojis_test.ts +0 -8
  59. package/plugins/frontmatter.mjs +0 -1
  60. package/plugins/frontmatter.ts +0 -43
  61. package/plugins/frontmatter_test.ts +0 -18
  62. package/plugins/gfm.mjs +0 -1
  63. package/plugins/gfm.ts +0 -14
  64. package/plugins/gfm_test.ts +0 -28
  65. package/plugins/highlighting.mjs +0 -1
  66. package/plugins/highlighting_test.ts +0 -8
  67. package/plugins/linebreaks.mjs +0 -1
  68. package/plugins/linebreaks.ts +0 -21
  69. package/plugins/linebreaks_test.ts +0 -8
  70. package/plugins/markers.mjs +0 -1
  71. package/plugins/markers.ts +0 -25
  72. package/plugins/markers_test.ts +0 -13
  73. package/plugins/math.mjs +0 -1
  74. package/plugins/math.ts +0 -25
  75. package/plugins/math_test.ts +0 -8
  76. package/plugins/mermaid.mjs +0 -1
  77. package/plugins/mermaid.ts +0 -41
  78. package/plugins/mermaid_test.ts +0 -8
  79. package/plugins/mod.mjs +0 -1
  80. package/plugins/mod.ts +0 -14
  81. package/plugins/ruby.mjs +0 -1
  82. package/plugins/ruby_test.ts +0 -8
  83. package/plugins/sanitize.mjs +0 -1
  84. package/plugins/sanitize.ts +0 -26
  85. package/plugins/sanitize_test.ts +0 -15
  86. package/plugins/uncomments.mjs +0 -1
  87. package/plugins/uncomments.ts +0 -20
  88. package/plugins/uncomments_test.ts +0 -8
  89. package/plugins/wikilinks.mjs +0 -1
  90. package/plugins/wikilinks.ts +0 -40
  91. package/plugins/wikilinks_test.ts +0 -14
  92. package/renderer.mjs +0 -1
  93. package/renderer.ts +0 -138
  94. 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==
@@ -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
- // Imports
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;
@@ -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==
@@ -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
- // Imports
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;
@@ -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,3 @@
1
+ /**
2
+ * Renders a markdown expression (GitHub Flavored Markdown, raw HTML escaped).
3
+ */ export declare function markdown(text: string): string;
@@ -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=