UNPKG

markdown-to-jsx

Version:

Convert markdown to JSX with ease for React and React-like projects. Super lightweight and highly configurable.

3 lines (2 loc) 16.9 kB
import*as e from"react";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e},r.apply(this,arguments)}var n,t=["children","options"],i={blockQuote:"0",breakLine:"1",breakThematic:"2",codeBlock:"3",codeFenced:"4",codeInline:"5",footnote:"6",footnoteReference:"7",gfmTask:"8",heading:"9",headingSetext:"10",htmlBlock:"11",htmlComment:"12",htmlSelfClosing:"13",image:"14",link:"15",linkAngleBraceStyleDetector:"16",linkBareUrlDetector:"17",linkMailtoDetector:"18",newlineCoalescer:"19",orderedList:"20",paragraph:"21",ref:"22",refImage:"23",refLink:"24",table:"25",tableSeparator:"26",text:"27",textBolded:"28",textEmphasized:"29",textEscaped:"30",textMarked:"31",textStrikethroughed:"32",unorderedList:"33"};!function(e){e[e.MAX=0]="MAX",e[e.HIGH=1]="HIGH",e[e.MED=2]="MED",e[e.LOW=3]="LOW",e[e.MIN=4]="MIN"}(n||(n={}));var a=["allowFullScreen","allowTransparency","autoComplete","autoFocus","autoPlay","cellPadding","cellSpacing","charSet","classId","colSpan","contentEditable","contextMenu","crossOrigin","encType","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","hrefLang","inputMode","keyParams","keyType","marginHeight","marginWidth","maxLength","mediaGroup","minLength","noValidate","radioGroup","readOnly","rowSpan","spellCheck","srcDoc","srcLang","srcSet","tabIndex","useMap"].reduce(function(e,r){return e[r.toLowerCase()]=r,e},{class:"className",for:"htmlFor"}),l={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},o=["style","script"],c=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,u=/mailto:/i,s=/\n{2,}$/,d=/^(\s*>[\s\S]*?)(?=\n\n|$)/,f=/^ *> ?/gm,p=/^(?:\[!([^\]]*)\]\n)?([\s\S]*)/,h=/^ {2,}\n/,m=/^(?:( *[-*_])){3,} *(?:\n *)+\n/,g=/^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/,y=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,k=/^(`+)((?:\\`|[^`])+)\1/,v=/^(?:\n *)*\n/,x=/\r\n?/g,b=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,C=/^\[\^([^\]]+)]/,S=/\f/g,w=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,E=/^\s*?\[(x|\s)\]/,z=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,L=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,A=/^([^\n]+)\n *(=|-){3,} *(?:\n *)+\n/,T=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,$=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,B=/^<!--[\s\S]*?(?:-->)/,O=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,M=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,R=/^\{.*\}$/,I=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,U=/^<([^ >]+@[^ >]+)>/,D=/^<([^ >]+:\/[^ >]+)>/,N=/-([a-z])?/gi,j=/^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,H=/^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/,P=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,_=/^\[([^\]]*)\] ?\[([^\]]*)\]/,F=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,G=/\t/g,W=/(^ *\||\| *$)/g,Z=/^ *:-+: *$/,q=/^ *:-+ *$/,Q=/^ *-+: *$/,V="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)",X=new RegExp("^([*_])\\1"+V+"\\1\\1(?!\\1)"),J=new RegExp("^([*_])"+V+"\\1(?!\\1)"),K=new RegExp("^(==)"+V+"\\1"),Y=new RegExp("^(~~)"+V+"\\1"),ee=/^\\([^0-9A-Za-z\s])/,re=/\\([^0-9A-Za-z\s])/g,ne=/^([\s\S](?:(?! |[0-9]\.)[^*_~\-\n<`\\\[!])*)/,te=/^\n+/,ie=/^([ \t]*)/,ae=/\\([^\\])/g,le=/(?:^|\n)( *)$/,oe="(?:\\d+\\.)",ce="(?:[*+-])";function ue(e){return"( *)("+(1===e?oe:ce)+") +"}var se=ue(1),de=ue(2);function fe(e){return new RegExp("^"+(1===e?se:de))}var pe=fe(1),he=fe(2);function me(e){return new RegExp("^"+(1===e?se:de)+"[^\\n]*(?:\\n(?!\\1"+(1===e?oe:ce)+" )[^\\n]*)*(\\n|$)","gm")}var ge=me(1),ye=me(2);function ke(e){var r=1===e?oe:ce;return new RegExp("^( *)("+r+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+r+" (?!"+r+" ))\\n*|\\s*\\n*$)")}var ve=ke(1),xe=ke(2);function be(e,r){var n=1===r,t=n?ve:xe,a=n?ge:ye,l=n?pe:he;return{match:Oe(function(e,r){var n=le.exec(r.prevCapture);return n&&(r.list||!r.inline&&!r.simple)?t.exec(e=n[1]+e):null}),order:1,parse:function(e,r,t){var i=n?+e[2]:void 0,o=e[0].replace(s,"\n").match(a),c=!1;return{items:o.map(function(e,n){var i=l.exec(e)[0].length,a=new RegExp("^ {1,"+i+"}","gm"),u=e.replace(a,"").replace(l,""),s=n===o.length-1,d=-1!==u.indexOf("\n\n")||s&&c;c=d;var f,p=t.inline,h=t.list;t.list=!0,d?(t.inline=!1,f=ze(u)+"\n\n"):(t.inline=!0,f=ze(u));var m=r(f,t);return t.inline=p,t.list=h,m}),ordered:n,start:i}},render:function(r,n,t){return e(r.ordered?"ol":"ul",{key:t.key,start:r.type===i.orderedList?r.start:void 0},r.items.map(function(r,i){return e("li",{key:i},n(r,t))}))}}}var Ce=new RegExp("^\\[((?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),Se=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/,we=[d,g,y,z,A,L,j,ve,xe],Ee=[].concat(we,[/^[^\n]+(?: \n|\n{2,})/,T,B,M]);function ze(e){for(var r=e.length;r>0&&e[r-1]<=" ";)r--;return e.slice(0,r)}function Le(e){return e.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,"a").replace(/[çÇ]/g,"c").replace(/[ðÐ]/g,"d").replace(/[ÈÉÊËéèêë]/g,"e").replace(/[ÏïÎîÍíÌì]/g,"i").replace(/[Ññ]/g,"n").replace(/[øØœŒÕõÔôÓóÒò]/g,"o").replace(/[ÜüÛûÚúÙù]/g,"u").replace(/[ŸÿÝý]/g,"y").replace(/[^a-z0-9- ]/gi,"").replace(/ /gi,"-").toLowerCase()}function Ae(e){return Q.test(e)?"right":Z.test(e)?"center":q.test(e)?"left":null}function Te(e,r,n,t){var i=n.inTable;n.inTable=!0;var a=[[]],l="";function o(){if(l){var e=a[a.length-1];e.push.apply(e,r(l,n)),l=""}}return e.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach(function(e,r,n){"|"===e.trim()&&(o(),t)?0!==r&&r!==n.length-1&&a.push([]):l+=e}),o(),n.inTable=i,a}function $e(e,r,n){n.inline=!0;var t=e[2]?e[2].replace(W,"").split("|").map(Ae):[],a=e[3]?function(e,r,n){return e.trim().split("\n").map(function(e){return Te(e,r,n,!0)})}(e[3],r,n):[],l=Te(e[1],r,n,!!a.length);return n.inline=!1,a.length?{align:t,cells:a,header:l,type:i.table}:{children:l,type:i.paragraph}}function Be(e,r){return null==e.align[r]?{}:{textAlign:e.align[r]}}function Oe(e){return e.inline=1,e}function Me(e){return Oe(function(r,n){return n.inline?e.exec(r):null})}function Re(e){return Oe(function(r,n){return n.inline||n.simple?e.exec(r):null})}function Ie(e){return function(r,n){return n.inline||n.simple?null:e.exec(r)}}function Ue(e){return Oe(function(r){return e.exec(r)})}function De(e,r){if(r.inline||r.simple)return null;var n="";e.split("\n").every(function(e){return e+="\n",!we.some(function(r){return r.test(e)})&&(n+=e,!!e.trim())});var t=ze(n);return""==t?null:[n,,t]}function Ne(e){try{if(decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,"").match(/^\s*(javascript|vbscript|data(?!:image)):/i))return null}catch(e){return null}return e}function je(e){return e.replace(ae,"$1")}function He(e,r,n){var t=n.inline||!1,i=n.simple||!1;n.inline=!0,n.simple=!0;var a=e(r,n);return n.inline=t,n.simple=i,a}function Pe(e,r,n){var t=n.inline||!1,i=n.simple||!1;n.inline=!1,n.simple=!0;var a=e(r,n);return n.inline=t,n.simple=i,a}function _e(e,r,n){var t=n.inline||!1;n.inline=!1;var i=e(r,n);return n.inline=t,i}var Fe=function(e,r,n){return{children:He(r,e[2],n)}};function Ge(){return{}}function We(){return null}function Ze(){return[].slice.call(arguments).filter(Boolean).join(" ")}function qe(e,r,n){for(var t=e,i=r.split(".");i.length&&void 0!==(t=t[i[0]]);)i.shift();return t||n}function Qe(e,r){var n=qe(r,e);return n?"function"==typeof n||"object"==typeof n&&"render"in n?n:qe(r,e+".component",e):e}function Ve(n,t){var s;function W(e,n){var i,a=qe(t.overrides,e+".props",{});return(i=t).createElement.apply(i,[Qe(e,t.overrides),r({},n,a,{className:Ze(null==n?void 0:n.className,a.className)||void 0})].concat([].slice.call(arguments,2)))}function Z(e){e=e.replace(w,"");var r=!1;t.forceInline?r=!0:t.forceBlock||(r=!1===F.test(e));for(var n=ce(oe(r?e:ze(e).replace(te,"")+"\n\n",{inline:r}));"string"==typeof n[n.length-1]&&!n[n.length-1].trim();)n.pop();if(null===t.wrapper)return n;var i,a=t.wrapper||(r?"span":"div");if(n.length>1||t.forceWrapper)i=n;else{if(1===n.length)return"string"==typeof(i=n[0])?W("span",{key:"outer"},i):i;i=null}return t.createElement(a,{key:"outer"},i)}function q(e,r){var n=r.match(c);return n?n.reduce(function(r,n){var i=n.indexOf("=");if(-1!==i){var l=function(e){return-1!==e.indexOf("-")&&null===e.match(O)&&(e=e.replace(N,function(e,r){return r.toUpperCase()})),e}(n.slice(0,i)).trim(),o=function(e){var r=e[0];return('"'===r||"'"===r)&&e.length>=2&&e[e.length-1]===r?e.slice(1,-1):e}(n.slice(i+1).trim()),c=a[l]||l;if("ref"===c)return r;var u=r[c]=function(e,r,n,t){return"style"===r?n.split(/;\s?/).reduce(function(e,r){var n=r.slice(0,r.indexOf(":"));return e[n.trim().replace(/(-[a-z])/g,function(e){return e[1].toUpperCase()})]=r.slice(n.length+1).trim(),e},{}):"href"===r||"src"===r?t(n,e,r):(n.match(R)&&(n=n.slice(1,n.length-1)),"true"===n||"false"!==n&&n)}(e,l,o,t.sanitizer);"string"==typeof u&&(T.test(u)||M.test(u))&&(r[c]=Z(u.trim()))}else"style"!==n&&(r[a[n]||n]=!0);return r},{}):null}void 0===n&&(n=""),void 0===t&&(t={}),t.overrides=t.overrides||{},t.sanitizer=t.sanitizer||Ne,t.slugify=t.slugify||Le,t.namedCodesToUnicode=t.namedCodesToUnicode?r({},l,t.namedCodesToUnicode):l,t.createElement=t.createElement||e.createElement;var Q=[],V={},ae=((s={})[i.blockQuote]={match:Ie(d),order:1,parse:function(e,r,n){var t=e[0].replace(f,"").match(p);return{alert:t[1],children:r(t[2],n)}},render:function(e,r,n){var a={key:n.key};return e.alert&&(a.className="markdown-alert-"+t.slugify(e.alert.toLowerCase(),Le),e.children.unshift({attrs:{},children:[{type:i.text,text:e.alert}],noInnerParse:!0,type:i.htmlBlock,tag:"header"})),W("blockquote",a,r(e.children,n))}},s[i.breakLine]={match:Ue(h),order:1,parse:Ge,render:function(e,r,n){return W("br",{key:n.key})}},s[i.breakThematic]={match:Ie(m),order:1,parse:Ge,render:function(e,r,n){return W("hr",{key:n.key})}},s[i.codeBlock]={match:Ie(y),order:0,parse:function(e){return{lang:void 0,text:ze(e[0].replace(/^ {4}/gm,"")).replace(re,"$1")}},render:function(e,n,t){return W("pre",{key:t.key},W("code",r({},e.attrs,{className:e.lang?"lang-"+e.lang:""}),e.text))}},s[i.codeFenced]={match:Ie(g),order:0,parse:function(e){return{attrs:q("code",e[3]||""),lang:e[2]||void 0,text:e[4].replace(re,"$1"),type:i.codeBlock}}},s[i.codeInline]={match:Re(k),order:3,parse:function(e){return{text:e[2].replace(re,"$1")}},render:function(e,r,n){return W("code",{key:n.key},e.text)}},s[i.footnote]={match:Ie(b),order:0,parse:function(e){return Q.push({footnote:e[2],identifier:e[1]}),{}},render:We},s[i.footnoteReference]={match:Me(C),order:1,parse:function(e){return{target:"#"+t.slugify(e[1],Le),text:e[1]}},render:function(e,r,n){return W("a",{key:n.key,href:t.sanitizer(e.target,"a","href")},W("sup",{key:n.key},e.text))}},s[i.gfmTask]={match:Me(E),order:1,parse:function(e){return{completed:"x"===e[1].toLowerCase()}},render:function(e,r,n){return W("input",{checked:e.completed,key:n.key,readOnly:!0,type:"checkbox"})}},s[i.heading]={match:Ie(t.enforceAtxHeadings?L:z),order:1,parse:function(e,r,n){return{children:He(r,e[2],n),id:t.slugify(e[2],Le),level:e[1].length}},render:function(e,r,n){return W("h"+e.level,{id:e.id,key:n.key},r(e.children,n))}},s[i.headingSetext]={match:Ie(A),order:0,parse:function(e,r,n){return{children:He(r,e[1],n),level:"="===e[2]?1:2,type:i.heading}}},s[i.htmlBlock]={match:Ue(T),order:1,parse:function(e,r,n){var t,i=e[3].match(ie),a=new RegExp("^"+i[1],"gm"),l=e[3].replace(a,""),c=(t=l,Ee.some(function(e){return e.test(t)})?_e:He),u=e[1].toLowerCase(),s=-1!==o.indexOf(u),d=(s?u:e[1]).trim(),f={attrs:q(d,e[2]),noInnerParse:s,tag:d};return n.inAnchor=n.inAnchor||"a"===u,s?f.text=e[3]:f.children=c(r,l,n),n.inAnchor=!1,f},render:function(e,n,t){return W(e.tag,r({key:t.key},e.attrs),e.text||(e.children?n(e.children,t):""))}},s[i.htmlSelfClosing]={match:Ue(M),order:1,parse:function(e){var r=e[1].trim();return{attrs:q(r,e[2]||""),tag:r}},render:function(e,n,t){return W(e.tag,r({},e.attrs,{key:t.key}))}},s[i.htmlComment]={match:Ue(B),order:1,parse:function(){return{}},render:We},s[i.image]={match:Re(Se),order:1,parse:function(e){return{alt:e[1],target:je(e[2]),title:e[3]}},render:function(e,r,n){return W("img",{key:n.key,alt:e.alt||void 0,title:e.title||void 0,src:t.sanitizer(e.target,"img","src")})}},s[i.link]={match:Me(Ce),order:3,parse:function(e,r,n){return{children:Pe(r,e[1],n),target:je(e[2]),title:e[3]}},render:function(e,r,n){return W("a",{key:n.key,href:t.sanitizer(e.target,"a","href"),title:e.title},r(e.children,n))}},s[i.linkAngleBraceStyleDetector]={match:Me(D),order:0,parse:function(e){return{children:[{text:e[1],type:i.text}],target:e[1],type:i.link}}},s[i.linkBareUrlDetector]={match:Oe(function(e,r){return r.inAnchor||t.disableAutoLink?null:Me(I)(e,r)}),order:0,parse:function(e){return{children:[{text:e[1],type:i.text}],target:e[1],title:void 0,type:i.link}}},s[i.linkMailtoDetector]={match:Me(U),order:0,parse:function(e){var r=e[1],n=e[1];return u.test(n)||(n="mailto:"+n),{children:[{text:r.replace("mailto:",""),type:i.text}],target:n,type:i.link}}},s[i.orderedList]=be(W,1),s[i.unorderedList]=be(W,2),s[i.newlineCoalescer]={match:Ie(v),order:3,parse:Ge,render:function(){return"\n"}},s[i.paragraph]={match:Oe(De),order:3,parse:Fe,render:function(e,r,n){return W("p",{key:n.key},r(e.children,n))}},s[i.ref]={match:Me(H),order:0,parse:function(e){return V[e[1]]={target:e[2],title:e[4]},{}},render:We},s[i.refImage]={match:Re(P),order:0,parse:function(e){return{alt:e[1]||void 0,ref:e[2]}},render:function(e,r,n){return V[e.ref]?W("img",{key:n.key,alt:e.alt,src:t.sanitizer(V[e.ref].target,"img","src"),title:V[e.ref].title}):null}},s[i.refLink]={match:Me(_),order:0,parse:function(e,r,n){return{children:r(e[1],n),fallbackChildren:e[0],ref:e[2]}},render:function(e,r,n){return V[e.ref]?W("a",{key:n.key,href:t.sanitizer(V[e.ref].target,"a","href"),title:V[e.ref].title},r(e.children,n)):W("span",{key:n.key},e.fallbackChildren)}},s[i.table]={match:Ie(j),order:1,parse:$e,render:function(e,r,n){var t=e;return W("table",{key:n.key},W("thead",null,W("tr",null,t.header.map(function(e,i){return W("th",{key:i,style:Be(t,i)},r(e,n))}))),W("tbody",null,t.cells.map(function(e,i){return W("tr",{key:i},e.map(function(e,i){return W("td",{key:i,style:Be(t,i)},r(e,n))}))})))}},s[i.text]={match:Ue(ne),order:4,parse:function(e){return{text:e[0].replace($,function(e,r){return t.namedCodesToUnicode[r]?t.namedCodesToUnicode[r]:e})}},render:function(e){return e.text}},s[i.textBolded]={match:Re(X),order:2,parse:function(e,r,n){return{children:r(e[2],n)}},render:function(e,r,n){return W("strong",{key:n.key},r(e.children,n))}},s[i.textEmphasized]={match:Re(J),order:3,parse:function(e,r,n){return{children:r(e[2],n)}},render:function(e,r,n){return W("em",{key:n.key},r(e.children,n))}},s[i.textEscaped]={match:Re(ee),order:1,parse:function(e){return{text:e[1],type:i.text}}},s[i.textMarked]={match:Re(K),order:3,parse:Fe,render:function(e,r,n){return W("mark",{key:n.key},r(e.children,n))}},s[i.textStrikethroughed]={match:Re(Y),order:3,parse:Fe,render:function(e,r,n){return W("del",{key:n.key},r(e.children,n))}},s);!0===t.disableParsingRawHTML&&(delete ae[i.htmlBlock],delete ae[i.htmlSelfClosing]);var le,oe=function(e){var r=Object.keys(e);function n(t,i){var a,l,o=[],c="",u="";for(i.prevCapture=i.prevCapture||"";t;)for(var s=0;s<r.length;)if(a=e[c=r[s]],!i.inline||a.match.inline){var d=a.match(t,i);if(d){i.prevCapture+=u=d[0],t=t.substring(u.length),null==(l=a.parse(d,n,i)).type&&(l.type=c),o.push(l);break}s++}else s++;return i.prevCapture="",o}return r.sort(function(r,n){var t=e[r].order,i=e[n].order;return t!==i?t-i:r<n?-1:1}),function(e,r){return n(function(e){return e.replace(x,"\n").replace(S,"").replace(G," ")}(e),r)}}(ae),ce=(le=function(e,r){return function(n,t,i){var a=e[n.type].render;return r?r(function(){return a(n,t,i)},n,t,i):a(n,t,i)}}(ae,t.renderRule),function e(r,n){if(void 0===n&&(n={}),Array.isArray(r)){for(var t=n.key,i=[],a=!1,l=0;l<r.length;l++){n.key=l;var o=e(r[l],n),c="string"==typeof o;c&&a?i[i.length-1]+=o:null!==o&&i.push(o),a=c}return n.key=t,i}return le(r,e,n)}),ue=Z(n);return Q.length?W("div",null,ue,W("footer",{key:"footer"},Q.map(function(e){return W("div",{id:t.slugify(e.identifier,Le),key:e.identifier},e.identifier,ce(oe(e.footnote,{inline:!0})))}))):ue}export default function(r){var n=r.children,i=void 0===n?"":n,a=r.options,l=function(e,r){if(null==e)return{};var n,t,i={},a=Object.keys(e);for(t=0;t<a.length;t++)r.indexOf(n=a[t])>=0||(i[n]=e[n]);return i}(r,t);return e.cloneElement(Ve(i,a),l)}export{i as RuleType,Ve as compiler,Ne as sanitizer,Le as slugify}; //# sourceMappingURL=index.module.js.map