nested-markdown 0.0.12 → 0.0.14

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.
@@ -0,0 +1,64 @@
1
+ import "./chunk-Q4XP6UTR.js";
2
+
3
+ // src/Mermaid.tsx
4
+ import { useEffect, useState, useId } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ var MermaidClient = ({ chart, theme }) => {
7
+ const id = useId().replace(/:/g, "");
8
+ const [svg, setSvg] = useState("");
9
+ const [hydrated, setHydrated] = useState(false);
10
+ useEffect(() => {
11
+ let cancelled = false;
12
+ setHydrated(true);
13
+ const renderChart = async () => {
14
+ try {
15
+ const { default: mermaid } = await import("mermaid");
16
+ let mermaidTheme = "default";
17
+ if (theme === "dark") {
18
+ mermaidTheme = "dark";
19
+ } else if (theme === "light") {
20
+ mermaidTheme = "default";
21
+ } else if (typeof window !== "undefined" && typeof document !== "undefined") {
22
+ mermaidTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "default";
23
+ }
24
+ mermaid.initialize({
25
+ startOnLoad: false,
26
+ theme: mermaidTheme,
27
+ securityLevel: "loose",
28
+ suppressErrorRendering: true
29
+ });
30
+ const { svg: svg2 } = await mermaid.render(`mermaid-${id}`, chart);
31
+ if (!cancelled) {
32
+ setSvg(svg2);
33
+ }
34
+ } catch (error) {
35
+ console.error("Failed to render mermaid chart:", error);
36
+ if (!cancelled) {
37
+ setSvg(
38
+ `<pre class="mermaid-error" style="color: var(--nmd-error, #ef4444); padding: 8px; background: var(--nmd-error-bg, #fee2e2); border-radius: 4px;">Mermaid syntax error</pre>`
39
+ );
40
+ }
41
+ }
42
+ };
43
+ if (chart) {
44
+ renderChart();
45
+ }
46
+ return () => {
47
+ cancelled = true;
48
+ };
49
+ }, [chart, id, theme]);
50
+ if (!hydrated) {
51
+ return /* @__PURE__ */ jsx("pre", { className: "mermaid", children: chart });
52
+ }
53
+ return /* @__PURE__ */ jsx("div", { className: "mermaid", dangerouslySetInnerHTML: { __html: svg } });
54
+ };
55
+ var Mermaid = ({ chart, theme }) => {
56
+ if (typeof window === "undefined" || typeof document === "undefined") {
57
+ return /* @__PURE__ */ jsx("pre", { className: "mermaid", children: chart });
58
+ }
59
+ return /* @__PURE__ */ jsx(MermaidClient, { chart, theme });
60
+ };
61
+ export {
62
+ Mermaid
63
+ };
64
+ //# sourceMappingURL=Mermaid-N3HH3ZBE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Mermaid.tsx"],"sourcesContent":["import { useEffect, useState, useId } from \"react\";\n\nexport interface MermaidProps {\n chart: string;\n theme?: \"light\" | \"dark\";\n}\n\nconst MermaidClient = ({ chart, theme }: MermaidProps) => {\n const id = useId().replace(/:/g, \"\");\n const [svg, setSvg] = useState(\"\");\n const [hydrated, setHydrated] = useState(false);\n\n useEffect(() => {\n let cancelled = false;\n setHydrated(true);\n\n const renderChart = async () => {\n try {\n const { default: mermaid } = await import(\"mermaid\");\n let mermaidTheme: \"default\" | \"dark\" = \"default\";\n if (theme === \"dark\") {\n mermaidTheme = \"dark\";\n } else if (theme === \"light\") {\n mermaidTheme = \"default\";\n } else if (\n typeof window !== \"undefined\" &&\n typeof document !== \"undefined\"\n ) {\n mermaidTheme = window.matchMedia(\"(prefers-color-scheme: dark)\")\n .matches\n ? \"dark\"\n : \"default\";\n }\n\n mermaid.initialize({\n startOnLoad: false,\n theme: mermaidTheme,\n securityLevel: \"loose\",\n suppressErrorRendering: true,\n });\n\n const { svg } = await mermaid.render(`mermaid-${id}`, chart);\n if (!cancelled) {\n setSvg(svg);\n }\n } catch (error) {\n console.error(\"Failed to render mermaid chart:\", error);\n if (!cancelled) {\n setSvg(\n `<pre class=\"mermaid-error\" style=\"color: var(--nmd-error, #ef4444); padding: 8px; background: var(--nmd-error-bg, #fee2e2); border-radius: 4px;\">Mermaid syntax error</pre>`,\n );\n }\n }\n };\n\n if (chart) {\n renderChart();\n }\n return () => {\n cancelled = true;\n };\n }, [chart, id, theme]);\n\n if (!hydrated) {\n return <pre className=\"mermaid\">{chart}</pre>;\n }\n\n return <div className=\"mermaid\" dangerouslySetInnerHTML={{ __html: svg }} />;\n};\n\nexport const Mermaid = ({ chart, theme }: MermaidProps) => {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return <pre className=\"mermaid\">{chart}</pre>;\n }\n return <MermaidClient chart={chart} theme={theme} />;\n};\n"],"mappings":";;;AAAA,SAAS,WAAW,UAAU,aAAa;AAgEhC;AAzDX,IAAM,gBAAgB,CAAC,EAAE,OAAO,MAAM,MAAoB;AACxD,QAAM,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE;AACnC,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,EAAE;AACjC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,YAAU,MAAM;AACd,QAAI,YAAY;AAChB,gBAAY,IAAI;AAEhB,UAAM,cAAc,YAAY;AAC9B,UAAI;AACF,cAAM,EAAE,SAAS,QAAQ,IAAI,MAAM,OAAO,SAAS;AACnD,YAAI,eAAmC;AACvC,YAAI,UAAU,QAAQ;AACpB,yBAAe;AAAA,QACjB,WAAW,UAAU,SAAS;AAC5B,yBAAe;AAAA,QACjB,WACE,OAAO,WAAW,eAClB,OAAO,aAAa,aACpB;AACA,yBAAe,OAAO,WAAW,8BAA8B,EAC5D,UACC,SACA;AAAA,QACN;AAEA,gBAAQ,WAAW;AAAA,UACjB,aAAa;AAAA,UACb,OAAO;AAAA,UACP,eAAe;AAAA,UACf,wBAAwB;AAAA,QAC1B,CAAC;AAED,cAAM,EAAE,KAAAA,KAAI,IAAI,MAAM,QAAQ,OAAO,WAAW,EAAE,IAAI,KAAK;AAC3D,YAAI,CAAC,WAAW;AACd,iBAAOA,IAAG;AAAA,QACZ;AAAA,MACF,SAAS,OAAO;AACd,gBAAQ,MAAM,mCAAmC,KAAK;AACtD,YAAI,CAAC,WAAW;AACd;AAAA,YACE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,OAAO;AACT,kBAAY;AAAA,IACd;AACA,WAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC;AAErB,MAAI,CAAC,UAAU;AACb,WAAO,oBAAC,SAAI,WAAU,WAAW,iBAAM;AAAA,EACzC;AAEA,SAAO,oBAAC,SAAI,WAAU,WAAU,yBAAyB,EAAE,QAAQ,IAAI,GAAG;AAC5E;AAEO,IAAM,UAAU,CAAC,EAAE,OAAO,MAAM,MAAoB;AACzD,MAAI,OAAO,WAAW,eAAe,OAAO,aAAa,aAAa;AACpE,WAAO,oBAAC,SAAI,WAAU,WAAW,iBAAM;AAAA,EACzC;AACA,SAAO,oBAAC,iBAAc,OAAc,OAAc;AACpD;","names":["svg"]}
@@ -0,0 +1,47 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __commonJS = (cb, mod) => function __require() {
12
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
13
+ };
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
27
+ // If the importer is in node compatibility mode or this is not an ESM
28
+ // file that has been converted to a CommonJS file using a Babel-
29
+ // compatible transform (i.e. "__esModule" has not been set), then set
30
+ // "default" to the CommonJS "module.exports" for node compatibility.
31
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
32
+ mod
33
+ ));
34
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
35
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
36
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
37
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
38
+
39
+ export {
40
+ __commonJS,
41
+ __export,
42
+ __toESM,
43
+ __publicField,
44
+ __privateAdd,
45
+ __privateMethod
46
+ };
47
+ //# sourceMappingURL=chunk-Q4XP6UTR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/index.cjs CHANGED
@@ -9,6 +9,9 @@ var __typeError = (msg) => {
9
9
  throw TypeError(msg);
10
10
  };
