mdx-render
Version:
A modern, SSR-friendly React Markdown renderer that preserves the MDAST tree for reuse (e.g., mdast2docx), supports full JSX children, unified plugins, and component overrides.
2 lines (1 loc) • 1.78 kB
JavaScript
var b=Object.create;var i=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,H=Object.prototype.hasOwnProperty;var S=(t,e)=>{for(var r in e)i(t,r,{get:e[r],enumerable:!0})},y=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of L(e))!H.call(t,o)&&o!==r&&i(t,o,{get:()=>e[o],enumerable:!(s=I(e,o))||s.enumerable});return t};var g=(t,e,r)=>(r=t!=null?b(M(t)):{},y(e||!t||!t.__esModule?i(r,"default",{value:t,enumerable:!0}):r,t)),w=t=>y(i({},"__esModule",{value:!0}),t);var O={};S(O,{Markdown:()=>v,handleAriaAndDataProps:()=>C,uuid:()=>J});module.exports=w(O);var x=g(require("remark-parse")),d=g(require("remark-rehype")),A=require("unified"),E=require("hast-util-to-jsx-runtime"),p=require("react/jsx-runtime"),h=require("unist-util-visit"),C=t=>Object.fromEntries(Object.entries(t).map(([e,r])=>[e.startsWith("data")?e.replace(/[A-Z]+(?![a-z])|[A-Z]/g,s=>"-"+s.toLowerCase()):e.startsWith("aria")?e.replace("aria","aria-").toLowerCase():e,r])),J=()=>crypto.randomUUID();var v=({children:t,remarkPlugins:e=[],rehypePlugins:r=[],remarkRehypeOptions:s,astRef:o,components:R,skipHtml:c})=>{let u=(0,A.unified)().use(x.default).use(e).use(d.default,{...s,allowDangerousHtml:!c}).use(r),f=u.parse(t!=null?t:""),a=u.runSync(f);return o&&(o.current||(o.current=[]),o.current.push({mdast:f,hast:a})),(0,h.visit)(a,(n,m,l)=>{var P;n.type==="raw"&&l&&typeof m=="number"&&(c?l.children.splice(m,1):l.children[m]={type:"text",value:n.value}),n.type==="element"&&((P=n.properties).src||(P.src=null))}),(0,E.toJsxRuntime)(a,{Fragment:p.Fragment,components:R,ignoreInvalidStyle:!0,jsx:p.jsx,jsxs:p.jsxs,passKeys:!0,passNode:!0})};0&&(module.exports={Markdown,handleAriaAndDataProps,uuid});
;