@coderminer/vue-markdown 0.0.0-stage → 1.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 (291) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/LICENSE +21 -0
  3. package/README.md +579 -3
  4. package/README.zh-CN.md +547 -0
  5. package/dist/chunks/MarkdownBlockquote-DVXziX2t.js +18 -0
  6. package/dist/chunks/MarkdownBlockquote-DVXziX2t.js.map +1 -0
  7. package/dist/chunks/MarkdownBreak-BwCi2Itt.js +18 -0
  8. package/dist/chunks/MarkdownBreak-BwCi2Itt.js.map +1 -0
  9. package/dist/chunks/MarkdownCode-B1k9tmW5.js +65 -0
  10. package/dist/chunks/MarkdownCode-B1k9tmW5.js.map +1 -0
  11. package/dist/chunks/MarkdownConfigProvider-5N3ylrIu.js +51 -0
  12. package/dist/chunks/MarkdownConfigProvider-5N3ylrIu.js.map +1 -0
  13. package/dist/chunks/MarkdownContent-BAK6dqo7.js +15 -0
  14. package/dist/chunks/MarkdownContent-BAK6dqo7.js.map +1 -0
  15. package/dist/chunks/MarkdownCustomTag-BBdn3-WO.js +42 -0
  16. package/dist/chunks/MarkdownCustomTag-BBdn3-WO.js.map +1 -0
  17. package/dist/chunks/MarkdownEmphasis-CppivOEu.js +18 -0
  18. package/dist/chunks/MarkdownEmphasis-CppivOEu.js.map +1 -0
  19. package/dist/chunks/MarkdownEmpty-Av5k6bqa.js +16 -0
  20. package/dist/chunks/MarkdownEmpty-Av5k6bqa.js.map +1 -0
  21. package/dist/chunks/MarkdownError-C0sPs5W0.js +19 -0
  22. package/dist/chunks/MarkdownError-C0sPs5W0.js.map +1 -0
  23. package/dist/chunks/MarkdownFootnoteReference-Dy3Khwyj.js +24 -0
  24. package/dist/chunks/MarkdownFootnoteReference-Dy3Khwyj.js.map +1 -0
  25. package/dist/chunks/MarkdownFootnotes-BRPzkbXv.js +23 -0
  26. package/dist/chunks/MarkdownFootnotes-BRPzkbXv.js.map +1 -0
  27. package/dist/chunks/MarkdownHeading-DaNcP0_6.js +31 -0
  28. package/dist/chunks/MarkdownHeading-DaNcP0_6.js.map +1 -0
  29. package/dist/chunks/MarkdownHorizontalRule-QNe_cuUI.js +18 -0
  30. package/dist/chunks/MarkdownHorizontalRule-QNe_cuUI.js.map +1 -0
  31. package/dist/chunks/MarkdownHtml-66lYkvwM.js +15 -0
  32. package/dist/chunks/MarkdownHtml-66lYkvwM.js.map +1 -0
  33. package/dist/chunks/MarkdownImage-BRy76svs.js +53 -0
  34. package/dist/chunks/MarkdownImage-BRy76svs.js.map +1 -0
  35. package/dist/chunks/MarkdownInlineCode-MXZYFwex.js +18 -0
  36. package/dist/chunks/MarkdownInlineCode-MXZYFwex.js.map +1 -0
  37. package/dist/chunks/MarkdownLink-Dbx3NwgV.js +47 -0
  38. package/dist/chunks/MarkdownLink-Dbx3NwgV.js.map +1 -0
  39. package/dist/chunks/MarkdownList-BJ-_C71k.js +22 -0
  40. package/dist/chunks/MarkdownList-BJ-_C71k.js.map +1 -0
  41. package/dist/chunks/MarkdownListItem-Z1EHIY26.js +18 -0
  42. package/dist/chunks/MarkdownListItem-Z1EHIY26.js.map +1 -0
  43. package/dist/chunks/MarkdownLoading-D-RYtXxf.js +17 -0
  44. package/dist/chunks/MarkdownLoading-D-RYtXxf.js.map +1 -0
  45. package/dist/chunks/MarkdownParagraph-BxLSmSaG.js +18 -0
  46. package/dist/chunks/MarkdownParagraph-BxLSmSaG.js.map +1 -0
  47. package/dist/chunks/MarkdownRenderer-DLRRfsdI.js +416 -0
  48. package/dist/chunks/MarkdownRenderer-DLRRfsdI.js.map +1 -0
  49. package/dist/chunks/MarkdownRoot-DEE6iVfh.js +25 -0
  50. package/dist/chunks/MarkdownRoot-DEE6iVfh.js.map +1 -0
  51. package/dist/chunks/MarkdownStrikethrough-CblvbqDk.js +18 -0
  52. package/dist/chunks/MarkdownStrikethrough-CblvbqDk.js.map +1 -0
  53. package/dist/chunks/MarkdownStrong-uU5MzAoJ.js +18 -0
  54. package/dist/chunks/MarkdownStrong-uU5MzAoJ.js.map +1 -0
  55. package/dist/chunks/MarkdownTable-DmBTg_CR.js +18 -0
  56. package/dist/chunks/MarkdownTable-DmBTg_CR.js.map +1 -0
  57. package/dist/chunks/MarkdownTableCell-eiCJe847.js +33 -0
  58. package/dist/chunks/MarkdownTableCell-eiCJe847.js.map +1 -0
  59. package/dist/chunks/MarkdownTableRow-DuJaPntg.js +18 -0
  60. package/dist/chunks/MarkdownTableRow-DuJaPntg.js.map +1 -0
  61. package/dist/chunks/MarkdownTableSection-PFHz-R33.js +26 -0
  62. package/dist/chunks/MarkdownTableSection-PFHz-R33.js.map +1 -0
  63. package/dist/chunks/MarkdownTaskItem-BcmKo1lk.js +40 -0
  64. package/dist/chunks/MarkdownTaskItem-BcmKo1lk.js.map +1 -0
  65. package/dist/chunks/MarkdownToc-BdOHF-Yo.js +51 -0
  66. package/dist/chunks/MarkdownToc-BdOHF-Yo.js.map +1 -0
  67. package/dist/chunks/MarkdownTocItem-DT9mR3vL.js +27 -0
  68. package/dist/chunks/MarkdownTocItem-DT9mR3vL.js.map +1 -0
  69. package/dist/chunks/MermaidLiveEditor-W-qf3G-5.js +416 -0
  70. package/dist/chunks/MermaidLiveEditor-W-qf3G-5.js.map +1 -0
  71. package/dist/chunks/VueSyntaxHighlighter-DyLsYMwy.js +262 -0
  72. package/dist/chunks/VueSyntaxHighlighter-DyLsYMwy.js.map +1 -0
  73. package/dist/chunks/adapters-CMwX_NEI.js +28 -0
  74. package/dist/chunks/adapters-CMwX_NEI.js.map +1 -0
  75. package/dist/chunks/asyncToGenerator-ChigusFD.js +26 -0
  76. package/dist/chunks/blank-line-Cb-JBP_5.js +90 -0
  77. package/dist/chunks/blank-line-Cb-JBP_5.js.map +1 -0
  78. package/dist/chunks/codemirror-DyphMAEg.js +84 -0
  79. package/dist/chunks/codemirror-DyphMAEg.js.map +1 -0
  80. package/dist/chunks/config-aRYo2R8_.js +12 -0
  81. package/dist/chunks/config-aRYo2R8_.js.map +1 -0
  82. package/dist/chunks/context-8NfW6fxI.js +32 -0
  83. package/dist/chunks/context-8NfW6fxI.js.map +1 -0
  84. package/dist/chunks/default-DWVS-I_8.js +23 -0
  85. package/dist/chunks/default-DWVS-I_8.js.map +1 -0
  86. package/dist/chunks/diagnostics-CtHoJyiX.js +25 -0
  87. package/dist/chunks/diagnostics-CtHoJyiX.js.map +1 -0
  88. package/dist/chunks/export-DZQ3cUry.js +1575 -0
  89. package/dist/chunks/export-DZQ3cUry.js.map +1 -0
  90. package/dist/chunks/hast-nodes-C0bX3M5Z.js +35 -0
  91. package/dist/chunks/hast-nodes-C0bX3M5Z.js.map +1 -0
  92. package/dist/chunks/highlightjs-BEh-YwEG.js +6041 -0
  93. package/dist/chunks/highlightjs-BEh-YwEG.js.map +1 -0
  94. package/dist/chunks/identity-jZEhX2d5.js +6244 -0
  95. package/dist/chunks/identity-jZEhX2d5.js.map +1 -0
  96. package/dist/chunks/labels-BtHiUTQI.js +49 -0
  97. package/dist/chunks/labels-BtHiUTQI.js.map +1 -0
  98. package/dist/chunks/lib-BQiWGWpu.js +5087 -0
  99. package/dist/chunks/lib-BQiWGWpu.js.map +1 -0
  100. package/dist/chunks/lib-LwqA_W3J.js +127 -0
  101. package/dist/chunks/lib-LwqA_W3J.js.map +1 -0
  102. package/dist/chunks/longest-streak-DZE_EqsU.js +10 -0
  103. package/dist/chunks/longest-streak-DZE_EqsU.js.map +1 -0
  104. package/dist/chunks/micromark-factory-space-Db040TnW.js +139 -0
  105. package/dist/chunks/micromark-factory-space-Db040TnW.js.map +1 -0
  106. package/dist/chunks/normalize-CRYv3Wqt.js +220 -0
  107. package/dist/chunks/normalize-CRYv3Wqt.js.map +1 -0
  108. package/dist/chunks/objectSpread2-CtBNx0TF.js +57 -0
  109. package/dist/chunks/plugin-DqkFHyny.js +28 -0
  110. package/dist/chunks/plugin-DqkFHyny.js.map +1 -0
  111. package/dist/chunks/preset-BjaOuJUL.js +46 -0
  112. package/dist/chunks/preset-BjaOuJUL.js.map +1 -0
  113. package/dist/chunks/registry-DLjr93-V.js +6144 -0
  114. package/dist/chunks/registry-DLjr93-V.js.map +1 -0
  115. package/dist/chunks/render-Cs8iKrgz.js +1724 -0
  116. package/dist/chunks/render-Cs8iKrgz.js.map +1 -0
  117. package/dist/chunks/runtime-DJMnzjah.js +546 -0
  118. package/dist/chunks/runtime-DJMnzjah.js.map +1 -0
  119. package/dist/chunks/security-y4EwUyAs.js +214 -0
  120. package/dist/chunks/security-y4EwUyAs.js.map +1 -0
  121. package/dist/chunks/shared-DNAvZ-UY.js +76 -0
  122. package/dist/chunks/shared-DNAvZ-UY.js.map +1 -0
  123. package/dist/chunks/space-separated-tokens-CmBjEPdR.js +1099 -0
  124. package/dist/chunks/space-separated-tokens-CmBjEPdR.js.map +1 -0
  125. package/dist/chunks/url-D2BoivaE.js +26 -0
  126. package/dist/chunks/url-D2BoivaE.js.map +1 -0
  127. package/dist/chunks/useActiveHeading-BaGVMJnB.js +316 -0
  128. package/dist/chunks/useActiveHeading-BaGVMJnB.js.map +1 -0
  129. package/dist/components/CodeBlock.d.ts +73 -0
  130. package/dist/components/CodeBlock.js +1 -0
  131. package/dist/components/Icon.d.ts +6 -0
  132. package/dist/components/MarkdownBlockquote.d.ts +18 -0
  133. package/dist/components/MarkdownBlockquote.js +1 -0
  134. package/dist/components/MarkdownBreak.d.ts +8 -0
  135. package/dist/components/MarkdownBreak.js +1 -0
  136. package/dist/components/MarkdownChildren.d.ts +17 -0
  137. package/dist/components/MarkdownCode.d.ts +29 -0
  138. package/dist/components/MarkdownCode.js +1 -0
  139. package/dist/components/MarkdownConfigProvider.d.ts +33 -0
  140. package/dist/components/MarkdownConfigProvider.js +1 -0
  141. package/dist/components/MarkdownContent.d.ts +16 -0
  142. package/dist/components/MarkdownContent.js +1 -0
  143. package/dist/components/MarkdownCustomTag.d.ts +20 -0
  144. package/dist/components/MarkdownCustomTag.js +1 -0
  145. package/dist/components/MarkdownEmphasis.d.ts +18 -0
  146. package/dist/components/MarkdownEmphasis.js +1 -0
  147. package/dist/components/MarkdownEmpty.d.ts +8 -0
  148. package/dist/components/MarkdownEmpty.js +1 -0
  149. package/dist/components/MarkdownError.d.ts +11 -0
  150. package/dist/components/MarkdownError.js +1 -0
  151. package/dist/components/MarkdownFootnoteReference.d.ts +19 -0
  152. package/dist/components/MarkdownFootnoteReference.js +1 -0
  153. package/dist/components/MarkdownFootnotes.d.ts +17 -0
  154. package/dist/components/MarkdownFootnotes.js +1 -0
  155. package/dist/components/MarkdownHeading.d.ts +18 -0
  156. package/dist/components/MarkdownHeading.js +1 -0
  157. package/dist/components/MarkdownHorizontalRule.d.ts +8 -0
  158. package/dist/components/MarkdownHorizontalRule.js +1 -0
  159. package/dist/components/MarkdownHtml.d.ts +8 -0
  160. package/dist/components/MarkdownHtml.js +1 -0
  161. package/dist/components/MarkdownImage.d.ts +15 -0
  162. package/dist/components/MarkdownImage.js +1 -0
  163. package/dist/components/MarkdownInlineCode.d.ts +18 -0
  164. package/dist/components/MarkdownInlineCode.js +1 -0
  165. package/dist/components/MarkdownLink.d.ts +22 -0
  166. package/dist/components/MarkdownLink.js +1 -0
  167. package/dist/components/MarkdownList.d.ts +18 -0
  168. package/dist/components/MarkdownList.js +1 -0
  169. package/dist/components/MarkdownListItem.d.ts +18 -0
  170. package/dist/components/MarkdownListItem.js +1 -0
  171. package/dist/components/MarkdownLoading.d.ts +8 -0
  172. package/dist/components/MarkdownLoading.js +1 -0
  173. package/dist/components/MarkdownMath.d.ts +12 -0
  174. package/dist/components/MarkdownMath.js +1 -0
  175. package/dist/components/MarkdownMermaid.d.ts +78 -0
  176. package/dist/components/MarkdownMermaid.js +1 -0
  177. package/dist/components/MarkdownParagraph.d.ts +18 -0
  178. package/dist/components/MarkdownParagraph.js +1 -0
  179. package/dist/components/MarkdownRenderer.d.ts +170 -0
  180. package/dist/components/MarkdownRenderer.js +1 -0
  181. package/dist/components/MarkdownRoot.d.ts +24 -0
  182. package/dist/components/MarkdownRoot.js +1 -0
  183. package/dist/components/MarkdownStrikethrough.d.ts +18 -0
  184. package/dist/components/MarkdownStrikethrough.js +1 -0
  185. package/dist/components/MarkdownStrong.d.ts +18 -0
  186. package/dist/components/MarkdownStrong.js +1 -0
  187. package/dist/components/MarkdownTable.d.ts +18 -0
  188. package/dist/components/MarkdownTable.js +1 -0
  189. package/dist/components/MarkdownTableCell.d.ts +20 -0
  190. package/dist/components/MarkdownTableCell.js +1 -0
  191. package/dist/components/MarkdownTableRow.d.ts +18 -0
  192. package/dist/components/MarkdownTableRow.js +1 -0
  193. package/dist/components/MarkdownTableSection.d.ts +18 -0
  194. package/dist/components/MarkdownTableSection.js +1 -0
  195. package/dist/components/MarkdownTaskItem.d.ts +20 -0
  196. package/dist/components/MarkdownTaskItem.js +1 -0
  197. package/dist/components/MarkdownToc.d.ts +36 -0
  198. package/dist/components/MarkdownToc.js +1 -0
  199. package/dist/components/MarkdownTocItem.d.ts +14 -0
  200. package/dist/components/MarkdownTocItem.js +1 -0
  201. package/dist/components/MermaidBlock.d.ts +50 -0
  202. package/dist/components/MermaidBlock.js +1 -0
  203. package/dist/components/MermaidLiveEditor.d.ts +44 -0
  204. package/dist/components/MermaidLiveEditor.js +1 -0
  205. package/dist/components/VueSyntaxHighlighter.d.ts +39 -0
  206. package/dist/components/VueSyntaxHighlighter.js +1 -0
  207. package/dist/components/codeRegion.d.ts +14 -0
  208. package/dist/components/config.d.ts +7 -0
  209. package/dist/components/context.d.ts +45 -0
  210. package/dist/components/index.d.ts +42 -0
  211. package/dist/components/index.js +38 -0
  212. package/dist/components/render.d.ts +9 -0
  213. package/dist/components/scroll-lock.d.ts +7 -0
  214. package/dist/components/types.d.ts +29 -0
  215. package/dist/composables/useActiveHeading.d.ts +12 -0
  216. package/dist/composables/useCodeHighlighter.d.ts +30 -0
  217. package/dist/composables/useLineWindow.d.ts +38 -0
  218. package/dist/composables/useMarkdownDocument.d.ts +23 -0
  219. package/dist/core/adapters.d.ts +7 -0
  220. package/dist/core/config.d.ts +5 -0
  221. package/dist/core/diagnostics.d.ts +9 -0
  222. package/dist/core/finalize.d.ts +18 -0
  223. package/dist/core/hast-nodes.d.ts +6 -0
  224. package/dist/core/highlight-lines.d.ts +8 -0
  225. package/dist/core/identity.d.ts +4 -0
  226. package/dist/core/labels.d.ts +4 -0
  227. package/dist/core/manifest.d.ts +38 -0
  228. package/dist/core/memo.d.ts +5 -0
  229. package/dist/core/model-hast.d.ts +8 -0
  230. package/dist/core/model.d.ts +10 -0
  231. package/dist/core/normalize.d.ts +27 -0
  232. package/dist/core/parts.d.ts +135 -0
  233. package/dist/core/preset.d.ts +10 -0
  234. package/dist/core/run.d.ts +16 -0
  235. package/dist/core/search.d.ts +5 -0
  236. package/dist/core/security.d.ts +21 -0
  237. package/dist/core/slugger.d.ts +6 -0
  238. package/dist/core/types.d.ts +390 -0
  239. package/dist/core/url.d.ts +10 -0
  240. package/dist/editor/codemirror.d.ts +14 -0
  241. package/dist/editor/index.d.ts +2 -0
  242. package/dist/editor/index.js +1 -0
  243. package/dist/export/index.d.ts +6 -0
  244. package/dist/headless.d.ts +21 -0
  245. package/dist/headless.js +12 -0
  246. package/dist/highlight/highlightjs.d.ts +7 -0
  247. package/dist/highlight/index.d.ts +3 -0
  248. package/dist/highlight/index.js +3 -0
  249. package/dist/highlight/shared.d.ts +16 -0
  250. package/dist/highlight/shiki.d.ts +7 -0
  251. package/dist/highlight/shiki.js +76 -0
  252. package/dist/highlight/shiki.js.map +1 -0
  253. package/dist/html/index.d.ts +17 -0
  254. package/dist/html/index.js +13 -0
  255. package/dist/html/index.js.map +1 -0
  256. package/dist/index.d.ts +24 -0
  257. package/dist/index.js +55 -0
  258. package/dist/index.js.map +1 -0
  259. package/dist/math/index.d.ts +4 -0
  260. package/dist/math/index.js +583 -0
  261. package/dist/math/index.js.map +1 -0
  262. package/dist/math/katex.d.ts +4 -0
  263. package/dist/math/plugin.d.ts +20 -0
  264. package/dist/mermaid/index.d.ts +5 -0
  265. package/dist/mermaid/index.js +3 -0
  266. package/dist/mermaid/plugin.d.ts +14 -0
  267. package/dist/mermaid/runtime.d.ts +12 -0
  268. package/dist/mermaid/sanitize.d.ts +12 -0
  269. package/dist/node-components.d.ts +1 -0
  270. package/dist/node-components.js +39 -0
  271. package/dist/pipeline/custom.d.ts +8 -0
  272. package/dist/pipeline/identity.d.ts +12 -0
  273. package/dist/pipeline/index.d.ts +5 -0
  274. package/dist/pipeline/official.d.ts +6 -0
  275. package/dist/pipeline.d.ts +1 -0
  276. package/dist/pipeline.js +1 -0
  277. package/dist/plugins/builtin.d.ts +15 -0
  278. package/dist/plugins/define.d.ts +7 -0
  279. package/dist/plugins/registry.d.ts +16 -0
  280. package/dist/plugins/source.d.ts +7 -0
  281. package/dist/plugins.d.ts +3 -0
  282. package/dist/plugins.js +1 -0
  283. package/dist/presets.d.ts +3 -0
  284. package/dist/presets.js +1 -0
  285. package/dist/style.css +2 -0
  286. package/dist/styles/components.css +712 -0
  287. package/dist/styles/index.d.ts +1 -0
  288. package/dist/styles/math-full.css +3 -0
  289. package/dist/styles/math.css +18 -0
  290. package/dist/styles/tokens.css +96 -0
  291. package/package.json +211 -6