11
11
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __esm = (fn, res) => function __init() {
13
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
14
+ };
12
15
  var __commonJS = (cb, mod) => function __require() {
13
16
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
14
17
  };
@@ -6678,12 +6681,83 @@ var require_parser = __commonJS({
6678
6681
  }
6679
6682
  });
6680
6683
 
6684
+ // src/Mermaid.tsx
6685
+ var Mermaid_exports = {};
6686
+ __export(Mermaid_exports, {
6687
+ Mermaid: () => Mermaid
6688
+ });
6689
+ var import_react2, import_jsx_runtime2, MermaidClient, Mermaid;
6690
+ var init_Mermaid = __esm({
6691
+ "src/Mermaid.tsx"() {
6692
+ "use strict";
6693
+ import_react2 = require("react");
6694
+ import_jsx_runtime2 = require("react/jsx-runtime");
6695
+ MermaidClient = ({ chart, theme }) => {
6696
+ const id = (0, import_react2.useId)().replace(/:/g, "");
6697
+ const [svg5, setSvg] = (0, import_react2.useState)("");
6698
+ const [hydrated, setHydrated] = (0, import_react2.useState)(false);
6699
+ (0, import_react2.useEffect)(() => {
6700
+ let cancelled = false;
6701
+ setHydrated(true);
6702
+ const renderChart = async () => {
6703
+ try {
6704
+ const { default: mermaid } = await import("mermaid");
6705
+ let mermaidTheme = "default";
6706
+ if (theme === "dark") {
6707
+ mermaidTheme = "dark";
6708
+ } else if (theme === "light") {
6709
+ mermaidTheme = "default";
6710
+ } else if (typeof window !== "undefined" && typeof document !== "undefined") {
6711
+ mermaidTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "default";
6712
+ }
6713
+ mermaid.initialize({
6714
+ startOnLoad: false,
6715
+ theme: mermaidTheme,
6716
+ securityLevel: "loose",
6717
+ suppressErrorRendering: true
6718
+ });
6719
+ const { svg: svg6 } = await mermaid.render(`mermaid-${id}`, chart);
6720
+ if (!cancelled) {
6721
+ setSvg(svg6);
6722
+ }
6723
+ } catch (error) {
6724
+ console.error("Failed to render mermaid chart:", error);
6725
+ if (!cancelled) {
6726
+ setSvg(
6727
+ `<pre class="mermaid-error" style="color: var(--nmd-error, #ef4444); padding: 8px; background: var(--nmd-error-bg, #fee2e2); border-radius: 4px;">Mermaid syntax error</pre>`
6728
+ );
6729
+ }
6730
+ }
6731
+ };
6732
+ if (chart) {
6733
+ renderChart();
6734
+ }
6735
+ return () => {
6736
+ cancelled = true;
6737
+ };
6738
+ }, [chart, id, theme]);
6739
+ if (!hydrated) {
6740
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("pre", { className: "mermaid", children: chart });
6741
+ }
6742
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "mermaid", dangerouslySetInnerHTML: { __html: svg5 } });
6743
+ };
6744
+ Mermaid = ({ chart, theme }) => {
6745
+ if (typeof window === "undefined" || typeof document === "undefined") {
6746
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("pre", { className: "mermaid", children: chart });
6747
+ }
6748
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MermaidClient, { chart, theme });
6749
+ };
6750
+ }
6751
+ });
6752
+
6681
6753
  // src/index.ts
