Minimal, SAFE markdown → HTML renderer for the self-contained exports (the live board
renders through the shared mj-markdown Angular component instead — this exists only
because export builders are pure functions with no Angular available).
SECURITY: ESCAPE-FIRST — the whole source is HTML-escaped before any formatting, so raw
HTML in the markdown can never become live markup (NO passthrough, ever). Supported:
headings, bold/italic, inline code, fenced code blocks, un/ordered lists, paragraphs,
and links restricted to http(s)/mailto.
Minimal, SAFE markdown → HTML renderer for the self-contained exports (the live board renders through the shared
mj-markdownAngular component instead — this exists only because export builders are pure functions with no Angular available).SECURITY: ESCAPE-FIRST — the whole source is HTML-escaped before any formatting, so raw HTML in the markdown can never become live markup (NO passthrough, ever). Supported: headings, bold/italic, inline code, fenced code blocks, un/ordered lists, paragraphs, and links restricted to http(s)/mailto.