markdown-parser-react
Version:
A lightweight and configurable Markdown renderer for React and Next.js with syntax highlighting, definition lists, images, math and table support.
3 lines (2 loc) • 6.64 kB
JavaScript
var e=require("react");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/t(e);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var l in r)({}).hasOwnProperty.call(r,l)&&(e[l]=r[l])}return e},l.apply(null,arguments)}module.exports=function(t){var a=t.content,n=t.options,s=t.className,i=t.style,c=t.asArticle,u=void 0!==c&&c,o=t.id,m=t.aria,d=e.useMemo(function(){try{return function(e,t){void 0===t&&(t={});var a=t.langPrefix,n=void 0===a?"language-":a,s=t.customClasses,i=void 0===s?{}:s,c=t.customStyles,u=void 0===c?{}:c,o=t.linkTarget,m=void 0===o?"_blank":o,d=t.maxNestingLevel,f=void 0===d?6:d,p=e.trim().split(/\r\n|\n/),g=[],h=!1,v=null,y=[],k=0,E=0,b=function(e,t){void 0===t&&(t={});var r=l({},u[e],t.style),a=i[e]?i[e]+(t.className?" "+t.className:""):t.className;return l({},t,{style:Object.keys(r).length>0?r:void 0,className:a||void 0})},x=function(e){if(!e)return"";var t=[{regex:/\$(.+?)\$/g,replace:function(e,t){return'<span class="math-inline">'+t+"</span>"}},{regex:/~~(.+?)~~/g,replace:"<del>$1</del>"},{regex:/\^(.+?)\^/g,replace:"<sup>$1</sup>"},{regex:/~(.+?)~/g,replace:"<sub>$1</sub>"},{regex:/==(.+?)==/g,replace:"<mark>$1</mark>"},{regex:/\*\*\*(.+?)\*\*\*/g,replace:"<strong><em>$1</em></strong>"},{regex:/___(.+?)___/g,replace:"<strong><em>$1</em></strong>"},{regex:/\*\*(.+?)\*\*/g,replace:"<strong>$1</strong>"},{regex:/__(.+?)__/g,replace:"<strong>$1</strong>"},{regex:/\*(.+?)\*/g,replace:"<em>$1</em>"},{regex:/_(.+?)_/g,replace:"<em>$1</em>"},{regex:/`([^`]+)`/g,replace:"<code>$1</code>"},{regex:/\[([^\]]+)\]\(([^)"'\s]+)(?:\s+"([^"]+)")?\)/g,replace:function(e,t,r,a){var n=b("links",l({href:r},a&&{title:a},{target:m,rel:"_blank"===m?"noopener noreferrer":void 0}));return"<a "+Object.entries(n).filter(function(e){return void 0!==e[1]}).map(function(e){return e[0]+'="'+e[1]+'"'}).join(" ")+">"+t+"</a>"}}];return t.reduce(function(e,t){return e.replace(t.regex,t.replace)},e)};return p.forEach(function(e,t){if(E>0)E--;else if(k>f)g.push(/*#__PURE__*/r.default.createElement("p",{key:"error-"+t},"Maximum nesting level reached"));else{if(t<p.length-1){var a=e.trim(),s=p[t+1].trim();if(""!==a&&!a.startsWith(":")&&s.startsWith(":")){for(var i=a,c=[],u=t+1;u<p.length&&p[u].trim().startsWith(":");)c.push(p[u].trim().slice(1).trim()),u++;return E=c.length,void g.push(/*#__PURE__*/r.default.createElement("dl",l({key:"dl-"+t},b("lists")),/*#__PURE__*/r.default.createElement("dt",null,x(i)),c.map(function(e,t){/*#__PURE__*/return r.default.createElement("dd",{key:t},x(e))})))}}if(/^(\s*)-\s\[(x| )\]/.test(e.trim())){var o=(e.match(/^\s*/)||[""])[0].length,m=e.includes("[x]"),d=e.replace(/^(\s*)-\s\[(x| )\]\s*/,"");return k=Math.floor(o/2),void g.push(/*#__PURE__*/r.default.createElement("div",l({key:"task-"+t},b("lists"),{style:{marginLeft:20*k+"px"}}),/*#__PURE__*/r.default.createElement("input",{type:"checkbox",checked:m,readOnly:!0}),/*#__PURE__*/r.default.createElement("span",null,x(d))))}if(/^#{1,6}\s/.test(e.trim())){var _,$=(null==(_=e.match(/^#{1,6}/))?void 0:_[0].length)||1,N=e.replace(/^#{1,6}\s/,""),j=N.match(/\{#([^}]+)\}/),q=j?j[1]:void 0,O=N.replace(/\{#([^}]+)\}/,"").trim();g.push(/*#__PURE__*/r.default.createElement("h"+$,l({key:"h-"+t,id:q},b("headings")),x(O)))}else if(/^```(\S+)?(\s+\{.*\})?$/.test(e.trim()))if(h=!h){var W=e.trim().match(/^```(\S+)?/);v=(null==W?void 0:W[1])||null,y=[]}else{var w=y.join("\n");g.push(/*#__PURE__*/r.default.createElement("pre",l({key:"code-"+t},b("codeBlocks")),/*#__PURE__*/r.default.createElement("code",{className:v?""+n+v:void 0},w))),y=[],v=null}else if(h)y.push(e);else if(/^>\s/.test(e.trim())){var M=e.match(/^>\s?(.+?)(?:\s+--\s+(.+))?$/);if(M){var L=M[1],S=M[2];return void g.push(/*#__PURE__*/r.default.createElement("blockquote",l({key:"quote-"+t},b("blockquotes")),x(L),S&&/*#__PURE__*/r.default.createElement("footer",null,"— ",S)))}g.push(/*#__PURE__*/r.default.createElement("blockquote",l({key:"quote-"+t},b("blockquotes")),x(e.trim().replace(/^>\s/,""))))}else if(/^\|(.+\|)+/.test(e.trim())){if(t>0&&/^\|(.+\|)+/.test(p[t-1].trim()))return;if(!/^\|(\s*:?-+:?\s*\|)+/.test(e.trim())){var A=[e.trim()],B=[];if(t+1<p.length&&/^\|(\s*:?-+:?\s*\|)+/.test(p[t+1].trim())){var P=p[t+1].trim();B.push.apply(B,P.split("|").slice(1,-1).map(function(e){return e.trim().startsWith(":")&&e.trim().endsWith(":")?"center":e.trim().endsWith(":")?"right":"left"})),t++}for(;t+1<p.length&&/^\|(.+\|)+/.test(p[t+1].trim())&&!/^\|(\s*:?-+:?\s*\|)+/.test(p[t+1].trim());)A.push(p[t+1].trim()),t++;if(A.length>0){var T=A[0].split("|").slice(1,-1).map(function(e){return e.trim()}),C=b("tables");g.push(/*#__PURE__*/r.default.createElement("table",l({key:"table-"+t},C),/*#__PURE__*/r.default.createElement("thead",null,/*#__PURE__*/r.default.createElement("tr",null,T.map(function(e,t){/*#__PURE__*/return r.default.createElement("th",{key:t,style:{textAlign:B[t]||"left"}},x(e))}))),/*#__PURE__*/r.default.createElement("tbody",null,A.slice(1).map(function(e,t){/*#__PURE__*/return r.default.createElement("tr",{key:t},e.split("|").slice(1,-1).map(function(e,t){/*#__PURE__*/return r.default.createElement("td",{key:t,style:{textAlign:B[t]||"left"}},x(e.trim()))}))}))))}}}else if(/!\[([^\]]*)\]\(([^)\s]+)(?:\s+"([^"]+)")?\)/.test(e.trim())){var H=e.trim().match(/!\[([^\]]*)\]\(([^)\s]+)(?:\s+"([^"]+)")?\)/);if(H){var I=H[1],z=H[2],D=H[3];g.push(/*#__PURE__*/r.default.createElement("img",l({key:"img-"+t,src:void 0===z?"":z,alt:void 0===I?"":I,title:(void 0===D?"":D)||void 0},b("images"))))}}else{if(/^(\s*)([-*+]|\d+\.)\s/.test(e.trim())){var F=(e.match(/^\s*/)||[""])[0].length,G=/^\s*\d+\./.test(e),J=e.replace(/^(\s*)([-*+]|\d+\.)\s/,"");return k=Math.floor(F/2),void g.push(/*#__PURE__*/r.default.createElement(G?"ol":"ul",l({key:"list-"+t},b("lists"),{style:{marginLeft:20*k+"px"}}),/*#__PURE__*/r.default.createElement("li",null,x(J))))}var K=x(e.trim());K.trim()&&g.push(/*#__PURE__*/r.default.createElement("p",l({key:"p-"+t},b("paragraphs")),/*#__PURE__*/r.default.createElement("span",{dangerouslySetInnerHTML:{__html:K}})))}}}),g}(a,n)}catch(e){return console.error("Error parsing markdown:",e),[/*#__PURE__*/r.default.createElement("p",{key:"error"},"Error parsing markdown content")]}},[a,n]),f=l({className:s?"markdown-container "+s:"markdown-container",style:i,id:o},(null==m?void 0:m.label)&&{"aria-label":m.label},(null==m?void 0:m.describedBy)&&{"aria-describedby":m.describedBy});/*#__PURE__*/return r.default.createElement(u?"article":"div",l({},f),d)};
//# sourceMappingURL=lib.js.map