6682
6754
  var index_exports = {};
6683
6755
  __export(index_exports, {
6684
6756
  NestedMarkdown: () => NestedMarkdown,
6685
6757
  default: () => NestedMarkdown_default,
6686
- expandNestedMarkdown: () => expandNestedMarkdown
6758
+ expandNestedMarkdown: () => expandNestedMarkdown,
6759
+ expandNestedMarkdownSync: () => expandNestedMarkdownSync,
6760
+ preRenderMermaid: () => preRenderMermaid
6687
6761
  });
6688
6762
  module.exports = __toCommonJS(index_exports);
6689
6763
 
@@ -28244,67 +28318,33 @@ function expandNestedMarkdownSync(markdown, options2) {
28244
28318
  options2?.defaultShow
28245
28319
  );
28246
28320
  }
28247
-
28248
- // src/Mermaid.tsx
28249
- var import_react2 = require("react");
28250
- var import_jsx_runtime2 = require("react/jsx-runtime");
28251
- var MermaidClient = ({ chart, theme }) => {
28252
- const id = (0, import_react2.useId)().replace(/:/g, "");
28253
- const [svg5, setSvg] = (0, import_react2.useState)("");
28254
- const [hydrated, setHydrated] = (0, import_react2.useState)(false);
28255
- (0, import_react2.useEffect)(() => {
28256
- let cancelled = false;
28257
- setHydrated(true);
28258
- const renderChart = async () => {
28259
- try {
28260
- const { default: mermaid } = await import("mermaid");
28261
- let mermaidTheme = "default";
28262
- if (theme === "dark") {
28263
- mermaidTheme = "dark";
28264
- } else if (theme === "light") {
28265
- mermaidTheme = "default";
28266
- } else {
28267
- if (typeof window !== "undefined" || typeof document === "undefined") {
28268
- mermaidTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "default";
28269
- }
28270
- }
28271
- mermaid.initialize({
28272
- startOnLoad: false,
28273
- theme: mermaidTheme,
28274
- securityLevel: "loose",
28275
- suppressErrorRendering: true
28276
- });
28277
- const { svg: svg6 } = await mermaid.render(`mermaid-${id}`, chart);
28278
- if (!cancelled) {
28279
- setSvg(svg6);
28280
- }
28281
- } catch (error) {
28282
- console.error("Failed to render mermaid chart:", error);
28283
- if (!cancelled) {
28284
- setSvg(
28285
- `<pre class="mermaid-error" style="color: var(--nmd-error, #ef4444); padding: 8px; background: var(--nmd-error-bg, #fee2e2); border-radius: 4px;">Mermaid syntax error</pre>`
28286
- );
28287
- }
28288
- }
28289
- };
28290
- if (chart) {
28291
- renderChart();
28321
+ function shouldWrapMermaid(rendered) {
28322
+ const trimmed = rendered.trim();
28323
+ return trimmed.startsWith("<svg");
28324
+ }
28325
+ async function preRenderMermaid(markdown, options2) {
28326
+ const renderMermaid = options2?.renderMermaid;
28327
+ if (!renderMermaid) return markdown;
28328
+ const fenceRegex = /(^|\n)([ \t]*)```mermaid[^\n]*\n([\s\S]*?)\n\2```/g;
28329
+ let result = "";
28330
+ let lastIndex = 0;
28331
+ for (const match of markdown.matchAll(fenceRegex)) {
28332
+ const [fullMatch, leadingNewline, indent2, body] = match;
28333
+ const start2 = match.index ?? 0;
28334
+ result += markdown.slice(lastIndex, start2);
28335
+ const chart = body.replace(/\n$/, "");
28336
+ try {
28337
+ const rendered = await renderMermaid(chart);
28338
+ const wrapped = shouldWrapMermaid(rendered) ? `<div class="mermaid">${rendered}</div>` : rendered;
28339
+ result += `${leadingNewline}${indent2}${wrapped}`;
28340
+ } catch {
28341
+ result += fullMatch;
28292
28342
  }
28293
- return () => {
28294
- cancelled = true;
28295
- };
28296
- }, [chart, id, theme]);
28297
- if (!hydrated) {
28298
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("pre", { className: "mermaid", children: chart });
28299
- }
28300
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "mermaid", dangerouslySetInnerHTML: { __html: svg5 } });
28301
- };
28302
- var Mermaid = ({ chart, theme }) => {
28303
- if (typeof window === "undefined" || typeof document === "undefined") {
28304
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("pre", { className: "mermaid", children: chart });
28343
+ lastIndex = start2 + fullMatch.length;
28305
28344
  }
28306
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MermaidClient, { chart, theme });
28307
- };
28345
+ result += markdown.slice(lastIndex);
28346
+ return result;
28347
+ }
28308
28348
 
