UNPKG

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.84 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):(e||self).markdownParserReact=t(e.react)}(this,function(e){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)}return function(t){var a=t.content,n=t.options,i=t.className,s=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,i=t.customClasses,s=void 0===i?{}:i,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=s[e]?s[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(),i=p[t+1].trim();if(""!==a&&!a.startsWith(":")&&i.startsWith(":")){for(var s=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(s)),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,j=e.replace(/^#{1,6}\s/,""),N=j.match(/\{#([^}]+)\}/),q=N?N[1]:void 0,w=j.replace(/\{#([^}]+)\}/,"").trim();g.push(/*#__PURE__*/r.default.createElement("h"+$,l({key:"h-"+t,id:q},b("headings")),x(w)))}else if(/^```(\S+)?(\s+\{.*\})?$/.test(e.trim()))if(h=!h){var O=e.trim().match(/^```(\S+)?/);v=(null==O?void 0:O[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 T=[e.trim()],A=[];if(t+1<p.length&&/^\|(\s*:?-+:?\s*\|)+/.test(p[t+1].trim())){var B=p[t+1].trim();A.push.apply(A,B.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());)T.push(p[t+1].trim()),t++;if(T.length>0){var P=T[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,P.map(function(e,t){/*#__PURE__*/return r.default.createElement("th",{key:t,style:{textAlign:A[t]||"left"}},x(e))}))),/*#__PURE__*/r.default.createElement("tbody",null,T.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:A[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],R=H[2],z=H[3];g.push(/*#__PURE__*/r.default.createElement("img",l({key:"img-"+t,src:void 0===R?"":R,alt:void 0===I?"":I,title:(void 0===z?"":z)||void 0},b("images"))))}}else{if(/^(\s*)([-*+]|\d+\.)\s/.test(e.trim())){var D=(e.match(/^\s*/)||[""])[0].length,F=/^\s*\d+\./.test(e),G=e.replace(/^(\s*)([-*+]|\d+\.)\s/,"");return k=Math.floor(D/2),void g.push(/*#__PURE__*/r.default.createElement(F?"ol":"ul",l({key:"list-"+t},b("lists"),{style:{marginLeft:20*k+"px"}}),/*#__PURE__*/r.default.createElement("li",null,x(G))))}var J=x(e.trim());J.trim()&&g.push(/*#__PURE__*/r.default.createElement("p",l({key:"p-"+t},b("paragraphs")),/*#__PURE__*/r.default.createElement("span",{dangerouslySetInnerHTML:{__html:J}})))}}}),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:i?"markdown-container "+i:"markdown-container",style:s,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.umd.js.map