{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { TokenizerExtension, RendererExtension } from 'marked'\nimport { renderFlowchart } from 'mermaid-flowchart'\n\n/**\n * Post-process rendered HTML to convert mermaid containers to actual diagrams.\n * Call this after marked.parse() completes and DOM is ready.\n */\nexport function renderMermaidDiagrams(): void {\n  const containers = document.querySelectorAll<HTMLElement>('.mermaid-container')\n\n  for (const container of containers) {\n    const source = container.textContent || ''\n    if (!source.trim()) continue\n\n    try {\n      // Currently only flowcharts are supported\n      if (source.trim().startsWith('flowchart')) {\n        const svg = renderFlowchart(source)\n        container.innerHTML = svg\n        container.classList.add('mermaid-rendered')\n      } else {\n        // Unsupported diagram type - show as code\n        container.innerHTML = `<pre class=\"mermaid-unsupported\"><code>${source}</code></pre>`\n      }\n    } catch (error) {\n      console.error('Failed to render mermaid diagram:', error)\n      container.innerHTML = `<pre class=\"mermaid-error\"><code>${source}</code></pre>`\n    }\n  }\n}\n\n/**\n * Marked extension that intercepts mermaid code blocks.\n * Use with: marked.use({ extensions: [mermaidExtension] })\n */\nexport const mermaidExtension: TokenizerExtension & RendererExtension = {\n  name: 'mermaid',\n  level: 'block',\n  start(src: string) {\n    return src.match(/^```mermaid/m)?.index\n  },\n  tokenizer(src: string) {\n    const match = src.match(/^```mermaid\\n([\\s\\S]*?)\\n```/)\n    if (match) {\n      return {\n        type: 'mermaid',\n        raw: match[0],\n        text: match[1],\n      }\n    }\n  },\n  renderer(token) {\n    // Escape HTML in the source to prevent XSS\n    const escaped = token.text\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n    return `<div class=\"mermaid-container\">${escaped}</div>\\n`\n  },\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,+BAAgC;AAMzB,SAAS,wBAA8B;AAC5C,QAAM,aAAa,SAAS,iBAA8B,oBAAoB;AAE9E,aAAW,aAAa,YAAY;AAClC,UAAM,SAAS,UAAU,eAAe;AACxC,QAAI,CAAC,OAAO,KAAK,EAAG;AAEpB,QAAI;AAEF,UAAI,OAAO,KAAK,EAAE,WAAW,WAAW,GAAG;AACzC,cAAM,UAAM,0CAAgB,MAAM;AAClC,kBAAU,YAAY;AACtB,kBAAU,UAAU,IAAI,kBAAkB;AAAA,MAC5C,OAAO;AAEL,kBAAU,YAAY,0CAA0C,MAAM;AAAA,MACxE;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,MAAM,qCAAqC,KAAK;AACxD,gBAAU,YAAY,oCAAoC,MAAM;AAAA,IAClE;AAAA,EACF;AACF;AAMO,IAAM,mBAA2D;AAAA,EACtE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM,KAAa;AACjB,WAAO,IAAI,MAAM,cAAc,GAAG;AAAA,EACpC;AAAA,EACA,UAAU,KAAa;AACrB,UAAM,QAAQ,IAAI,MAAM,8BAA8B;AACtD,QAAI,OAAO;AACT,aAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK,MAAM,CAAC;AAAA,QACZ,MAAM,MAAM,CAAC;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS,OAAO;AAEd,UAAM,UAAU,MAAM,KACnB,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM;AACvB,WAAO,kCAAkC,OAAO;AAAA;AAAA,EAClD;AACF;","names":[]}