28309
28349
  // src/NestedMarkdown.tsx
28310
28350
  var import_jsx_runtime3 = require("react/jsx-runtime");
@@ -28370,7 +28410,215 @@ var customSchema = {
28370
28410
  pre: [...defaultSchema.attributes?.pre || [], ["style"]],
28371
28411
  blockquote: [["style"]],
28372
28412
  code: [...defaultSchema.attributes?.code || [], ["style"]],
28373
- hr: [...defaultSchema.attributes?.hr || [], ["style"]]
28413
+ hr: [...defaultSchema.attributes?.hr || [], ["style"]],
28414
+ svg: [
28415
+ ...defaultSchema.attributes?.svg || [],
28416
+ ["width"],
28417
+ ["height"],
28418
+ ["viewBox"],
28419
+ ["xmlns"],
28420
+ ["xmlnsXlink"],
28421
+ ["preserveAspectRatio"],
28422
+ ["role"],
28423
+ ["aria-hidden"],
28424
+ ["focusable"],
28425
+ ["className"],
28426
+ ["style"]
28427
+ ],
28428
+ g: [
28429
+ ...defaultSchema.attributes?.g || [],
28430
+ ["transform"],
28431
+ ["fill"],
28432
+ ["stroke"],
28433
+ ["strokeWidth"],
28434
+ ["opacity"],
28435
+ ["className"],
28436
+ ["style"]
28437
+ ],
28438
+ path: [
28439
+ ...defaultSchema.attributes?.path || [],
28440
+ ["d"],
28441
+ ["fill"],
28442
+ ["stroke"],
28443
+ ["strokeWidth"],
28444
+ ["strokeLinecap"],
28445
+ ["strokeLinejoin"],
28446
+ ["transform"],
28447
+ ["opacity"],
28448
+ ["className"],
28449
+ ["style"]
28450
+ ],
28451
+ rect: [
28452
+ ...defaultSchema.attributes?.rect || [],
28453
+ ["x"],
28454
+ ["y"],
28455
+ ["width"],
28456
+ ["height"],
28457
+ ["rx"],
28458
+ ["ry"],
28459
+ ["fill"],
28460
+ ["stroke"],
28461
+ ["strokeWidth"],
28462
+ ["transform"],
28463
+ ["opacity"],
28464
+ ["className"],
28465
+ ["style"]
28466
+ ],
28467
+ circle: [
28468
+ ...defaultSchema.attributes?.circle || [],
28469
+ ["cx"],
28470
+ ["cy"],
28471
+ ["r"],
28472
+ ["fill"],
28473
+ ["stroke"],
28474
+ ["strokeWidth"],
28475
+ ["transform"],
28476
+ ["opacity"],
28477
+ ["className"],
28478
+ ["style"]
28479
+ ],
28480
+ line: [
28481
+ ...defaultSchema.attributes?.line || [],
28482
+ ["x1"],
28483
+ ["y1"],
28484
+ ["x2"],
28485
+ ["y2"],
28486
+ ["stroke"],
28487
+ ["strokeWidth"],
28488
+ ["strokeLinecap"],
28489
+ ["transform"],
28490
+ ["opacity"],
28491
+ ["className"],
28492
+ ["style"]
28493
+ ],
28494
+ polyline: [
28495
+ ...defaultSchema.attributes?.polyline || [],
28496
+ ["points"],
28497
+ ["fill"],
28498
+ ["stroke"],
28499
+ ["strokeWidth"],
28500
+ ["transform"],
28501
+ ["opacity"],
28502
+ ["className"],
28503
+ ["style"]
28504
+ ],
28505
+ polygon: [
28506
+ ...defaultSchema.attributes?.polygon || [],
28507
+ ["points"],
28508
+ ["fill"],
28509
+ ["stroke"],
28510
+ ["strokeWidth"],
28511
+ ["transform"],
28512
+ ["opacity"],
28513
+ ["className"],
28514
+ ["style"]
28515
+ ],
28516
+ text: [
28517
+ ...defaultSchema.attributes?.text || [],
28518
+ ["x"],
28519
+ ["y"],
28520
+ ["dx"],
28521
+ ["dy"],
28522
+ ["textAnchor"],
28523
+ ["dominantBaseline"],
28524
+ ["fontFamily"],
28525
+ ["fontSize"],
28526
+ ["fontWeight"],
28527
+ ["fill"],
28528
+ ["transform"],
28529
+ ["className"],
28530
+ ["style"]
28531
+ ],
28532
+ tspan: [
28533
+ ...defaultSchema.attributes?.tspan || [],
28534
+ ["x"],
28535
+ ["y"],
28536
+ ["dx"],
28537
+ ["dy"],
28538
+ ["textAnchor"],
28539
+ ["dominantBaseline"],
28540
+ ["fontFamily"],
28541
+ ["fontSize"],
28542
+ ["fontWeight"],
28543
+ ["fill"],
28544
+ ["transform"],
28545
+ ["className"],
28546
+ ["style"]
28547
+ ],
28548
+ defs: [...defaultSchema.attributes?.defs || [], ["id"]],
28549
+ marker: [
28550
+ ...defaultSchema.attributes?.marker || [],
28551
+ ["id"],
28552
+ ["markerWidth"],
28553
+ ["markerHeight"],
28554
+ ["refX"],
28555
+ ["refY"],
28556
+ ["orient"],
28557
+ ["markerUnits"],
28558
+ ["viewBox"]
28559
+ ],
28560
+ linearGradient: [
28561
+ ...defaultSchema.attributes?.linearGradient || [],
28562
+ ["id"],
28563
+ ["x1"],
28564
+ ["y1"],
28565
+ ["x2"],
28566
+ ["y2"],
28567
+ ["gradientUnits"],
28568
+ ["gradientTransform"]
28569
+ ],
28570
+ radialGradient: [
28571
+ ...defaultSchema.attributes?.radialGradient || [],
28572
+ ["id"],
28573
+ ["cx"],
28574
+ ["cy"],
28575
+ ["r"],
28576
+ ["fx"],
28577
+ ["fy"],
28578
+ ["gradientUnits"],
28579
+ ["gradientTransform"]
28580
+ ],
28581
+ stop: [
28582
+ ...defaultSchema.attributes?.stop || [],
28583
+ ["offset"],
28584
+ ["stopColor"],
28585
+ ["stopOpacity"]
28586
+ ],
28587
+ clipPath: [
28588
+ ...defaultSchema.attributes?.clipPath || [],
28589
+ ["id"],
28590
+ ["clipPathUnits"]
28591
+ ],
28592
+ mask: [
28593
+ ...defaultSchema.attributes?.mask || [],
28594
+ ["id"],
28595
+ ["x"],
28596
+ ["y"],
28597
+ ["width"],
28598
+ ["height"],
28599
+ ["maskUnits"],
28600
+ ["maskContentUnits"]
28601
+ ],
28602
+ pattern: [
28603
+ ...defaultSchema.attributes?.pattern || [],
28604
+ ["id"],
28605
+ ["x"],
28606
+ ["y"],
28607
+ ["width"],
28608
+ ["height"],
28609
+ ["patternUnits"],
28610
+ ["patternContentUnits"],
28611
+ ["patternTransform"]
28612
+ ],
28613
+ use: [
28614
+ ...defaultSchema.attributes?.use || [],
28615
+ ["href"],
28616
+ ["xlinkHref"],
28617
+ ["x"],
28618
+ ["y"],
28619
+ ["width"],
28620
+ ["height"]
28621
+ ]
28374
28622
  },
