markdown-to-jsx 7.7.13 → 7.7.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/debug.module.js +2 -0
- package/dist/debug.module.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.d.ts +2 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.modern.js +1 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/index.module.js +1 -1
- package/dist/index.module.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +14 -6
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import*as r from"react";function n(){return n=Object.assign?Object.assign.bind():function(r){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},n.apply(this,arguments)}var e=["children","options"],t={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"},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(r,n){return r[n.toLowerCase()]=n,r},{class:"className",for:"htmlFor"}),u={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},o=["style","script","pre"],i=["src","href","data","formAction","srcDoc","action"],c=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,f=/\n{2,}$/,l=/^(\s*>[\s\S]*?)(?=\n\n|$)/,s=/^ *> ?/gm,_=/^(?:\[!([^\]]*)\]\n)?([\s\S]*)/,d=/^ {2,}\n/,p=/^(?:([-*_])( *\1){2,}) *(?:\n *)+\n/,v=/^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/,m=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,y=/^(`+)((?:\\`|(?!\1)`|[^`])+)\1/,h=/^(?:\n *)*\n/,g=/\r\n?/g,k=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,x=/^\[\^([^\]]+)]/,b=/\f/g,q=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,S=/^\s*?\[(x|\s)\]/,z=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,$=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,E=/^([^\n]+)\n *(=|-)\2{2,} *\n/,R=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,O=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,A=/^<!--[\s\S]*?(?:-->)/,j=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,M=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,B=/^\{.*\}$/,L=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,C=/^<([^ >]+[:@\/][^ >]+)>/,I=/-([a-z])?/gi,N=/^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,T=/^[^\n]+(?: \n|\n{2,})/,P=/^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/,w=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,D=/^\[([^\]]*)\] ?\[([^\]]*)\]/,F=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,Z=/\t/g,G=/(^ *\||\| *$)/g,U=/^ *:-+: *$/,V=/^ *:-+ *$/,H=/^ *-+: *$/,J=function(r){return"(?=[\\s\\S]+?\\1"+(r?"\\1":"")+")"},Q="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)",W=RegExp("^([*_])\\1"+J(1)+Q+"\\1\\1(?!\\1)"),K=RegExp("^([*_])"+J(0)+Q+"\\1(?!\\1)"),X=RegExp("^(==)"+J(0)+Q+"\\1"),Y=RegExp("^(~~)"+J(0)+Q+"\\1"),rr=/^(:[a-zA-Z0-9-_]+:)/,nr=/^\\([^0-9A-Za-z\s])/,er=/\\([^0-9A-Za-z\s])/g,tr=/^[\s\S](?:(?! \n|[0-9]\.|http)[^=*_~\-\n:<`\\\[!])*/,ar=/^\n+/,ur=/^([ \t]*)/,or=/(?:^|\n)( *)$/,ir="(?:\\d+\\.)",cr="(?:[*+-])";function fr(r){return"( *)("+(1===r?ir:cr)+") +"}var lr=fr(1),sr=fr(2);function _r(r){return RegExp("^"+(1===r?lr:sr))}var dr=_r(1),pr=_r(2);function vr(r){return RegExp("^"+(1===r?lr:sr)+"[^\\n]*(?:\\n(?!\\1"+(1===r?ir:cr)+" )[^\\n]*)*(\\n|$)","gm")}var mr=vr(1),yr=vr(2);function hr(r){var n=1===r?ir:cr;return RegExp("^( *)("+n+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+n+" (?!"+n+" ))\\n*|\\s*\\n*$)")}var gr=hr(1),kr=hr(2);function xr(r,n){var e=1===n,a=e?gr:kr,u=e?mr:yr,o=e?dr:pr;return{t:function(r){return o.test(r)},u:Br(function(r,n){var e=or.exec(n.prevCapture);return e&&(n.list||!n.inline&&!n.simple)?a.exec(r=e[1]+r):null}),o:1,i:function(r,n,t){var a=e?+r[2]:void 0,i=r[0].replace(f,"\n").match(u),c=!1;return{items:i.map(function(r,e){var a=o.exec(r)[0].length,u=RegExp("^ {1,"+a+"}","gm"),f=r.replace(u,"").replace(o,""),l=e===i.length-1,s=-1!==f.indexOf("\n\n")||l&&c;c=s;var _,d=t.inline,p=t.list;t.list=!0,s?(t.inline=!1,_=zr(f)+"\n\n"):(t.inline=!0,_=zr(f));var v=n(_,t);return t.inline=d,t.list=p,v}),ordered:e,start:a}},l:function(n,e,a){return r(n.ordered?"ol":"ul",{key:a.key,start:n.type===t.orderedList?n.start:void 0},n.items.map(function(n,t){return r("li",{key:t},e(n,a))}))}}}var br=RegExp("^\\[((?:\\[[^\\[\\]]*(?:\\[[^\\[\\]]*\\][^\\[\\]]*)*\\]|[^\\[\\]])*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),qr=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/;function Sr(r){return"string"==typeof r}function zr(r){for(var n=r.length;n>0&&r[n-1]<=" ";)n--;return r.slice(0,n)}function $r(r,n){return r.startsWith(n)}function Er(r,n,e){if(Array.isArray(e)){for(var t=0;t<e.length;t++)if($r(r,e[t]))return!0;return!1}return e(r,n)}function Rr(r){return r.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 Or(r){return H.test(r)?"right":U.test(r)?"center":V.test(r)?"left":null}function Ar(r,n,e,t){var a=e.inTable;e.inTable=!0;var u=[[]],o="";function i(){if(o){var r=u[u.length-1];r.push.apply(r,n(o,e)),o=""}}return r.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach(function(r,n,e){"|"===r.trim()&&(i(),t)?0!==n&&n!==e.length-1&&u.push([]):o+=r}),i(),e.inTable=a,u}function jr(r,n,e){e.inline=!0;var a=r[2]?r[2].replace(G,"").split("|").map(Or):[],u=r[3]?function(r,n,e){return r.trim().split("\n").map(function(r){return Ar(r,n,e,!0)})}(r[3],n,e):[],o=Ar(r[1],n,e,!!u.length);return e.inline=!1,u.length?{align:a,cells:u,header:o,type:t.table}:{children:o,type:t.paragraph}}function Mr(r,n){return null==r.align[n]?{}:{textAlign:r.align[n]}}function Br(r){return r.inline=1,r}function Lr(r){return Br(function(n,e){return e.inline?r.exec(n):null})}function Cr(r){return Br(function(n,e){return e.inline||e.simple?r.exec(n):null})}function Ir(r){return function(n,e){return e.inline||e.simple?null:r.exec(n)}}function Nr(r){return Br(function(n){return r.exec(n)})}var Tr=/(javascript|vbscript|data(?!:image)):/i;function Pr(r){try{var n=decodeURIComponent(r).replace(/[^A-Za-z0-9/:]/g,"");if(Tr.test(n))return null}catch(r){return null}return r}function wr(r){return r?r.replace(er,"$1"):r}function Dr(r,n,e){var t=e.inline||!1,a=e.simple||!1;e.inline=!0,e.simple=!0;var u=r(n,e);return e.inline=t,e.simple=a,u}function Fr(r,n,e){var t=e.inline||!1,a=e.simple||!1;e.inline=!1,e.simple=!0;var u=r(n,e);return e.inline=t,e.simple=a,u}function Zr(r,n,e){var t=e.inline||!1;e.inline=!1;var a=r(n,e);return e.inline=t,a}var Gr=function(r,n,e){return{children:Dr(n,r[2],e)}};function Ur(){return{}}function Vr(){return null}function Hr(){return[].slice.call(arguments).filter(Boolean).join(" ")}function Jr(r,n,e){for(var t=r,a=n.split(".");a.length&&void 0!==(t=t[a[0]]);)a.shift();return t||e}function Qr(r,n){var e=Jr(n,r);return e?"function"==typeof e||"object"==typeof e&&"render"in e?e:Jr(n,r+".component",r):r}function Wr(e,f){var G;void 0===e&&(e=""),void 0===f&&(f={}),f.overrides=f.overrides||{},f.namedCodesToUnicode=f.namedCodesToUnicode?n({},u,f.namedCodesToUnicode):u;var U=f.slugify||Rr,V=f.sanitizer||Pr,H=f.createElement||r.createElement,J=[l,v,m,f.enforceAtxHeadings?$:z,E,N,gr,kr],Q=[].concat(J,[T,R,A,M]);function er(r,n){for(var e=0;e<r.length;e++)if(r[e].test(n))return!0;return!1}function or(r,e){var t=Jr(f.overrides,r+".props",{});return H.apply(void 0,[Qr(r,f.overrides),n({},e,t,{className:Hr(null==e?void 0:e.className,t.className)||void 0})].concat([].slice.call(arguments,2)))}function ir(r){r=r.replace(q,"");var n=!1;f.forceInline?n=!0:f.forceBlock||(n=!1===F.test(r));for(var e=mr(vr(n?r:zr(r).replace(ar,"")+"\n\n",{inline:n}));Sr(e[e.length-1])&&!e[e.length-1].trim();)e.pop();if(null===f.wrapper)return e;var t,a=f.wrapper||(n?"span":"div");if(e.length>1||f.forceWrapper)t=e;else{if(1===e.length)return"string"==typeof(t=e[0])?or("span",{key:"outer"},t):t;t=null}return H(a,{key:"outer"},t)}function cr(r,n){if(!n||!n.trim())return null;var e=n.match(c);return e?e.reduce(function(n,e){var t=e.indexOf("=");if(-1!==t){var u=function(r){return-1!==r.indexOf("-")&&null===r.match(j)&&(r=r.replace(I,function(r,n){return n.toUpperCase()})),r}(e.slice(0,t)).trim(),o=function(r){var n=r[0];return('"'===n||"'"===n)&&r.length>=2&&r[r.length-1]===n?r.slice(1,-1):r}(e.slice(t+1).trim()),c=a[u]||u;if("ref"===c)return n;var f=n[c]=function(r,n,e,t){return"style"===n?function(r){var n=[],e="",t=!1,a=!1,u="";if(!r)return n;for(var o=0;o<r.length;o++){var i=r[o];if('"'!==i&&"'"!==i||t||(a?i===u&&(a=!1,u=""):(a=!0,u=i)),"("===i&&e.endsWith("url")?t=!0:")"===i&&t&&(t=!1),";"!==i||a||t)e+=i;else{var c=e.trim();if(c){var f=c.indexOf(":");if(f>0){var l=c.slice(0,f).trim(),s=c.slice(f+1).trim();n.push([l,s])}}e=""}}var _=e.trim();if(_){var d=_.indexOf(":");if(d>0){var p=_.slice(0,d).trim(),v=_.slice(d+1).trim();n.push([p,v])}}return n}(e).reduce(function(n,e){var a=e[0],u=e[1];return n[a.replace(/(-[a-z])/g,function(r){return r[1].toUpperCase()})]=t(u,r,a),n},{}):-1!==i.indexOf(n)?t(wr(e),r,n):(e.match(B)&&(e=wr(e.slice(1,e.length-1))),"true"===e||"false"!==e&&e)}(r,u,o,V);"string"==typeof f&&(R.test(f)||M.test(f))&&(n[c]=ir(f.trim()))}else"style"!==e&&(n[a[e]||e]=!0);return n},{}):null}var fr,lr,sr=[],_r={},dr=((G={})[t.blockQuote]={t:[">"],u:Ir(l),o:1,i:function(r,n,e){var t=r[0].replace(s,"").match(_);return{alert:t[1],children:n(t[2],e)}},l:function(r,n,e){var a={key:e.key};return r.alert&&(a.className="markdown-alert-"+U(r.alert.toLowerCase(),Rr),r.children.unshift({attrs:{},children:[{type:t.text,text:r.alert}],noInnerParse:!0,type:t.htmlBlock,tag:"header"})),or("blockquote",a,n(r.children,e))}},G[t.breakLine]={t:[" "],u:Nr(d),o:1,i:Ur,l:function(r,n,e){return or("br",{key:e.key})}},G[t.breakThematic]={t:["--","__","**","- ","* ","_ "],u:Ir(p),o:1,i:Ur,l:function(r,n,e){return or("hr",{key:e.key})}},G[t.codeBlock]={t:[" "],u:Ir(m),o:0,i:function(r){return{lang:void 0,text:wr(zr(r[0].replace(/^ {4}/gm,"")))}},l:function(r,e,t){return or("pre",{key:t.key},or("code",n({},r.attrs,{className:r.lang?"lang-"+r.lang:""}),r.text))}},G[t.codeFenced]={t:["```","~~~"],u:Ir(v),o:0,i:function(r){return{attrs:cr("code",r[3]||""),lang:r[2]||void 0,text:r[4],type:t.codeBlock}}},G[t.codeInline]={t:["`"],u:Cr(y),o:3,i:function(r){return{text:wr(r[2])}},l:function(r,n,e){return or("code",{key:e.key},r.text)}},G[t.footnote]={t:["[^"],u:Ir(k),o:0,i:function(r){return sr.push({footnote:r[2],identifier:r[1]}),{}},l:Vr},G[t.footnoteReference]={t:["[^"],u:Lr(x),o:1,i:function(r){return{target:"#"+U(r[1],Rr),text:r[1]}},l:function(r,n,e){return or("a",{key:e.key,href:V(r.target,"a","href")},or("sup",{key:e.key},r.text))}},G[t.gfmTask]={t:["[ ]","[x]"],u:Lr(S),o:1,i:function(r){return{completed:"x"===r[1].toLowerCase()}},l:function(r,n,e){return or("input",{checked:r.completed,key:e.key,readOnly:!0,type:"checkbox"})}},G[t.heading]={t:["#"],u:Ir(f.enforceAtxHeadings?$:z),o:1,i:function(r,n,e){return{children:Dr(n,r[2],e),id:U(r[2],Rr),level:r[1].length}},l:function(r,n,e){return or("h"+r.level,{id:r.id,key:e.key},n(r.children,e))}},G[t.headingSetext]={t:function(r){var n=r.indexOf("\n");return n>0&&n<r.length-1&&("="===r[n+1]||"-"===r[n+1])},u:Ir(E),o:0,i:function(r,n,e){return{children:Dr(n,r[1],e),level:"="===r[2]?1:2,type:t.heading}}},G[t.htmlBlock]={t:["<"],u:Nr(R),o:1,i:function(r,n,e){var t=r[3].match(ur),a=RegExp("^"+t[1],"gm"),u=r[3].replace(a,""),i=er(Q,u)?Zr:Dr,c=r[1].toLowerCase(),f=-1!==o.indexOf(c),l=(f?c:r[1]).trim(),s={attrs:cr(l,r[2]),noInnerParse:f,tag:l};if(e.inAnchor=e.inAnchor||"a"===c,f)s.text=r[3];else{var _=e.inHTML;e.inHTML=!0,s.children=i(n,u,e),e.inHTML=_}return e.inAnchor=!1,s},l:function(r,e,t){return or(r.tag,n({key:t.key},r.attrs),r.text||(r.children?e(r.children,t):""))}},G[t.htmlSelfClosing]={t:["<"],u:Nr(M),o:1,i:function(r){var n=r[1].trim();return{attrs:cr(n,r[2]||""),tag:n}},l:function(r,e,t){return or(r.tag,n({},r.attrs,{key:t.key}))}},G[t.htmlComment]={t:["\x3c!--"],u:Nr(A),o:1,i:function(){return{}},l:Vr},G[t.image]={t:["!["],u:Cr(qr),o:1,i:function(r){return{alt:wr(r[1]),target:wr(r[2]),title:wr(r[3])}},l:function(r,n,e){return or("img",{key:e.key,alt:r.alt||void 0,title:r.title||void 0,src:V(r.target,"img","src")})}},G[t.link]={t:["["],u:Lr(br),o:3,i:function(r,n,e){return{children:Fr(n,r[1],e),target:wr(r[2]),title:wr(r[3])}},l:function(r,n,e){return or("a",{key:e.key,href:V(r.target,"a","href"),title:r.title},n(r.children,e))}},G[t.linkAngleBraceStyleDetector]={t:["<"],u:Lr(C),o:0,i:function(r){var n=r[1],e=!1;return-1!==n.indexOf("@")&&-1===n.indexOf("//")&&(e=!0,n=n.replace("mailto:","")),{children:[{text:n,type:t.text}],target:e?"mailto:"+n:n,type:t.link}}},G[t.linkBareUrlDetector]={t:function(r,n){return!n.inAnchor&&!f.disableAutoLink&&($r(r,"http://")||$r(r,"https://"))},u:Lr(L),o:0,i:function(r){return{children:[{text:r[1],type:t.text}],target:r[1],title:void 0,type:t.link}}},G[t.orderedList]=xr(or,1),G[t.unorderedList]=xr(or,2),G[t.newlineCoalescer]={t:["\n"],u:Ir(h),o:3,i:Ur,l:function(){return"\n"}},G[t.paragraph]={u:Br(function(r,n){if(n.inline||n.simple||n.inHTML&&-1===r.indexOf("\n\n")&&-1===n.prevCapture.indexOf("\n\n"))return null;for(var e="",t=0;;){var a=r.indexOf("\n",t),u=r.slice(t,-1===a?void 0:a+1);if(er(J,u))break;if(e+=u,-1===a||!u.trim())break;t=a+1}var o=zr(e);return""===o?null:[e,,o]}),o:3,i:Gr,l:function(r,n,e){return or("p",{key:e.key},n(r.children,e))}},G[t.ref]={t:["["],u:Lr(P),o:0,i:function(r){return _r[r[1]]={target:r[2],title:r[4]},{}},l:Vr},G[t.refImage]={t:["!["],u:Cr(w),o:0,i:function(r){return{alt:r[1]?wr(r[1]):void 0,ref:r[2]}},l:function(r,n,e){return _r[r.ref]?or("img",{key:e.key,alt:r.alt,src:V(_r[r.ref].target,"img","src"),title:_r[r.ref].title}):null}},G[t.refLink]={t:function(r){return"["===r[0]&&-1===r.indexOf("](")},u:Lr(D),o:0,i:function(r,n,e){return{children:n(r[1],e),fallbackChildren:r[0],ref:r[2]}},l:function(r,n,e){return _r[r.ref]?or("a",{key:e.key,href:V(_r[r.ref].target,"a","href"),title:_r[r.ref].title},n(r.children,e)):or("span",{key:e.key},r.fallbackChildren)}},G[t.table]={t:["|"],u:Ir(N),o:1,i:jr,l:function(r,n,e){var t=r;return or("table",{key:e.key},or("thead",null,or("tr",null,t.header.map(function(r,a){return or("th",{key:a,style:Mr(t,a)},n(r,e))}))),or("tbody",null,t.cells.map(function(r,a){return or("tr",{key:a},r.map(function(r,a){return or("td",{key:a,style:Mr(t,a)},n(r,e))}))})))}},G[t.text]={u:Br(function(r,n){var e;return $r(r,":")&&(e=rr.exec(r)),e||tr.exec(r)}),o:4,i:function(r){var n=r[0];return{text:-1===n.indexOf("&")?n:n.replace(O,function(r,n){return f.namedCodesToUnicode[n]||r})}},l:function(r){return r.text}},G[t.textBolded]={t:["**","__"],u:Cr(W),o:2,i:function(r,n,e){return{children:n(r[2],e)}},l:function(r,n,e){return or("strong",{key:e.key},n(r.children,e))}},G[t.textEmphasized]={t:function(r){var n=r[0];return("*"===n||"_"===n)&&r[1]!==n},u:Cr(K),o:3,i:function(r,n,e){return{children:n(r[2],e)}},l:function(r,n,e){return or("em",{key:e.key},n(r.children,e))}},G[t.textEscaped]={t:["\\"],u:Cr(nr),o:1,i:function(r){return{text:r[1],type:t.text}}},G[t.textMarked]={t:["=="],u:Cr(X),o:3,i:Gr,l:function(r,n,e){return or("mark",{key:e.key},n(r.children,e))}},G[t.textStrikethroughed]={t:["~~"],u:Cr(Y),o:3,i:Gr,l:function(r,n,e){return or("del",{key:e.key},n(r.children,e))}},G),pr=!!process.env.DEBUG&&"0"!==process.env.DEBUG;pr&&(fr={match:{total:0,attempts:0},parse:{total:0}},lr={},Object.keys(t).forEach(function(r){lr[t[r]]=r}),Object.keys(dr).forEach(function(r){var n=dr[r],e=n.u,t=n.i;fr.match[r]=[0,0,0],fr.parse[r]=[0,0,0],dr[r].u=function(){var n,t=[].slice.call(arguments);fr.match.attempts++,fr.match[r][1]++;var a,u=performance.now(),o=e.apply(void 0,t),i=performance.now()-u;return fr.match[r][2]=Math.max(Number(fr.match[r][2])||0,i),o?(fr.match.total++,fr.match[r][0]++,null!=(a=process.env.DEBUG)&&a.includes("speed")&&console[i>5?"warn":"log"]((lr[r]||r)+":match",i.toFixed(3)+"ms",t[0])):null!=(n=process.env.DEBUG)&&n.includes("miss")&&console.log("\n"+(lr[r]||r)+":miss",JSON.stringify(t[0])),o},dr[r].i=function(){var n,e=[].slice.call(arguments);fr.parse.total++,fr.parse[r][0]+=1;var a=performance.now(),u=t.apply(void 0,e),o=performance.now()-a;return fr.parse[r][1]+=o,fr.parse[r][2]=Math.max(Number(fr.parse[r][2])||0,o),null!=(n=process.env.DEBUG)&&n.includes("speed")&&console[o>5?"warn":"log"]((lr[r]||r)+":parse",o.toFixed(3)+"ms",e[0]),u}})),!0===f.disableParsingRawHTML&&(delete dr[t.htmlBlock],delete dr[t.htmlSelfClosing]);var vr=function(r){var n=Object.keys(r);function e(t,a){var u=[];if(a.prevCapture=a.prevCapture||"",t.trim())for(;t;)for(var o=0;o<n.length;){var i=n[o],c=r[i];if(!c.t||Er(t,a,c.t)){var f=c.u(t,a);if(f&&f[0]){t=t.substring(f[0].length);var l=c.i(f,e,a);a.prevCapture+=f[0],l.type||(l.type=i),u.push(l);break}o++}else o++}return a.prevCapture="",u}return n.sort(function(n,e){return r[n].o-r[e].o||(n<e?-1:1)}),function(r,n){return e(function(r){return r.replace(g,"\n").replace(b,"").replace(Z," ")}(r),n)}}(dr),mr=function(r,n){return function e(t,a){if(void 0===a&&(a={}),Array.isArray(t)){for(var u=a.key,o=[],i=!1,c=0;c<t.length;c++){a.key=c;var f=e(t[c],a),l=Sr(f);l&&i?o[o.length-1]+=f:null!==f&&o.push(f),i=l}return a.key=u,o}return function(e,t,a){var u=r[e.type].l;return n?n(function(){return u(e,t,a)},e,t,a):u(e,t,a)}(t,e,a)}}(dr,f.renderRule),yr=ir(e);if(pr){var hr={total:fr.match.total,attempts:fr.match.attempts,missRatio:fr.match.attempts>0?((fr.match.attempts-fr.match.total)/fr.match.attempts*100).toFixed(1)+"%":"0%"},Or={total:fr.parse.total};Object.keys(fr.match).forEach(function(r){if("total"!==r&&"attempts"!==r){var n=fr.match[r],e=n[0],t=n[1],a=n[2];hr[lr[r]||r]={matches:e,attempts:t,missRatio:t>0?((t-e)/t*100).toFixed(1)+"%":"0%",max:a.toFixed(3)}}}),Object.keys(fr.parse).forEach(function(r){if("total"!==r){var n=fr.parse[r],e=n[2];Or[lr[r]||r]={executions:n[0],cost:n[1].toFixed(3),max:e.toFixed(3)}}}),console.log("Match invocations:",hr),console.log("Parse invocations:",Or)}return sr.length?or("div",null,yr,or("footer",{key:"footer"},sr.map(function(r){return or("div",{id:U(r.identifier,Rr),key:r.identifier},r.identifier,mr(vr(r.footnote,{inline:!0})))}))):yr}export default function(n){var t=n.children,a=void 0===t?"":t,u=n.options,o=function(r,n){if(null==r)return{};var e,t,a={},u=Object.keys(r);for(t=0;t<u.length;t++)n.indexOf(e=u[t])>=0||(a[e]=r[e]);return a}(n,e);return r.cloneElement(Wr(a,u),o)}export{t as RuleType,Wr as compiler,Pr as sanitizer,Rr as slugify};
|
|
2
|
+
//# sourceMappingURL=debug.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.module.js","sources":["../index.tsx"],"sourcesContent":["/* @jsx h */\n/**\n * markdown-to-jsx is a fork of\n * [simple-markdown v0.2.2](https://github.com/Khan/simple-markdown)\n * from Khan Academy. Thank you Khan devs for making such an awesome\n * and extensible parsing infra... without it, half of the\n * optimizations here wouldn't be feasible. 🙏🏼\n */\nimport * as React from 'react'\n\n/**\n * Analogous to `node.type`. Please note that the values here may change at any time,\n * so do not hard code against the value directly.\n */\nexport const RuleType = {\n blockQuote: '0',\n breakLine: '1',\n breakThematic: '2',\n codeBlock: '3',\n codeFenced: '4',\n codeInline: '5',\n footnote: '6',\n footnoteReference: '7',\n gfmTask: '8',\n heading: '9',\n headingSetext: '10',\n /** only available if not `disableHTMLParsing` */\n htmlBlock: '11',\n htmlComment: '12',\n /** only available if not `disableHTMLParsing` */\n htmlSelfClosing: '13',\n image: '14',\n link: '15',\n /** emits a `link` 'node', does not render directly */\n linkAngleBraceStyleDetector: '16',\n /** emits a `link` 'node', does not render directly */\n linkBareUrlDetector: '17',\n /** @deprecated merged into linkAngleBraceStyleDetector\n *\n * emits a `link` 'node', does not render directly */\n linkMailtoDetector: '18',\n newlineCoalescer: '19',\n orderedList: '20',\n paragraph: '21',\n ref: '22',\n refImage: '23',\n refLink: '24',\n table: '25',\n tableSeparator: '26',\n text: '27',\n textBolded: '28',\n textEmphasized: '29',\n textEscaped: '30',\n textMarked: '31',\n textStrikethroughed: '32',\n unorderedList: '33',\n} as const\n\nif (process.env.NODE_ENV === 'test') {\n Object.keys(RuleType).forEach(key => (RuleType[key] = key))\n}\n\nexport type RuleType = (typeof RuleType)[keyof typeof RuleType]\n\nconst Priority = {\n /**\n * anything that must scan the tree before everything else\n */\n MAX: 0,\n /**\n * scans for block-level constructs\n */\n HIGH: 1,\n /**\n * inline w/ more priority than other inline\n */\n MED: 2,\n /**\n * inline elements\n */\n LOW: 3,\n /**\n * bare text and stuff that is considered leftovers\n */\n MIN: 4,\n}\n\n/** TODO: Drop for React 16? */\nconst ATTRIBUTE_TO_JSX_PROP_MAP = [\n 'allowFullScreen',\n 'allowTransparency',\n 'autoComplete',\n 'autoFocus',\n 'autoPlay',\n 'cellPadding',\n 'cellSpacing',\n 'charSet',\n 'classId',\n 'colSpan',\n 'contentEditable',\n 'contextMenu',\n 'crossOrigin',\n 'encType',\n 'formAction',\n 'formEncType',\n 'formMethod',\n 'formNoValidate',\n 'formTarget',\n 'frameBorder',\n 'hrefLang',\n 'inputMode',\n 'keyParams',\n 'keyType',\n 'marginHeight',\n 'marginWidth',\n 'maxLength',\n 'mediaGroup',\n 'minLength',\n 'noValidate',\n 'radioGroup',\n 'readOnly',\n 'rowSpan',\n 'spellCheck',\n 'srcDoc',\n 'srcLang',\n 'srcSet',\n 'tabIndex',\n 'useMap',\n].reduce(\n (obj, x) => {\n obj[x.toLowerCase()] = x\n return obj\n },\n { class: 'className', for: 'htmlFor' }\n)\n\nconst namedCodesToUnicode = {\n amp: '\\u0026',\n apos: '\\u0027',\n gt: '\\u003e',\n lt: '\\u003c',\n nbsp: '\\u00a0',\n quot: '\\u201c',\n} as const\n\nconst DO_NOT_PROCESS_HTML_ELEMENTS = ['style', 'script', 'pre']\nconst ATTRIBUTES_TO_SANITIZE = [\n 'src',\n 'href',\n 'data',\n 'formAction',\n 'srcDoc',\n 'action',\n]\n\n/**\n * the attribute extractor regex looks for a valid attribute name,\n * followed by an equal sign (whitespace around the equal sign is allowed), followed\n * by one of the following:\n *\n * 1. a single quote-bounded string, e.g. 'foo'\n * 2. a double quote-bounded string, e.g. \"bar\"\n * 3. an interpolation, e.g. {something}\n *\n * JSX can be be interpolated into itself and is passed through the compiler using\n * the same options and setup as the current run.\n *\n * <Something children={<SomeOtherThing />} />\n * ==================\n * ↳ children: [<SomeOtherThing />]\n *\n * Otherwise, interpolations are handled as strings or simple booleans\n * unless HTML syntax is detected.\n *\n * <Something color={green} disabled={true} />\n * ===== ====\n * ↓ ↳ disabled: true\n * ↳ color: \"green\"\n *\n * Numbers are not parsed at this time due to complexities around int, float,\n * and the upcoming bigint functionality that would make handling it unwieldy.\n * Parse the string in your component as desired.\n *\n * <Something someBigNumber={123456789123456789} />\n * ==================\n * ↳ someBigNumber: \"123456789123456789\"\n */\nconst ATTR_EXTRACTOR_R =\n /([-A-Z0-9_:]+)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|(?:\\{((?:\\\\.|{[^}]*?}|[^}])*)\\})))?/gi\n\n/** TODO: Write explainers for each of these */\n\nconst BLOCK_END_R = /\\n{2,}$/\nconst BLOCKQUOTE_R = /^(\\s*>[\\s\\S]*?)(?=\\n\\n|$)/\nconst BLOCKQUOTE_TRIM_LEFT_MULTILINE_R = /^ *> ?/gm\nconst BLOCKQUOTE_ALERT_R = /^(?:\\[!([^\\]]*)\\]\\n)?([\\s\\S]*)/\nconst BREAK_LINE_R = /^ {2,}\\n/\nconst BREAK_THEMATIC_R = /^(?:([-*_])( *\\1){2,}) *(?:\\n *)+\\n/\nconst CODE_BLOCK_FENCED_R =\n /^(?: {1,3})?(`{3,}|~{3,}) *(\\S+)? *([^\\n]*?)?\\n([\\s\\S]*?)(?:\\1\\n?|$)/\nconst CODE_BLOCK_R = /^(?: {4}[^\\n]+\\n*)+(?:\\n *)+\\n?/\nconst CODE_INLINE_R = /^(`+)((?:\\\\`|(?!\\1)`|[^`])+)\\1/\nconst CONSECUTIVE_NEWLINE_R = /^(?:\\n *)*\\n/\nconst CR_NEWLINE_R = /\\r\\n?/g\n\n/**\n * Matches footnotes on the format:\n *\n * [^key]: value\n *\n * Matches multiline footnotes\n *\n * [^key]: row\n * row\n * row\n *\n * And empty lines in indented multiline footnotes\n *\n * [^key]: indented with\n * row\n *\n * row\n *\n * Explanation:\n *\n * 1. Look for the starting tag, eg: [^key]\n * ^\\[\\^([^\\]]+)]\n *\n * 2. The first line starts with a colon, and continues for the rest of the line\n * :(.*)\n *\n * 3. Parse as many additional lines as possible. Matches new non-empty lines that doesn't begin with a new footnote definition.\n * (\\n(?!\\[\\^).+)\n *\n * 4. ...or allows for repeated newlines if the next line begins with at least four whitespaces.\n * (\\n+ {4,}.*)\n */\nconst FOOTNOTE_R = /^\\[\\^([^\\]]+)](:(.*)((\\n+ {4,}.*)|(\\n(?!\\[\\^).+))*)/\n\nconst FOOTNOTE_REFERENCE_R = /^\\[\\^([^\\]]+)]/\nconst FORMFEED_R = /\\f/g\nconst FRONT_MATTER_R = /^---[ \\t]*\\n(.|\\n)*\\n---[ \\t]*\\n/\nconst GFM_TASK_R = /^\\s*?\\[(x|\\s)\\]/\nconst HEADING_R = /^ *(#{1,6}) *([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/\nconst HEADING_ATX_COMPLIANT_R =\n /^ *(#{1,6}) +([^\\n]+?)(?: +#*)?(?:\\n *)*(?:\\n|$)/\nconst HEADING_SETEXT_R = /^([^\\n]+)\\n *(=|-)\\2{2,} *\\n/\n\n/**\n * Explanation:\n *\n * 1. Look for a starting tag, preceded by any amount of spaces\n * ^ *<\n *\n * 2. Capture the tag name (capture 1)\n * ([^ >/]+)\n *\n * 3. Ignore a space after the starting tag and capture the attribute portion of the tag (capture 2)\n * ?([^>]*)>\n *\n * 4. Ensure a matching closing tag is present in the rest of the input string\n * (?=[\\s\\S]*<\\/\\1>)\n *\n * 5. Capture everything until the matching closing tag -- this might include additional pairs\n * of the same tag type found in step 2 (capture 3)\n * ((?:[\\s\\S]*?(?:<\\1[^>]*>[\\s\\S]*?<\\/\\1>)*[\\s\\S]*?)*?)<\\/\\1>\n *\n * 6. Capture excess newlines afterward\n * \\n*\n */\nconst HTML_BLOCK_ELEMENT_R =\n /^ *(?!<[a-z][^ >/]* ?\\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\\n?(\\s*(?:<\\1[^>]*?>[\\s\\S]*?<\\/\\1>|(?!<\\1\\b)[\\s\\S])*?)<\\/\\1>(?!<\\/\\1>)\\n*/i\n\nconst HTML_CHAR_CODE_R = /&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi\n\nconst HTML_COMMENT_R = /^<!--[\\s\\S]*?(?:-->)/\n\n/**\n * borrowed from React 15(https://github.com/facebook/react/blob/894d20744cba99383ffd847dbd5b6e0800355a5c/src/renderers/dom/shared/HTMLDOMPropertyConfig.js)\n */\nconst HTML_CUSTOM_ATTR_R = /^(data|aria|x)-[a-z_][a-z\\d_.-]*$/\n\nconst HTML_SELF_CLOSING_ELEMENT_R =\n /^ *<([a-z][a-z0-9:]*)(?:\\s+((?:<.*?>|[^>])*))?\\/?>(?!<\\/\\1>)(\\s*\\n)?/i\nconst INTERPOLATION_R = /^\\{.*\\}$/\nconst LINK_AUTOLINK_BARE_URL_R = /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/\nconst LINK_AUTOLINK_R = /^<([^ >]+[:@\\/][^ >]+)>/\nconst CAPTURE_LETTER_AFTER_HYPHEN = /-([a-z])?/gi\nconst NP_TABLE_R = /^(\\|.*)\\n(?: *(\\|? *[-:]+ *\\|[-| :]*)\\n((?:.*\\|.*\\n)*))?\\n?/\nconst PARAGRAPH_R = /^[^\\n]+(?: \\n|\\n{2,})/\nconst REFERENCE_IMAGE_OR_LINK = /^\\[([^\\]]*)\\]:\\s+<?([^\\s>]+)>?\\s*(\"([^\"]*)\")?/\nconst REFERENCE_IMAGE_R = /^!\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/\nconst REFERENCE_LINK_R = /^\\[([^\\]]*)\\] ?\\[([^\\]]*)\\]/\nconst SHOULD_RENDER_AS_BLOCK_R = /(\\n|^[-*]\\s|^#|^ {2,}|^-{2,}|^>\\s)/\nconst TAB_R = /\\t/g\nconst TABLE_TRIM_PIPES = /(^ *\\||\\| *$)/g\nconst TABLE_CENTER_ALIGN = /^ *:-+: *$/\nconst TABLE_LEFT_ALIGN = /^ *:-+ *$/\nconst TABLE_RIGHT_ALIGN = /^ *-+: *$/\n\n/**\n * Ensure there's at least one more instance of the delimiter later\n * in the current sequence.\n */\nconst LOOKAHEAD = (double: number) => `(?=[\\\\s\\\\S]+?\\\\1${double ? '\\\\1' : ''})`\n\n/**\n * For inline formatting, this partial attempts to ignore characters that\n * may appear in nested formatting that could prematurely trigger detection\n * and therefore miss content that should have been included.\n */\nconst INLINE_SKIP_R =\n '((?:\\\\[.*?\\\\][([].*?[)\\\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\\\\\\\1|[\\\\s\\\\S])+?)'\n\n/**\n * Detect a sequence like **foo** or __foo__. Note that bold has a higher priority\n * than emphasized to support nesting of both since they share a delimiter.\n */\nconst TEXT_BOLD_R = new RegExp(\n `^([*_])\\\\1${LOOKAHEAD(1)}${INLINE_SKIP_R}\\\\1\\\\1(?!\\\\1)`\n)\n\n/**\n * Detect a sequence like *foo* or _foo_.\n */\nconst TEXT_EMPHASIZED_R = new RegExp(\n `^([*_])${LOOKAHEAD(0)}${INLINE_SKIP_R}\\\\1(?!\\\\1)`\n)\n\n/**\n * Detect a sequence like ==foo==.\n */\nconst TEXT_MARKED_R = new RegExp(`^(==)${LOOKAHEAD(0)}${INLINE_SKIP_R}\\\\1`)\n\n/**\n * Detect a sequence like ~~foo~~.\n */\nconst TEXT_STRIKETHROUGHED_R = new RegExp(\n `^(~~)${LOOKAHEAD(0)}${INLINE_SKIP_R}\\\\1`\n)\n\n/**\n * Special case for shortcodes like :big-smile: or :emoji:\n */\nconst SHORTCODE_R = /^(:[a-zA-Z0-9-_]+:)/\n\nconst TEXT_ESCAPED_R = /^\\\\([^0-9A-Za-z\\s])/\nconst UNESCAPE_R = /\\\\([^0-9A-Za-z\\s])/g\n\n/**\n * Always take the first character, then eagerly take text until a double space\n * (potential line break) or some markdown-like punctuation is reached.\n */\nconst TEXT_PLAIN_R = /^[\\s\\S](?:(?! \\n|[0-9]\\.|http)[^=*_~\\-\\n:<`\\\\\\[!])*/\n\nconst TRIM_STARTING_NEWLINES = /^\\n+/\n\nconst HTML_LEFT_TRIM_AMOUNT_R = /^([ \\t]*)/\n\ntype LIST_TYPE = 1 | 2\nconst ORDERED: LIST_TYPE = 1\nconst UNORDERED: LIST_TYPE = 2\n\nconst LIST_LOOKBEHIND_R = /(?:^|\\n)( *)$/\n\n// recognize a `*` `-`, `+`, `1.`, `2.`... list bullet\nconst ORDERED_LIST_BULLET = '(?:\\\\d+\\\\.)'\nconst UNORDERED_LIST_BULLET = '(?:[*+-])'\n\nfunction generateListItemPrefix(type: LIST_TYPE) {\n return (\n '( *)(' +\n (type === ORDERED ? ORDERED_LIST_BULLET : UNORDERED_LIST_BULLET) +\n ') +'\n )\n}\n\n// recognize the start of a list item:\n// leading space plus a bullet plus a space (` * `)\nconst ORDERED_LIST_ITEM_PREFIX = generateListItemPrefix(ORDERED)\nconst UNORDERED_LIST_ITEM_PREFIX = generateListItemPrefix(UNORDERED)\n\nfunction generateListItemPrefixRegex(type: LIST_TYPE) {\n return new RegExp(\n '^' +\n (type === ORDERED ? ORDERED_LIST_ITEM_PREFIX : UNORDERED_LIST_ITEM_PREFIX)\n )\n}\n\nconst ORDERED_LIST_ITEM_PREFIX_R = generateListItemPrefixRegex(ORDERED)\nconst UNORDERED_LIST_ITEM_PREFIX_R = generateListItemPrefixRegex(UNORDERED)\n\nfunction generateListItemRegex(type: LIST_TYPE) {\n // recognize an individual list item:\n // * hi\n // this is part of the same item\n //\n // as is this, which is a new paragraph in the same item\n //\n // * but this is not part of the same item\n return new RegExp(\n '^' +\n (type === ORDERED\n ? ORDERED_LIST_ITEM_PREFIX\n : UNORDERED_LIST_ITEM_PREFIX) +\n '[^\\\\n]*(?:\\\\n' +\n '(?!\\\\1' +\n (type === ORDERED ? ORDERED_LIST_BULLET : UNORDERED_LIST_BULLET) +\n ' )[^\\\\n]*)*(\\\\n|$)',\n 'gm'\n )\n}\n\nconst ORDERED_LIST_ITEM_R = generateListItemRegex(ORDERED)\nconst UNORDERED_LIST_ITEM_R = generateListItemRegex(UNORDERED)\n\n// check whether a list item has paragraphs: if it does,\n// we leave the newlines at the end\nfunction generateListRegex(type: LIST_TYPE) {\n const bullet = type === ORDERED ? ORDERED_LIST_BULLET : UNORDERED_LIST_BULLET\n\n return new RegExp(\n '^( *)(' +\n bullet +\n ') ' +\n '[\\\\s\\\\S]+?(?:\\\\n{2,}(?! )' +\n '(?!\\\\1' +\n bullet +\n ' (?!' +\n bullet +\n ' ))\\\\n*' +\n // the \\\\s*$ here is so that we can parse the inside of nested\n // lists, where our content might end before we receive two `\\n`s\n '|\\\\s*\\\\n*$)'\n )\n}\n\nconst ORDERED_LIST_R = generateListRegex(ORDERED)\nconst UNORDERED_LIST_R = generateListRegex(UNORDERED)\n\nfunction generateListRule(\n h: any,\n type: LIST_TYPE\n): MarkdownToJSX.Rule<\n MarkdownToJSX.OrderedListNode | MarkdownToJSX.UnorderedListNode\n> {\n const ordered = type === ORDERED\n const LIST_R = ordered ? ORDERED_LIST_R : UNORDERED_LIST_R\n const LIST_ITEM_R = ordered ? ORDERED_LIST_ITEM_R : UNORDERED_LIST_ITEM_R\n const LIST_ITEM_PREFIX_R = ordered\n ? ORDERED_LIST_ITEM_PREFIX_R\n : UNORDERED_LIST_ITEM_PREFIX_R\n\n return {\n _qualify: source => LIST_ITEM_PREFIX_R.test(source),\n _match: allowInline(function (source, state) {\n // We only want to break into a list if we are at the start of a\n // line. This is to avoid parsing \"hi * there\" with \"* there\"\n // becoming a part of a list.\n // You might wonder, \"but that's inline, so of course it wouldn't\n // start a list?\". You would be correct! Except that some of our\n // lists can be inline, because they might be inside another list,\n // in which case we can parse with inline scope, but need to allow\n // nested lists inside this inline scope.\n const isStartOfLine = LIST_LOOKBEHIND_R.exec(state.prevCapture)\n const isListAllowed = state.list || (!state.inline && !state.simple)\n\n if (isStartOfLine && isListAllowed) {\n source = isStartOfLine[1] + source\n\n return LIST_R.exec(source)\n } else {\n return null\n }\n }),\n _order: Priority.HIGH,\n _parse(capture, parse, state) {\n const bullet = capture[2]\n const start = ordered ? +bullet : undefined\n const items = capture[0]\n // recognize the end of a paragraph block inside a list item:\n // two or more newlines at end end of the item\n .replace(BLOCK_END_R, '\\n')\n .match(LIST_ITEM_R)\n\n let lastItemWasAParagraph = false\n\n const itemContent = items.map(function (item, i) {\n // We need to see how far indented the item is:\n const space = LIST_ITEM_PREFIX_R.exec(item)[0].length\n\n // And then we construct a regex to \"unindent\" the subsequent\n // lines of the items by that amount:\n const spaceRegex = new RegExp('^ {1,' + space + '}', 'gm')\n\n // Before processing the item, we need a couple things\n const content = item\n // remove indents on trailing lines:\n .replace(spaceRegex, '')\n // remove the bullet:\n .replace(LIST_ITEM_PREFIX_R, '')\n\n // Handling \"loose\" lists, like:\n //\n // * this is wrapped in a paragraph\n //\n // * as is this\n //\n // * as is this\n const isLastItem = i === items.length - 1\n const containsBlocks = content.indexOf('\\n\\n') !== -1\n\n // Any element in a list is a block if it contains multiple\n // newlines. The last element in the list can also be a block\n // if the previous item in the list was a block (this is\n // because non-last items in the list can end with \\n\\n, but\n // the last item can't, so we just \"inherit\" this property\n // from our previous element).\n const thisItemIsAParagraph =\n containsBlocks || (isLastItem && lastItemWasAParagraph)\n lastItemWasAParagraph = thisItemIsAParagraph\n\n // backup our state for delta afterwards. We're going to\n // want to set state.list to true, and state.inline depending\n // on our list's looseness.\n const oldStateInline = state.inline\n const oldStateList = state.list\n state.list = true\n\n // Parse inline if we're in a tight list, or block if we're in\n // a loose list.\n let adjustedContent\n if (thisItemIsAParagraph) {\n state.inline = false\n adjustedContent = trimEnd(content) + '\\n\\n'\n } else {\n state.inline = true\n adjustedContent = trimEnd(content)\n }\n\n const result = parse(adjustedContent, state)\n\n // Restore our state before returning\n state.inline = oldStateInline\n state.list = oldStateList\n\n return result\n })\n\n return {\n items: itemContent,\n ordered: ordered,\n start: start,\n }\n },\n _render(node, output, state) {\n const Tag = node.ordered ? 'ol' : 'ul'\n\n return (\n <Tag\n key={state.key}\n start={node.type === RuleType.orderedList ? node.start : undefined}\n >\n {node.items.map(function generateListItem(item, i) {\n return <li key={i}>{output(item, state)}</li>\n })}\n </Tag>\n )\n },\n }\n}\n\nconst LINK_INSIDE =\n '(?:\\\\[[^\\\\[\\\\]]*(?:\\\\[[^\\\\[\\\\]]*\\\\][^\\\\[\\\\]]*)*\\\\]|[^\\\\[\\\\]])*'\nconst LINK_HREF_AND_TITLE =\n '\\\\s*<?((?:\\\\([^)]*\\\\)|[^\\\\s\\\\\\\\]|\\\\\\\\.)*?)>?(?:\\\\s+[\\'\"]([\\\\s\\\\S]*?)[\\'\"])?\\\\s*'\nconst LINK_R = new RegExp(\n '^\\\\[(' + LINK_INSIDE + ')\\\\]\\\\(' + LINK_HREF_AND_TITLE + '\\\\)'\n)\nconst IMAGE_R = /^!\\[(.*?)\\]\\( *((?:\\([^)]*\\)|[^() ])*) *\"?([^)\"]*)?\"?\\)/\n\nfunction isString(value: any): value is string {\n return typeof value === 'string'\n}\n\nfunction trimEnd(str: string) {\n let end = str.length\n while (end > 0 && str[end - 1] <= ' ') end--\n return str.slice(0, end)\n}\n\nfunction startsWith(str: string, prefix: string) {\n return str.startsWith(prefix)\n}\n\nfunction qualifies(\n source: string,\n state: MarkdownToJSX.State,\n qualify: MarkdownToJSX.Rule<any>['_qualify']\n) {\n if (Array.isArray(qualify)) {\n for (let i = 0; i < qualify.length; i++) {\n if (startsWith(source, qualify[i])) return true\n }\n\n return false\n }\n\n return qualify(source, state)\n}\n\n/** Remove symmetrical leading and trailing quotes */\nfunction unquote(str: string) {\n const first = str[0]\n if (\n (first === '\"' || first === \"'\") &&\n str.length >= 2 &&\n str[str.length - 1] === first\n ) {\n return str.slice(1, -1)\n }\n return str\n}\n\n// based on https://stackoverflow.com/a/18123682/1141611\n// not complete, but probably good enough\nexport function slugify(str: string) {\n return str\n .replace(/[ÀÁÂÃÄÅàáâãä忯]/g, 'a')\n .replace(/[çÇ]/g, 'c')\n .replace(/[ðÐ]/g, 'd')\n .replace(/[ÈÉÊËéèêë]/g, 'e')\n .replace(/[ÏïÎîÍíÌì]/g, 'i')\n .replace(/[Ññ]/g, 'n')\n .replace(/[øØœŒÕõÔôÓóÒò]/g, 'o')\n .replace(/[ÜüÛûÚúÙù]/g, 'u')\n .replace(/[ŸÿÝý]/g, 'y')\n .replace(/[^a-z0-9- ]/gi, '')\n .replace(/ /gi, '-')\n .toLowerCase()\n}\n\nfunction parseTableAlignCapture(alignCapture: string) {\n if (TABLE_RIGHT_ALIGN.test(alignCapture)) {\n return 'right'\n } else if (TABLE_CENTER_ALIGN.test(alignCapture)) {\n return 'center'\n } else if (TABLE_LEFT_ALIGN.test(alignCapture)) {\n return 'left'\n }\n\n return null\n}\n\nfunction parseTableRow(\n source: string,\n parse: MarkdownToJSX.NestedParser,\n state: MarkdownToJSX.State,\n tableOutput: boolean\n): MarkdownToJSX.ParserResult[][] {\n const prevInTable = state.inTable\n\n state.inTable = true\n\n let cells: MarkdownToJSX.ParserResult[][] = [[]]\n let acc = ''\n\n function flush() {\n if (!acc) return\n\n const cell = cells[cells.length - 1]\n cell.push.apply(cell, parse(acc, state))\n acc = ''\n }\n\n source\n .trim()\n // isolate situations where a pipe should be ignored (inline code, escaped, etc)\n .split(/(`[^`]*`|\\\\\\||\\|)/)\n .filter(Boolean)\n .forEach((fragment, i, arr) => {\n if (fragment.trim() === '|') {\n flush()\n\n if (tableOutput) {\n if (i !== 0 && i !== arr.length - 1) {\n // Split the current row\n cells.push([])\n }\n\n return\n }\n }\n\n acc += fragment\n })\n\n flush()\n\n state.inTable = prevInTable\n\n return cells\n}\n\nfunction parseTableAlign(source: string /*, parse, state*/) {\n const alignText = source.replace(TABLE_TRIM_PIPES, '').split('|')\n\n return alignText.map(parseTableAlignCapture)\n}\n\nfunction parseTableCells(\n source: string,\n parse: MarkdownToJSX.NestedParser,\n state: MarkdownToJSX.State\n) {\n const rowsText = source.trim().split('\\n')\n\n return rowsText.map(function (rowText) {\n return parseTableRow(rowText, parse, state, true)\n })\n}\n\nfunction parseTable(\n capture: RegExpMatchArray,\n parse: MarkdownToJSX.NestedParser,\n state: MarkdownToJSX.State\n) {\n /**\n * The table syntax makes some other parsing angry so as a bit of a hack even if alignment and/or cell rows are missing,\n * we'll still run a detected first row through the parser and then just emit a paragraph.\n */\n state.inline = true\n const align = capture[2] ? parseTableAlign(capture[2]) : []\n const cells = capture[3] ? parseTableCells(capture[3], parse, state) : []\n const header = parseTableRow(capture[1], parse, state, !!cells.length)\n state.inline = false\n\n return cells.length\n ? {\n align: align,\n cells: cells,\n header: header,\n type: RuleType.table,\n }\n : {\n children: header,\n type: RuleType.paragraph,\n }\n}\n\nfunction getTableStyle(node, colIndex) {\n return node.align[colIndex] == null\n ? {}\n : {\n textAlign: node.align[colIndex],\n }\n}\n\n/** TODO: remove for react 16 */\nfunction normalizeAttributeKey(key) {\n const hyphenIndex = key.indexOf('-')\n\n if (hyphenIndex !== -1 && key.match(HTML_CUSTOM_ATTR_R) === null) {\n key = key.replace(CAPTURE_LETTER_AFTER_HYPHEN, function (_, letter) {\n return letter.toUpperCase()\n })\n }\n\n return key\n}\n\ntype StyleTuple = [key: string, value: string]\n\nfunction parseStyleAttribute(styleString: string): StyleTuple[] {\n const styles: StyleTuple[] = []\n let buffer = ''\n let inUrl = false\n let inQuotes = false\n let quoteChar: '\"' | \"'\" | '' = ''\n\n if (!styleString) return styles\n\n for (let i = 0; i < styleString.length; i++) {\n const char = styleString[i]\n\n // Handle quotes\n if ((char === '\"' || char === \"'\") && !inUrl) {\n if (!inQuotes) {\n inQuotes = true\n quoteChar = char\n } else if (char === quoteChar) {\n inQuotes = false\n quoteChar = ''\n }\n }\n\n // Track url() values\n if (char === '(' && buffer.endsWith('url')) {\n inUrl = true\n } else if (char === ')' && inUrl) {\n inUrl = false\n }\n\n // Only split on semicolons when not in quotes or url()\n if (char === ';' && !inQuotes && !inUrl) {\n const declaration = buffer.trim()\n if (declaration) {\n const colonIndex = declaration.indexOf(':')\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim()\n const value = declaration.slice(colonIndex + 1).trim()\n styles.push([key, value])\n }\n }\n buffer = ''\n } else {\n buffer += char\n }\n }\n\n // Handle the last declaration\n const declaration = buffer.trim()\n if (declaration) {\n const colonIndex = declaration.indexOf(':')\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim()\n const value = declaration.slice(colonIndex + 1).trim()\n styles.push([key, value])\n }\n }\n\n return styles\n}\n\nfunction attributeValueToJSXPropValue(\n tag: MarkdownToJSX.HTMLTags,\n key: keyof React.AllHTMLAttributes<Element>,\n value: string,\n sanitizeUrlFn: MarkdownToJSX.Options['sanitizer']\n): any {\n if (key === 'style') {\n return parseStyleAttribute(value).reduce(function (styles, [key, value]) {\n // snake-case to camelCase\n // also handles PascalCasing vendor prefixes\n const camelCasedKey = key.replace(/(-[a-z])/g, substr =>\n substr[1].toUpperCase()\n )\n\n // key.length + 1 to skip over the colon\n styles[camelCasedKey] = sanitizeUrlFn(value, tag, key)\n\n return styles\n }, {})\n } else if (ATTRIBUTES_TO_SANITIZE.indexOf(key) !== -1) {\n return sanitizeUrlFn(unescape(value), tag, key)\n } else if (value.match(INTERPOLATION_R)) {\n // return as a string and let the consumer decide what to do with it\n value = unescape(value.slice(1, value.length - 1))\n }\n\n if (value === 'true') {\n return true\n } else if (value === 'false') {\n return false\n }\n\n return value\n}\n\nfunction normalizeWhitespace(source: string): string {\n return source\n .replace(CR_NEWLINE_R, '\\n')\n .replace(FORMFEED_R, '')\n .replace(TAB_R, ' ')\n}\n\n/**\n * Creates a parser for a given set of rules, with the precedence\n * specified as a list of rules.\n *\n * @rules: an object containing\n * rule type -> {match, order, parse} objects\n * (lower order is higher precedence)\n * (Note: `order` is added to defaultRules after creation so that\n * the `order` of defaultRules in the source matches the `order`\n * of defaultRules in terms of `order` fields.)\n *\n * @returns The resulting parse function, with the following parameters:\n * @source: the input source string to be parsed\n * @state: an optional object to be threaded through parse\n * calls. Allows clients to add stateful operations to\n * parsing, such as keeping track of how many levels deep\n * some nesting is. For an example use-case, see passage-ref\n * parsing in src/widgets/passage/passage-markdown.jsx\n */\nfunction parserFor(\n rules: MarkdownToJSX.Rules\n): (\n source: string,\n state: MarkdownToJSX.State\n) => ReturnType<MarkdownToJSX.NestedParser> {\n var ruleList = Object.keys(rules)\n\n if (process.env.NODE_ENV !== 'production') {\n ruleList.forEach(function (type) {\n const order = rules[type]._order\n if (typeof order !== 'number' || !isFinite(order)) {\n console.warn(\n 'markdown-to-jsx: Invalid order for rule `' + type + '`: ' + order\n )\n }\n })\n }\n\n // Sorts rules in order of increasing order, then\n // ascending rule name in case of ties.\n ruleList.sort(function (a, b) {\n return rules[a]._order - rules[b]._order || (a < b ? -1 : 1)\n })\n\n function nestedParse(\n source: string,\n state: MarkdownToJSX.State\n ): MarkdownToJSX.ParserResult[] {\n var result = []\n state.prevCapture = state.prevCapture || ''\n\n if (source.trim()) {\n while (source) {\n var i = 0\n while (i < ruleList.length) {\n var ruleType = ruleList[i]\n var rule = rules[ruleType]\n\n if (rule._qualify && !qualifies(source, state, rule._qualify)) {\n i++\n continue\n }\n\n var capture = rule._match(source, state)\n if (capture && capture[0]) {\n source = source.substring(capture[0].length)\n\n var parsed = rule._parse(capture, nestedParse, state)\n\n state.prevCapture += capture[0]\n\n if (!parsed.type) parsed.type = ruleType as unknown as RuleType\n result.push(parsed)\n break\n }\n i++\n }\n }\n }\n\n // reset on exit\n state.prevCapture = ''\n\n return result\n }\n\n return function (source, state) {\n return nestedParse(normalizeWhitespace(source), state)\n }\n}\n\n/**\n * Marks a matcher function as eligible for being run inside an inline context;\n * allows us to do a little less work in the nested parser.\n */\nfunction allowInline<T extends Function & { inline?: 0 | 1 }>(fn: T) {\n fn.inline = 1\n\n return fn\n}\n\n// Creates a match function for an inline scoped or simple element from a regex\nfunction inlineRegex(regex: RegExp) {\n return allowInline(function match(source, state: MarkdownToJSX.State) {\n if (state.inline) {\n return regex.exec(source)\n } else {\n return null\n }\n })\n}\n\n// basically any inline element except links\nfunction simpleInlineRegex(regex: RegExp) {\n return allowInline(function match(\n source: string,\n state: MarkdownToJSX.State\n ) {\n if (state.inline || state.simple) {\n return regex.exec(source)\n } else {\n return null\n }\n })\n}\n\n// Creates a match function for a block scoped element from a regex\nfunction blockRegex(regex: RegExp) {\n return function match(source: string, state: MarkdownToJSX.State) {\n if (state.inline || state.simple) {\n return null\n } else {\n return regex.exec(source)\n }\n }\n}\n\n// Creates a match function from a regex, ignoring block/inline scope\nfunction anyScopeRegex(regex: RegExp) {\n return allowInline(function match(source: string /*, state*/) {\n return regex.exec(source)\n })\n}\n\nconst SANITIZE_R = /(javascript|vbscript|data(?!:image)):/i\n\nexport function sanitizer(input: string): string {\n try {\n const decoded = decodeURIComponent(input).replace(/[^A-Za-z0-9/:]/g, '')\n\n if (SANITIZE_R.test(decoded)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Input contains an unsafe JavaScript/VBScript/data expression, it will not be rendered.',\n decoded\n )\n }\n\n return null\n }\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Input could not be decoded due to malformed syntax or characters, it will not be rendered.',\n input\n )\n }\n\n // decodeURIComponent sometimes throws a URIError\n // See `decodeURIComponent('a%AFc');`\n // http://stackoverflow.com/questions/9064536/javascript-decodeuricomponent-malformed-uri-exception\n return null\n }\n\n return input\n}\n\nfunction unescape(rawString: string): string {\n return rawString ? rawString.replace(UNESCAPE_R, '$1') : rawString\n}\n\n/**\n * Everything inline, including links.\n */\nfunction parseInline(\n parse: MarkdownToJSX.NestedParser,\n children: string,\n state: MarkdownToJSX.State\n): MarkdownToJSX.ParserResult[] {\n const isCurrentlyInline = state.inline || false\n const isCurrentlySimple = state.simple || false\n state.inline = true\n state.simple = true\n const result = parse(children, state)\n state.inline = isCurrentlyInline\n state.simple = isCurrentlySimple\n return result\n}\n\n/**\n * Anything inline that isn't a link.\n */\nfunction parseSimpleInline(\n parse: MarkdownToJSX.NestedParser,\n children: string,\n state: MarkdownToJSX.State\n): MarkdownToJSX.ParserResult[] {\n const isCurrentlyInline = state.inline || false\n const isCurrentlySimple = state.simple || false\n state.inline = false\n state.simple = true\n const result = parse(children, state)\n state.inline = isCurrentlyInline\n state.simple = isCurrentlySimple\n return result\n}\n\nfunction parseBlock(\n parse,\n children,\n state: MarkdownToJSX.State\n): MarkdownToJSX.ParserResult[] {\n const isCurrentlyInline = state.inline || false\n state.inline = false\n const result = parse(children, state)\n state.inline = isCurrentlyInline\n return result\n}\n\nconst parseCaptureInline: MarkdownToJSX.Parser<{\n children: MarkdownToJSX.ParserResult[]\n}> = (capture, parse, state: MarkdownToJSX.State) => {\n return {\n children: parseInline(parse, capture[2], state),\n }\n}\n\nfunction captureNothing() {\n return {}\n}\n\nfunction renderNothing() {\n return null\n}\n\nfunction createRenderer(\n rules: MarkdownToJSX.Rules,\n userRender?: MarkdownToJSX.Options['renderRule']\n) {\n function renderRule(\n ast: MarkdownToJSX.ParserResult,\n render: MarkdownToJSX.RuleOutput,\n state: MarkdownToJSX.State\n ): React.ReactNode {\n const renderer = rules[ast.type]._render as MarkdownToJSX.Rule['_render']\n\n return userRender\n ? userRender(() => renderer(ast, render, state), ast, render, state)\n : renderer(ast, render, state)\n }\n\n return function patchedRender(\n ast: MarkdownToJSX.ParserResult | MarkdownToJSX.ParserResult[],\n state: MarkdownToJSX.State = {}\n ): React.ReactNode[] | React.ReactNode {\n if (Array.isArray(ast)) {\n const oldKey = state.key\n const result = []\n\n // map nestedOutput over the ast, except group any text\n // nodes together into a single string output.\n let lastWasString = false\n\n for (let i = 0; i < ast.length; i++) {\n state.key = i\n\n const nodeOut = patchedRender(ast[i], state)\n const _isString = isString(nodeOut)\n\n if (_isString && lastWasString) {\n result[result.length - 1] += nodeOut\n } else if (nodeOut !== null) {\n result.push(nodeOut)\n }\n\n lastWasString = _isString\n }\n\n state.key = oldKey\n\n return result\n }\n\n return renderRule(ast, patchedRender, state)\n }\n}\n\nfunction cx(...args) {\n return args.filter(Boolean).join(' ')\n}\n\nfunction get(src: Object, path: string, fb?: any) {\n let ptr = src\n const frags = path.split('.')\n\n while (frags.length) {\n ptr = ptr[frags[0]]\n\n if (ptr === undefined) break\n else frags.shift()\n }\n\n return ptr || fb\n}\n\nfunction getTag(tag: string, overrides: MarkdownToJSX.Overrides) {\n const override = get(overrides, tag)\n\n if (!override) return tag\n\n return typeof override === 'function' ||\n (typeof override === 'object' && 'render' in override)\n ? override\n : get(overrides, `${tag}.component`, tag)\n}\n\nexport function compiler(\n markdown: string,\n options: MarkdownToJSX.Options & {\n wrapper: null\n }\n): React.ReactNode[]\nexport function compiler(\n markdown: string,\n options?: MarkdownToJSX.Options\n): React.JSX.Element\nexport function compiler(\n markdown: string = '',\n options: MarkdownToJSX.Options = {}\n): React.JSX.Element | React.ReactNode[] {\n options.overrides = options.overrides || {}\n options.namedCodesToUnicode = options.namedCodesToUnicode\n ? { ...namedCodesToUnicode, ...options.namedCodesToUnicode }\n : namedCodesToUnicode\n\n const slug = options.slugify || slugify\n const sanitize = options.sanitizer || sanitizer\n const createElement = options.createElement || React.createElement\n\n const NON_PARAGRAPH_BLOCK_SYNTAXES = [\n BLOCKQUOTE_R,\n CODE_BLOCK_FENCED_R,\n CODE_BLOCK_R,\n options.enforceAtxHeadings ? HEADING_ATX_COMPLIANT_R : HEADING_R,\n HEADING_SETEXT_R,\n NP_TABLE_R,\n ORDERED_LIST_R,\n UNORDERED_LIST_R,\n ]\n\n const BLOCK_SYNTAXES = [\n ...NON_PARAGRAPH_BLOCK_SYNTAXES,\n PARAGRAPH_R,\n HTML_BLOCK_ELEMENT_R,\n HTML_COMMENT_R,\n HTML_SELF_CLOSING_ELEMENT_R,\n ]\n\n function some(regexes: RegExp[], input: string) {\n for (let i = 0; i < regexes.length; i++) {\n if (regexes[i].test(input)) {\n return true\n }\n }\n return false\n }\n\n function containsBlockSyntax(input: string) {\n return some(BLOCK_SYNTAXES, input)\n }\n\n function matchParagraph(source: string, state: MarkdownToJSX.State) {\n if (\n state.inline ||\n state.simple ||\n (state.inHTML &&\n source.indexOf('\\n\\n') === -1 &&\n state.prevCapture.indexOf('\\n\\n') === -1)\n ) {\n return null\n }\n\n let match = ''\n let start = 0\n\n while (true) {\n const newlineIndex = source.indexOf('\\n', start)\n\n // Extract the line including the newline\n const line = source.slice(\n start,\n newlineIndex === -1 ? undefined : newlineIndex + 1\n )\n if (some(NON_PARAGRAPH_BLOCK_SYNTAXES, line)) {\n break\n }\n\n match += line\n\n // Stop if line has no content (empty line)\n if (newlineIndex === -1 || !line.trim()) {\n break\n }\n\n start = newlineIndex + 1\n }\n\n const captured = trimEnd(match)\n if (captured === '') {\n return null\n }\n\n // parseCaptureInline expects the inner content to be at index 2\n // because index 1 is the delimiter for text formatting syntaxes\n return [match, , captured] as RegExpMatchArray\n }\n\n // JSX custom pragma\n // eslint-disable-next-line no-unused-vars\n function h(\n // locally we always will render a known string tag\n tag: MarkdownToJSX.HTMLTags,\n props: Parameters<MarkdownToJSX.CreateElement>[1] & {\n className?: string\n id?: string\n },\n ...children\n ) {\n const overrideProps = get(options.overrides, `${tag}.props`, {})\n\n return createElement(\n getTag(tag, options.overrides),\n {\n ...props,\n ...overrideProps,\n className: cx(props?.className, overrideProps.className) || undefined,\n },\n ...children\n )\n }\n\n function compile(input: string): React.JSX.Element | React.ReactNode[] {\n input = input.replace(FRONT_MATTER_R, '')\n\n let inline = false\n\n if (options.forceInline) {\n inline = true\n } else if (!options.forceBlock) {\n /**\n * should not contain any block-level markdown like newlines, lists, headings,\n * thematic breaks, blockquotes, tables, etc\n */\n inline = SHOULD_RENDER_AS_BLOCK_R.test(input) === false\n }\n\n const arr = emitter(\n parser(\n inline\n ? input\n : `${trimEnd(input).replace(TRIM_STARTING_NEWLINES, '')}\\n\\n`,\n {\n inline,\n }\n )\n ) as React.ReactNode[]\n\n while (\n isString(arr[arr.length - 1]) &&\n !(arr[arr.length - 1] as string).trim()\n ) {\n arr.pop()\n }\n\n if (options.wrapper === null) {\n return arr\n }\n\n const wrapper = options.wrapper || (inline ? 'span' : 'div')\n let jsx\n\n if (arr.length > 1 || options.forceWrapper) {\n jsx = arr\n } else if (arr.length === 1) {\n jsx = arr[0]\n\n // TODO: remove this for React 16\n if (typeof jsx === 'string') {\n return <span key=\"outer\">{jsx}</span>\n } else {\n return jsx\n }\n } else {\n // TODO: return null for React 16\n jsx = null\n }\n\n return createElement(wrapper, { key: 'outer' }, jsx) as React.JSX.Element\n }\n\n function attrStringToMap(\n tag: MarkdownToJSX.HTMLTags,\n str: string\n ): React.JSX.IntrinsicAttributes {\n if (!str || !str.trim()) {\n return null\n }\n\n const attributes = str.match(ATTR_EXTRACTOR_R)\n if (!attributes) {\n return null\n }\n\n return attributes.reduce(function (map, raw) {\n const delimiterIdx = raw.indexOf('=')\n\n if (delimiterIdx !== -1) {\n const key = normalizeAttributeKey(raw.slice(0, delimiterIdx)).trim()\n const value = unquote(raw.slice(delimiterIdx + 1).trim())\n\n const mappedKey = ATTRIBUTE_TO_JSX_PROP_MAP[key] || key\n\n // bail out, not supported\n if (mappedKey === 'ref') return map\n\n const normalizedValue = (map[mappedKey] = attributeValueToJSXPropValue(\n tag,\n key,\n value,\n sanitize\n ))\n\n if (\n typeof normalizedValue === 'string' &&\n (HTML_BLOCK_ELEMENT_R.test(normalizedValue) ||\n HTML_SELF_CLOSING_ELEMENT_R.test(normalizedValue))\n ) {\n map[mappedKey] = compile(normalizedValue.trim())\n }\n } else if (raw !== 'style') {\n map[ATTRIBUTE_TO_JSX_PROP_MAP[raw] || raw] = true\n }\n\n return map\n }, {})\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof markdown !== 'string') {\n throw new Error(`markdown-to-jsx: the first argument must be\n a string`)\n }\n\n if (\n Object.prototype.toString.call(options.overrides) !== '[object Object]'\n ) {\n throw new Error(`markdown-to-jsx: options.overrides (second argument property) must be\n undefined or an object literal with shape:\n {\n htmltagname: {\n component: string|ReactComponent(optional),\n props: object(optional)\n }\n }`)\n }\n }\n\n const footnotes: { footnote: string; identifier: string }[] = []\n const refs: { [key: string]: { target: string; title: string } } = {}\n\n /**\n * each rule's react() output function goes through our custom\n * h() JSX pragma; this allows the override functionality to be\n * automatically applied\n */\n // @ts-ignore\n const rules: MarkdownToJSX.Rules = {\n [RuleType.blockQuote]: {\n _qualify: ['>'],\n _match: blockRegex(BLOCKQUOTE_R),\n _order: Priority.HIGH,\n _parse(capture, parse, state) {\n const [, alert, content] = capture[0]\n .replace(BLOCKQUOTE_TRIM_LEFT_MULTILINE_R, '')\n .match(BLOCKQUOTE_ALERT_R)\n\n return {\n alert,\n children: parse(content, state),\n }\n },\n _render(node, output, state) {\n const props = {\n key: state.key,\n } as Record<string, unknown>\n\n if (node.alert) {\n props.className =\n 'markdown-alert-' + slug(node.alert.toLowerCase(), slugify)\n\n node.children.unshift({\n attrs: {},\n children: [{ type: RuleType.text, text: node.alert }],\n noInnerParse: true,\n type: RuleType.htmlBlock,\n tag: 'header',\n })\n }\n\n return h('blockquote', props, output(node.children, state))\n },\n },\n\n [RuleType.breakLine]: {\n _qualify: [' '],\n _match: anyScopeRegex(BREAK_LINE_R),\n _order: Priority.HIGH,\n _parse: captureNothing,\n _render(_, __, state) {\n return <br key={state.key} />\n },\n },\n\n [RuleType.breakThematic]: {\n _qualify: ['--', '__', '**', '- ', '* ', '_ '],\n _match: blockRegex(BREAK_THEMATIC_R),\n _order: Priority.HIGH,\n _parse: captureNothing,\n _render(_, __, state) {\n return <hr key={state.key} />\n },\n },\n\n [RuleType.codeBlock]: {\n _qualify: [' '],\n _match: blockRegex(CODE_BLOCK_R),\n _order: Priority.MAX,\n _parse(capture /*, parse, state*/) {\n return {\n lang: undefined,\n text: unescape(trimEnd(capture[0].replace(/^ {4}/gm, ''))),\n }\n },\n\n _render(node, output, state) {\n return (\n <pre key={state.key}>\n <code\n {...node.attrs}\n className={node.lang ? `lang-${node.lang}` : ''}\n >\n {node.text}\n </code>\n </pre>\n )\n },\n } as MarkdownToJSX.Rule<{\n attrs?: ReturnType<typeof attrStringToMap>\n lang?: string\n text: string\n }>,\n\n [RuleType.codeFenced]: {\n _qualify: ['```', '~~~'],\n _match: blockRegex(CODE_BLOCK_FENCED_R),\n _order: Priority.MAX,\n _parse(capture /*, parse, state*/) {\n return {\n // if capture[3] it's additional metadata\n attrs: attrStringToMap('code', capture[3] || ''),\n lang: capture[2] || undefined,\n text: capture[4],\n type: RuleType.codeBlock,\n }\n },\n },\n\n [RuleType.codeInline]: {\n _qualify: ['`'],\n _match: simpleInlineRegex(CODE_INLINE_R),\n _order: Priority.LOW,\n _parse(capture /*, parse, state*/) {\n return {\n text: unescape(capture[2]),\n }\n },\n _render(node, output, state) {\n return <code key={state.key}>{node.text}</code>\n },\n },\n\n /**\n * footnotes are emitted at the end of compilation in a special <footer> block\n */\n [RuleType.footnote]: {\n _qualify: ['[^'],\n _match: blockRegex(FOOTNOTE_R),\n _order: Priority.MAX,\n _parse(capture /*, parse, state*/) {\n footnotes.push({\n footnote: capture[2],\n identifier: capture[1],\n })\n\n return {}\n },\n _render: renderNothing,\n },\n\n [RuleType.footnoteReference]: {\n _qualify: ['[^'],\n _match: inlineRegex(FOOTNOTE_REFERENCE_R),\n _order: Priority.HIGH,\n _parse(capture /*, parse*/) {\n return {\n target: `#${slug(capture[1], slugify)}`,\n text: capture[1],\n }\n },\n _render(node, output, state) {\n return (\n <a key={state.key} href={sanitize(node.target, 'a', 'href')}>\n <sup key={state.key}>{node.text}</sup>\n </a>\n )\n },\n } as MarkdownToJSX.Rule<{ target: string; text: string }>,\n\n [RuleType.gfmTask]: {\n _qualify: ['[ ]', '[x]'],\n _match: inlineRegex(GFM_TASK_R),\n _order: Priority.HIGH,\n _parse(capture /*, parse, state*/) {\n return {\n completed: capture[1].toLowerCase() === 'x',\n }\n },\n _render(node, output, state) {\n return (\n <input\n checked={node.completed}\n key={state.key}\n readOnly\n type=\"checkbox\"\n />\n )\n },\n } as MarkdownToJSX.Rule<{ completed: boolean }>,\n\n [RuleType.heading]: {\n _qualify: ['#'],\n _match: blockRegex(\n options.enforceAtxHeadings ? HEADING_ATX_COMPLIANT_R : HEADING_R\n ),\n _order: Priority.HIGH,\n _parse(capture, parse, state) {\n return {\n children: parseInline(parse, capture[2], state),\n id: slug(capture[2], slugify),\n level: capture[1].length as MarkdownToJSX.HeadingNode['level'],\n }\n },\n _render(node, output, state) {\n return h(\n `h${node.level}`,\n { id: node.id, key: state.key },\n output(node.children, state)\n )\n },\n },\n\n [RuleType.headingSetext]: {\n _qualify: source => {\n const nlIndex = source.indexOf('\\n')\n return (\n nlIndex > 0 &&\n nlIndex < source.length - 1 &&\n (source[nlIndex + 1] === '=' || source[nlIndex + 1] === '-')\n )\n },\n _match: blockRegex(HEADING_SETEXT_R),\n _order: Priority.MAX,\n _parse(capture, parse, state) {\n return {\n children: parseInline(parse, capture[1], state),\n level: capture[2] === '=' ? 1 : 2,\n type: RuleType.heading,\n }\n },\n },\n\n [RuleType.htmlBlock]: {\n _qualify: ['<'],\n /**\n * find the first matching end tag and process the interior\n */\n _match: anyScopeRegex(HTML_BLOCK_ELEMENT_R),\n _order: Priority.HIGH,\n _parse(capture, parse, state) {\n const [, whitespace] = capture[3].match(HTML_LEFT_TRIM_AMOUNT_R)\n\n const trimmer = new RegExp(`^${whitespace}`, 'gm')\n const trimmed = capture[3].replace(trimmer, '')\n\n const parseFunc = containsBlockSyntax(trimmed)\n ? parseBlock\n : parseInline\n\n const tagName = capture[1].toLowerCase() as MarkdownToJSX.HTMLTags\n const noInnerParse =\n DO_NOT_PROCESS_HTML_ELEMENTS.indexOf(tagName) !== -1\n\n const tag = (\n noInnerParse ? tagName : capture[1]\n ).trim() as MarkdownToJSX.HTMLTags\n\n const ast = {\n attrs: attrStringToMap(tag, capture[2]),\n noInnerParse: noInnerParse,\n tag,\n } as {\n attrs: ReturnType<typeof attrStringToMap>\n children?: ReturnType<MarkdownToJSX.NestedParser> | undefined\n noInnerParse: Boolean\n tag: MarkdownToJSX.HTMLTags\n text?: string | undefined\n }\n\n state.inAnchor = state.inAnchor || tagName === 'a'\n\n if (noInnerParse) {\n ast.text = capture[3]\n } else {\n const prevInHTML = state.inHTML\n state.inHTML = true\n ast.children = parseFunc(parse, trimmed, state)\n state.inHTML = prevInHTML\n }\n\n /**\n * if another html block is detected within, parse as block,\n * otherwise parse as inline to pick up any further markdown\n */\n state.inAnchor = false\n\n return ast\n },\n _render(node, output, state) {\n return (\n <node.tag key={state.key} {...node.attrs}>\n {node.text || (node.children ? output(node.children, state) : '')}\n </node.tag>\n )\n },\n },\n\n [RuleType.htmlSelfClosing]: {\n _qualify: ['<'],\n /**\n * find the first matching end tag and process the interior\n */\n _match: anyScopeRegex(HTML_SELF_CLOSING_ELEMENT_R),\n _order: Priority.HIGH,\n _parse(capture /*, parse, state*/) {\n const tag = capture[1].trim() as MarkdownToJSX.HTMLTags\n return {\n attrs: attrStringToMap(tag, capture[2] || ''),\n tag,\n }\n },\n _render(node, output, state) {\n return <node.tag {...node.attrs} key={state.key} />\n },\n },\n\n [RuleType.htmlComment]: {\n _qualify: ['<!--'],\n _match: anyScopeRegex(HTML_COMMENT_R),\n _order: Priority.HIGH,\n _parse() {\n return {}\n },\n _render: renderNothing,\n },\n\n [RuleType.image]: {\n _qualify: ['!['],\n _match: simpleInlineRegex(IMAGE_R),\n _order: Priority.HIGH,\n _parse(capture /*, parse, state*/) {\n return {\n alt: unescape(capture[1]),\n target: unescape(capture[2]),\n title: unescape(capture[3]),\n }\n },\n _render(node, output, state) {\n return (\n <img\n key={state.key}\n alt={node.alt || undefined}\n title={node.title || undefined}\n src={sanitize(node.target, 'img', 'src')}\n />\n )\n },\n } as MarkdownToJSX.Rule<{\n alt?: string\n target: string\n title?: string\n }>,\n\n [RuleType.link]: {\n _qualify: ['['],\n _match: inlineRegex(LINK_R),\n _order: Priority.LOW,\n _parse(capture, parse, state) {\n return {\n children: parseSimpleInline(parse, capture[1], state),\n target: unescape(capture[2]),\n title: unescape(capture[3]),\n }\n },\n _render(node, output, state) {\n return (\n <a\n key={state.key}\n href={sanitize(node.target, 'a', 'href')}\n title={node.title}\n >\n {output(node.children, state)}\n </a>\n )\n },\n },\n\n // https://daringfireball.net/projects/markdown/syntax#autolink\n [RuleType.linkAngleBraceStyleDetector]: {\n _qualify: ['<'],\n _match: inlineRegex(LINK_AUTOLINK_R),\n _order: Priority.MAX,\n _parse(capture /*, parse, state*/) {\n let target = capture[1]\n let isEmail = false\n\n if (\n target.indexOf('@') !== -1 &&\n // emails don't have protocols in them\n target.indexOf('//') === -1\n ) {\n isEmail = true\n target = target.replace('mailto:', '')\n }\n\n return {\n children: [\n {\n text: target,\n type: RuleType.text,\n },\n ],\n target: isEmail ? 'mailto:' + target : target,\n type: RuleType.link,\n }\n },\n },\n\n [RuleType.linkBareUrlDetector]: {\n _qualify: (source, state) => {\n if (state.inAnchor || options.disableAutoLink) return false\n return startsWith(source, 'http://') || startsWith(source, 'https://')\n },\n _match: inlineRegex(LINK_AUTOLINK_BARE_URL_R),\n _order: Priority.MAX,\n _parse(capture /*, parse, state*/) {\n return {\n children: [\n {\n text: capture[1],\n type: RuleType.text,\n },\n ],\n target: capture[1],\n title: undefined,\n type: RuleType.link,\n }\n },\n },\n\n [RuleType.orderedList]: generateListRule(\n h,\n ORDERED\n ) as MarkdownToJSX.Rule<MarkdownToJSX.OrderedListNode>,\n\n [RuleType.unorderedList]: generateListRule(\n h,\n UNORDERED\n ) as MarkdownToJSX.Rule<MarkdownToJSX.UnorderedListNode>,\n\n [RuleType.newlineCoalescer]: {\n _qualify: ['\\n'],\n _match: blockRegex(CONSECUTIVE_NEWLINE_R),\n _order: Priority.LOW,\n _parse: captureNothing,\n _render(/*node, output, state*/) {\n return '\\n'\n },\n },\n\n [RuleType.paragraph]: {\n _match: allowInline(matchParagraph),\n _order: Priority.LOW,\n _parse: parseCaptureInline,\n _render(node, output, state) {\n return <p key={state.key}>{output(node.children, state)}</p>\n },\n } as MarkdownToJSX.Rule<ReturnType<typeof parseCaptureInline>>,\n\n [RuleType.ref]: {\n _qualify: ['['],\n _match: inlineRegex(REFERENCE_IMAGE_OR_LINK),\n _order: Priority.MAX,\n _parse(capture /*, parse*/) {\n refs[capture[1]] = {\n target: capture[2],\n title: capture[4],\n }\n\n return {}\n },\n _render: renderNothing,\n },\n\n [RuleType.refImage]: {\n _qualify: ['!['],\n _match: simpleInlineRegex(REFERENCE_IMAGE_R),\n _order: Priority.MAX,\n _parse(capture) {\n return {\n alt: capture[1] ? unescape(capture[1]) : undefined,\n ref: capture[2],\n }\n },\n _render(node, output, state) {\n return refs[node.ref] ? (\n <img\n key={state.key}\n alt={node.alt}\n src={sanitize(refs[node.ref].target, 'img', 'src')}\n title={refs[node.ref].title}\n />\n ) : null\n },\n } as MarkdownToJSX.Rule<{ alt?: string; ref: string }>,\n\n [RuleType.refLink]: {\n _qualify: source => source[0] === '[' && source.indexOf('](') === -1,\n _match: inlineRegex(REFERENCE_LINK_R),\n _order: Priority.MAX,\n _parse(capture, parse, state) {\n return {\n children: parse(capture[1], state),\n fallbackChildren: capture[0],\n ref: capture[2],\n }\n },\n _render(node, output, state) {\n return refs[node.ref] ? (\n <a\n key={state.key}\n href={sanitize(refs[node.ref].target, 'a', 'href')}\n title={refs[node.ref].title}\n >\n {output(node.children, state)}\n </a>\n ) : (\n <span key={state.key}>{node.fallbackChildren}</span>\n )\n },\n },\n\n [RuleType.table]: {\n _qualify: ['|'],\n _match: blockRegex(NP_TABLE_R),\n _order: Priority.HIGH,\n _parse: parseTable,\n _render(node, output, state) {\n const table = node as MarkdownToJSX.TableNode\n return (\n <table key={state.key}>\n <thead>\n <tr>\n {table.header.map(function generateHeaderCell(content, i) {\n return (\n <th key={i} style={getTableStyle(table, i)}>\n {output(content, state)}\n </th>\n )\n })}\n </tr>\n </thead>\n\n <tbody>\n {table.cells.map(function generateTableRow(row, i) {\n return (\n <tr key={i}>\n {row.map(function generateTableCell(content, c) {\n return (\n <td key={c} style={getTableStyle(table, c)}>\n {output(content, state)}\n </td>\n )\n })}\n </tr>\n )\n })}\n </tbody>\n </table>\n )\n },\n },\n\n [RuleType.text]: {\n // Here we look for anything followed by non-symbols,\n // double newlines, or double-space-newlines\n // We break on any symbol characters so that this grammar\n // is easy to extend without needing to modify this regex\n _match: allowInline(function (source, state) {\n let ret\n if (startsWith(source, ':')) ret = SHORTCODE_R.exec(source)\n if (ret) return ret\n\n return TEXT_PLAIN_R.exec(source)\n }),\n _order: Priority.MIN,\n _parse(capture) {\n const text = capture[0]\n return {\n text:\n text.indexOf('&') === -1\n ? text\n : text.replace(\n HTML_CHAR_CODE_R,\n (full, inner) => options.namedCodesToUnicode[inner] || full\n ),\n }\n },\n _render(node) {\n return node.text\n },\n },\n\n [RuleType.textBolded]: {\n _qualify: ['**', '__'],\n _match: simpleInlineRegex(TEXT_BOLD_R),\n _order: Priority.MED,\n _parse(capture, parse, state) {\n return {\n // capture[1] -> the syntax control character\n // capture[2] -> inner content\n children: parse(capture[2], state),\n }\n },\n _render(node, output, state) {\n return <strong key={state.key}>{output(node.children, state)}</strong>\n },\n },\n\n [RuleType.textEmphasized]: {\n _qualify: source => {\n const char = source[0]\n return (char === '*' || char === '_') && source[1] !== char\n },\n _match: simpleInlineRegex(TEXT_EMPHASIZED_R),\n _order: Priority.LOW,\n _parse(capture, parse, state) {\n return {\n // capture[1] -> opening * or _\n // capture[2] -> inner content\n children: parse(capture[2], state),\n }\n },\n _render(node, output, state) {\n return <em key={state.key}>{output(node.children, state)}</em>\n },\n },\n\n [RuleType.textEscaped]: {\n _qualify: ['\\\\'],\n // We don't allow escaping numbers, letters, or spaces here so that\n // backslashes used in plain text still get rendered. But allowing\n // escaping anything else provides a very flexible escape mechanism,\n // regardless of how this grammar is extended.\n _match: simpleInlineRegex(TEXT_ESCAPED_R),\n _order: Priority.HIGH,\n _parse(capture /*, parse, state*/) {\n return {\n text: capture[1],\n type: RuleType.text,\n }\n },\n },\n\n [RuleType.textMarked]: {\n _qualify: ['=='],\n _match: simpleInlineRegex(TEXT_MARKED_R),\n _order: Priority.LOW,\n _parse: parseCaptureInline,\n _render(node, output, state) {\n return <mark key={state.key}>{output(node.children, state)}</mark>\n },\n },\n\n [RuleType.textStrikethroughed]: {\n _qualify: ['~~'],\n _match: simpleInlineRegex(TEXT_STRIKETHROUGHED_R),\n _order: Priority.LOW,\n _parse: parseCaptureInline,\n _render(node, output, state) {\n return <del key={state.key}>{output(node.children, state)}</del>\n },\n },\n }\n\n const isDebug = !!process.env.DEBUG && process.env.DEBUG !== '0'\n\n let invocationCounts, ruleNames: { [key: string]: string }\n\n if (isDebug) {\n // Initialize invocation counters for debugging\n invocationCounts = {\n match: { total: 0, attempts: 0 },\n parse: { total: 0 },\n }\n\n // Create a reverse mapping from numeric keys to rule names for better debugging output\n ruleNames = {}\n Object.keys(RuleType).forEach(ruleKey => {\n ruleNames[RuleType[ruleKey as keyof typeof RuleType]] = ruleKey\n })\n\n Object.keys(rules).forEach(key => {\n let { _match: match, _parse: parse } = rules[key]\n\n // Initialize per-rule counters: [matches, attempts, max]\n invocationCounts.match[key] = [0, 0, 0]\n // [exections, cost, max]\n invocationCounts.parse[key] = [0, 0, 0]\n\n rules[key]._match = (...args) => {\n // Track attempts for miss ratio calculation\n invocationCounts.match.attempts++\n invocationCounts.match[key][1]++ // attempts for this rule\n\n const start = performance.now()\n const result = match(...args)\n const delta = performance.now() - start\n\n invocationCounts.match[key][2] = Math.max(\n Number(invocationCounts.match[key][2]) || 0,\n delta\n )\n\n if (result) {\n // Successful match\n invocationCounts.match.total++\n invocationCounts.match[key][0]++ // matches for this rule\n\n if (process.env.DEBUG?.includes('speed')) {\n console[delta > 5 ? 'warn' : 'log'](\n `${ruleNames[key] || key}:match`,\n `${delta.toFixed(3)}ms`,\n args[0]\n )\n }\n } else if (process.env.DEBUG?.includes('miss')) {\n console.log(\n `\\n${ruleNames[key] || key}:miss`,\n JSON.stringify(args[0])\n )\n }\n\n return result\n }\n\n rules[key]._parse = (...args) => {\n invocationCounts.parse.total++\n invocationCounts.parse[key][0] += 1\n const start = performance.now()\n const result = parse(...args)\n const delta = performance.now() - start\n\n invocationCounts.parse[key][1] += delta\n invocationCounts.parse[key][2] = Math.max(\n Number(invocationCounts.parse[key][2]) || 0,\n delta\n )\n\n if (process.env.DEBUG?.includes('speed')) {\n console[delta > 5 ? 'warn' : 'log'](\n `${ruleNames[key] || key}:parse`,\n `${delta.toFixed(3)}ms`,\n args[0]\n )\n }\n\n return result\n }\n })\n }\n\n if (options.disableParsingRawHTML === true) {\n delete rules[RuleType.htmlBlock]\n delete rules[RuleType.htmlSelfClosing]\n }\n\n const parser = parserFor(rules)\n const emitter = createRenderer(rules, options.renderRule)\n\n const jsx = compile(markdown)\n\n if (isDebug) {\n // Log invocation counts for debugging with readable rule names and miss ratios\n const matchCountsWithNames: { [key: string]: any } = {\n total: invocationCounts.match.total,\n attempts: invocationCounts.match.attempts,\n missRatio:\n invocationCounts.match.attempts > 0\n ? (\n ((invocationCounts.match.attempts -\n invocationCounts.match.total) /\n invocationCounts.match.attempts) *\n 100\n ).toFixed(1) + '%'\n : '0%',\n }\n\n const parseCountsWithNames: {\n [key: string]: { executions: number; cost: number; max: number } | number\n } = {\n total: invocationCounts.parse.total,\n }\n\n Object.keys(invocationCounts.match).forEach(key => {\n if (key !== 'total' && key !== 'attempts') {\n const ruleName = ruleNames[key] || key\n const [matches, attempts, max] = invocationCounts.match[key]\n matchCountsWithNames[ruleName] = {\n matches,\n attempts,\n missRatio:\n attempts > 0\n ? (((attempts - matches) / attempts) * 100).toFixed(1) + '%'\n : '0%',\n max: max.toFixed(3),\n }\n }\n })\n\n Object.keys(invocationCounts.parse).forEach(key => {\n if (key !== 'total') {\n const ruleName = ruleNames[key] || key\n const [executions, cost, max] = invocationCounts.parse[key]\n parseCountsWithNames[ruleName] = {\n executions,\n cost: cost.toFixed(3),\n max: max.toFixed(3),\n }\n }\n })\n\n console.log('Match invocations:', matchCountsWithNames)\n console.log('Parse invocations:', parseCountsWithNames)\n }\n\n if (footnotes.length) {\n return (\n <div>\n {jsx}\n <footer key=\"footer\">\n {footnotes.map(function createFootnote(def) {\n return (\n <div id={slug(def.identifier, slugify)} key={def.identifier}>\n {def.identifier}\n {emitter(parser(def.footnote, { inline: true }))}\n </div>\n )\n })}\n </footer>\n </div>\n )\n }\n\n return jsx\n}\n\n/**\n * A simple HOC for easy React use. Feed the markdown content as a direct child\n * and the rest is taken care of automatically.\n */\nconst Markdown: React.FC<\n Omit<React.HTMLAttributes<Element>, 'children'> & {\n children: string\n options?: MarkdownToJSX.Options\n }\n> = ({ children = '', options, ...props }) => {\n if (process.env.NODE_ENV !== 'production' && typeof children !== 'string') {\n console.error(\n 'markdown-to-jsx: <Markdown> component only accepts a single string as a child, received:',\n children\n )\n }\n\n return React.cloneElement(\n compiler(children, options),\n props as React.JSX.IntrinsicAttributes\n )\n}\n\nexport namespace MarkdownToJSX {\n /**\n * RequireAtLeastOne<{ ... }> <- only requires at least one key\n */\n type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<\n T,\n Exclude<keyof T, Keys>\n > &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>\n }[Keys]\n\n export type CreateElement = typeof React.createElement\n\n export type HTMLTags = keyof React.JSX.IntrinsicElements\n\n export type State = {\n /** true if the current content is inside anchor link grammar */\n inAnchor?: boolean\n /** true if parsing in an HTML context */\n inHTML?: boolean\n /** true if parsing in an inline context (subset of rules around formatting and links) */\n inline?: boolean\n /** true if in a table */\n inTable?: boolean\n /** use this for the `key` prop */\n key?: React.Key\n /** true if in a list */\n list?: boolean\n /** used for lookbacks */\n prevCapture?: string\n /** true if parsing in inline context w/o links */\n simple?: boolean\n }\n\n export interface BlockQuoteNode {\n alert?: string\n children: MarkdownToJSX.ParserResult[]\n type: typeof RuleType.blockQuote\n }\n\n export interface BreakLineNode {\n type: typeof RuleType.breakLine\n }\n\n export interface BreakThematicNode {\n type: typeof RuleType.breakThematic\n }\n\n export interface CodeBlockNode {\n type: typeof RuleType.codeBlock\n attrs?: React.JSX.IntrinsicAttributes\n lang?: string\n text: string\n }\n\n export interface CodeFencedNode {\n type: typeof RuleType.codeFenced\n }\n\n export interface CodeInlineNode {\n type: typeof RuleType.codeInline\n text: string\n }\n\n export interface FootnoteNode {\n type: typeof RuleType.footnote\n }\n\n export interface FootnoteReferenceNode {\n type: typeof RuleType.footnoteReference\n target: string\n text: string\n }\n\n export interface GFMTaskNode {\n type: typeof RuleType.gfmTask\n completed: boolean\n }\n\n export interface HeadingNode {\n type: typeof RuleType.heading\n children: MarkdownToJSX.ParserResult[]\n id: string\n level: 1 | 2 | 3 | 4 | 5 | 6\n }\n\n export interface HeadingSetextNode {\n type: typeof RuleType.headingSetext\n }\n\n export interface HTMLCommentNode {\n type: typeof RuleType.htmlComment\n }\n\n export interface ImageNode {\n type: typeof RuleType.image\n alt?: string\n target: string\n title?: string\n }\n\n export interface LinkNode {\n type: typeof RuleType.link\n children: MarkdownToJSX.ParserResult[]\n target: string\n title?: string\n }\n\n export interface LinkAngleBraceNode {\n type: typeof RuleType.linkAngleBraceStyleDetector\n }\n\n export interface LinkBareURLNode {\n type: typeof RuleType.linkBareUrlDetector\n }\n\n export interface LinkMailtoNode {\n type: typeof RuleType.linkMailtoDetector\n }\n\n export interface OrderedListNode {\n type: typeof RuleType.orderedList\n items: MarkdownToJSX.ParserResult[][]\n ordered: true\n start?: number\n }\n\n export interface UnorderedListNode {\n type: typeof RuleType.unorderedList\n items: MarkdownToJSX.ParserResult[][]\n ordered: false\n }\n\n export interface NewlineNode {\n type: typeof RuleType.newlineCoalescer\n }\n\n export interface ParagraphNode {\n type: typeof RuleType.paragraph\n children: MarkdownToJSX.ParserResult[]\n }\n\n export interface ReferenceNode {\n type: typeof RuleType.ref\n }\n\n export interface ReferenceImageNode {\n type: typeof RuleType.refImage\n alt?: string\n ref: string\n }\n\n export interface ReferenceLinkNode {\n type: typeof RuleType.refLink\n children: MarkdownToJSX.ParserResult[]\n fallbackChildren: string\n ref: string\n }\n\n export interface TableNode {\n type: typeof RuleType.table\n /**\n * alignment for each table column\n */\n align: ('left' | 'right' | 'center')[]\n cells: MarkdownToJSX.ParserResult[][][]\n header: MarkdownToJSX.ParserResult[][]\n }\n\n export interface TableSeparatorNode {\n type: typeof RuleType.tableSeparator\n }\n\n export interface TextNode {\n type: typeof RuleType.text\n text: string\n }\n\n export interface BoldTextNode {\n type: typeof RuleType.textBolded\n children: MarkdownToJSX.ParserResult[]\n }\n\n export interface ItalicTextNode {\n type: typeof RuleType.textEmphasized\n children: MarkdownToJSX.ParserResult[]\n }\n\n export interface EscapedTextNode {\n type: typeof RuleType.textEscaped\n }\n\n export interface MarkedTextNode {\n type: typeof RuleType.textMarked\n children: MarkdownToJSX.ParserResult[]\n }\n\n export interface StrikethroughTextNode {\n type: typeof RuleType.textStrikethroughed\n children: MarkdownToJSX.ParserResult[]\n }\n\n export interface HTMLNode {\n type: typeof RuleType.htmlBlock\n attrs: React.JSX.IntrinsicAttributes\n children?: ReturnType<MarkdownToJSX.NestedParser> | undefined\n noInnerParse: Boolean\n tag: MarkdownToJSX.HTMLTags\n text?: string | undefined\n }\n\n export interface HTMLSelfClosingNode {\n type: typeof RuleType.htmlSelfClosing\n attrs: React.JSX.IntrinsicAttributes\n tag: string\n }\n\n export type ParserResult =\n | BlockQuoteNode\n | BreakLineNode\n | BreakThematicNode\n | CodeBlockNode\n | CodeFencedNode\n | CodeInlineNode\n | FootnoteNode\n | FootnoteReferenceNode\n | GFMTaskNode\n | HeadingNode\n | HeadingSetextNode\n | HTMLCommentNode\n | ImageNode\n | LinkNode\n | LinkAngleBraceNode\n | LinkBareURLNode\n | LinkMailtoNode\n | OrderedListNode\n | UnorderedListNode\n | NewlineNode\n | ParagraphNode\n | ReferenceNode\n | ReferenceImageNode\n | ReferenceLinkNode\n | TableNode\n | TableSeparatorNode\n | TextNode\n | BoldTextNode\n | ItalicTextNode\n | EscapedTextNode\n | MarkedTextNode\n | StrikethroughTextNode\n | HTMLNode\n | HTMLSelfClosingNode\n\n export type NestedParser = (\n input: string,\n state?: MarkdownToJSX.State\n ) => MarkdownToJSX.ParserResult[]\n\n export type Parser<ParserOutput> = (\n capture: RegExpMatchArray,\n nestedParse: NestedParser,\n state?: MarkdownToJSX.State\n ) => ParserOutput\n\n export type RuleOutput = (\n ast: MarkdownToJSX.ParserResult | MarkdownToJSX.ParserResult[],\n state: MarkdownToJSX.State\n ) => React.ReactNode\n\n export type Rule<ParserOutput = MarkdownToJSX.ParserResult> = {\n _match: (\n source: string,\n state: MarkdownToJSX.State,\n prevCapturedString?: string\n ) => RegExpMatchArray\n _order: (typeof Priority)[keyof typeof Priority]\n _parse: MarkdownToJSX.Parser<Omit<ParserOutput, 'type'>>\n /**\n * Optional fast check that can quickly determine if this rule\n * should even be attempted. Should check the start of the source string\n * for quick patterns without expensive regex operations.\n *\n * @param source The input source string (already trimmed of leading whitespace)\n * @param state Current parser state\n * @returns true if the rule should be attempted, false to skip\n */\n _qualify?:\n | string[]\n | ((source: string, state: MarkdownToJSX.State) => boolean)\n _render?: (\n node: ParserOutput,\n /**\n * Continue rendering AST nodes if applicable.\n */\n render: RuleOutput,\n state?: MarkdownToJSX.State\n ) => React.ReactNode\n }\n\n export type Rules = {\n [K in ParserResult['type']]: K extends typeof RuleType.table\n ? Rule<Extract<ParserResult, { type: K | typeof RuleType.paragraph }>>\n : Rule<Extract<ParserResult, { type: K }>>\n }\n\n export type Override =\n | RequireAtLeastOne<{\n component: React.ElementType\n props: Object\n }>\n | React.ElementType\n\n export type Overrides = {\n [tag in HTMLTags]?: Override\n } & {\n [customComponent: string]: Override\n }\n\n export type Options = Partial<{\n /**\n * Ultimate control over the output of all rendered JSX.\n */\n createElement: (\n tag: Parameters<CreateElement>[0],\n props: React.JSX.IntrinsicAttributes,\n ...children: React.ReactNode[]\n ) => React.ReactNode\n\n /**\n * The library automatically generates an anchor tag for bare URLs included in the markdown\n * document, but this behavior can be disabled if desired.\n */\n disableAutoLink: boolean\n\n /**\n * Disable the compiler's best-effort transcription of provided raw HTML\n * into JSX-equivalent. This is the functionality that prevents the need to\n * use `dangerouslySetInnerHTML` in React.\n */\n disableParsingRawHTML: boolean\n\n /**\n * Forces the compiler to have space between hash sign and the header text which\n * is explicitly stated in the most of the markdown specs.\n * https://github.github.com/gfm/#atx-heading\n * `The opening sequence of # characters must be followed by a space or by the end of line.`\n */\n enforceAtxHeadings: boolean\n\n /**\n * Forces the compiler to always output content with a block-level wrapper\n * (`<p>` or any block-level syntax your markdown already contains.)\n */\n forceBlock: boolean\n\n /**\n * Forces the compiler to always output content with an inline wrapper (`<span>`)\n */\n forceInline: boolean\n\n /**\n * Forces the compiler to wrap results, even if there is only a single\n * child or no children.\n */\n forceWrapper: boolean\n\n /**\n * Supply additional HTML entity: unicode replacement mappings.\n *\n * Pass only the inner part of the entity as the key,\n * e.g. `≤` -> `{ \"le\": \"\\u2264\" }`\n *\n * By default\n * the following entities are replaced with their unicode equivalents:\n *\n * ```\n * &\n * '\n * >\n * <\n * \n * "\n * ```\n */\n namedCodesToUnicode: {\n [key: string]: string\n }\n\n /**\n * Selectively control the output of particular HTML tags as they would be\n * emitted by the compiler.\n */\n overrides: Overrides\n\n /**\n * Allows for full control over rendering of particular rules.\n * For example, to implement a LaTeX renderer such as `react-katex`:\n *\n * ```\n * renderRule(next, node, renderChildren, state) {\n * if (node.type === RuleType.codeBlock && node.lang === 'latex') {\n * return (\n * <TeX as=\"div\" key={state.key}>\n * {String.raw`${node.text}`}\n * </TeX>\n * )\n * }\n *\n * return next();\n * }\n * ```\n *\n * Thar be dragons obviously, but you can do a lot with this\n * (have fun!) To see how things work internally, check the `render`\n * method in source for a particular rule.\n */\n renderRule: (\n /** Resume normal processing, call this function as a fallback if you are not returning custom JSX. */\n next: () => React.ReactNode,\n /** the current AST node, use `RuleType` against `node.type` for identification */\n node: ParserResult,\n /** use as `renderChildren(node.children)` for block nodes */\n renderChildren: RuleOutput,\n /** contains `key` which should be supplied to the topmost JSX element */\n state: State\n ) => React.ReactNode\n\n /**\n * Override the built-in sanitizer function for URLs, etc if desired. The built-in version is available as a library export called `sanitizer`.\n */\n sanitizer: (\n value: string,\n tag: HTMLTags,\n attribute: string\n ) => string | null\n\n /**\n * Override normalization of non-URI-safe characters for use in generating\n * HTML IDs for anchor linking purposes.\n */\n slugify: (input: string, defaultFn: (input: string) => string) => string\n\n /**\n * Declare the type of the wrapper to be used when there are multiple\n * children to render. Set to `null` to get an array of children back\n * without any wrapper, or use `React.Fragment` to get a React element\n * that won't show up in the DOM.\n */\n wrapper: React.ElementType | null\n }>\n}\n\nexport default Markdown\n"],"names":["RuleType","blockQuote","breakLine","breakThematic","codeBlock","codeFenced","codeInline","footnote","footnoteReference","gfmTask","heading","headingSetext","htmlBlock","htmlComment","htmlSelfClosing","image","link","linkAngleBraceStyleDetector","linkBareUrlDetector","linkMailtoDetector","newlineCoalescer","orderedList","paragraph","ref","refImage","refLink","table","tableSeparator","text","textBolded","textEmphasized","textEscaped","textMarked","textStrikethroughed","unorderedList","ATTRIBUTE_TO_JSX_PROP_MAP","reduce","obj","x","toLowerCase","class","for","namedCodesToUnicode","amp","apos","gt","lt","nbsp","quot","DO_NOT_PROCESS_HTML_ELEMENTS","ATTRIBUTES_TO_SANITIZE","ATTR_EXTRACTOR_R","BLOCK_END_R","BLOCKQUOTE_R","BLOCKQUOTE_TRIM_LEFT_MULTILINE_R","BLOCKQUOTE_ALERT_R","BREAK_LINE_R","BREAK_THEMATIC_R","CODE_BLOCK_FENCED_R","CODE_BLOCK_R","CODE_INLINE_R","CONSECUTIVE_NEWLINE_R","CR_NEWLINE_R","FOOTNOTE_R","FOOTNOTE_REFERENCE_R","FORMFEED_R","FRONT_MATTER_R","GFM_TASK_R","HEADING_R","HEADING_ATX_COMPLIANT_R","HEADING_SETEXT_R","HTML_BLOCK_ELEMENT_R","HTML_CHAR_CODE_R","HTML_COMMENT_R","HTML_CUSTOM_ATTR_R","HTML_SELF_CLOSING_ELEMENT_R","INTERPOLATION_R","LINK_AUTOLINK_BARE_URL_R","LINK_AUTOLINK_R","CAPTURE_LETTER_AFTER_HYPHEN","NP_TABLE_R","PARAGRAPH_R","REFERENCE_IMAGE_OR_LINK","REFERENCE_IMAGE_R","REFERENCE_LINK_R","SHOULD_RENDER_AS_BLOCK_R","TAB_R","TABLE_TRIM_PIPES","TABLE_CENTER_ALIGN","TABLE_LEFT_ALIGN","TABLE_RIGHT_ALIGN","LOOKAHEAD","double","INLINE_SKIP_R","TEXT_BOLD_R","RegExp","TEXT_EMPHASIZED_R","TEXT_MARKED_R","TEXT_STRIKETHROUGHED_R","SHORTCODE_R","TEXT_ESCAPED_R","UNESCAPE_R","TEXT_PLAIN_R","TRIM_STARTING_NEWLINES","HTML_LEFT_TRIM_AMOUNT_R","LIST_LOOKBEHIND_R","ORDERED_LIST_BULLET","UNORDERED_LIST_BULLET","generateListItemPrefix","type","ORDERED_LIST_ITEM_PREFIX","UNORDERED_LIST_ITEM_PREFIX","generateListItemPrefixRegex","ORDERED_LIST_ITEM_PREFIX_R","UNORDERED_LIST_ITEM_PREFIX_R","generateListItemRegex","ORDERED_LIST_ITEM_R","UNORDERED_LIST_ITEM_R","generateListRegex","bullet","ORDERED_LIST_R","UNORDERED_LIST_R","generateListRule","h","ordered","LIST_R","LIST_ITEM_R","LIST_ITEM_PREFIX_R","_qualify","source","test","_match","allowInline","state","isStartOfLine","exec","prevCapture","list","inline","simple","_order","_parse","capture","parse","start","undefined","items","replace","match","lastItemWasAParagraph","map","item","i","space","length","spaceRegex","content","isLastItem","thisItemIsAParagraph","indexOf","adjustedContent","oldStateInline","oldStateList","trimEnd","result","_render","node","output","key","LINK_R","IMAGE_R","isString","value","str","end","slice","startsWith","prefix","qualifies","qualify","Array","isArray","slugify","parseTableAlignCapture","alignCapture","parseTableRow","tableOutput","prevInTable","inTable","cells","acc","flush","cell","push","apply","trim","split","filter","Boolean","forEach","fragment","arr","parseTable","align","rowText","parseTableCells","header","children","getTableStyle","colIndex","textAlign","fn","inlineRegex","regex","simpleInlineRegex","blockRegex","anyScopeRegex","SANITIZE_R","sanitizer","input","decoded","decodeURIComponent","e","unescape","rawString","parseInline","isCurrentlyInline","isCurrentlySimple","parseSimpleInline","parseBlock","parseCaptureInline","captureNothing","renderNothing","cx","call","arguments","join","get","src","path","fb","ptr","frags","shift","getTag","tag","overrides","override","compiler","markdown","options","_extends","slug","sanitize","createElement","React","NON_PARAGRAPH_BLOCK_SYNTAXES","enforceAtxHeadings","BLOCK_SYNTAXES","concat","some","regexes","props","overrideProps","className","compile","forceInline","forceBlock","emitter","parser","pop","wrapper","jsx","forceWrapper","attrStringToMap","attributes","raw","delimiterIdx","_","letter","toUpperCase","normalizeAttributeKey","first","unquote","mappedKey","normalizedValue","sanitizeUrlFn","styleString","styles","buffer","inUrl","inQuotes","quoteChar","char","endsWith","declaration","colonIndex","parseStyleAttribute","_ref","substr","attributeValueToJSXPropValue","invocationCounts","ruleNames","footnotes","refs","rules","_rules","_capture$0$replace$ma","alert","unshift","attrs","noInnerParse","__","lang","identifier","target","href","completed","checked","readOnly","id","level","nlIndex","_capture$3$match","trimmer","trimmed","parseFunc","tagName","ast","inAnchor","prevInHTML","inHTML","alt","title","isEmail","disableAutoLink","newlineIndex","line","captured","fallbackChildren","style","row","c","ret","full","inner","isDebug","process","env","DEBUG","total","attempts","Object","keys","ruleKey","_rules$key","args","_process$env$DEBUG","performance","now","delta","Math","max","Number","includes","console","toFixed","_process$env$DEBUG2","log","JSON","stringify","_process$env$DEBUG3","disableParsingRawHTML","ruleList","nestedParse","ruleType","rule","substring","parsed","sort","a","b","normalizeWhitespace","parserFor","userRender","patchedRender","oldKey","lastWasString","nodeOut","_isString","render","renderer","renderRule","createRenderer","matchCountsWithNames","missRatio","parseCountsWithNames","_invocationCounts$mat","matches","_invocationCounts$par","executions","cost","def","_ref2","_ref2$children","_objectWithoutPropertiesLoose","_excluded","cloneElement"],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function r(r){if(r&&r.t)return r;var n=Object.create(null);return r&&Object.keys(r).forEach(function(e){if("default"!==e){var t=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:function(){return r[e]}})}}),n.default=r,n}var n=/*#__PURE__*/r(require("react"));function e(){return e=Object.assign?Object.assign.bind():function(r){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},e.apply(this,arguments)}var t=["children","options"],u={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"},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(r,n){return r[n.toLowerCase()]=n,r},{class:"className",for:"htmlFor"}),i={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},o=["style","script","pre"],c=["src","href","data","formAction","srcDoc","action"],f=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,l=/mailto:/i,_=/\n{2,}$/,d=/^(\s*>[\s\S]*?)(?=\n\n|$)/,s=/^ *> ?/gm,v=/^(?:\[!([^\]]*)\]\n)?([\s\S]*)/,p=/^ {2,}\n/,y=/^(?:( *[-*_])){3,} *(?:\n *)+\n/,h=/^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/,g=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,m=/^(`+)((?:\\`|(?!\1)`|[^`])+)\1/,k=/^(?:\n *)*\n/,x=/\r\n?/g,q=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,b=/^\[\^([^\]]+)]/,S=/\f/g,z=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,$=/^\s*?\[(x|\s)\]/,E=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,O=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,R=/^([^\n]+)\n *(=|-){3,} *\n/,j=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,A=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,B=/^<!--[\s\S]*?(?:-->)/,L=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,T=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,C=/^\{.*\}$/,I=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,M=/^<([^ >]+@[^ >]+)>/,w=/^<([^ >]+:\/[^ >]+)>/,D=/-([a-z])?/gi,F=/^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,P=/^[^\n]+(?: \n|\n{2,})/,Z=/^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/,N=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,G=/^\[([^\]]*)\] ?\[([^\]]*)\]/,U=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,V=/\t/g,H=/(^ *\||\| *$)/g,Q=/^ *:-+: *$/,W=/^ *:-+ *$/,J=/^ *-+: *$/,K=function(r){return"(?=[\\s\\S]+?\\1"+(r?"\\1":"")+")"},X="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)",Y=RegExp("^([*_])\\1"+K(1)+X+"\\1\\1(?!\\1)"),rr=RegExp("^([*_])"+K(0)+X+"\\1(?!\\1)"),nr=RegExp("^(==)"+K(0)+X+"\\1"),er=RegExp("^(~~)"+K(0)+X+"\\1"),tr=/^(:[a-zA-Z0-9-_]+:)/,ur=/^\\([^0-9A-Za-z\s])/,ar=/\\([^0-9A-Za-z\s])/g,ir=/^[\s\S](?:(?! \n|[0-9]\.|http)[^=*_~\-\n:<`\\\[!])*/,or=/^\n+/,cr=/^([ \t]*)/,fr=/(?:^|\n)( *)$/,lr="(?:\\d+\\.)",_r="(?:[*+-])";function dr(r){return"( *)("+(1===r?lr:_r)+") +"}var sr=dr(1),vr=dr(2);function pr(r){return RegExp("^"+(1===r?sr:vr))}var yr=pr(1),hr=pr(2);function gr(r){return RegExp("^"+(1===r?sr:vr)+"[^\\n]*(?:\\n(?!\\1"+(1===r?lr:_r)+" )[^\\n]*)*(\\n|$)","gm")}var mr=gr(1),kr=gr(2);function xr(r){var n=1===r?lr:_r;return RegExp("^( *)("+n+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+n+" (?!"+n+" ))\\n*|\\s*\\n*$)")}var qr=xr(1),br=xr(2);function Sr(r,n){var e=1===n,t=e?qr:br,a=e?mr:kr,i=e?yr:hr;return{u:function(r){return i.test(r)},i:Cr(function(r,n){var e=fr.exec(n.prevCapture);return e&&(n.list||!n.inline&&!n.simple)?t.exec(r=e[1]+r):null}),o:1,l:function(r,n,t){var u=e?+r[2]:void 0,o=r[0].replace(_,"\n").match(a),c=!1;return{items:o.map(function(r,e){var u=i.exec(r)[0].length,a=RegExp("^ {1,"+u+"}","gm"),f=r.replace(a,"").replace(i,""),l=e===o.length-1,_=-1!==f.indexOf("\n\n")||l&&c;c=_;var d,s=t.inline,v=t.list;t.list=!0,_?(t.inline=!1,d=Er(f)+"\n\n"):(t.inline=!0,d=Er(f));var p=n(d,t);return t.inline=s,t.list=v,p}),ordered:e,start:u}},_:function(n,e,t){return r(n.ordered?"ol":"ul",{key:t.key,start:n.type===u.orderedList?n.start:void 0},n.items.map(function(n,u){return r("li",{key:u},e(n,t))}))}}}var zr=RegExp("^\\[((?:\\[[^\\[\\]]*(?:\\[[^\\[\\]]*\\][^\\[\\]]*)*\\]|[^\\[\\]])*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),$r=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/;function Er(r){for(var n=r.length;n>0&&r[n-1]<=" ";)n--;return r.slice(0,n)}function Or(r,n){return r.startsWith(n)}function Rr(r,n,e){if(Array.isArray(e)){for(var t=0;t<e.length;t++)if(Or(r,e[t]))return!0;return!1}return e(r,n)}function jr(r){return r.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 Ar(r){return J.test(r)?"right":Q.test(r)?"center":W.test(r)?"left":null}function Br(r,n,e,t){var u=e.inTable;e.inTable=!0;var a=[[]],i="";function o(){if(i){var r=a[a.length-1];r.push.apply(r,n(i,e)),i=""}}return r.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach(function(r,n,e){"|"===r.trim()&&(o(),t)?0!==n&&n!==e.length-1&&a.push([]):i+=r}),o(),e.inTable=u,a}function Lr(r,n,e){e.inline=!0;var t=r[2]?r[2].replace(H,"").split("|").map(Ar):[],a=r[3]?function(r,n,e){return r.trim().split("\n").map(function(r){return Br(r,n,e,!0)})}(r[3],n,e):[],i=Br(r[1],n,e,!!a.length);return e.inline=!1,a.length?{align:t,cells:a,header:i,type:u.table}:{children:i,type:u.paragraph}}function Tr(r,n){return null==r.align[n]?{}:{textAlign:r.align[n]}}function Cr(r){return r.inline=1,r}function Ir(r){return Cr(function(n,e){return e.inline?r.exec(n):null})}function Mr(r){return Cr(function(n,e){return e.inline||e.simple?r.exec(n):null})}function wr(r){return function(n,e){return e.inline||e.simple?null:r.exec(n)}}function Dr(r){return Cr(function(n){return r.exec(n)})}var Fr=/(javascript|vbscript|data(?!:image)):/i;function Pr(r){try{var n=decodeURIComponent(r).replace(/[^A-Za-z0-9/:]/g,"");if(Fr.test(n))return null}catch(r){return null}return r}function Zr(r){return r?r.replace(ar,"$1"):r}function Nr(r,n,e){var t=e.inline||!1,u=e.simple||!1;e.inline=!0,e.simple=!0;var a=r(n,e);return e.inline=t,e.simple=u,a}function Gr(r,n,e){var t=e.inline||!1,u=e.simple||!1;e.inline=!1,e.simple=!0;var a=r(n,e);return e.inline=t,e.simple=u,a}function Ur(r,n,e){var t=e.inline||!1;e.inline=!1;var u=r(n,e);return e.inline=t,u}var Vr=function(r,n,e){return{children:Nr(n,r[2],e)}};function Hr(){return{}}function Qr(){return null}function Wr(){return[].slice.call(arguments).filter(Boolean).join(" ")}function Jr(r,n,e){for(var t=r,u=n.split(".");u.length&&void 0!==(t=t[u[0]]);)u.shift();return t||e}function Kr(r,n){var e=Jr(n,r);return e?"function"==typeof e||"object"==typeof e&&"render"in e?e:Jr(n,r+".component",r):r}function Xr(r,t){var _;void 0===r&&(r=""),void 0===t&&(t={}),t.overrides=t.overrides||{},t.namedCodesToUnicode=t.namedCodesToUnicode?e({},i,t.namedCodesToUnicode):i;var H=t.slugify||jr,Q=t.sanitizer||Pr,W=t.createElement||n.createElement,J=[d,h,g,t.enforceAtxHeadings?O:E,R,F,qr,br],K=[].concat(J,[P,j,B,T]);function X(r,n){var u=Jr(t.overrides,r+".props",{});return W.apply(void 0,[Kr(r,t.overrides),e({},n,u,{className:Wr(null==n?void 0:n.className,u.className)||void 0})].concat([].slice.call(arguments,2)))}function ar(r){r=r.replace(z,"");var n=!1;t.forceInline?n=!0:t.forceBlock||(n=!1===U.test(r));for(var e=pr(vr(n?r:Er(r).replace(or,"")+"\n\n",{inline:n}));"string"==typeof e[e.length-1]&&!e[e.length-1].trim();)e.pop();if(null===t.wrapper)return e;var u,a=t.wrapper||(n?"span":"div");if(e.length>1||t.forceWrapper)u=e;else{if(1===e.length)return"string"==typeof(u=e[0])?X("span",{key:"outer"},u):u;u=null}return W(a,{key:"outer"},u)}function fr(r,n){if(!n||!n.trim())return null;var e=n.match(f);return e?e.reduce(function(n,e){var t=e.indexOf("=");if(-1!==t){var u=function(r){return-1!==r.indexOf("-")&&null===r.match(L)&&(r=r.replace(D,function(r,n){return n.toUpperCase()})),r}(e.slice(0,t)).trim(),i=function(r){var n=r[0];return('"'===n||"'"===n)&&r.length>=2&&r[r.length-1]===n?r.slice(1,-1):r}(e.slice(t+1).trim()),o=a[u]||u;if("ref"===o)return n;var f=n[o]=function(r,n,e,t){return"style"===n?function(r){var n=[],e="",t=!1,u=!1,a="";if(!r)return n;for(var i=0;i<r.length;i++){var o=r[i];if('"'!==o&&"'"!==o||t||(u?o===a&&(u=!1,a=""):(u=!0,a=o)),"("===o&&e.endsWith("url")?t=!0:")"===o&&t&&(t=!1),";"!==o||u||t)e+=o;else{var c=e.trim();if(c){var f=c.indexOf(":");if(f>0){var l=c.slice(0,f).trim(),_=c.slice(f+1).trim();n.push([l,_])}}e=""}}var d=e.trim();if(d){var s=d.indexOf(":");if(s>0){var v=d.slice(0,s).trim(),p=d.slice(s+1).trim();n.push([v,p])}}return n}(e).reduce(function(n,e){var u=e[0],a=e[1];return n[u.replace(/(-[a-z])/g,function(r){return r[1].toUpperCase()})]=t(a,r,u),n},{}):-1!==c.indexOf(n)?t(Zr(e),r,n):(e.match(C)&&(e=Zr(e.slice(1,e.length-1))),"true"===e||"false"!==e&&e)}(r,u,i,Q);"string"==typeof f&&(j.test(f)||T.test(f))&&(n[o]=ar(f.trim()))}else"style"!==e&&(n[a[e]||e]=!0);return n},{}):null}var lr=[],_r={},dr=((_={})[u.blockQuote]={u:[">"],i:wr(d),o:1,l:function(r,n,e){var t=r[0].replace(s,"").match(v);return{alert:t[1],children:n(t[2],e)}},_:function(r,n,e){var t={key:e.key};return r.alert&&(t.className="markdown-alert-"+H(r.alert.toLowerCase(),jr),r.children.unshift({attrs:{},children:[{type:u.text,text:r.alert}],noInnerParse:!0,type:u.htmlBlock,tag:"header"})),X("blockquote",t,n(r.children,e))}},_[u.breakLine]={i:Dr(p),o:1,l:Hr,_:function(r,n,e){return X("br",{key:e.key})}},_[u.breakThematic]={u:function(r){var n=r[0];return"-"===n||"*"===n||"_"===n},i:wr(y),o:1,l:Hr,_:function(r,n,e){return X("hr",{key:e.key})}},_[u.codeBlock]={u:[" "],i:wr(g),o:0,l:function(r){return{lang:void 0,text:Zr(Er(r[0].replace(/^ {4}/gm,"")))}},_:function(r,n,t){return X("pre",{key:t.key},X("code",e({},r.attrs,{className:r.lang?"lang-"+r.lang:""}),r.text))}},_[u.codeFenced]={u:["```","~~~"],i:wr(h),o:0,l:function(r){return{attrs:fr("code",r[3]||""),lang:r[2]||void 0,text:r[4],type:u.codeBlock}}},_[u.codeInline]={u:["`"],i:Mr(m),o:3,l:function(r){return{text:Zr(r[2])}},_:function(r,n,e){return X("code",{key:e.key},r.text)}},_[u.footnote]={u:["[^"],i:wr(q),o:0,l:function(r){return lr.push({footnote:r[2],identifier:r[1]}),{}},_:Qr},_[u.footnoteReference]={u:["[^"],i:Ir(b),o:1,l:function(r){return{target:"#"+H(r[1],jr),text:r[1]}},_:function(r,n,e){return X("a",{key:e.key,href:Q(r.target,"a","href")},X("sup",{key:e.key},r.text))}},_[u.gfmTask]={u:["[ ]","[x]"],i:Ir($),o:1,l:function(r){return{completed:"x"===r[1].toLowerCase()}},_:function(r,n,e){return X("input",{checked:r.completed,key:e.key,readOnly:!0,type:"checkbox"})}},_[u.heading]={u:["#"],i:wr(t.enforceAtxHeadings?O:E),o:1,l:function(r,n,e){return{children:Nr(n,r[2],e),id:H(r[2],jr),level:r[1].length}},_:function(r,n,e){return X("h"+r.level,{id:r.id,key:e.key},n(r.children,e))}},_[u.headingSetext]={i:wr(R),o:0,l:function(r,n,e){return{children:Nr(n,r[1],e),level:"="===r[2]?1:2,type:u.heading}}},_[u.htmlBlock]={u:["<"],i:Dr(j),o:1,l:function(r,n,e){var t,u=r[3].match(cr),a=RegExp("^"+u[1],"gm"),i=r[3].replace(a,""),c=(t=i,K.some(function(r){return r.test(t)})?Ur:Nr),f=r[1].toLowerCase(),l=-1!==o.indexOf(f),_=(l?f:r[1]).trim(),d={attrs:fr(_,r[2]),noInnerParse:l,tag:_};if(e.inAnchor=e.inAnchor||"a"===f,l)d.text=r[3];else{var s=e.inHTML;e.inHTML=!0,d.children=c(n,i,e),e.inHTML=s}return e.inAnchor=!1,d},_:function(r,n,t){return X(r.tag,e({key:t.key},r.attrs),r.text||(r.children?n(r.children,t):""))}},_[u.htmlSelfClosing]={u:["<"],i:Dr(T),o:1,l:function(r){var n=r[1].trim();return{attrs:fr(n,r[2]||""),tag:n}},_:function(r,n,t){return X(r.tag,e({},r.attrs,{key:t.key}))}},_[u.htmlComment]={u:["\x3c!--"],i:Dr(B),o:1,l:function(){return{}},_:Qr},_[u.image]={u:["!["],i:Mr($r),o:1,l:function(r){return{alt:Zr(r[1]),target:Zr(r[2]),title:Zr(r[3])}},_:function(r,n,e){return X("img",{key:e.key,alt:r.alt||void 0,title:r.title||void 0,src:Q(r.target,"img","src")})}},_[u.link]={u:["["],i:Ir(zr),o:3,l:function(r,n,e){return{children:Gr(n,r[1],e),target:Zr(r[2]),title:Zr(r[3])}},_:function(r,n,e){return X("a",{key:e.key,href:Q(r.target,"a","href"),title:r.title},n(r.children,e))}},_[u.linkAngleBraceStyleDetector]={u:["<"],i:Ir(w),o:0,l:function(r){return{children:[{text:r[1],type:u.text}],target:r[1],type:u.link}}},_[u.linkBareUrlDetector]={u:function(r,n){return!n.inAnchor&&!t.disableAutoLink&&(Or(r,"http://")||Or(r,"https://"))},i:Ir(I),o:0,l:function(r){return{children:[{text:r[1],type:u.text}],target:r[1],title:void 0,type:u.link}}},_[u.linkMailtoDetector]={u:["<"],i:Ir(M),o:0,l:function(r){var n=r[1],e=r[1];return l.test(e)||(e="mailto:"+e),{children:[{text:n.replace("mailto:",""),type:u.text}],target:e,type:u.link}}},_[u.orderedList]=Sr(X,1),_[u.unorderedList]=Sr(X,2),_[u.newlineCoalescer]={i:wr(k),o:3,l:Hr,_:function(){return"\n"}},_[u.paragraph]={i:Cr(function(r,n){if(n.inline||n.simple||n.inHTML&&-1===r.indexOf("\n\n")&&-1===n.prevCapture.indexOf("\n\n"))return null;var e="";r.split("\n").every(function(r){return r+="\n",!J.some(function(n){return n.test(r)})&&(e+=r,!!r.trim())});var t=Er(e);return""===t?null:[e,,t]}),o:3,l:Vr,_:function(r,n,e){return X("p",{key:e.key},n(r.children,e))}},_[u.ref]={u:["["],i:Ir(Z),o:0,l:function(r){return _r[r[1]]={target:r[2],title:r[4]},{}},_:Qr},_[u.refImage]={u:["!["],i:Mr(N),o:0,l:function(r){return{alt:r[1]?Zr(r[1]):void 0,ref:r[2]}},_:function(r,n,e){return _r[r.ref]?X("img",{key:e.key,alt:r.alt,src:Q(_r[r.ref].target,"img","src"),title:_r[r.ref].title}):null}},_[u.refLink]={u:function(r){return"["===r[0]&&-1===r.indexOf("](")},i:Ir(G),o:0,l:function(r,n,e){return{children:n(r[1],e),fallbackChildren:r[0],ref:r[2]}},_:function(r,n,e){return _r[r.ref]?X("a",{key:e.key,href:Q(_r[r.ref].target,"a","href"),title:_r[r.ref].title},n(r.children,e)):X("span",{key:e.key},r.fallbackChildren)}},_[u.table]={u:["|"],i:wr(F),o:1,l:Lr,_:function(r,n,e){var t=r;return X("table",{key:e.key},X("thead",null,X("tr",null,t.header.map(function(r,u){return X("th",{key:u,style:Tr(t,u)},n(r,e))}))),X("tbody",null,t.cells.map(function(r,u){return X("tr",{key:u},r.map(function(r,u){return X("td",{key:u,style:Tr(t,u)},n(r,e))}))})))}},_[u.text]={i:Cr(function(r,n){var e;return Or(r,":")&&(e=tr.exec(r)),e||ir.exec(r)}),o:4,l:function(r){var n=r[0];return{text:-1===n.indexOf("&")?n:n.replace(A,function(r,n){return t.namedCodesToUnicode[n]||r})}},_:function(r){return r.text}},_[u.textBolded]={u:["**","__"],i:Mr(Y),o:2,l:function(r,n,e){return{children:n(r[2],e)}},_:function(r,n,e){return X("strong",{key:e.key},n(r.children,e))}},_[u.textEmphasized]={u:function(r){var n=r[0];return("*"===n||"_"===n)&&r[1]!==n},i:Mr(rr),o:3,l:function(r,n,e){return{children:n(r[2],e)}},_:function(r,n,e){return X("em",{key:e.key},n(r.children,e))}},_[u.textEscaped]={u:["\\"],i:Mr(ur),o:1,l:function(r){return{text:r[1],type:u.text}}},_[u.textMarked]={u:["=="],i:Mr(nr),o:3,l:Vr,_:function(r,n,e){return X("mark",{key:e.key},n(r.children,e))}},_[u.textStrikethroughed]={u:["~~"],i:Mr(er),o:3,l:Vr,_:function(r,n,e){return X("del",{key:e.key},n(r.children,e))}},_);!0===t.disableParsingRawHTML&&(delete dr[u.htmlBlock],delete dr[u.htmlSelfClosing]);var sr,vr=function(r){var n=Object.keys(r);function e(t,u){var a=[];if(u.prevCapture=u.prevCapture||"",t.trim())for(;t;)for(var i=0;i<n.length;){var o=n[i],c=r[o];if(!c.u||Rr(t,u,c.u)){var f=c.i(t,u);if(f&&f[0]){t=t.substring(f[0].length);var l=c.l(f,e,u);u.prevCapture+=f[0],l.type||(l.type=o),a.push(l);break}i++}else i++}return u.prevCapture="",a}return n.sort(function(n,e){return r[n].o-r[e].o||(n<e?-1:1)}),function(r,n){return e(function(r){return r.replace(x,"\n").replace(S,"").replace(V," ")}(r),n)}}(dr),pr=(sr=function(r,n){return function(e,t,u){var a=r[e.type]._;return n?n(function(){return a(e,t,u)},e,t,u):a(e,t,u)}}(dr,t.renderRule),function r(n,e){if(void 0===e&&(e={}),Array.isArray(n)){for(var t=e.key,u=[],a=!1,i=0;i<n.length;i++){e.key=i;var o=r(n[i],e),c="string"==typeof o;c&&a?u[u.length-1]+=o:null!==o&&u.push(o),a=c}return e.key=t,u}return sr(n,r,e)}),yr=ar(r);return lr.length?X("div",null,yr,X("footer",{key:"footer"},lr.map(function(r){return X("div",{id:H(r.identifier,jr),key:r.identifier},r.identifier,pr(vr(r.footnote,{inline:!0})))}))):yr}var Yr=function(r){var e=r.children,u=void 0===e?"":e,a=r.options,i=function(r,n){if(null==r)return{};var e,t,u={},a=Object.keys(r);for(t=0;t<a.length;t++)n.indexOf(e=a[t])>=0||(u[e]=r[e]);return u}(r,t);return n.cloneElement(Xr(u,a),i)};Object.assign(Yr,{compiler:Xr,RuleType:u}),module.exports=Yr;
|
|
1
|
+
function r(r){if(r&&r.t)return r;var n=Object.create(null);return r&&Object.keys(r).forEach(function(e){if("default"!==e){var t=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(n,e,t.get?t:{enumerable:!0,get:function(){return r[e]}})}}),n.default=r,n}var n=/*#__PURE__*/r(require("react"));function e(){return e=Object.assign?Object.assign.bind():function(r){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=e[t])}return r},e.apply(this,arguments)}var t=["children","options"],u={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"},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(r,n){return r[n.toLowerCase()]=n,r},{class:"className",for:"htmlFor"}),i={amp:"&",apos:"'",gt:">",lt:"<",nbsp:" ",quot:"“"},o=["style","script","pre"],c=["src","href","data","formAction","srcDoc","action"],f=/([-A-Z0-9_:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|(?:\{((?:\\.|{[^}]*?}|[^}])*)\})))?/gi,l=/\n{2,}$/,_=/^(\s*>[\s\S]*?)(?=\n\n|$)/,d=/^ *> ?/gm,s=/^(?:\[!([^\]]*)\]\n)?([\s\S]*)/,v=/^ {2,}\n/,p=/^(?:([-*_])( *\1){2,}) *(?:\n *)+\n/,y=/^(?: {1,3})?(`{3,}|~{3,}) *(\S+)? *([^\n]*?)?\n([\s\S]*?)(?:\1\n?|$)/,h=/^(?: {4}[^\n]+\n*)+(?:\n *)+\n?/,g=/^(`+)((?:\\`|(?!\1)`|[^`])+)\1/,m=/^(?:\n *)*\n/,k=/\r\n?/g,x=/^\[\^([^\]]+)](:(.*)((\n+ {4,}.*)|(\n(?!\[\^).+))*)/,q=/^\[\^([^\]]+)]/,b=/\f/g,S=/^---[ \t]*\n(.|\n)*\n---[ \t]*\n/,z=/^\s*?\[(x|\s)\]/,$=/^ *(#{1,6}) *([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,E=/^ *(#{1,6}) +([^\n]+?)(?: +#*)?(?:\n *)*(?:\n|$)/,O=/^([^\n]+)\n *(=|-)\2{2,} *\n/,R=/^ *(?!<[a-z][^ >/]* ?\/>)<([a-z][^ >/]*) ?((?:[^>]*[^/])?)>\n?(\s*(?:<\1[^>]*?>[\s\S]*?<\/\1>|(?!<\1\b)[\s\S])*?)<\/\1>(?!<\/\1>)\n*/i,j=/&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});/gi,A=/^<!--[\s\S]*?(?:-->)/,B=/^(data|aria|x)-[a-z_][a-z\d_.-]*$/,L=/^ *<([a-z][a-z0-9:]*)(?:\s+((?:<.*?>|[^>])*))?\/?>(?!<\/\1>)(\s*\n)?/i,T=/^\{.*\}$/,C=/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,I=/^<([^ >]+[:@\/][^ >]+)>/,M=/-([a-z])?/gi,w=/^(\|.*)\n(?: *(\|? *[-:]+ *\|[-| :]*)\n((?:.*\|.*\n)*))?\n?/,D=/^[^\n]+(?: \n|\n{2,})/,F=/^\[([^\]]*)\]:\s+<?([^\s>]+)>?\s*("([^"]*)")?/,P=/^!\[([^\]]*)\] ?\[([^\]]*)\]/,Z=/^\[([^\]]*)\] ?\[([^\]]*)\]/,N=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s)/,G=/\t/g,U=/(^ *\||\| *$)/g,V=/^ *:-+: *$/,H=/^ *:-+ *$/,Q=/^ *-+: *$/,W=function(r){return"(?=[\\s\\S]+?\\1"+(r?"\\1":"")+")"},J="((?:\\[.*?\\][([].*?[)\\]]|<.*?>(?:.*?<.*?>)?|`.*?`|\\\\\\1|[\\s\\S])+?)",K=RegExp("^([*_])\\1"+W(1)+J+"\\1\\1(?!\\1)"),X=RegExp("^([*_])"+W(0)+J+"\\1(?!\\1)"),Y=RegExp("^(==)"+W(0)+J+"\\1"),rr=RegExp("^(~~)"+W(0)+J+"\\1"),nr=/^(:[a-zA-Z0-9-_]+:)/,er=/^\\([^0-9A-Za-z\s])/,tr=/\\([^0-9A-Za-z\s])/g,ur=/^[\s\S](?:(?! \n|[0-9]\.|http)[^=*_~\-\n:<`\\\[!])*/,ar=/^\n+/,ir=/^([ \t]*)/,or=/(?:^|\n)( *)$/,cr="(?:\\d+\\.)",fr="(?:[*+-])";function lr(r){return"( *)("+(1===r?cr:fr)+") +"}var _r=lr(1),dr=lr(2);function sr(r){return RegExp("^"+(1===r?_r:dr))}var vr=sr(1),pr=sr(2);function yr(r){return RegExp("^"+(1===r?_r:dr)+"[^\\n]*(?:\\n(?!\\1"+(1===r?cr:fr)+" )[^\\n]*)*(\\n|$)","gm")}var hr=yr(1),gr=yr(2);function mr(r){var n=1===r?cr:fr;return RegExp("^( *)("+n+") [\\s\\S]+?(?:\\n{2,}(?! )(?!\\1"+n+" (?!"+n+" ))\\n*|\\s*\\n*$)")}var kr=mr(1),xr=mr(2);function qr(r,n){var e=1===n,t=e?kr:xr,a=e?hr:gr,i=e?vr:pr;return{u:function(r){return i.test(r)},i:Tr(function(r,n){var e=or.exec(n.prevCapture);return e&&(n.list||!n.inline&&!n.simple)?t.exec(r=e[1]+r):null}),o:1,l:function(r,n,t){var u=e?+r[2]:void 0,o=r[0].replace(l,"\n").match(a),c=!1;return{items:o.map(function(r,e){var u=i.exec(r)[0].length,a=RegExp("^ {1,"+u+"}","gm"),f=r.replace(a,"").replace(i,""),l=e===o.length-1,_=-1!==f.indexOf("\n\n")||l&&c;c=_;var d,s=t.inline,v=t.list;t.list=!0,_?(t.inline=!1,d=$r(f)+"\n\n"):(t.inline=!0,d=$r(f));var p=n(d,t);return t.inline=s,t.list=v,p}),ordered:e,start:u}},_:function(n,e,t){return r(n.ordered?"ol":"ul",{key:t.key,start:n.type===u.orderedList?n.start:void 0},n.items.map(function(n,u){return r("li",{key:u},e(n,t))}))}}}var br=RegExp("^\\[((?:\\[[^\\[\\]]*(?:\\[[^\\[\\]]*\\][^\\[\\]]*)*\\]|[^\\[\\]])*)\\]\\(\\s*<?((?:\\([^)]*\\)|[^\\s\\\\]|\\\\.)*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*\\)"),Sr=/^!\[(.*?)\]\( *((?:\([^)]*\)|[^() ])*) *"?([^)"]*)?"?\)/;function zr(r){return"string"==typeof r}function $r(r){for(var n=r.length;n>0&&r[n-1]<=" ";)n--;return r.slice(0,n)}function Er(r,n){return r.startsWith(n)}function Or(r,n,e){if(Array.isArray(e)){for(var t=0;t<e.length;t++)if(Er(r,e[t]))return!0;return!1}return e(r,n)}function Rr(r){return r.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 jr(r){return Q.test(r)?"right":V.test(r)?"center":H.test(r)?"left":null}function Ar(r,n,e,t){var u=e.inTable;e.inTable=!0;var a=[[]],i="";function o(){if(i){var r=a[a.length-1];r.push.apply(r,n(i,e)),i=""}}return r.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach(function(r,n,e){"|"===r.trim()&&(o(),t)?0!==n&&n!==e.length-1&&a.push([]):i+=r}),o(),e.inTable=u,a}function Br(r,n,e){e.inline=!0;var t=r[2]?r[2].replace(U,"").split("|").map(jr):[],a=r[3]?function(r,n,e){return r.trim().split("\n").map(function(r){return Ar(r,n,e,!0)})}(r[3],n,e):[],i=Ar(r[1],n,e,!!a.length);return e.inline=!1,a.length?{align:t,cells:a,header:i,type:u.table}:{children:i,type:u.paragraph}}function Lr(r,n){return null==r.align[n]?{}:{textAlign:r.align[n]}}function Tr(r){return r.inline=1,r}function Cr(r){return Tr(function(n,e){return e.inline?r.exec(n):null})}function Ir(r){return Tr(function(n,e){return e.inline||e.simple?r.exec(n):null})}function Mr(r){return function(n,e){return e.inline||e.simple?null:r.exec(n)}}function wr(r){return Tr(function(n){return r.exec(n)})}var Dr=/(javascript|vbscript|data(?!:image)):/i;function Fr(r){try{var n=decodeURIComponent(r).replace(/[^A-Za-z0-9/:]/g,"");if(Dr.test(n))return null}catch(r){return null}return r}function Pr(r){return r?r.replace(tr,"$1"):r}function Zr(r,n,e){var t=e.inline||!1,u=e.simple||!1;e.inline=!0,e.simple=!0;var a=r(n,e);return e.inline=t,e.simple=u,a}function Nr(r,n,e){var t=e.inline||!1,u=e.simple||!1;e.inline=!1,e.simple=!0;var a=r(n,e);return e.inline=t,e.simple=u,a}function Gr(r,n,e){var t=e.inline||!1;e.inline=!1;var u=r(n,e);return e.inline=t,u}var Ur=function(r,n,e){return{children:Zr(n,r[2],e)}};function Vr(){return{}}function Hr(){return null}function Qr(){return[].slice.call(arguments).filter(Boolean).join(" ")}function Wr(r,n,e){for(var t=r,u=n.split(".");u.length&&void 0!==(t=t[u[0]]);)u.shift();return t||e}function Jr(r,n){var e=Wr(n,r);return e?"function"==typeof e||"object"==typeof e&&"render"in e?e:Wr(n,r+".component",r):r}function Kr(r,t){var l;void 0===r&&(r=""),void 0===t&&(t={}),t.overrides=t.overrides||{},t.namedCodesToUnicode=t.namedCodesToUnicode?e({},i,t.namedCodesToUnicode):i;var U=t.slugify||Rr,V=t.sanitizer||Fr,H=t.createElement||n.createElement,Q=[_,y,h,t.enforceAtxHeadings?E:$,O,w,kr,xr],W=[].concat(Q,[D,R,A,L]);function J(r,n){for(var e=0;e<r.length;e++)if(r[e].test(n))return!0;return!1}function tr(r,n){var u=Wr(t.overrides,r+".props",{});return H.apply(void 0,[Jr(r,t.overrides),e({},n,u,{className:Qr(null==n?void 0:n.className,u.className)||void 0})].concat([].slice.call(arguments,2)))}function or(r){r=r.replace(S,"");var n=!1;t.forceInline?n=!0:t.forceBlock||(n=!1===N.test(r));for(var e=sr(dr(n?r:$r(r).replace(ar,"")+"\n\n",{inline:n}));zr(e[e.length-1])&&!e[e.length-1].trim();)e.pop();if(null===t.wrapper)return e;var u,a=t.wrapper||(n?"span":"div");if(e.length>1||t.forceWrapper)u=e;else{if(1===e.length)return"string"==typeof(u=e[0])?tr("span",{key:"outer"},u):u;u=null}return H(a,{key:"outer"},u)}function cr(r,n){if(!n||!n.trim())return null;var e=n.match(f);return e?e.reduce(function(n,e){var t=e.indexOf("=");if(-1!==t){var u=function(r){return-1!==r.indexOf("-")&&null===r.match(B)&&(r=r.replace(M,function(r,n){return n.toUpperCase()})),r}(e.slice(0,t)).trim(),i=function(r){var n=r[0];return('"'===n||"'"===n)&&r.length>=2&&r[r.length-1]===n?r.slice(1,-1):r}(e.slice(t+1).trim()),o=a[u]||u;if("ref"===o)return n;var f=n[o]=function(r,n,e,t){return"style"===n?function(r){var n=[],e="",t=!1,u=!1,a="";if(!r)return n;for(var i=0;i<r.length;i++){var o=r[i];if('"'!==o&&"'"!==o||t||(u?o===a&&(u=!1,a=""):(u=!0,a=o)),"("===o&&e.endsWith("url")?t=!0:")"===o&&t&&(t=!1),";"!==o||u||t)e+=o;else{var c=e.trim();if(c){var f=c.indexOf(":");if(f>0){var l=c.slice(0,f).trim(),_=c.slice(f+1).trim();n.push([l,_])}}e=""}}var d=e.trim();if(d){var s=d.indexOf(":");if(s>0){var v=d.slice(0,s).trim(),p=d.slice(s+1).trim();n.push([v,p])}}return n}(e).reduce(function(n,e){var u=e[0],a=e[1];return n[u.replace(/(-[a-z])/g,function(r){return r[1].toUpperCase()})]=t(a,r,u),n},{}):-1!==c.indexOf(n)?t(Pr(e),r,n):(e.match(T)&&(e=Pr(e.slice(1,e.length-1))),"true"===e||"false"!==e&&e)}(r,u,i,V);"string"==typeof f&&(R.test(f)||L.test(f))&&(n[o]=or(f.trim()))}else"style"!==e&&(n[a[e]||e]=!0);return n},{}):null}var fr=[],lr={},_r=((l={})[u.blockQuote]={u:[">"],i:Mr(_),o:1,l:function(r,n,e){var t=r[0].replace(d,"").match(s);return{alert:t[1],children:n(t[2],e)}},_:function(r,n,e){var t={key:e.key};return r.alert&&(t.className="markdown-alert-"+U(r.alert.toLowerCase(),Rr),r.children.unshift({attrs:{},children:[{type:u.text,text:r.alert}],noInnerParse:!0,type:u.htmlBlock,tag:"header"})),tr("blockquote",t,n(r.children,e))}},l[u.breakLine]={u:[" "],i:wr(v),o:1,l:Vr,_:function(r,n,e){return tr("br",{key:e.key})}},l[u.breakThematic]={u:["--","__","**","- ","* ","_ "],i:Mr(p),o:1,l:Vr,_:function(r,n,e){return tr("hr",{key:e.key})}},l[u.codeBlock]={u:[" "],i:Mr(h),o:0,l:function(r){return{lang:void 0,text:Pr($r(r[0].replace(/^ {4}/gm,"")))}},_:function(r,n,t){return tr("pre",{key:t.key},tr("code",e({},r.attrs,{className:r.lang?"lang-"+r.lang:""}),r.text))}},l[u.codeFenced]={u:["```","~~~"],i:Mr(y),o:0,l:function(r){return{attrs:cr("code",r[3]||""),lang:r[2]||void 0,text:r[4],type:u.codeBlock}}},l[u.codeInline]={u:["`"],i:Ir(g),o:3,l:function(r){return{text:Pr(r[2])}},_:function(r,n,e){return tr("code",{key:e.key},r.text)}},l[u.footnote]={u:["[^"],i:Mr(x),o:0,l:function(r){return fr.push({footnote:r[2],identifier:r[1]}),{}},_:Hr},l[u.footnoteReference]={u:["[^"],i:Cr(q),o:1,l:function(r){return{target:"#"+U(r[1],Rr),text:r[1]}},_:function(r,n,e){return tr("a",{key:e.key,href:V(r.target,"a","href")},tr("sup",{key:e.key},r.text))}},l[u.gfmTask]={u:["[ ]","[x]"],i:Cr(z),o:1,l:function(r){return{completed:"x"===r[1].toLowerCase()}},_:function(r,n,e){return tr("input",{checked:r.completed,key:e.key,readOnly:!0,type:"checkbox"})}},l[u.heading]={u:["#"],i:Mr(t.enforceAtxHeadings?E:$),o:1,l:function(r,n,e){return{children:Zr(n,r[2],e),id:U(r[2],Rr),level:r[1].length}},_:function(r,n,e){return tr("h"+r.level,{id:r.id,key:e.key},n(r.children,e))}},l[u.headingSetext]={u:function(r){var n=r.indexOf("\n");return n>0&&n<r.length-1&&("="===r[n+1]||"-"===r[n+1])},i:Mr(O),o:0,l:function(r,n,e){return{children:Zr(n,r[1],e),level:"="===r[2]?1:2,type:u.heading}}},l[u.htmlBlock]={u:["<"],i:wr(R),o:1,l:function(r,n,e){var t=r[3].match(ir),u=RegExp("^"+t[1],"gm"),a=r[3].replace(u,""),i=J(W,a)?Gr:Zr,c=r[1].toLowerCase(),f=-1!==o.indexOf(c),l=(f?c:r[1]).trim(),_={attrs:cr(l,r[2]),noInnerParse:f,tag:l};if(e.inAnchor=e.inAnchor||"a"===c,f)_.text=r[3];else{var d=e.inHTML;e.inHTML=!0,_.children=i(n,a,e),e.inHTML=d}return e.inAnchor=!1,_},_:function(r,n,t){return tr(r.tag,e({key:t.key},r.attrs),r.text||(r.children?n(r.children,t):""))}},l[u.htmlSelfClosing]={u:["<"],i:wr(L),o:1,l:function(r){var n=r[1].trim();return{attrs:cr(n,r[2]||""),tag:n}},_:function(r,n,t){return tr(r.tag,e({},r.attrs,{key:t.key}))}},l[u.htmlComment]={u:["\x3c!--"],i:wr(A),o:1,l:function(){return{}},_:Hr},l[u.image]={u:["!["],i:Ir(Sr),o:1,l:function(r){return{alt:Pr(r[1]),target:Pr(r[2]),title:Pr(r[3])}},_:function(r,n,e){return tr("img",{key:e.key,alt:r.alt||void 0,title:r.title||void 0,src:V(r.target,"img","src")})}},l[u.link]={u:["["],i:Cr(br),o:3,l:function(r,n,e){return{children:Nr(n,r[1],e),target:Pr(r[2]),title:Pr(r[3])}},_:function(r,n,e){return tr("a",{key:e.key,href:V(r.target,"a","href"),title:r.title},n(r.children,e))}},l[u.linkAngleBraceStyleDetector]={u:["<"],i:Cr(I),o:0,l:function(r){var n=r[1],e=!1;return-1!==n.indexOf("@")&&-1===n.indexOf("//")&&(e=!0,n=n.replace("mailto:","")),{children:[{text:n,type:u.text}],target:e?"mailto:"+n:n,type:u.link}}},l[u.linkBareUrlDetector]={u:function(r,n){return!n.inAnchor&&!t.disableAutoLink&&(Er(r,"http://")||Er(r,"https://"))},i:Cr(C),o:0,l:function(r){return{children:[{text:r[1],type:u.text}],target:r[1],title:void 0,type:u.link}}},l[u.orderedList]=qr(tr,1),l[u.unorderedList]=qr(tr,2),l[u.newlineCoalescer]={u:["\n"],i:Mr(m),o:3,l:Vr,_:function(){return"\n"}},l[u.paragraph]={i:Tr(function(r,n){if(n.inline||n.simple||n.inHTML&&-1===r.indexOf("\n\n")&&-1===n.prevCapture.indexOf("\n\n"))return null;for(var e="",t=0;;){var u=r.indexOf("\n",t),a=r.slice(t,-1===u?void 0:u+1);if(J(Q,a))break;if(e+=a,-1===u||!a.trim())break;t=u+1}var i=$r(e);return""===i?null:[e,,i]}),o:3,l:Ur,_:function(r,n,e){return tr("p",{key:e.key},n(r.children,e))}},l[u.ref]={u:["["],i:Cr(F),o:0,l:function(r){return lr[r[1]]={target:r[2],title:r[4]},{}},_:Hr},l[u.refImage]={u:["!["],i:Ir(P),o:0,l:function(r){return{alt:r[1]?Pr(r[1]):void 0,ref:r[2]}},_:function(r,n,e){return lr[r.ref]?tr("img",{key:e.key,alt:r.alt,src:V(lr[r.ref].target,"img","src"),title:lr[r.ref].title}):null}},l[u.refLink]={u:function(r){return"["===r[0]&&-1===r.indexOf("](")},i:Cr(Z),o:0,l:function(r,n,e){return{children:n(r[1],e),fallbackChildren:r[0],ref:r[2]}},_:function(r,n,e){return lr[r.ref]?tr("a",{key:e.key,href:V(lr[r.ref].target,"a","href"),title:lr[r.ref].title},n(r.children,e)):tr("span",{key:e.key},r.fallbackChildren)}},l[u.table]={u:["|"],i:Mr(w),o:1,l:Br,_:function(r,n,e){var t=r;return tr("table",{key:e.key},tr("thead",null,tr("tr",null,t.header.map(function(r,u){return tr("th",{key:u,style:Lr(t,u)},n(r,e))}))),tr("tbody",null,t.cells.map(function(r,u){return tr("tr",{key:u},r.map(function(r,u){return tr("td",{key:u,style:Lr(t,u)},n(r,e))}))})))}},l[u.text]={i:Tr(function(r,n){var e;return Er(r,":")&&(e=nr.exec(r)),e||ur.exec(r)}),o:4,l:function(r){var n=r[0];return{text:-1===n.indexOf("&")?n:n.replace(j,function(r,n){return t.namedCodesToUnicode[n]||r})}},_:function(r){return r.text}},l[u.textBolded]={u:["**","__"],i:Ir(K),o:2,l:function(r,n,e){return{children:n(r[2],e)}},_:function(r,n,e){return tr("strong",{key:e.key},n(r.children,e))}},l[u.textEmphasized]={u:function(r){var n=r[0];return("*"===n||"_"===n)&&r[1]!==n},i:Ir(X),o:3,l:function(r,n,e){return{children:n(r[2],e)}},_:function(r,n,e){return tr("em",{key:e.key},n(r.children,e))}},l[u.textEscaped]={u:["\\"],i:Ir(er),o:1,l:function(r){return{text:r[1],type:u.text}}},l[u.textMarked]={u:["=="],i:Ir(Y),o:3,l:Ur,_:function(r,n,e){return tr("mark",{key:e.key},n(r.children,e))}},l[u.textStrikethroughed]={u:["~~"],i:Ir(rr),o:3,l:Ur,_:function(r,n,e){return tr("del",{key:e.key},n(r.children,e))}},l);!0===t.disableParsingRawHTML&&(delete _r[u.htmlBlock],delete _r[u.htmlSelfClosing]);var dr=function(r){var n=Object.keys(r);function e(t,u){var a=[];if(u.prevCapture=u.prevCapture||"",t.trim())for(;t;)for(var i=0;i<n.length;){var o=n[i],c=r[o];if(!c.u||Or(t,u,c.u)){var f=c.i(t,u);if(f&&f[0]){t=t.substring(f[0].length);var l=c.l(f,e,u);u.prevCapture+=f[0],l.type||(l.type=o),a.push(l);break}i++}else i++}return u.prevCapture="",a}return n.sort(function(n,e){return r[n].o-r[e].o||(n<e?-1:1)}),function(r,n){return e(function(r){return r.replace(k,"\n").replace(b,"").replace(G," ")}(r),n)}}(_r),sr=function(r,n){return function e(t,u){if(void 0===u&&(u={}),Array.isArray(t)){for(var a=u.key,i=[],o=!1,c=0;c<t.length;c++){u.key=c;var f=e(t[c],u),l=zr(f);l&&o?i[i.length-1]+=f:null!==f&&i.push(f),o=l}return u.key=a,i}return function(e,t,u){var a=r[e.type]._;return n?n(function(){return a(e,t,u)},e,t,u):a(e,t,u)}(t,e,u)}}(_r,t.renderRule),vr=or(r);return fr.length?tr("div",null,vr,tr("footer",{key:"footer"},fr.map(function(r){return tr("div",{id:U(r.identifier,Rr),key:r.identifier},r.identifier,sr(dr(r.footnote,{inline:!0})))}))):vr}var Xr=function(r){var e=r.children,u=void 0===e?"":e,a=r.options,i=function(r,n){if(null==r)return{};var e,t,u={},a=Object.keys(r);for(t=0;t<a.length;t++)n.indexOf(e=a[t])>=0||(u[e]=r[e]);return u}(r,t);return n.cloneElement(Kr(u,a),i)};Object.assign(Xr,{compiler:Kr,RuleType:u}),module.exports=Xr;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.d.ts
CHANGED
|
@@ -1,25 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
declare const _default: import("react").FC<Omit<import("react").HTMLAttributes<Element>, "children"> & {
|
|
4
|
-
children: string;
|
|
5
|
-
options?: Partial<{
|
|
6
|
-
createElement: (tag: string | import("react").FunctionComponent<{}> | import("react").ComponentClass<{}, any>, props: import("react").JSX.IntrinsicAttributes, ...children: import("react").ReactNode[]) => import("react").ReactNode;
|
|
7
|
-
disableAutoLink: boolean;
|
|
8
|
-
disableParsingRawHTML: boolean;
|
|
9
|
-
enforceAtxHeadings: boolean;
|
|
10
|
-
forceBlock: boolean;
|
|
11
|
-
forceInline: boolean;
|
|
12
|
-
forceWrapper: boolean;
|
|
13
|
-
namedCodesToUnicode: {
|
|
14
|
-
[key: string]: string;
|
|
15
|
-
};
|
|
16
|
-
overrides: import("./index.tsx").MarkdownToJSX.Overrides;
|
|
17
|
-
renderRule: (next: () => import("react").ReactNode, node: import("./index.tsx").MarkdownToJSX.ParserResult, renderChildren: import("./index.tsx").MarkdownToJSX.RuleOutput, state: import("./index.tsx").MarkdownToJSX.State) => import("react").ReactNode;
|
|
18
|
-
sanitizer: (value: string, tag: keyof import("react").JSX.IntrinsicElements, attribute: string) => string;
|
|
19
|
-
slugify: (input: string, defaultFn: (input: string) => string) => string;
|
|
20
|
-
wrapper: import("react").ElementType<any>;
|
|
21
|
-
}>;
|
|
22
|
-
}> & {
|
|
1
|
+
import Markdown, { compiler, RuleType } from './index.tsx';
|
|
2
|
+
declare const _default: typeof Markdown & {
|
|
23
3
|
compiler: typeof compiler;
|
|
24
4
|
RuleType: typeof RuleType;
|
|
25
5
|
};
|