@affanhamid/markdown-renderer 2.3.4 → 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1073,8 +1073,7 @@ var MarkdownRenderer = ({
1073
1073
  const container = containerRef.current;
1074
1074
  if (!container) return;
1075
1075
  let alive = true;
1076
- let timerId;
1077
- const renderMermaid = async () => {
1076
+ const renderBlocks = async () => {
1078
1077
  const blocks = container.querySelectorAll(".md-mermaid");
1079
1078
  if (blocks.length === 0 || !alive) return;
1080
1079
  try {
@@ -1109,12 +1108,20 @@ var MarkdownRenderer = ({
1109
1108
  } catch {
1110
1109
  }
1111
1110
  };
1112
- timerId = setTimeout(renderMermaid, 0);
1111
+ void renderBlocks();
1112
+ const observer = new MutationObserver(() => {
1113
+ if (!alive) return;
1114
+ const blocks = container.querySelectorAll(".md-mermaid:not(:has(svg))");
1115
+ if (blocks.length > 0) {
1116
+ void renderBlocks();
1117
+ }
1118
+ });
1119
+ observer.observe(container, { childList: true, subtree: true });
1113
1120
  return () => {
1114
1121
  alive = false;
1115
- clearTimeout(timerId);
1122
+ observer.disconnect();
1116
1123
  };
1117
- }, [html]);
1124
+ }, []);
1118
1125
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { ref: containerRef, className, dangerouslySetInnerHTML: { __html: html } });
1119
1126
  };
1120
1127
  var markdown_renderer_default = MarkdownRenderer;
package/dist/index.js CHANGED
@@ -1034,8 +1034,7 @@ var MarkdownRenderer = ({
1034
1034
  const container = containerRef.current;
1035
1035
  if (!container) return;
1036
1036
  let alive = true;
1037
- let timerId;
1038
- const renderMermaid = async () => {
1037
+ const renderBlocks = async () => {
1039
1038
  const blocks = container.querySelectorAll(".md-mermaid");
1040
1039
  if (blocks.length === 0 || !alive) return;
1041
1040
  try {
@@ -1070,12 +1069,20 @@ var MarkdownRenderer = ({
1070
1069
  } catch {
1071
1070
  }
1072
1071
  };
1073
- timerId = setTimeout(renderMermaid, 0);
1072
+ void renderBlocks();
1073
+ const observer = new MutationObserver(() => {
1074
+ if (!alive) return;
1075
+ const blocks = container.querySelectorAll(".md-mermaid:not(:has(svg))");
1076
+ if (blocks.length > 0) {
1077
+ void renderBlocks();
1078
+ }
1079
+ });
1080
+ observer.observe(container, { childList: true, subtree: true });
1074
1081
  return () => {
1075
1082
  alive = false;
1076
- clearTimeout(timerId);
1083
+ observer.disconnect();
1077
1084
  };
1078
- }, [html]);
1085
+ }, []);
1079
1086
  return /* @__PURE__ */ jsx("div", { ref: containerRef, className, dangerouslySetInnerHTML: { __html: html } });
1080
1087
  };
1081
1088
  var markdown_renderer_default = MarkdownRenderer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@affanhamid/markdown-renderer",
3
- "version": "2.3.4",
3
+ "version": "2.3.5",
4
4
  "description": "Custom markdown renderer with KaTeX support",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",