28375
28623
  tagNames: [
28376
28624
  ...defaultSchema.tagNames || [],
@@ -28380,7 +28628,28 @@ var customSchema = {
28380
28628
  "code",
28381
28629
  "hr",
28382
28630
  "blockquote",
28383
- "mark"
28631
+ "mark",
28632
+ "svg",
28633
+ "g",
28634
+ "path",
28635
+ "rect",
28636
+ "circle",
28637
+ "line",
28638
+ "polyline",
28639
+ "polygon",
28640
+ "text",
28641
+ "tspan",
28642
+ "defs",
28643
+ "marker",
28644
+ "linearGradient",
28645
+ "radialGradient",
28646
+ "stop",
28647
+ "clipPath",
28648
+ "mask",
28649
+ "pattern",
28650
+ "use",
28651
+ "title",
28652
+ "desc"
28384
28653
  ]
28385
28654
  };
28386
28655
  var remarkForceLooseLists = () => {
@@ -28399,6 +28668,45 @@ var remarkForceLooseLists = () => {
28399
28668
  visit3(tree);
28400
28669
  };
28401
28670
  };
28671
+ var MermaidRenderer = ({
28672
+ chart,
28673
+ theme,
28674
+ className,
28675
+ codeProps
28676
+ }) => {
28677
+ const [MermaidComponent, setMermaidComponent] = (0, import_react3.useState)(null);
28678
+ (0, import_react3.useEffect)(() => {
28679
+ let mounted = true;
28680
+ if (typeof window === "undefined" || typeof document === "undefined") {
28681
+ return () => {
28682
+ mounted = false;
28683
+ };
28684
+ }
28685
+ Promise.resolve().then(() => (init_Mermaid(), Mermaid_exports)).then((mod) => {
28686
+ if (mounted) {
28687
+ setMermaidComponent(() => mod.Mermaid);
28688
+ }
28689
+ }).catch(() => {
28690
+ if (mounted) {
28691
+ setMermaidComponent(null);
28692
+ }
28693
+ });
28694
+ return () => {
28695
+ mounted = false;
28696
+ };
28697
+ }, []);
28698
+ if (!MermaidComponent) {
28699
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("pre", { className: "nmd-pre", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
28700
+ "code",
28701
+ {
28702
+ ...codeProps,
28703
+ className: [className, "nmd-code"].filter(Boolean).join(" "),
28704
+ children: chart
28705
+ }
28706
+ ) });
28707
+ }
28708
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(MermaidComponent, { chart, theme });
28709
+ };
28402
28710
  var NestedMarkdown = ({
28403
28711
  content: content3,
28404
28712
  children: children2,
@@ -28458,17 +28766,15 @@ var NestedMarkdown = ({
28458
28766
  const isMermaid = match && match[1] === "mermaid";
28459
28767
  if (!inline2 && isMermaid) {
28460
28768
  const chart = String(children3).replace(/\n$/, "");
28461
- if (typeof window === "undefined" || typeof document === "undefined") {
28462
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("pre", { className: "nmd-pre", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
28463
- "code",
28464
- {
28465
- ...props,
28466
- className: [className2, "nmd-code"].filter(Boolean).join(" "),
28467
- children: chart
28468
- }
28469
- ) });
28470
- }
28471
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Mermaid, { chart, theme: theme === "auto" ? void 0 : theme });
28769
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
28770
+ MermaidRenderer,
28771
+ {
28772
+ chart,
28773
+ theme: theme === "auto" ? void 0 : theme,
28774
+ className: className2,
28775
+ codeProps: props
28776
+ }
28777
+ );
28472
28778
  }
28473
28779
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
28474
28780
  "code",