// markdown 渲染 + 代码高亮。依赖 vendor 全局(window.marked / DOMPurify / hljs)。
// 三个库任一缺失 → 优雅降级回 <pre>escapeHtml</pre>(plain text wrap)。
import { escapeHtml } from "./format.js";

if (window.marked && window.marked.setOptions) {
  window.marked.setOptions({ gfm: true, breaks: true, headerIds: false, mangle: false });
}

export function renderMd(text) {
  const raw = String(text || "");
  if (!window.marked || !window.marked.parse) {
    return `<pre style="white-space:pre-wrap;word-break:break-word;font-family:inherit;margin:0;">${escapeHtml(raw)}</pre>`;
  }
  let html = window.marked.parse(raw);
  if (window.DOMPurify) {
    html = window.DOMPurify.sanitize(html, { USE_PROFILES: { html: true } });
  }
  return html;
}

export function highlightIn(container) {
  if (!window.hljs || !container) return;
  container.querySelectorAll("pre code").forEach((b) => {
    if (b.dataset.hl === "1") return;
    try { window.hljs.highlightElement(b); b.dataset.hl = "1"; } catch (e) {}
  });
}