@@ -0,0 +1,220 @@
1
+ import { n as e, t } from "./diagnostics-CtHoJyiX.js";
2
+ import { r as n, t as r } from "./url-D2BoivaE.js";
3
+ import { a as i, i as a, n as o, r as s } from "./security-y4EwUyAs.js";
4
+ // src/core/normalize.ts
5
+ function c(e) {
6
+ let t = e.position;
7
+ if (t != null && t.start && t.end) return {
8
+ start: {
9
+ line: t.start.line,
10
+ column: t.start.column,
11
+ offset: t.start.offset
12
+ },
13
+ end: {
14
+ line: t.end.line,
15
+ column: t.end.column,
16
+ offset: t.end.offset
17
+ }
18
+ };
19
+ }
20
+ function l(e) {
21
+ let t = "";
22
+ for (let n of e) n.kind === "text" ? t += n.value : "children" in n && Array.isArray(n.children) ? t += l(n.children) : n.kind === "code" && (t += n.code);
23
+ return t;
24
+ }
25
+ function u(e) {
26
+ var t;
27
+ let n = (t = e.properties) == null ? void 0 : t.className;
28
+ return Array.isArray(n) ? n.map(String) : typeof n == "string" ? n.split(/\s+/) : [];
29
+ }
30
+ function d(e) {
31
+ var t, n;
32
+ let r = u(e);
33
+ if (!(e.tagName === "vmd-math" || r.includes("language-math") && r.some((e) => e.startsWith("math-")))) return;
34
+ let i = ((t = e.properties) == null ? void 0 : t["data-display"]) === "true" || r.includes("math-display"), a = (n = e.properties) == null ? void 0 : n["data-tex"], o = f(e), s = typeof a == "string" ? a : o ? o.children.map((e) => e.type === "text" ? e.value : "").join("") : "", c = (o == null ? e : o).children, l = c.find((e) => e.type === "element");
35
+ return ((l == null ? void 0 : l.tagName) === "pre" || (l == null ? void 0 : l.tagName) === "code") && (c = l.children), {
36
+ tex: s,
37
+ displayMode: i,
38
+ rendered: c
39
+ };
40
+ }
41
+ function f(e) {
42
+ for (let t of e.children) if (t.type === "element") {
43
+ if (t.tagName === "code" && u(t).includes("language-math")) return t;
44
+ if (t.tagName === "pre") {
45
+ let e = f(t);
46
+ if (e) return e;
47
+ }
48
+ }
49
+ }
50
+ function p(e) {
51
+ var t;
52
+ if (e.tagName !== "pre") return !1;
53
+ let n = e.children.filter((e) => e.type !== "text" || e.value.trim() !== "");
54
+ return n.length === 1 && ((t = n[0]) == null ? void 0 : t.type) === "element" && n[0].tagName === "code";
55
+ }
56
+ function m(e) {
57
+ let t = e.children.find((e) => e.type === "element" && e.tagName === "code"), n = [...Array.isArray(e.properties.className) ? e.properties.className.map(String) : [], ...Array.isArray(t == null ? void 0 : t.properties.className) ? t.properties.className.map(String) : []];
58
+ for (let e of n) {
59
+ let t = /^(?:language|lang)-(.+)$/u.exec(e);
60
+ if (t != null && t[1]) return t[1].toLowerCase();
61
+ }
62
+ return "";
63
+ }
64
+ function h(e, t, n) {
65
+ let r = e.children.find((e) => e.type === "element" && e.tagName === "code");
66
+ return {
67
+ kind: "code",
68
+ key: t,
69
+ code: r ? r.children.map((e) => e.type === "text" ? e.value : "").join("") : e.children.map((e) => e.type === "text" ? e.value : "").join(""),
70
+ language: m(e),
71
+ source: n
72
+ };
73
+ }
74
+ function g(n, r, i, a) {
75
+ let { allowedElements: o, disallowedElements: s, unwrapDisallowed: c, allowElement: l, diagnostics: u } = a.options, d = !1;
76
+ if (o && o.length > 0 ? (s && s.length > 0 && !a.conflictReported && (a.conflictReported = !0, u == null || u.push(t("filter-conflict", "`allowedElements` and `disallowedElements` were both provided; `allowedElements` wins.", {
77
+ severity: "warning",
78
+ phase: "normalize"
79
+ }))), d = !o.includes(n.tag)) : s && s.includes(n.tag) && (d = !0), !d && l) try {
80
+ d = !l(n, r, i);
81
+ } catch (n) {
82
+ u == null || u.push(t("filter-predicate", e(n), { phase: "normalize" })), d = !0;
83
+ }
84
+ return d ? c ? "unwrap" : "drop" : "keep";
85
+ }
86
+ function _(a, o, s, c, l) {
87
+ let u = n(a, l.options.baseUrl), d = l.options.urlTransform, f = (e) => {
88
+ if (o === "srcset") return i(e, "srcset");
89
+ let t = r(e, o);
90
+ return t === "" ? e.trim() === "" ? "" : void 0 : t;
91
+ };
92
+ if (!d) return f(u);
93
+ try {
94
+ let e = d(u, o, {
95
+ tag: s,
96
+ attrs: c
97
+ });
98
+ return e === null ? void 0 : typeof e == "string" ? i(e, o) : f(u);
99
+ } catch (n) {
100
+ if (!l.urlErrorReported) {
101
+ var p;
102
+ l.urlErrorReported = !0, (p = l.options.diagnostics) == null || p.push(t("url-transform", e(n), { phase: "normalize" }));
103
+ }
104
+ return f(u);
105
+ }
106
+ }
107
+ function v(e, t, n, r, i, u = !1) {
108
+ if (o.has(e.tagName) && !(u && e.tagName === "math")) return null;
109
+ let f = c(e), m = a(e.tagName, e.properties), v = d(e);
110
+ if (v) {
111
+ let a = {
112
+ kind: "element",
113
+ key: t,
114
+ tag: e.tagName,
115
+ attrs: m,
116
+ children: [],
117
+ source: f
118
+ };
119
+ return g(a, n, r, i) === "keep" ? {
120
+ kind: "math",
121
+ key: t,
122
+ tex: v.tex,
123
+ displayMode: v.displayMode,
124
+ rendered: y(v.rendered, t, a, i, !0),
125
+ source: f
126
+ } : null;
127
+ }
128
+ let b = {
129
+ kind: "element",
130
+ key: t,
131
+ tag: e.tagName,
132
+ attrs: m,
133
+ children: [],
134
+ source: f
135
+ }, x = y(e.children, t, b, i, u);
136
+ b.children = x;
137
+ let S = g(b, n, r, i);
138
+ if (S === "drop") return null;
139
+ if (S === "unwrap") return x;
140
+ if (p(e)) return h(e, t, f);
141
+ for (let t of Object.keys(m)) {
142
+ if (!s.has(t)) continue;
143
+ let n = _(m[t], t, e.tagName, m, i);
144
+ n === void 0 ? delete m[t] : m[t] = n;
145
+ }
146
+ if (e.tagName === "a" && m.target === "_blank" && !m.rel && (m.rel = "noopener noreferrer"), /^h[1-6]$/.test(e.tagName) && !m.id) {
147
+ let e = l(x);
148
+ if (e.trim()) {
149
+ var C;
150
+ m.id = `${(C = i.options.idPrefix) == null ? "" : C}${i.options.slugger.slug(e)}`;
151
+ }
152
+ }
153
+ return b;
154
+ }
155
+ function y(e, t, n, r, i = !1) {
156
+ let a = [];
157
+ return e.forEach((e, o) => {
158
+ let s = t ? `${t}.${o}` : String(o);
159
+ if (e.type === "text") {
160
+ if (e.value === "" || !n && e.value.trim() === "") return;
161
+ a.push({
162
+ kind: "text",
163
+ key: s,
164
+ value: e.value,
165
+ source: c(e)
166
+ });
167
+ return;
168
+ }
169
+ if (e.type === "raw" || e.type !== "element") return;
170
+ let l = v(e, s, o, n, r, i);
171
+ l !== null && (Array.isArray(l) ? a.push(...l) : a.push(l));
172
+ }), a;
173
+ }
174
+ function b(e, t) {
175
+ let n = {
176
+ options: t,
177
+ conflictReported: !1,
178
+ urlErrorReported: !1
179
+ }, r = y(e.children, "", void 0, n);
180
+ return {
181
+ nodes: r,
182
+ toc: S(r),
183
+ customTags: C(r)
184
+ };
185
+ }
186
+ function x(e, t) {
187
+ if (t === void 0 || !Number.isFinite(t) || t <= 0 || t >= 6) return [...e];
188
+ let n = Math.min(6, Math.max(1, Math.floor(t)));
189
+ return e.filter((e) => e.level <= n);
190
+ }
191
+ function S(e) {
192
+ let t = [], n = (e) => {
193
+ for (let r of e) if (r.kind === "element") {
194
+ let e = /^h([1-6])$/.exec(r.tag);
195
+ e && r.attrs.id && t.push({
196
+ id: r.attrs.id,
197
+ text: l(r.children).trim(),
198
+ level: Number(e[1])
199
+ }), n(r.children);
200
+ } else "children" in r && Array.isArray(r.children) && n(r.children);
201
+ };
202
+ return n(e), t;
203
+ }
204
+ function C(e) {
205
+ let t = [], n = (e) => {
206
+ for (let r of e) r.kind === "custom" ? (t.push({
207
+ key: r.key,
208
+ tag: r.tag,
209
+ props: r.props,
210
+ attrs: r.attrs
211
+ }), n(r.children)) : "children" in r && Array.isArray(r.children) && n(r.children);
212
+ };
213
+ return n(e), t;
214
+ }
215
+ function w(e, t, n) {
216
+ for (let r of e) t(r, n), "children" in r && Array.isArray(r.children) && w(r.children, t, r);
217
+ }
218
+ export { w as a, b as i, S as n, x as r, C as t };
219
+
220
+ //# sourceMappingURL=normalize-CRYv3Wqt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-CRYv3Wqt.js","names":["errorMessage","resolveUrl","defaultUrlTransform","sanitizeUrlValue","propertiesToAttrs","DANGEROUS_TAGS","URL_ATTRIBUTES","toSourceRange","position","node","textContent","value","nodes","classNames","_element$properties","element","mathContainer","_element$properties2","_element$properties3","names","name","displayMode","explicitTex","code","findMathCode","tex","child","rendered","first","nested","isCodeBlock","_meaningful$","meaningful","codeLanguage","match","collapseCodeBlock","filterDecision","state","rejected","allowedElements","disallowedElements","diagnostics","createDiagnostic","allowElement","index","parent","error","unwrapDisallowed","normalizeUrlAttribute","resolved","transform","applyDefaultPolicy","key","candidate","transformed","result","_state$options$diagno","convertElement","allowMath","source","attrs","math","provisional","path","convertChildren","children","decision","text","_state$options$idPref","parentPath","converted","normalizeHast","root","extractToc","collectCustomTags","filterTocByDepth","depth","toc","maxLevel","item","visit","list","tags","walkNodes"],"sources":["../../src/core/normalize.ts"],"sourcesContent":["import type { Element, Root, RootContent } from 'hast'\r\nimport type {\r\n AllowElement,\r\n MarkdownDiagnostic,\r\n MarkdownDocument,\r\n MarkdownElementNode,\r\n MarkdownNode,\r\n MarkdownSlugger,\r\n MarkdownUrlTransform,\r\n SourceRange,\r\n TocItem,\r\n} from './types'\r\nimport { createDiagnostic, errorMessage } from './diagnostics'\r\nimport { DANGEROUS_TAGS, URL_ATTRIBUTES, propertiesToAttrs, sanitizeUrlValue } from './security'\r\nimport { defaultUrlTransform, resolveUrl } from './url'\r\n\r\nexport interface NormalizeOptions {\r\n slugger: MarkdownSlugger\r\n idPrefix?: string\r\n urlTransform?: MarkdownUrlTransform\r\n baseUrl?: string\r\n allowedElements?: string[]\r\n disallowedElements?: string[]\r\n unwrapDisallowed?: boolean\r\n allowElement?: AllowElement\r\n diagnostics?: MarkdownDiagnostic[]\r\n}\r\n\r\ninterface FilterState {\r\n options: NormalizeOptions\r\n conflictReported: boolean\r\n urlErrorReported: boolean\r\n}\r\n\r\nfunction toSourceRange(node: { position?: Element['position'] }): SourceRange | undefined {\r\n const position = node.position\r\n if (!position?.start || !position.end) return undefined\r\n return {\r\n start: {\r\n line: position.start.line,\r\n column: position.start.column,\r\n offset: position.start.offset,\r\n },\r\n end: {\r\n line: position.end.line,\r\n column: position.end.column,\r\n offset: position.end.offset,\r\n },\r\n }\r\n}\r\n\r\nfunction textContent(nodes: readonly MarkdownNode[]): string {\r\n let value = ''\r\n for (const node of nodes) {\r\n if (node.kind === 'text') value += node.value\r\n else if ('children' in node && Array.isArray(node.children)) {\r\n value += textContent(node.children)\r\n } else if (node.kind === 'code') value += node.code\r\n }\r\n return value\r\n}\r\n\r\nfunction classNames(element: Element): string[] {\r\n const value: unknown = element.properties?.className\r\n if (Array.isArray(value)) return value.map(String)\r\n if (typeof value === 'string') return value.split(/\\s+/)\r\n return []\r\n}\r\n\r\nfunction mathContainer(element: Element): {\r\n tex: string\r\n displayMode: boolean\r\n rendered: readonly RootContent[]\r\n} | undefined {\r\n const names = classNames(element)\r\n const isMath =\r\n element.tagName === 'vmd-math' ||\r\n (names.includes('language-math') &&\r\n names.some((name) => name.startsWith('math-')))\r\n if (!isMath) return undefined\r\n\r\n const displayMode =\r\n element.properties?.['data-display'] === 'true' ||\r\n names.includes('math-display')\r\n const explicitTex = element.properties?.['data-tex']\r\n const code = findMathCode(element)\r\n const tex =\r\n typeof explicitTex === 'string'\r\n ? explicitTex\r\n : code\r\n ? code.children.map((child) => (child.type === 'text' ? child.value : '')).join('')\r\n : ''\r\n\r\n const source = code ?? element\r\n let rendered: readonly RootContent[] = source.children\r\n const first = rendered.find(\r\n (child): child is Element => child.type === 'element',\r\n )\r\n if (first?.tagName === 'pre' || first?.tagName === 'code') {\r\n rendered = first.children\r\n }\r\n\r\n return { tex, displayMode, rendered }\r\n}\r\n\r\nfunction findMathCode(element: Element): Element | undefined {\r\n for (const child of element.children) {\r\n if (child.type !== 'element') continue\r\n if (child.tagName === 'code' && classNames(child).includes('language-math')) {\r\n return child\r\n }\r\n if (child.tagName === 'pre') {\r\n const nested = findMathCode(child)\r\n if (nested) return nested\r\n }\r\n }\r\n return undefined\r\n}\r\n\r\nfunction isCodeBlock(element: Element): boolean {\r\n if (element.tagName !== 'pre') return false\r\n const meaningful = element.children.filter(\r\n (child) => !(child.type === 'text' && child.value.trim() === ''),\r\n )\r\n return meaningful.length === 1 && meaningful[0]?.type === 'element' && meaningful[0].tagName === 'code'\r\n}\r\n\r\nfunction codeLanguage(element: Element): string {\r\n const code = element.children.find(\r\n (child): child is Element => child.type === 'element' && child.tagName === 'code',\r\n )\r\n const classNames = [\r\n ...(Array.isArray(element.properties.className)\r\n ? element.properties.className.map(String)\r\n : []),\r\n ...(Array.isArray(code?.properties.className)\r\n ? code.properties.className.map(String)\r\n : []),\r\n ]\r\n for (const name of classNames) {\r\n const match = /^(?:language|lang)-(.+)$/u.exec(name)\r\n if (match?.[1]) return match[1].toLowerCase()\r\n }\r\n return ''\r\n}\r\n\r\nfunction collapseCodeBlock(\r\n element: Element,\r\n key: string,\r\n source: SourceRange | undefined,\r\n): MarkdownNode {\r\n const code = element.children.find(\r\n (child): child is Element => child.type === 'element' && child.tagName === 'code',\r\n )\r\n const raw = code\r\n ? code.children.map((child) => (child.type === 'text' ? child.value : '')).join('')\r\n : element.children.map((child) => (child.type === 'text' ? child.value : '')).join('')\r\n return {\r\n kind: 'code',\r\n key,\r\n code: raw,\r\n language: codeLanguage(element),\r\n source,\r\n }\r\n}\r\n\r\ntype FilterDecision = 'keep' | 'drop' | 'unwrap'\r\n\r\nfunction filterDecision(\r\n node: MarkdownElementNode,\r\n index: number,\r\n parent: MarkdownElementNode | undefined,\r\n state: FilterState,\r\n): FilterDecision {\r\n const {\r\n allowedElements,\r\n disallowedElements,\r\n unwrapDisallowed,\r\n allowElement,\r\n diagnostics,\r\n } = state.options\r\n\r\n let rejected = false\r\n\r\n if (allowedElements && allowedElements.length > 0) {\r\n if (disallowedElements && disallowedElements.length > 0 && !state.conflictReported) {\r\n state.conflictReported = true\r\n diagnostics?.push(\r\n createDiagnostic(\r\n 'filter-conflict',\r\n '`allowedElements` and `disallowedElements` were both provided; `allowedElements` wins.',\r\n { severity: 'warning', phase: 'normalize' },\r\n ),\r\n )\r\n }\r\n rejected = !allowedElements.includes(node.tag)\r\n } else if (disallowedElements && disallowedElements.includes(node.tag)) {\r\n rejected = true\r\n }\r\n\r\n if (!rejected && allowElement) {\r\n try {\r\n // react-markdown treats any falsy return as a rejection.\r\n rejected = !allowElement(node, index, parent)\r\n } catch (error) {\r\n diagnostics?.push(\r\n createDiagnostic('filter-predicate', errorMessage(error), {\r\n phase: 'normalize',\r\n }),\r\n )\r\n rejected = true\r\n }\r\n }\r\n\r\n if (!rejected) return 'keep'\r\n return unwrapDisallowed ? 'unwrap' : 'drop'\r\n}\r\n\r\nfunction normalizeUrlAttribute(\r\n value: string,\r\n key: string,\r\n tag: string,\r\n attrs: Record<string, string>,\r\n state: FilterState,\r\n): string | undefined {\r\n const resolved = resolveUrl(value, state.options.baseUrl)\r\n const transform = state.options.urlTransform\r\n\r\n // `srcset` is a candidate list; validate each candidate with the image URL\r\n // policy instead of running the whole string through defaultUrlTransform.\r\n const applyDefaultPolicy = (candidate: string): string | undefined => {\r\n if (key === 'srcset') return sanitizeUrlValue(candidate, 'srcset')\r\n const transformed = defaultUrlTransform(candidate, key)\r\n if (transformed !== '') return transformed\r\n return candidate.trim() === '' ? '' : undefined\r\n }\r\n\r\n if (!transform) return applyDefaultPolicy(resolved)\r\n\r\n try {\r\n const result = transform(resolved, key, { tag, attrs })\r\n if (result === null) return undefined\r\n if (typeof result !== 'string') return applyDefaultPolicy(resolved)\r\n // A custom transform must not be able to introduce an unsafe URL.\r\n return sanitizeUrlValue(result, key)\r\n } catch (error) {\r\n if (!state.urlErrorReported) {\r\n state.urlErrorReported = true\r\n state.options.diagnostics?.push(\r\n createDiagnostic('url-transform', errorMessage(error), {\r\n phase: 'normalize',\r\n }),\r\n )\r\n }\r\n return applyDefaultPolicy(resolved)\r\n }\r\n}\r\n\r\nfunction convertElement(\r\n element: Element,\r\n path: string,\r\n index: number,\r\n parent: MarkdownElementNode | undefined,\r\n state: FilterState,\r\n allowMath = false,\r\n): MarkdownNode | MarkdownNode[] | null {\r\n if (\r\n DANGEROUS_TAGS.has(element.tagName) &&\r\n !(allowMath && element.tagName === 'math')\r\n ) {\r\n return null\r\n }\r\n\r\n const source = toSourceRange(element)\r\n const attrs = propertiesToAttrs(element.tagName, element.properties)\r\n\r\n const math = mathContainer(element)\r\n if (math) {\r\n const provisional: MarkdownElementNode = {\r\n kind: 'element',\r\n key: path,\r\n tag: element.tagName,\r\n attrs,\r\n children: [],\r\n source,\r\n }\r\n const decision = filterDecision(provisional, index, parent, state)\r\n if (decision !== 'keep') return null\r\n return {\r\n kind: 'math',\r\n key: path,\r\n tex: math.tex,\r\n displayMode: math.displayMode,\r\n rendered: convertChildren(\r\n math.rendered,\r\n path,\r\n provisional,\r\n state,\r\n true,\r\n ),\r\n source,\r\n }\r\n }\r\n\r\n const provisional: MarkdownElementNode = {\r\n kind: 'element',\r\n key: path,\r\n tag: element.tagName,\r\n attrs,\r\n children: [],\r\n source,\r\n }\r\n\r\n const children = convertChildren(\r\n element.children,\r\n path,\r\n provisional,\r\n state,\r\n allowMath,\r\n )\r\n provisional.children = children\r\n\r\n const decision = filterDecision(provisional, index, parent, state)\r\n if (decision === 'drop') return null\r\n if (decision === 'unwrap') return children\r\n\r\n if (isCodeBlock(element)) {\r\n return collapseCodeBlock(element, path, source)\r\n }\r\n\r\n for (const key of Object.keys(attrs)) {\r\n if (!URL_ATTRIBUTES.has(key)) continue\r\n const transformed = normalizeUrlAttribute(attrs[key], key, element.tagName, attrs, state)\r\n if (transformed === undefined) delete attrs[key]\r\n else attrs[key] = transformed\r\n }\r\n\r\n // Keep static export and rendered links in sync: a raw `_blank` link without\r\n // an explicit rel gets the same default the link component applies.\r\n if (element.tagName === 'a' && attrs.target === '_blank' && !attrs.rel) {\r\n attrs.rel = 'noopener noreferrer'\r\n }\r\n\r\n if (/^h[1-6]$/.test(element.tagName) && !attrs.id) {\r\n const text = textContent(children)\r\n if (text.trim()) {\r\n attrs.id = `${state.options.idPrefix ?? ''}${state.options.slugger.slug(text)}`\r\n }\r\n }\r\n\r\n return provisional\r\n}\r\n\r\nfunction convertChildren(\r\n children: readonly RootContent[],\r\n parentPath: string,\r\n parent: MarkdownElementNode | undefined,\r\n state: FilterState,\r\n allowMath = false,\r\n): MarkdownNode[] {\r\n const result: MarkdownNode[] = []\r\n children.forEach((child, index) => {\r\n const path = parentPath ? `${parentPath}.${index}` : String(index)\r\n\r\n if (child.type === 'text') {\r\n if (child.value === '') return\r\n // Whitespace between block-level nodes is not meaningful in the model.\r\n if (!parent && child.value.trim() === '') return\r\n result.push({\r\n kind: 'text',\r\n key: path,\r\n value: child.value,\r\n source: toSourceRange(child),\r\n })\r\n return\r\n }\r\n\r\n // Raw nodes never reach the model. The official pipeline parses them into\r\n // elements only when the html plugin is enabled; custom pipelines own their\r\n // own raw HTML handling.\r\n if (child.type === 'raw') return\r\n\r\n if (child.type !== 'element') return\r\n\r\n const converted = convertElement(child, path, index, parent, state, allowMath)\r\n if (converted === null) return\r\n if (Array.isArray(converted)) result.push(...converted)\r\n else result.push(converted)\r\n })\r\n return result\r\n}\r\n\r\nexport interface NormalizeResult {\r\n nodes: MarkdownNode[]\r\n toc: TocItem[]\r\n customTags: MarkdownDocument['customTags']\r\n}\r\n\r\nexport function normalizeHast(root: Root, options: NormalizeOptions): NormalizeResult {\r\n const state: FilterState = {\r\n options,\r\n conflictReported: false,\r\n urlErrorReported: false,\r\n }\r\n const nodes = convertChildren(root.children, '', undefined, state)\r\n return {\r\n nodes,\r\n toc: extractToc(nodes),\r\n customTags: collectCustomTags(nodes),\r\n }\r\n}\r\n\r\n/**\r\n * Keep headings up to `depth`. A missing, zero, negative, or non-finite depth\r\n * means all available levels. Values above six are also effectively unlimited.\r\n */\r\nexport function filterTocByDepth(\r\n toc: readonly TocItem[],\r\n depth: number | undefined,\r\n): TocItem[] {\r\n if (depth === undefined || !Number.isFinite(depth) || depth <= 0 || depth >= 6) {\r\n return [...toc]\r\n }\r\n const maxLevel = Math.min(6, Math.max(1, Math.floor(depth)))\r\n return toc.filter((item) => item.level <= maxLevel)\r\n}\r\n\r\nexport function extractToc(nodes: readonly MarkdownNode[]): TocItem[] {\r\n const toc: TocItem[] = []\r\n\r\n const visit = (list: readonly MarkdownNode[]): void => {\r\n for (const node of list) {\r\n if (node.kind === 'element') {\r\n const match = /^h([1-6])$/.exec(node.tag)\r\n if (match && node.attrs.id) {\r\n toc.push({\r\n id: node.attrs.id,\r\n text: textContent(node.children).trim(),\r\n level: Number(match[1]),\r\n })\r\n }\r\n visit(node.children)\r\n } else if ('children' in node && Array.isArray(node.children)) {\r\n visit(node.children)\r\n }\r\n }\r\n }\r\n\r\n visit(nodes)\r\n return toc\r\n}\r\n\r\nexport function collectCustomTags(\r\n nodes: readonly MarkdownNode[],\r\n): MarkdownDocument['customTags'] {\r\n const tags: MarkdownDocument['customTags'] = []\r\n\r\n const visit = (list: readonly MarkdownNode[]): void => {\r\n for (const node of list) {\r\n if (node.kind === 'custom') {\r\n tags.push({\r\n key: node.key,\r\n tag: node.tag,\r\n props: node.props,\r\n attrs: node.attrs,\r\n })\r\n visit(node.children)\r\n } else if ('children' in node && Array.isArray(node.children)) {\r\n visit(node.children)\r\n }\r\n }\r\n }\r\n\r\n visit(nodes)\r\n return tags\r\n}\r\n\r\nexport function walkNodes(\r\n nodes: readonly MarkdownNode[],\r\n visit: (node: MarkdownNode, parent: MarkdownNode | undefined) => void,\r\n parent?: MarkdownNode,\r\n): void {\r\n for (const node of nodes) {\r\n visit(node, parent)\r\n if ('children' in node && Array.isArray(node.children)) {\r\n walkNodes(node.children, visit, node)\r\n }\r\n }\r\n}\r\n"],"mappings":";;;;AAkCA,SAASO,EAAc,GAAmE;CACxF,IAAMC,IAAWC,EAAK;CACtB,IAAID,KAAA,QAACA,EAAU,SAAUA,EAAS,KAClC,OAAO;EACL,OAAO;GACL,MAAMA,EAAS,MAAM;GACrB,QAAQA,EAAS,MAAM;GACvB,QAAQA,EAAS,MAAM;EACzB;EACA,KAAK;GACH,MAAMA,EAAS,IAAI;GACnB,QAAQA,EAAS,IAAI;GACrB,QAAQA,EAAS,IAAI;EACvB;CACF;AACF;AAEA,SAASE,EAAY,GAAwC;CAC3D,IAAIC,IAAQ;CACZ,KAAK,IAAMF,KAAQG,GACjB,AAAIH,EAAK,SAAS,SAAQ,KAASA,EAAK,QAC/B,cAAcA,KAAQ,MAAM,QAAQA,EAAK,QAAQ,IACxD,KAASC,EAAYD,EAAK,QAAQ,IACzBA,EAAK,SAAS,WAAQ,KAASA,EAAK;CAEjD,OAAOE;AACT;AAEA,SAASE,EAAW,GAA4B;;CAC9C,IAAMF,KAAA,IAAiBI,EAAQ,eAAA,OAAA,KAAA,IAAAD,EAAY;CAG3C,OAFI,MAAM,QAAQH,CAAK,IAAUA,EAAM,IAAI,MAAM,IAC7C,OAAOA,KAAU,WAAiBA,EAAM,MAAM,KAAK,IAChD,CAAC;AACV;AAEA,SAASK,EAAc,GAIT;;CACZ,IAAMG,IAAQN,EAAWE,CAAO;CAKhC,IAAI,EAHFA,EAAQ,YAAY,cACnBI,EAAM,SAAS,eAAe,KAC7BA,EAAM,MAAM,MAASC,EAAK,WAAW,OAAO,CAAC,IACpC;CAEb,IAAMC,MAAA,IACJN,EAAQ,eAAA,OAAA,KAAA,IAAAE,EAAa,qBAAoB,UACzCE,EAAM,SAAS,cAAc,GACzBG,KAAA,IAAcP,EAAQ,eAAA,OAAA,KAAA,IAAAG,EAAa,aACnCK,IAAOC,EAAaT,CAAO,GAC3BU,IACJ,OAAOH,KAAgB,WACnBA,IACAC,IACEA,EAAK,SAAS,KAAK,MAAWG,EAAM,SAAS,SAASA,EAAM,QAAQ,EAAG,CAAC,CAAC,KAAK,EAAE,IAChF,IAGJC,KADWJ,KAAA,OAAQR,IAARQ,EAAQ,CACuB,UACxCK,IAAQD,EAAS,MACpB,MAA4BD,EAAM,SAAS,SAC9C;CAKA,SAJAE,KAAA,OAAA,KAAA,IAAIA,EAAO,aAAY,UAAAA,KAAA,OAAA,KAAA,IAASA,EAAO,aAAY,YACjD,IAAWA,EAAM,WAGZ;EAAE;EAAK;EAAa;CAAS;AACtC;AAEA,SAASJ,EAAa,GAAuC;CAC3D,KAAK,IAAME,KAASX,EAAQ,UAC1B,IAAIW,EAAM,SAAS,WACnB;MAAIA,EAAM,YAAY,UAAUb,EAAWa,CAAK,CAAC,CAAC,SAAS,eAAe,GACxE,OAAOA;EAET,IAAIA,EAAM,YAAY,OAAO;GAC3B,IAAMG,IAASL,EAAaE,CAAK;GACjC,IAAIG,GAAQ,OAAOA;EACrB;CALS;AAQb;AAEA,SAASC,EAAY,GAA2B;;CAC9C,IAAIf,EAAQ,YAAY,OAAO,OAAO;CACtC,IAAMiB,IAAajB,EAAQ,SAAS,QACjC,MAAYW,EAAM,SAAS,UAAUA,EAAM,MAAM,KAAK,MAAM,EAC/D;CACA,OAAOM,EAAW,WAAW,OAAA,IAAKA,EAAW,OAAA,OAAA,KAAA,IAAAD,EAAI,UAAS,aAAaC,EAAW,EAAE,CAAC,YAAY;AACnG;AAEA,SAASC,EAAa,GAA0B;CAC9C,IAAMV,IAAOR,EAAQ,SAAS,MAC3B,MAA4BW,EAAM,SAAS,aAAaA,EAAM,YAAY,MAC7E,GACMb,IAAa,CACjB,GAAI,MAAM,QAAQE,EAAQ,WAAW,SAAS,IAC1CA,EAAQ,WAAW,UAAU,IAAI,MAAM,IACvC,CAAC,GACL,GAAI,MAAM,QAAAQ,KAAA,OAAA,KAAA,IAAQA,EAAM,WAAW,SAAS,IACxCA,EAAK,WAAW,UAAU,IAAI,MAAM,IACpC,CAAC,CACP;CACA,KAAK,IAAMH,KAAQP,GAAY;EAC7B,IAAMqB,IAAQ,4BAA4B,KAAKd,CAAI;EACnD,IAAAc,KAAA,QAAIA,EAAQ,IAAI,OAAOA,EAAM,EAAE,CAAC,YAAY;CAC9C;CACA,OAAO;AACT;AAEA,SAASC,EACP,GACA,GACA,GACc;CACd,IAAMZ,IAAOR,EAAQ,SAAS,MAC3B,MAA4BW,EAAM,SAAS,aAAaA,EAAM,YAAY,MAC7E;CAIA,OAAO;EACL,MAAM;EACN;EACA,MANUH,IACRA,EAAK,SAAS,KAAK,MAAWG,EAAM,SAAS,SAASA,EAAM,QAAQ,EAAG,CAAC,CAAC,KAAK,EAAE,IAChFX,EAAQ,SAAS,KAAK,MAAWW,EAAM,SAAS,SAASA,EAAM,QAAQ,EAAG,CAAC,CAAC,KAAK,EAAE;EAKrF,UAAUO,EAAalB,CAAO;EAC9B;CACF;AACF;AAIA,SAASqB,EACP,GACA,GACA,GACA,GACgB;CAChB,IAAM,EACJ,oBACA,uBACA,qBACA,iBACA,mBACEC,EAAM,SAENC,IAAW;CAkBf,IAhBIC,KAAmBA,EAAgB,SAAS,KAC1CC,KAAsBA,EAAmB,SAAS,KAAK,CAACH,EAAM,qBAChE,EAAM,mBAAmB,IACzBI,KAAA,QAAAA,EAAa,KACXC,EACE,mBACA,0FACA;EAAE,UAAU;EAAW,OAAO;CAAY,CAC5C,CACF,IAEF,IAAW,CAACH,EAAgB,SAAS9B,EAAK,GAAG,KACpC+B,KAAsBA,EAAmB,SAAS/B,EAAK,GAAG,MACnE,IAAW,KAGT,CAAC6B,KAAYK,GACf,IAAI;EAEF,IAAW,CAACA,EAAalC,GAAMmC,GAAOC,CAAM;CAC9C,SAASC,GAAO;EAMd,AALAL,KAAA,QAAAA,EAAa,KACXC,EAAiB,oBAAoB1C,EAAa8C,CAAK,GAAG,EACxD,OAAO,YACT,CAAC,CACH,GACA,IAAW;CACb;CAIF,OADKR,IACES,IAAmB,WAAW,SADf;AAExB;AAEA,SAASC,EACP,GACA,GACA,GACA,GACA,GACoB;CACpB,IAAMC,IAAWhD,EAAWU,GAAO0B,EAAM,QAAQ,OAAO,GAClDa,IAAYb,EAAM,QAAQ,cAI1Bc,KAAsB,MAA0C;EACpE,IAAIC,MAAQ,UAAU,OAAOjD,EAAiBkD,GAAW,QAAQ;EACjE,IAAMC,IAAcpD,EAAoBmD,GAAWD,CAAG;EAEtD,OADIE,MAAgB,KACbD,EAAU,KAAK,MAAM,KAAK,KAAK,KAAA,IADPC;CAEjC;CAEA,IAAI,CAACJ,GAAW,OAAOC,EAAmBF,CAAQ;CAElD,IAAI;EACF,IAAMM,IAASL,EAAUD,GAAUG,GAAK;GAAE;GAAK;EAAM,CAAC;EAItD,OAHIG,MAAW,OAAM,SACjB,OAAOA,KAAW,WAEfpD,EAAiBoD,GAAQH,CAAG,IAFID,EAAmBF,CAAQ;CAGpE,SAASH,GAAO;EACd,IAAI,CAACT,EAAM,kBAAkB;;GAE3B,AADA,EAAM,mBAAmB,KACzB,IAAAA,EAAM,QAAQ,gBAAA,QAAAmB,EAAa,KACzBd,EAAiB,iBAAiB1C,EAAa8C,CAAK,GAAG,EACrD,OAAO,YACT,CAAC,CACH;EACF;EACA,OAAOK,EAAmBF,CAAQ;CACpC;AACF;AAEA,SAASQ,EACP,GACA,GACA,GACA,GACA,GACA,IAAY,IAC0B;CACtC,IACEpD,EAAe,IAAIU,EAAQ,OAAO,KAClC,EAAE2C,KAAa3C,EAAQ,YAAY,SAEnC,OAAO;CAGT,IAAM4C,IAASpD,EAAcQ,CAAO,GAC9B6C,IAAQxD,EAAkBW,EAAQ,SAASA,EAAQ,UAAU,GAE7D8C,IAAO7C,EAAcD,CAAO;CAClC,IAAI8C,GAAM;EACR,IAAMC,IAAmC;GACvC,MAAM;GACN,KAAKC;GACL,KAAKhD,EAAQ;GACb;GACA,UAAU,CAAC;GACX;EACF;EAGA,OAFiBqB,EAAe0B,GAAalB,GAAOC,GAAQR,CACxD,MAAa,SACV;GACL,MAAM;GACN,KAAK0B;GACL,KAAKF,EAAK;GACV,aAAaA,EAAK;GAClB,UAAUG,EACRH,EAAK,UACLE,GACAD,GACAzB,GACA,EACF;GACA;EACF,IAdgC;CAelC;CAEA,IAAMyB,IAAmC;EACvC,MAAM;EACN,KAAKC;EACL,KAAKhD,EAAQ;EACb;EACA,UAAU,CAAC;EACX;CACF,GAEMkD,IAAWD,EACfjD,EAAQ,UACRgD,GACAD,GACAzB,GACAqB,CACF;CACA,EAAY,WAAWO;CAEvB,IAAMC,IAAW9B,EAAe0B,GAAalB,GAAOC,GAAQR,CAAK;CACjE,IAAI6B,MAAa,QAAQ,OAAO;CAChC,IAAIA,MAAa,UAAU,OAAOD;CAElC,IAAInC,EAAYf,CAAO,GACrB,OAAOoB,EAAkBpB,GAASgD,GAAMJ,CAAM;CAGhD,KAAK,IAAMP,KAAO,OAAO,KAAKQ,CAAK,GAAG;EACpC,IAAI,CAACtD,EAAe,IAAI8C,CAAG,GAAG;EAC9B,IAAME,IAAcN,EAAsBY,EAAMR,IAAMA,GAAKrC,EAAQ,SAAS6C,GAAOvB,CAAK;EACxF,AAAIiB,MAAgB,KAAA,IAAW,OAAOM,EAAMR,KACvC,EAAMA,KAAOE;CACpB;CAQA,IAJIvC,EAAQ,YAAY,OAAO6C,EAAM,WAAW,YAAY,CAACA,EAAM,QACjE,EAAM,MAAM,wBAGV,WAAW,KAAK7C,EAAQ,OAAO,KAAK,CAAC6C,EAAM,IAAI;EACjD,IAAMO,IAAOzD,EAAYuD,CAAQ;EACjC,IAAIE,EAAK,KAAK,GAAG;;GACf,EAAM,KAAK,IAAA,IAAG9B,EAAM,QAAQ,aAAA,OAAY,KAAZ+B,IAAiB/B,EAAM,QAAQ,QAAQ,KAAK8B,CAAI;EAC9E;CACF;CAEA,OAAOL;AACT;AAEA,SAASE,EACP,GACA,GACA,GACA,GACA,IAAY,IACI;CAChB,IAAMT,IAAyB,CAAC;CA6BhC,OA5BAU,EAAS,SAAS,GAAO,MAAU;EACjC,IAAMF,IAAOM,IAAa,GAAGA,EAAW,GAAGzB,MAAU,OAAOA,CAAK;EAEjE,IAAIlB,EAAM,SAAS,QAAQ;GAGzB,IAFIA,EAAM,UAAU,MAEhB,CAACmB,KAAUnB,EAAM,MAAM,KAAK,MAAM,IAAI;GAC1C,EAAO,KAAK;IACV,MAAM;IACN,KAAKqC;IACL,OAAOrC,EAAM;IACb,QAAQnB,EAAcmB,CAAK;GAC7B,CAAC;GACD;EACF;EAOA,IAFIA,EAAM,SAAS,SAEfA,EAAM,SAAS,WAAW;EAE9B,IAAM4C,IAAYb,EAAe/B,GAAOqC,GAAMnB,GAAOC,GAAQR,GAAOqB,CAAS;EAC7E,AAAIY,MAAc,SACd,MAAM,QAAQA,CAAS,IAAGf,EAAO,KAAK,GAAGe,CAAS,IACjDf,EAAO,KAAKe,CAAS;CAC5B,CAAC,GACMf;AACT;AAQA,SAAgBgB,EAAc,GAAY,GAA4C;CACpF,IAAMlC,IAAqB;EACzB;EACA,kBAAkB;EAClB,kBAAkB;CACpB,GACMzB,IAAQoD,EAAgBQ,EAAK,UAAU,IAAI,KAAA,GAAWnC,CAAK;CACjE,OAAO;EACL;EACA,KAAKoC,EAAW7D,CAAK;EACrB,YAAY8D,EAAkB9D,CAAK;CACrC;AACF;AAMA,SAAgB+D,EACd,GACA,GACW;CACX,IAAIC,MAAU,KAAA,KAAa,CAAC,OAAO,SAASA,CAAK,KAAKA,KAAS,KAAKA,KAAS,GAC3E,OAAO,CAAC,GAAGC,CAAG;CAEhB,IAAMC,IAAW,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAMF,CAAK,CAAC,CAAC;CAC3D,OAAOC,EAAI,QAAQ,MAASE,EAAK,SAASD,CAAQ;AACpD;AAEA,SAAgBL,EAAW,GAA2C;CACpE,IAAMI,IAAiB,CAAC,GAElBG,KAAS,MAAwC;EACrD,KAAK,IAAMvE,KAAQwE,GACjB,IAAIxE,EAAK,SAAS,WAAW;GAC3B,IAAMyB,IAAQ,aAAa,KAAKzB,EAAK,GAAG;GAQxC,AAPIyB,KAASzB,EAAK,MAAM,MACtBoE,EAAI,KAAK;IACP,IAAIpE,EAAK,MAAM;IACf,MAAMC,EAAYD,EAAK,QAAQ,CAAC,CAAC,KAAK;IACtC,OAAO,OAAOyB,EAAM,EAAE;GACxB,CAAC,GAEH8C,EAAMvE,EAAK,QAAQ;EACrB,OAAO,AAAI,cAAcA,KAAQ,MAAM,QAAQA,EAAK,QAAQ,KAC1DuE,EAAMvE,EAAK,QAAQ;CAGzB;CAGA,OADAuE,EAAMpE,CAAK,GACJiE;AACT;AAEA,SAAgBH,EACd,GACgC;CAChC,IAAMQ,IAAuC,CAAC,GAExCF,KAAS,MAAwC;EACrD,KAAK,IAAMvE,KAAQwE,GACjB,AAAIxE,EAAK,SAAS,YAChByE,EAAK,KAAK;GACR,KAAKzE,EAAK;GACV,KAAKA,EAAK;GACV,OAAOA,EAAK;GACZ,OAAOA,EAAK;EACd,CAAC,GACDuE,EAAMvE,EAAK,QAAQ,KACV,cAAcA,KAAQ,MAAM,QAAQA,EAAK,QAAQ,KAC1DuE,EAAMvE,EAAK,QAAQ;CAGzB;CAGA,OADAuE,EAAMpE,CAAK,GACJsE;AACT;AAEA,SAAgBC,EACd,GACA,GACA,GACM;CACN,KAAK,IAAM1E,KAAQG,GAEjB,AADAoE,EAAMvE,GAAMoC,CAAM,GACd,cAAcpC,KAAQ,MAAM,QAAQA,EAAK,QAAQ,KACnD0E,EAAU1E,EAAK,UAAUuE,GAAOvE,CAAI;AAG1C"}
@@ -0,0 +1,57 @@
1
+ // \0@oxc-project+runtime@0.155.0/helpers/esm/typeof.js
2
+ function e(t) {
3
+ "@babel/helpers - typeof";
4
+ return e = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
5
+ return typeof e;
6
+ } : function(e) {
7
+ return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
8
+ }, e(t);
9
+ }
10
+ // \0@oxc-project+runtime@0.155.0/helpers/esm/toPrimitive.js
11
+ function t(t, n) {
12
+ if (e(t) != "object" || !t) return t;
13
+ var r = t[Symbol.toPrimitive];
14
+ if (r !== void 0) {
15
+ var i = r.call(t, n || "default");
16
+ if (e(i) != "object") return i;
17
+ throw TypeError("@@toPrimitive must return a primitive value.");
18
+ }
19
+ return (n === "string" ? String : Number)(t);
20
+ }
21
+ // \0@oxc-project+runtime@0.155.0/helpers/esm/toPropertyKey.js
22
+ function n(n) {
23
+ var r = t(n, "string");
24
+ return e(r) == "symbol" ? r : r + "";
25
+ }
26
+ // \0@oxc-project+runtime@0.155.0/helpers/esm/defineProperty.js
27
+ function r(e, t, r) {
28
+ return (t = n(t)) in e ? Object.defineProperty(e, t, {
29
+ value: r,
30
+ enumerable: !0,
31
+ configurable: !0,
32
+ writable: !0
33
+ }) : e[t] = r, e;
34
+ }
35
+ // \0@oxc-project+runtime@0.155.0/helpers/esm/objectSpread2.js
36
+ function i(e, t) {
37
+ var n = Object.keys(e);
38
+ if (Object.getOwnPropertySymbols) {
39
+ var r = Object.getOwnPropertySymbols(e);
40
+ t && (r = r.filter(function(t) {
41
+ return Object.getOwnPropertyDescriptor(e, t).enumerable;
42
+ })), n.push.apply(n, r);
43
+ }
44
+ return n;
45
+ }
46
+ function a(e) {
47
+ for (var t = 1; t < arguments.length; t++) {
48
+ var n = arguments[t] == null ? {} : arguments[t];
49
+ t % 2 ? i(Object(n), !0).forEach(function(t) {
50
+ r(e, t, n[t]);
51
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : i(Object(n)).forEach(function(t) {
52
+ Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));
53
+ });
54
+ }
55
+ return e;
56
+ }
57
+ export { a as t };
@@ -0,0 +1,28 @@
1
+ import { t as e } from "./objectSpread2-CtBNx0TF.js";
2
+ // src/mermaid/plugin.ts
3
+ var t = ["mermaid", "mmd"];
4
+ function n(e) {
5
+ return new Set((e === void 0 ? t : Array.isArray(e) ? e : [e]).map((e) => e.trim().toLowerCase()).filter(Boolean));
6
+ }
7
+ function r(t, n, i) {
8
+ return t.map((t) => t.kind === "code" && n.has(t.language.toLowerCase()) ? {
9
+ kind: "mermaid",
10
+ key: t.key,
11
+ code: t.code,
12
+ complete: !0,
13
+ index: i.index++,
14
+ source: t.source
15
+ } : "children" in t && Array.isArray(t.children) ? e(e({}, t), {}, { children: r(t.children, n, i) }) : t);
16
+ }
17
+ function i(t = {}) {
18
+ let i = n(t.languages);
19
+ return {
20
+ name: "mermaid",
21
+ transformDocument(t) {
22
+ return e(e({}, t), {}, { nodes: r(t.nodes, i, { index: 0 }) });
23
+ }
24
+ };
25
+ }
26
+ export { i as t };
27
+
28
+ //# sourceMappingURL=plugin-DqkFHyny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-DqkFHyny.js","names":["_objectSpread2","DEFAULT_LANGUAGES","normalizeLanguages","value","language","convert","nodes","node","languages","counter","mermaidPlugin","options","document"],"sources":["../../src/mermaid/plugin.ts"],"sourcesContent":["import type {\n MarkdownDocument,\n MarkdownNode,\n MarkdownPlugin,\n} from '../core/types'\n\nexport interface MermaidPluginOptions {\n /**\n * Fence languages that become Mermaid nodes. Defaults to `mermaid` and\n * `mmd`. Language matching is case-insensitive.\n */\n languages?: string | string[]\n}\n\nconst DEFAULT_LANGUAGES = ['mermaid', 'mmd']\n\nfunction normalizeLanguages(\n value: MermaidPluginOptions['languages'],\n): Set<string> {\n const list = value === undefined\n ? DEFAULT_LANGUAGES\n : Array.isArray(value)\n ? value\n : [value]\n return new Set(\n list\n .map((language) => language.trim().toLowerCase())\n .filter(Boolean),\n )\n}\n\nfunction convert(\n nodes: readonly MarkdownNode[],\n languages: ReadonlySet<string>,\n counter: { index: number },\n): MarkdownNode[] {\n return nodes.map((node) => {\n if (node.kind === 'code' && languages.has(node.language.toLowerCase())) {\n return {\n kind: 'mermaid',\n key: node.key,\n code: node.code,\n complete: true,\n index: counter.index++,\n source: node.source,\n }\n }\n if ('children' in node && Array.isArray(node.children)) {\n return {\n ...node,\n children: convert(node.children, languages, counter),\n } as MarkdownNode\n }\n return node\n })\n}\n\n/**\n * Turn Mermaid fenced code blocks into `mermaid` nodes so the renderer can use\n * `MermaidBlock` directly. The plugin is opt-in because the Mermaid runtime is\n * an optional peer dependency.\n */\nexport function mermaidPlugin(\n options: MermaidPluginOptions = {},\n): MarkdownPlugin {\n const languages = normalizeLanguages(options.languages)\n\n return {\n name: 'mermaid',\n transformDocument(document: MarkdownDocument): MarkdownDocument {\n const counter = { index: 0 }\n return {\n ...document,\n nodes: convert(document.nodes, languages, counter),\n }\n },\n }\n}\n"],"mappings":";;AAcA,IAAMC,IAAoB,CAAC,WAAW,KAAK;AAE3C,SAASC,EACP,GACa;CAMb,OAAO,IAAI,KALEC,MAAU,KAAA,IACnBF,IACA,MAAM,QAAQE,CAAK,IACjBA,IACA,CAACA,CAAK,EAAA,CAGP,KAAK,MAAaC,EAAS,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAChD,OAAO,OAAO,CACnB;AACF;AAEA,SAASC,EACP,GACA,GACA,GACgB;CAChB,OAAOC,EAAM,KAAK,MACZC,EAAK,SAAS,UAAUC,EAAU,IAAID,EAAK,SAAS,YAAY,CAAC,IAC5D;EACL,MAAM;EACN,KAAKA,EAAK;EACV,MAAMA,EAAK;EACX,UAAU;EACV,OAAO,EAAQ;EACf,QAAQA,EAAK;CACf,IAEE,cAAcA,KAAQ,MAAM,QAAQA,EAAK,QAAQ,IACnDP,EAAAA,EAAA,CAAA,GACKO,CAAA,GAAA,CAAA,GAAA,EACH,UAAUF,EAAQE,EAAK,UAAUC,GAAWC,CAAO,EAAA,CACrD,IAEKF,CACR;AACH;AAOA,SAAgBG,EACd,IAAgC,CAAC,GACjB;CAChB,IAAMF,IAAYN,EAAmBS,EAAQ,SAAS;CAEtD,OAAO;EACL,MAAM;EACN,kBAAkB,GAA8C;GAE9D,OAAAX,EAAAA,EAAA,CAAA,GACKY,CAAA,GAAA,CAAA,GAAA,EACH,OAAOP,EAAQO,EAAS,OAAOJ,GAAW,EAH1B,OAAO,EAGmB,CAAO,EAAA,CACnD;EACF;CACF;AACF"}
@@ -0,0 +1,46 @@
1
+ import { t as e } from "./objectSpread2-CtBNx0TF.js";
2
+ // src/core/config.ts
3
+ function t(t, n) {
4
+ if (t || n) return e(e({}, t), n);
5
+ }
6
+ function n(n, r) {
7
+ var i, a, o, s, c, l, u, d, f;
8
+ return n ? r ? {
9
+ theme: (i = r.theme) == null ? n.theme : i,
10
+ tokens: t(n.tokens, r.tokens),
11
+ labels: t(n.labels, r.labels),
12
+ components: t(n.components, r.components),
13
+ regions: t(n.regions, r.regions),
14
+ nodeComponents: t(n.nodeComponents, r.nodeComponents),
15
+ plugins: (a = r.plugins) == null ? n.plugins : a,
16
+ pipeline: (o = r.pipeline) == null ? n.pipeline : o,
17
+ highlighter: (s = r.highlighter) == null ? n.highlighter : s,
18
+ mathEngine: (c = r.mathEngine) == null ? n.mathEngine : c,
19
+ mermaidRenderer: (l = r.mermaidRenderer) == null ? n.mermaidRenderer : l,
20
+ diagnosticsFormatter: (u = r.diagnosticsFormatter) == null ? n.diagnosticsFormatter : u,
21
+ slugger: (d = r.slugger) == null ? n.slugger : d,
22
+ urlTransform: (f = r.urlTransform) == null ? n.urlTransform : f
23
+ } : e({}, n) : e({}, r);
24
+ }
25
+ function r(t, r) {
26
+ var i, a;
27
+ return t ? e(e({}, n(t, r)), {}, {
28
+ name: `${t.name}+${r.name}`,
29
+ plugins: [...(i = t.plugins) == null ? [] : i, ...(a = r.plugins) == null ? [] : a]
30
+ }) : e({}, r);
31
+ }
32
+ // src/core/preset.ts
33
+ function i(e) {
34
+ if (!e.name || typeof e.name != "string") throw TypeError("A Markdown preset requires a non-empty name.");
35
+ return e;
36
+ }
37
+ function a(...e) {
38
+ let t = e.filter((e) => !!e);
39
+ return t.length === 0 ? { name: "empty" } : t.slice(1).reduce((e, t) => r(e, t), t[0]);
40
+ }
41
+ function o(e) {
42
+ if (e) return Array.isArray(e) ? a(...e) : e;
43
+ }
44
+ export { r as a, n as i, i as n, o as r, a as t };
45
+
46
+ //# sourceMappingURL=preset-BjaOuJUL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-BjaOuJUL.js","names":["_objectSpread2","mergeMaps","base","next","mergeMarkdownConfig","_next$theme","_next$plugins","_next$pipeline","_next$highlighter","_next$mathEngine","_next$mermaidRenderer","_next$diagnosticsForm","_next$slugger","_next$urlTransform","mergeMarkdownPreset","_base$plugins","_next$plugins2","defineMarkdownPreset","preset","composePresets","presets","list","result","resolvePreset","input"],"sources":["../../src/core/config.ts","../../src/core/preset.ts"],"sourcesContent":["import type {\r\n MarkdownConfig,\r\n MarkdownPreset,\r\n} from './types'\r\n\r\nfunction mergeMaps<T extends object>(\r\n base: T | undefined,\r\n next: T | undefined,\r\n): T | undefined {\r\n if (!base && !next) return undefined\r\n return { ...base, ...next } as T\r\n}\r\n\r\n/** Merge configuration maps with `next` taking precedence. */\r\nexport function mergeMarkdownConfig(\r\n base: MarkdownConfig | undefined,\r\n next: MarkdownConfig | undefined,\r\n): MarkdownConfig {\r\n if (!base) return { ...next }\r\n if (!next) return { ...base }\r\n\r\n return {\r\n theme: next.theme ?? base.theme,\r\n tokens: mergeMaps(base.tokens, next.tokens),\r\n labels: mergeMaps(base.labels, next.labels),\r\n components: mergeMaps(base.components, next.components),\r\n regions: mergeMaps(base.regions, next.regions),\r\n nodeComponents: mergeMaps(base.nodeComponents, next.nodeComponents),\r\n plugins: next.plugins ?? base.plugins,\r\n pipeline: next.pipeline ?? base.pipeline,\r\n highlighter: next.highlighter ?? base.highlighter,\r\n mathEngine: next.mathEngine ?? base.mathEngine,\r\n mermaidRenderer: next.mermaidRenderer ?? base.mermaidRenderer,\r\n diagnosticsFormatter:\r\n next.diagnosticsFormatter ?? base.diagnosticsFormatter,\r\n slugger: next.slugger ?? base.slugger,\r\n urlTransform: next.urlTransform ?? base.urlTransform,\r\n }\r\n}\r\n\r\n/** Merge presets; later presets win and plugins are appended in order. */\r\nexport function mergeMarkdownPreset(\r\n base: MarkdownPreset | undefined,\r\n next: MarkdownPreset,\r\n): MarkdownPreset {\r\n if (!base) return { ...next }\r\n return {\r\n ...mergeMarkdownConfig(base, next),\r\n name: `${base.name}+${next.name}`,\r\n plugins: [...(base.plugins ?? []), ...(next.plugins ?? [])],\r\n }\r\n}\r\n","import type { MarkdownPreset } from './types'\r\nimport { mergeMarkdownPreset } from './config'\r\n\r\n/**\r\n * Define a shareable preset. Presets contain components, plugin instances, and\r\n * functions, so they are declarative and inspectable but not JSON-serializable.\r\n */\r\nexport function defineMarkdownPreset(preset: MarkdownPreset): MarkdownPreset {\r\n if (!preset.name || typeof preset.name !== 'string') {\r\n throw new TypeError('A Markdown preset requires a non-empty name.')\r\n }\r\n return preset\r\n}\r\n\r\n/** Compose presets in order; later presets override earlier values. */\r\nexport function composePresets(\r\n ...presets: Array<MarkdownPreset | false | null | undefined>\r\n): MarkdownPreset {\r\n const list = presets.filter(\r\n (preset): preset is MarkdownPreset => Boolean(preset),\r\n )\r\n if (list.length === 0) return { name: 'empty' }\r\n return list\r\n .slice(1)\r\n .reduce<MarkdownPreset>(\r\n (result, preset) => mergeMarkdownPreset(result, preset),\r\n list[0]!,\r\n )\r\n}\r\n\r\n/** Resolve a single preset, a preset list, or nothing. */\r\nexport function resolvePreset(\r\n input: MarkdownPreset | readonly MarkdownPreset[] | undefined,\r\n): MarkdownPreset | undefined {\r\n if (!input) return undefined\r\n if (Array.isArray(input)) {\r\n return composePresets(...(input as readonly MarkdownPreset[]))\r\n }\r\n return input as MarkdownPreset\r\n}\r\n"],"mappings":";;AAKA,SAASC,EACP,GACA,GACe;CACf,IAAKC,KAASC,GACd,OAAAH,EAAAA,EAAA,CAAA,GAAYE,CAAA,GAASC,CAAK;AAC5B;AAGA,SAAgBC,EACd,GACA,GACgB;;CAIhB,OAHKF,IACAC,IAEE;EACL,QAAA,IAAOA,EAAK,UAAA,OAASD,EAAK,QAAdG;EACZ,QAAQJ,EAAUC,EAAK,QAAQC,EAAK,MAAM;EAC1C,QAAQF,EAAUC,EAAK,QAAQC,EAAK,MAAM;EAC1C,YAAYF,EAAUC,EAAK,YAAYC,EAAK,UAAU;EACtD,SAASF,EAAUC,EAAK,SAASC,EAAK,OAAO;EAC7C,gBAAgBF,EAAUC,EAAK,gBAAgBC,EAAK,cAAc;EAClE,UAAA,IAASA,EAAK,YAAA,OAAWD,EAAK,UAAhBI;EACd,WAAA,IAAUH,EAAK,aAAA,OAAYD,EAAK,WAAjBK;EACf,cAAA,IAAaJ,EAAK,gBAAA,OAAeD,EAAK,cAApBM;EAClB,aAAA,IAAYL,EAAK,eAAA,OAAcD,EAAK,aAAnBO;EACjB,kBAAA,IAAiBN,EAAK,oBAAA,OAAmBD,EAAK,kBAAxBQ;EACtB,uBAAA,IACEP,EAAK,yBAAA,OAAwBD,EAAK,uBAA7BS;EACP,UAAA,IAASR,EAAK,YAAA,OAAWD,EAAK,UAAhBU;EACd,eAAA,IAAcT,EAAK,iBAAA,OAAgBD,EAAK,eAArBW;CACrB,IAlBWb,EAAA,CAAA,GAAYE,CAAK,IADjBF,EAAA,CAAA,GAAYG,CAAK;AAoB9B;AAGA,SAAgBW,EACd,GACA,GACgB;;CAEhB,OADKZ,IACLF,EAAAA,EAAA,CAAA,GACKI,EAAoBF,GAAMC,CAAI,CAAA,GAAA,CAAA,GAAA;EACjC,MAAM,GAAGD,EAAK,KAAK,GAAGC,EAAK;EAC3B,SAAS,CAAC,IAAA,IAAID,EAAK,YAAA,OAAW,CAAC,IAAZa,GAAgB,IAAA,IAAIZ,EAAK,YAAA,OAAW,CAAC,IAAZa,CAAc;CAC5D,CAAA,IALWhB,EAAA,CAAA,GAAYG,CAAK;AAM9B;;AC5CA,SAAgBc,EAAqB,GAAwC;CAC3E,IAAI,CAACC,EAAO,QAAQ,OAAOA,EAAO,QAAS,UACzC,MAAU,UAAU,8CAA8C;CAEpE,OAAOA;AACT;AAGA,SAAgBC,EACd,GAAGC,GACa;CAChB,IAAMC,IAAOD,EAAQ,QAClB,MAAqC,EAAQF,CAChD;CAEA,OADIG,EAAK,WAAW,IAAU,EAAE,MAAM,QAAQ,IACvCA,EACJ,MAAM,CAAC,CAAC,CACR,QACE,GAAQ,MAAWP,EAAoBQ,GAAQJ,CAAM,GACtDG,EAAK,EACP;AACJ;AAGA,SAAgBE,EACd,GAC4B;CAC5B,IAAKC,GAIL,OAHI,MAAM,QAAQA,CAAK,IACdL,EAAe,GAAIK,CAAmC,IAExDA;AACT"}