foxmd 0.1.0-beta.4 → 0.2.0-beta.10

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/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),require("server-only");var e=require("foxts/lazy-value"),t=require("marked"),s=require("react"),r=require("html-entities"),l=require("foxts/fast-string-array-join"),a=require("fast-escape-regexp");let n=new Map([["bash","shell"],["zsh","shell"],["sh","shell"],["js","javascript"],["ts","typescript"],["py","python"],["yml","yaml"]]);function i({suppressHydrationWarning:e=!1,specialImageSizeInTitleOrAlt:t=!0,customRenderMethods:r={},UNSAFE_allowHtml:l=!1}={}){return{...function(e,t,r){let l=[];function a(){return l.join("-")}function i(t,r=null,l={}){let n={key:"foxmd-"+a(),suppressHydrationWarning:e};return s.createElement(t,{...l,...n},r)}return{get elIdList(){return l},get elementId(){return a()},incrementElId(){l[l.length-1]+=1},heading:(e,t,s)=>i(`h${t}`,e,{id:s}),paragraph:e=>i("p",e),link:(e,t,s)=>((e.startsWith("javascript:")||e.startsWith("data:")||e.startsWith("vbscript:"))&&(e=""),i("a",t,{href:e,title:s,target:void 0})),image(e,s,r){let l,a;if(t){if(s.includes("|")){let[e,t]=s.split("|");t&&t.includes("x")&&([l,a]=t.split("x").map(e=>e.trim()),s=e)}(void 0===l||void 0===a)&&r?.includes("size:")&&(r=r.replace(/size:(\d+)x(\d+)/,(e,t,s)=>(l=t,a=s,"")))}return i("img",null,{src:e,alt:s,title:r,width:l,height:a})},codespan:(e,t=null)=>i("code",e,{className:t?`language-${t}`:void 0}),code(e,t=""){return i("pre",this.codespan(e,t),{"data-language":(n.has(t)?n.get(t):t).toUpperCase()})},blockquote:e=>i("blockquote",e),list:(e,t,s)=>i(t?"ol":"ul",e,t&&1!==s?{start:s}:{}),listItem:e=>i("li",e),checkbox:e=>i("input",null,{type:"checkbox",disabled:!0,checked:e}),table:e=>i("table",e),tableHeader:e=>i("thead",e),tableBody:e=>i("tbody",e),tableRow:e=>i("tr",e),tableCell:(e,t)=>i(t.header?"th":"td",e,{align:t.align}),strong:e=>i("strong",e),em:e=>i("em",e),del:e=>i("del",e),text:e=>e,html:e=>r?i("div",null,{dangerouslySetInnerHTML:{__html:e},style:{display:"contents"}}):e,hr:()=>i("hr"),br:()=>i("br")}}(e,t,l),...r}}let o=/[\u0000-\u001F]/g,c=/[\s!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~-]+/g,b={};for(let e of[{base:"A",letters:"AⒶA\xc0\xc1\xc2ẦẤẪẨ\xc3ĀĂẰẮẴẲȦǠ\xc4ǞẢ\xc5ǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",letters:"Ꜳ"},{base:"AE",letters:"\xc6ǼǢ"},{base:"AO",letters:"Ꜵ"},{base:"AU",letters:"Ꜷ"},{base:"AV",letters:"ꜸꜺ"},{base:"AY",letters:"Ꜽ"},{base:"B",letters:"BⒷBḂḄḆɃƂƁ"},{base:"C",letters:"CⒸCĆĈĊČ\xc7ḈƇȻꜾ"},{base:"D",letters:"DⒹDḊĎḌḐḒḎĐƋƊƉꝹ"},{base:"DZ",letters:"DZDŽ"},{base:"Dz",letters:"DzDž"},{base:"E",letters:"EⒺE\xc8\xc9\xcaỀẾỄỂẼĒḔḖĔĖ\xcbẺĚȄȆẸỆȨḜĘḘḚƐƎ"},{base:"F",letters:"FⒻFḞƑꝻ"},{base:"G",letters:"GⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾ"},{base:"H",letters:"HⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",letters:"IⒾI\xcc\xcd\xceĨĪĬİ\xcfḮỈǏȈȊỊĮḬƗ"},{base:"J",letters:"JⒿJĴɈ"},{base:"K",letters:"KⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",letters:"LⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",letters:"LJ"},{base:"Lj",letters:"Lj"},{base:"M",letters:"MⓂMḾṀṂⱮƜ"},{base:"N",letters:"NⓃNǸŃ\xd1ṄŇṆŅṊṈȠƝꞐꞤ"},{base:"NJ",letters:"NJ"},{base:"Nj",letters:"Nj"},{base:"O",letters:"OⓄO\xd2\xd3\xd4ỒỐỖỔ\xd5ṌȬṎŌṐṒŎȮȰ\xd6ȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬ\xd8ǾƆƟꝊꝌ"},{base:"OI",letters:"Ƣ"},{base:"OO",letters:"Ꝏ"},{base:"OU",letters:"Ȣ"},{base:"OE",letters:"\x8cŒ"},{base:"oe",letters:"\x9cœ"},{base:"P",letters:"PⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",letters:"QⓆQꝖꝘɊ"},{base:"R",letters:"RⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",letters:"SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",letters:"TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"TZ",letters:"Ꜩ"},{base:"U",letters:"UⓊU\xd9\xda\xdbŨṸŪṺŬ\xdcǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",letters:"VⓋVṼṾƲꝞɅ"},{base:"VY",letters:"Ꝡ"},{base:"W",letters:"WⓌWẀẂŴẆẄẈⱲ"},{base:"X",letters:"XⓍXẊẌ"},{base:"Y",letters:"YⓎYỲ\xddŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",letters:"ZⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",letters:"aⓐaẚ\xe0\xe1\xe2ầấẫẩ\xe3āăằắẵẳȧǡ\xe4ǟả\xe5ǻǎȁȃạậặḁąⱥɐ"},{base:"aa",letters:"ꜳ"},{base:"ae",letters:"\xe6ǽǣ"},{base:"ao",letters:"ꜵ"},{base:"au",letters:"ꜷ"},{base:"av",letters:"ꜹꜻ"},{base:"ay",letters:"ꜽ"},{base:"b",letters:"bⓑbḃḅḇƀƃɓ"},{base:"c",letters:"cⓒcćĉċč\xe7ḉƈȼꜿↄ"},{base:"d",letters:"dⓓdḋďḍḑḓḏđƌɖɗꝺ"},{base:"dz",letters:"dzdž"},{base:"e",letters:"eⓔe\xe8\xe9\xeaềếễểẽēḕḗĕė\xebẻěȅȇẹệȩḝęḙḛɇɛǝ"},{base:"f",letters:"fⓕfḟƒꝼ"},{base:"g",letters:"gⓖgǵĝḡğġǧģǥɠꞡᵹꝿ"},{base:"h",letters:"hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",letters:"ƕ"},{base:"i",letters:"iⓘi\xec\xed\xeeĩīĭ\xefḯỉǐȉȋịįḭɨı"},{base:"j",letters:"jⓙjĵǰɉ"},{base:"k",letters:"kⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",letters:"lⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇ"},{base:"lj",letters:"lj"},{base:"m",letters:"mⓜmḿṁṃɱɯ"},{base:"n",letters:"nⓝnǹń\xf1ṅňṇņṋṉƞɲʼnꞑꞥ"},{base:"nj",letters:"nj"},{base:"o",letters:"oⓞo\xf2\xf3\xf4ồốỗổ\xf5ṍȭṏōṑṓŏȯȱ\xf6ȫỏőǒȍȏơờớỡởợọộǫǭ\xf8ǿɔꝋꝍɵ"},{base:"oi",letters:"ƣ"},{base:"ou",letters:"ȣ"},{base:"oo",letters:"ꝏ"},{base:"p",letters:"pⓟpṕṗƥᵽꝑꝓꝕ"},{base:"q",letters:"qⓠqɋꝗꝙ"},{base:"r",letters:"rⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",letters:"sⓢs\xdfśṥŝṡšṧṣṩșşȿꞩꞅẛ"},{base:"t",letters:"tⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"tz",letters:"ꜩ"},{base:"u",letters:"uⓤu\xf9\xfa\xfbũṹūṻŭ\xfcǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",letters:"vⓥvṽṿʋꝟʌ"},{base:"vy",letters:"ꝡ"},{base:"w",letters:"wⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",letters:"xⓧxẋẍ"},{base:"y",letters:"yⓨyỳ\xfdŷỹȳẏ\xffỷẙỵƴɏỿ"},{base:"z",letters:"zⓩzźẑżžẓẕƶȥɀⱬꝣ"}])for(let t of e.letters.split(""))b[t]=e.base;function d(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let s=new Map;function n(t=[]){e.elIdList.push(0);let s=t.map(t=>{switch(t.type){case"text":return e.incrementElId(),e.text(r.decode(t.text));case"strong":return e.incrementElId(),e.strong(n(t.tokens).jsx);case"em":return e.incrementElId(),e.em(n(t.tokens).jsx);case"del":return e.incrementElId(),e.del(n(t.tokens).jsx);case"codespan":return e.incrementElId(),e.codespan(r.decode(t.text));case"link":return e.incrementElId(),e.link(t.href,n(t.tokens).jsx,t.title??void 0);case"image":return e.incrementElId(),e.image(t.href,t.text,t.title);case"html":return e.incrementElId(),e.html(t.text);case"br":return e.incrementElId(),e.br();case"escape":return e.incrementElId(),e.text(t.text);default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),null}});return e.elIdList.pop(),{jsx:s,toc:[]}}return{parse:function i(d){let u=[];e.elIdList.push(0);let p=d.map(d=>{switch(d.type){case"space":return null;case"heading":{let t=d.depth,i=function e(t=[]){return l.fastStringArrayJoin(t.map(t=>{switch(t.type){case"text":case"codespan":return r.decode(t.text);case"strong":case"em":case"del":case"link":return e(t.tokens);case"image":case"html":case"br":case"escape":return"";default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),""}}),"-")}(d.tokens),p=function(e){if("string"!=typeof e)throw TypeError("str must be a string!");let t=a.escapeRegexp("-");return e.replaceAll(/[^\u0000-\u007E]/g,e=>b[e]||e).replaceAll(o,"").replaceAll(c,"-").replaceAll(RegExp(`${t}{2,}`,"g"),"-").replaceAll(RegExp(`^${t}+|${t}+$`,"g"),"").toLowerCase()}(i),m=1;return s.has(p)?(m=s.get(p)+1,s.set(p,m),p=p+"-"+m):s.set(p,m),u.push({text:i,id:p,level:t}),e.incrementElId(),e.heading(n(d.tokens).jsx,t,p)}case"paragraph":if(t&&d.tokens?.length===1&&"image"===d.tokens[0].type)return n(d.tokens).jsx;return e.incrementElId(),e.paragraph(n(d.tokens).jsx);case"text":return d.tokens?n(d.tokens).jsx:d.text;case"blockquote":{let t=i(d.tokens).jsx;return e.incrementElId(),e.blockquote(t)}case"list":{e.elIdList.push(0);let t=d.items.map(t=>{let s=[];return t.task&&(e.incrementElId(),s.push(e.checkbox(t.checked??!1))),s.push(i(t.tokens).jsx),e.incrementElId(),e.listItem(s)});return e.elIdList.pop(),e.incrementElId(),e.list(t,d.ordered,d.ordered?d.start:void 0)}case"code":return e.incrementElId(),e.code(d.text,d.lang);case"html":return e.incrementElId(),e.html(d.text);case"table":{e.elIdList.push(0);let t=d.header.map((t,s)=>e.tableCell(n(t.tokens).jsx,{header:!0,align:d.align[s]}));e.elIdList.pop(),e.incrementElId();let s=e.tableRow(t);e.incrementElId();let r=e.tableHeader(s);e.elIdList.push(0);let l=d.rows.map(t=>{e.elIdList.push(0);let s=t.map((t,s)=>e.tableCell(n(t.tokens).jsx,{header:!1,align:d.align[s]}));return e.elIdList.pop(),e.incrementElId(),e.tableRow(s)});e.elIdList.pop(),e.incrementElId();let a=e.tableBody(l);return e.incrementElId(),e.table([r,a])}case"hr":return e.incrementElId(),e.hr();default:return console.warn(`[foxmd] Token with "${d.type}" type was not found`),null}});return e.elIdList.pop(),{jsx:p,toc:u}},parseInline:n}}let u=e.lazyValue(()=>new t.Marked);exports.createFoxmdParser=d,exports.createFoxmdRenderer=i,exports.foxmd=function(e,{foxmdRendererOptions:t,foxmdParserOptions:s,markedInstance:r=u(),lexerOptions:l=function(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}(r),isInline:a=!1}={}){let n=r.lexer(e,l),o=d(i(t),s);return a?o.parseInline(n):o.parse(n)};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),require("server-only");var e=require("foxts/lazy-value"),t=require("marked"),r=require("react"),a=require("htmlparser2"),n=require("domhandler"),i=require("style-to-object"),s=require("fast-escape-regexp"),o=require("html-entities"),l=require("foxts/fast-string-array-join"),c=i&&i.__esModule?i:{default:i};let p={accept:"accept",acceptcharset:"acceptCharset","accept-charset":"acceptCharset",accesskey:"accessKey",action:"action",allowfullscreen:"allowFullScreen",alt:"alt",as:"as",async:"async",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",capture:"capture",cellpadding:"cellPadding",cellspacing:"cellSpacing",challenge:"challenge",charset:"charSet",checked:"checked",children:"children",cite:"cite",class:"className",classid:"classID",classname:"className",cols:"cols",colspan:"colSpan",content:"content",contenteditable:"contentEditable",contextmenu:"contextMenu",controls:"controls",controlslist:"controlsList",coords:"coords",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",data:"data",datetime:"dateTime",default:"default",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",defer:"defer",dir:"dir",disabled:"disabled",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback",download:"download",draggable:"draggable",enctype:"encType",enterkeyhint:"enterKeyHint",fetchpriority:"fetchPriority",for:"htmlFor",form:"form",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",headers:"headers",height:"height",hidden:"hidden",high:"high",href:"href",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",id:"id",imagesizes:"imageSizes",imagesrcset:"imageSrcSet",inert:"inert",innerhtml:"innerHTML",inputmode:"inputMode",integrity:"integrity",is:"is",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",kind:"kind",label:"label",lang:"lang",list:"list",loop:"loop",low:"low",manifest:"manifest",marginwidth:"marginWidth",marginheight:"marginHeight",max:"max",maxlength:"maxLength",media:"media",mediagroup:"mediaGroup",method:"method",min:"min",minlength:"minLength",multiple:"multiple",muted:"muted",name:"name",nomodule:"noModule",nonce:"nonce",novalidate:"noValidate",open:"open",optimum:"optimum",pattern:"pattern",placeholder:"placeholder",playsinline:"playsInline",poster:"poster",preload:"preload",profile:"profile",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rel:"rel",required:"required",reversed:"reversed",role:"role",rows:"rows",rowspan:"rowSpan",sandbox:"sandbox",scope:"scope",scoped:"scoped",scrolling:"scrolling",seamless:"seamless",selected:"selected",shape:"shape",size:"size",sizes:"sizes",span:"span",spellcheck:"spellCheck",src:"src",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",start:"start",step:"step",style:"style",summary:"summary",tabindex:"tabIndex",target:"target",title:"title",type:"type",usemap:"useMap",value:"value",width:"width",wmode:"wmode",wrap:"wrap",about:"about",accentheight:"accentHeight","accent-height":"accentHeight",accumulate:"accumulate",additive:"additive",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",alphabetic:"alphabetic",amplitude:"amplitude",arabicform:"arabicForm","arabic-form":"arabicForm",ascent:"ascent",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",azimuth:"azimuth",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",bbox:"bbox",begin:"begin",bias:"bias",by:"by",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clip:"clip",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",color:"color",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",cursor:"cursor",cx:"cx",cy:"cy",d:"d",datatype:"datatype",decelerate:"decelerate",descent:"descent",diffuseconstant:"diffuseConstant",direction:"direction",display:"display",divisor:"divisor",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",dur:"dur",dx:"dx",dy:"dy",edgemode:"edgeMode",elevation:"elevation",enablebackground:"enableBackground","enable-background":"enableBackground",end:"end",exponent:"exponent",externalresourcesrequired:"externalResourcesRequired",fill:"fill",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filter:"filter",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",focusable:"focusable",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",format:"format",from:"from",fx:"fx",fy:"fy",g1:"g1",g2:"g2",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",hanging:"hanging",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",ideographic:"ideographic",imagerendering:"imageRendering","image-rendering":"imageRendering",in2:"in2",in:"in",inlist:"inlist",intercept:"intercept",k1:"k1",k2:"k2",k3:"k3",k4:"k4",k:"k",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",kerning:"kerning",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",local:"local",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",mask:"mask",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",mathematical:"mathematical",mode:"mode",numoctaves:"numOctaves",offset:"offset",opacity:"opacity",operator:"operator",order:"order",orient:"orient",orientation:"orientation",origin:"origin",overflow:"overflow",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder",panose1:"panose1","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",points:"points",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",popover:"popover",popovertarget:"popoverTarget",popovertargetaction:"popoverTargetAction",prefix:"prefix",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",property:"property",r:"r",radius:"radius",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",resource:"resource",restart:"restart",result:"result",results:"results",rotate:"rotate",rx:"rx",ry:"ry",scale:"scale",security:"security",seed:"seed",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",slope:"slope",spacing:"spacing",specularconstant:"specularConstant",specularexponent:"specularExponent",speed:"speed",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stemh:"stemh",stemv:"stemv",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",string:"string",stroke:"stroke",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",to:"to",transform:"transform",transformorigin:"transformOrigin","transform-origin":"transformOrigin",typeof:"typeof",u1:"u1",u2:"u2",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicode:"unicode",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",values:"values",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",version:"version",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",visibility:"visibility",vmathematical:"vMathematical","v-mathematical":"vMathematical",vocab:"vocab",widths:"widths",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",x1:"x1",x2:"x2",x:"x",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang",xmlns:"xmlns","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",y1:"y1",y2:"y2",y:"y",ychannelselector:"yChannelSelector",z:"z",zoomandpan:"zoomAndPan"},d=new Set(["allowFullScreen","async","autoPlay","controls","default","defer","disabled","disablePictureInPicture","disableRemotePlayback","formNoValidate","hidden","loop","noModule","noValidate","open","playsInline","readOnly","required","reversed","scoped","seamless","itemScope","autoFocus"]),u=new Set(["capture","download"]);function h(e,t){return e in t?t[e]:e}let m=/[\u0000-\u001F]/g,g=/[\s!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~-]+/g,f={};for(let e of[{base:"A",letters:"AⒶA\xc0\xc1\xc2ẦẤẪẨ\xc3ĀĂẰẮẴẲȦǠ\xc4ǞẢ\xc5ǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",letters:"Ꜳ"},{base:"AE",letters:"\xc6ǼǢ"},{base:"AO",letters:"Ꜵ"},{base:"AU",letters:"Ꜷ"},{base:"AV",letters:"ꜸꜺ"},{base:"AY",letters:"Ꜽ"},{base:"B",letters:"BⒷBḂḄḆɃƂƁ"},{base:"C",letters:"CⒸCĆĈĊČ\xc7ḈƇȻꜾ"},{base:"D",letters:"DⒹDḊĎḌḐḒḎĐƋƊƉꝹ"},{base:"DZ",letters:"DZDŽ"},{base:"Dz",letters:"DzDž"},{base:"E",letters:"EⒺE\xc8\xc9\xcaỀẾỄỂẼĒḔḖĔĖ\xcbẺĚȄȆẸỆȨḜĘḘḚƐƎ"},{base:"F",letters:"FⒻFḞƑꝻ"},{base:"G",letters:"GⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾ"},{base:"H",letters:"HⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",letters:"IⒾI\xcc\xcd\xceĨĪĬİ\xcfḮỈǏȈȊỊĮḬƗ"},{base:"J",letters:"JⒿJĴɈ"},{base:"K",letters:"KⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",letters:"LⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",letters:"LJ"},{base:"Lj",letters:"Lj"},{base:"M",letters:"MⓂMḾṀṂⱮƜ"},{base:"N",letters:"NⓃNǸŃ\xd1ṄŇṆŅṊṈȠƝꞐꞤ"},{base:"NJ",letters:"NJ"},{base:"Nj",letters:"Nj"},{base:"O",letters:"OⓄO\xd2\xd3\xd4ỒỐỖỔ\xd5ṌȬṎŌṐṒŎȮȰ\xd6ȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬ\xd8ǾƆƟꝊꝌ"},{base:"OI",letters:"Ƣ"},{base:"OO",letters:"Ꝏ"},{base:"OU",letters:"Ȣ"},{base:"OE",letters:"\x8cŒ"},{base:"oe",letters:"\x9cœ"},{base:"P",letters:"PⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",letters:"QⓆQꝖꝘɊ"},{base:"R",letters:"RⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",letters:"SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",letters:"TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"TZ",letters:"Ꜩ"},{base:"U",letters:"UⓊU\xd9\xda\xdbŨṸŪṺŬ\xdcǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",letters:"VⓋVṼṾƲꝞɅ"},{base:"VY",letters:"Ꝡ"},{base:"W",letters:"WⓌWẀẂŴẆẄẈⱲ"},{base:"X",letters:"XⓍXẊẌ"},{base:"Y",letters:"YⓎYỲ\xddŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",letters:"ZⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",letters:"aⓐaẚ\xe0\xe1\xe2ầấẫẩ\xe3āăằắẵẳȧǡ\xe4ǟả\xe5ǻǎȁȃạậặḁąⱥɐ"},{base:"aa",letters:"ꜳ"},{base:"ae",letters:"\xe6ǽǣ"},{base:"ao",letters:"ꜵ"},{base:"au",letters:"ꜷ"},{base:"av",letters:"ꜹꜻ"},{base:"ay",letters:"ꜽ"},{base:"b",letters:"bⓑbḃḅḇƀƃɓ"},{base:"c",letters:"cⓒcćĉċč\xe7ḉƈȼꜿↄ"},{base:"d",letters:"dⓓdḋďḍḑḓḏđƌɖɗꝺ"},{base:"dz",letters:"dzdž"},{base:"e",letters:"eⓔe\xe8\xe9\xeaềếễểẽēḕḗĕė\xebẻěȅȇẹệȩḝęḙḛɇɛǝ"},{base:"f",letters:"fⓕfḟƒꝼ"},{base:"g",letters:"gⓖgǵĝḡğġǧģǥɠꞡᵹꝿ"},{base:"h",letters:"hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",letters:"ƕ"},{base:"i",letters:"iⓘi\xec\xed\xeeĩīĭ\xefḯỉǐȉȋịįḭɨı"},{base:"j",letters:"jⓙjĵǰɉ"},{base:"k",letters:"kⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",letters:"lⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇ"},{base:"lj",letters:"lj"},{base:"m",letters:"mⓜmḿṁṃɱɯ"},{base:"n",letters:"nⓝnǹń\xf1ṅňṇņṋṉƞɲʼnꞑꞥ"},{base:"nj",letters:"nj"},{base:"o",letters:"oⓞo\xf2\xf3\xf4ồốỗổ\xf5ṍȭṏōṑṓŏȯȱ\xf6ȫỏőǒȍȏơờớỡởợọộǫǭ\xf8ǿɔꝋꝍɵ"},{base:"oi",letters:"ƣ"},{base:"ou",letters:"ȣ"},{base:"oo",letters:"ꝏ"},{base:"p",letters:"pⓟpṕṗƥᵽꝑꝓꝕ"},{base:"q",letters:"qⓠqɋꝗꝙ"},{base:"r",letters:"rⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",letters:"sⓢs\xdfśṥŝṡšṧṣṩșşȿꞩꞅẛ"},{base:"t",letters:"tⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"tz",letters:"ꜩ"},{base:"u",letters:"uⓤu\xf9\xfa\xfbũṹūṻŭ\xfcǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",letters:"vⓥvṽṿʋꝟʌ"},{base:"vy",letters:"ꝡ"},{base:"w",letters:"wⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",letters:"xⓧxẋẍ"},{base:"y",letters:"yⓨyỳ\xfdŷỹȳẏ\xffỷẙỵƴɏỿ"},{base:"z",letters:"zⓩzźẑżžẓẕƶȥɀⱬꝣ"}])for(let t of e.letters.split(""))f[t]=e.base;let b=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"]),k=new Map([["bash","shell"],["zsh","shell"],["sh","shell"],["js","javascript"],["ts","typescript"],["py","python"],["yml","yaml"]]);function y({suppressHydrationWarning:e=!1,specialImageSizeInTitleOrAlt:t=!0,customRenderMethods:i={},customReactComponentsForHtmlTags:s={},UNSAFE_allowHtml:o=!1}={}){return{...function(e,t,i,s){function o(t,a,n=null,s={}){let l=h(t,i);return r.createElement(l,{...s,key:a,suppressHydrationWarning:e},n)}return{heading:(e,t,r,a)=>o(`h${r}`,e,t,{id:a}),paragraph:(e,t)=>o("p",e,t),link:(e,t,r,a)=>((t.startsWith("javascript:")||t.startsWith("data:")||t.startsWith("vbscript:"))&&(t=""),o("a",e,r,{href:t,title:a,target:void 0})),image(e,r,a,n){let i,s;if(t){if(a.includes("|")){let[e,t]=a.split("|");t&&t.includes("x")&&([i,s]=t.split("x").map(e=>e.trim()),a=e)}(void 0===i||void 0===s)&&n?.includes("size:")&&(n=n.replace(/size:(\d+)x(\d+)/,(e,t,r)=>(i=t,s=r,"")))}return o("img",e,null,{src:r,alt:a,title:n,width:i,height:s})},codespan:(e,t,r=null)=>o("code",e,t,{className:r?`language-${r}`:void 0}),code(e,t,r=""){return o("pre",e,this.codespan(e+"-codespan-"+r,t,r),{"data-language":(k.has(r)?k.get(r):r).toUpperCase()})},blockquote:(e,t)=>o("blockquote",e,t),list:(e,t,r,a)=>o(r?"ol":"ul",e,t,r&&1!==a?{start:a}:{}),listItem:(e,t)=>o("li",e,t),checkbox:(e,t)=>o("input",e,null,{type:"checkbox",disabled:!0,checked:t}),table:(e,t)=>o("table",e,t),tableHeader:(e,t)=>o("thead",e,t),tableBody:(e,t)=>o("tbody",e,t),tableRow:(e,t)=>o("tr",e,t),tableCell:(e,t,r)=>o(r.header?"th":"td",e,t,{align:r.align}),strong:(e,t)=>o("strong",e,t),em:(e,t)=>o("em",e,t),del:(e,t)=>o("del",e,t),text:e=>e,html(e,t){if(s){let s;return s=new n.DomHandler,new a.Parser(s,{decodeEntities:!0}).parseComplete(t),s.dom.map((t,a)=>(function e(t,a,i,s){if(n.isDirective(t))return null;if(n.isText(t))return t.data;if(n.isComment(t)||n.isCDATA(t))return null;let o=null;"children"in t&&t.children.length>0&&(o=t.children.reduce((t,r,n)=>{let o=e(r,n,i+"-"+a,s);return null!=o&&t.push(o),t},[]));var l,m=o;let g="name"in t&&t.name.includes("-"),f={key:"foxmd-html-"+i+"-"+a+("name"in t?"-"+t.name:"")};if("attribs"in t&&t.attribs){for(let e in t.attribs)if(Object.hasOwn(t.attribs,e)){if(g){f[e]=t.attribs[e];continue}if("ref"===e||e.startsWith("on"))continue;let r=t.attribs[e];if(e.startsWith("data-")||e.startsWith("aria-")){f[e]=""===r||r;continue}let a=e.toLowerCase();if(a in p&&(e=p[a]),"style"===e){f.style=c.default(r);continue}if(("checked"===e||"value"===e)&&"reset"!==t.attribs.type&&"submit"!==t.attribs.type){e=p[`default${a}`]||e;continue}if(d.has(e)){f[e]=!0;continue}if(u.has(e)){f[e]=""===r||r;continue}f[e]=r}}if("data"in t&&null!=t.data&&console.warn("[foxmd] Unknown node.data found vs node:",{node:t,data:t.data}),n.isDocument(t))return r.createElement(r.Fragment,f,m);return(l=t.name,b.has(l))?m?.length?(console.warn("[foxmd] Void HTML tag should not have children, foxmd push children after the self-closing tags.",{node:t,tag:t.name,children:m}),r.createElement(r.Fragment,null,r.createElement(h(t.name,s),f),m)):r.createElement(h(t.name,s),f):r.createElement(h(t.name,s),f,m)})(t,a,e,i))}return t},hr:e=>o("hr",e),br:e=>o("br",e)}}(e,t,s,o),...i}}function x(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let r=new Map,a=[],n=()=>{a[a.length-1]+=1},i=()=>"foxmd|"+a.join("-");function c(t=[]){a.push(0);let r=!1,s="",l=t.map(t=>{switch(t.type){case"text":if(r)return s+=t.text,null;return n(),e.text(i(),o.decode(t.text));case"strong":return n(),e.strong(i(),c(t.tokens).jsx);case"em":return n(),e.em(i(),c(t.tokens).jsx);case"del":return n(),e.del(i(),c(t.tokens).jsx);case"codespan":return n(),e.codespan(i(),o.decode(t.text));case"link":return n(),e.link(i(),t.href,c(t.tokens).jsx,t.title??void 0);case"image":return n(),e.image(i(),t.href,t.text,t.title);case"html":{if("inRawBlock"in t&&(r=t.inRawBlock),r)return s+=t.text,null;n();let a=e.html(i(),s);return s="",a}case"br":return n(),e.br(i());case"escape":return n(),e.text(i(),t.text);default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),null}});return a.pop(),{jsx:l,toc:[]}}return{parse:function p(d){let u=[];a.push(0);let h=!1,b="",k=d.map(d=>{switch(d.type){case"space":return null;case"heading":{let t=d.depth,a=function e(t=[]){return l.fastStringArrayJoin(t.map(t=>{switch(t.type){case"text":case"codespan":return o.decode(t.text);case"strong":case"em":case"del":case"link":return e(t.tokens);case"image":case"html":case"br":case"escape":return"";default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),""}}),"-")}(d.tokens),p=function(e){if("string"!=typeof e)throw TypeError("str must be a string!");let t=s.escapeRegexp("-");return e.replaceAll(/[^\u0000-\u007E]/g,e=>f[e]||e).replaceAll(m,"").replaceAll(g,"-").replaceAll(RegExp(`${t}{2,}`,"g"),"-").replaceAll(RegExp(`^${t}+|${t}+$`,"g"),"").toLowerCase()}(a),h=1;return r.has(p)?(h=r.get(p)+1,r.set(p,h),p=p+"-"+h):r.set(p,h),u.push({text:a,id:p,level:t}),n(),e.heading(i(),c(d.tokens).jsx,t,p)}case"paragraph":if(t&&d.tokens?.length===1&&"image"===d.tokens[0].type)return c(d.tokens).jsx;return n(),e.paragraph(i(),c(d.tokens).jsx);case"text":if(h)return b+=d.text,null;return d.tokens?c(d.tokens).jsx:d.text;case"blockquote":{let t=p(d.tokens).jsx;return n(),e.blockquote(i(),t)}case"list":{a.push(0);let t=d.items.map(t=>{let r=[];return t.task&&(n(),r.push(e.checkbox(i(),t.checked??!1))),r.push(p(t.tokens).jsx),n(),e.listItem(i(),r)});return a.pop(),n(),e.list(i(),t,d.ordered,d.ordered?d.start:void 0)}case"code":return n(),e.code(i(),d.text,d.lang);case"html":{if("inRawBlock"in d&&(h=d.inRawBlock),h)return b+=d.text,null;n();let t=e.html(i(),b);return b="",t}case"table":{a.push(0);let t=d.header.map((t,r)=>(n(),e.tableCell(i(),c(t.tokens).jsx,{header:!0,align:d.align[r]})));a.pop(),n();let r=e.tableRow(i(),t);n();let s=e.tableHeader(i(),r);a.push(0);let o=d.rows.map(t=>{a.push(0);let r=t.map((t,r)=>(n(),e.tableCell(i(),c(t.tokens).jsx,{header:!1,align:d.align[r]})));return a.pop(),n(),e.tableRow(i(),r)});a.pop(),n();let l=e.tableBody(i(),o);return n(),e.table(i(),[s,l])}case"hr":return n(),e.hr(i());default:return console.warn(`[foxmd] Token with "${d.type}" type was not found`),null}});return a.pop(),{jsx:k,toc:u}},parseInline:c}}let v=e.lazyValue(()=>new t.Marked);exports.createFoxmdParser=x,exports.createFoxmdRenderer=y,exports.foxmd=function(e,{foxmdRendererOptions:t,foxmdParserOptions:r,markedInstance:a=v(),lexerOptions:n=function(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}(a),isInline:i=!1}={}){let s=a.lexer(e,n),o=x(y(t),r);return i?o.parseInline(s):o.parse(s)};
package/dist/index.d.ts CHANGED
@@ -1,76 +1,75 @@
1
1
  import { Token, Marked, MarkedOptions } from 'marked';
2
- import React, { ReactNode } from 'react';
2
+ import React$1, { ReactNode } from 'react';
3
+
4
+ type HtmlTagReplaceReact = {
5
+ [TagName in keyof React.JSX.IntrinsicElements]?: React.ComponentType<React.ComponentPropsWithoutRef<TagName>>;
6
+ };
3
7
 
4
8
  type HeadingLevels = 1 | 2 | 3 | 4 | 5 | 6;
5
9
  interface TableFlags {
6
10
  header?: boolean;
7
11
  align?: 'center' | 'left' | 'right' | undefined;
8
12
  }
9
- type CustomRendererMethods = Partial<Omit<FoxmdRenderer, 'elIdList' | 'elementId' | 'incrementElId'>>;
10
13
  interface FoxmdRendererOptions {
11
14
  suppressHydrationWarning?: boolean;
12
- customRenderMethods?: CustomRendererMethods;
15
+ customRenderMethods?: Partial<FoxmdCustomRendererMethods>;
16
+ customReactComponentsForHtmlTags?: HtmlTagReplaceReact;
13
17
  specialImageSizeInTitleOrAlt?: boolean;
14
18
  UNSAFE_allowHtml?: boolean;
15
19
  }
16
- declare function createInternalFoxmdRenderer(suppressHydrationWarning: boolean, specialImageSizeInTitleOrAlt: boolean, UNSAFE_allowHtml: boolean): {
17
- readonly elIdList: number[];
18
- readonly elementId: string;
19
- incrementElId(): void;
20
- heading(children: ReactNode, level: HeadingLevels, id?: string): ReactNode;
21
- paragraph(children: ReactNode): ReactNode;
22
- link(href: string, text: ReactNode, title?: string): ReactNode;
23
- image(src: string, alt: string, title?: string): ReactNode;
24
- codespan(code: ReactNode, lang?: string | null): ReactNode;
25
- code(code: ReactNode, lang?: string | undefined): ReactNode;
26
- blockquote(children: ReactNode): ReactNode;
27
- list(children: ReactNode, ordered: boolean, start: number | undefined): ReactNode;
28
- listItem(children: ReactNode[]): ReactNode;
29
- checkbox(checked: boolean | undefined): ReactNode;
30
- table(children: ReactNode[]): ReactNode;
31
- tableHeader(children: ReactNode): ReactNode;
32
- tableBody(children: ReactNode[]): ReactNode;
33
- tableRow(children: ReactNode[]): ReactNode;
34
- tableCell(children: ReactNode[], flags: TableFlags): ReactNode;
35
- strong(children: ReactNode): ReactNode;
36
- em(children: ReactNode): ReactNode;
37
- del(children: ReactNode): ReactNode;
38
- text(text: ReactNode): ReactNode;
39
- html(html: string): ReactNode;
40
- hr(): ReactNode;
41
- br(): ReactNode;
42
- };
43
- declare function createFoxmdRenderer({ suppressHydrationWarning, specialImageSizeInTitleOrAlt, customRenderMethods, UNSAFE_allowHtml }?: FoxmdRendererOptions): {
44
- heading: (children: ReactNode, level: HeadingLevels, id?: string) => ReactNode;
45
- paragraph: (children: ReactNode) => ReactNode;
46
- link: (href: string, text: ReactNode, title?: string) => ReactNode;
47
- image: (src: string, alt: string, title?: string) => ReactNode;
48
- codespan: (code: ReactNode, lang?: string | null) => ReactNode;
49
- code: (code: ReactNode, lang?: string | undefined) => ReactNode;
50
- blockquote: (children: ReactNode) => ReactNode;
51
- list: (children: ReactNode, ordered: boolean, start: number | undefined) => ReactNode;
52
- listItem: (children: ReactNode[]) => ReactNode;
53
- checkbox: (checked: boolean | undefined) => ReactNode;
54
- table: (children: ReactNode[]) => ReactNode;
55
- tableHeader: (children: ReactNode) => ReactNode;
56
- tableBody: (children: ReactNode[]) => ReactNode;
57
- tableRow: (children: ReactNode[]) => ReactNode;
58
- tableCell: (children: ReactNode[], flags: TableFlags) => ReactNode;
59
- strong: (children: ReactNode) => ReactNode;
60
- em: (children: ReactNode) => ReactNode;
61
- del: (children: ReactNode) => ReactNode;
62
- text: (text: ReactNode) => ReactNode;
63
- html: (html: string) => ReactNode;
64
- hr: () => ReactNode;
65
- br: () => ReactNode;
66
- elIdList: number[];
67
- elementId: string;
68
- incrementElId(): void;
20
+ interface FoxmdCustomRendererMethods {
21
+ heading(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode, level: HeadingLevels, id?: string): ReactNode;
22
+ paragraph(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode): ReactNode;
23
+ link(this: FoxmdCustomRendererMethods, reactKey: string, href: string, text: ReactNode, title?: string): ReactNode;
24
+ image(this: FoxmdCustomRendererMethods, reactKey: string, src: string, alt: string, title?: string): ReactNode;
25
+ codespan(this: FoxmdCustomRendererMethods, reactKey: string, code: string, lang?: string | null): ReactNode;
26
+ code(this: FoxmdCustomRendererMethods, reactKey: string, code: string, lang?: string): ReactNode;
27
+ blockquote(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode): ReactNode;
28
+ list(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode, ordered: boolean, start?: number): ReactNode;
29
+ listItem(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[]): ReactNode;
30
+ checkbox(this: FoxmdCustomRendererMethods, reactKey: string, checked?: boolean): ReactNode;
31
+ table(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[]): ReactNode;
32
+ tableHeader(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode): ReactNode;
33
+ tableBody(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[]): ReactNode;
34
+ tableRow(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[]): ReactNode;
35
+ tableCell(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[], flags: TableFlags): ReactNode;
36
+ strong(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode): ReactNode;
37
+ em(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode): ReactNode;
38
+ del(this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode): ReactNode;
39
+ text(this: FoxmdCustomRendererMethods, reactKey: string, text: ReactNode): ReactNode;
40
+ html(this: FoxmdCustomRendererMethods, reactKey: string, html: string): ReactNode | ReactNode[];
41
+ hr(this: FoxmdCustomRendererMethods, reactKey: string): ReactNode;
42
+ br(this: FoxmdCustomRendererMethods, reactKey: string): ReactNode;
43
+ }
44
+ declare function createInternalFoxmdRenderer(suppressHydrationWarning: boolean, specialImageSizeInTitleOrAlt: boolean, customReactComponentsForHtmlTags: HtmlTagReplaceReact, UNSAFE_allowHtml: boolean): FoxmdCustomRendererMethods;
45
+ declare function createFoxmdRenderer({ suppressHydrationWarning, specialImageSizeInTitleOrAlt, customRenderMethods, customReactComponentsForHtmlTags, UNSAFE_allowHtml }?: FoxmdRendererOptions): {
46
+ heading: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode, level: HeadingLevels, id?: string) => ReactNode;
47
+ paragraph: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode) => ReactNode;
48
+ link: (this: FoxmdCustomRendererMethods, reactKey: string, href: string, text: ReactNode, title?: string) => ReactNode;
49
+ image: (this: FoxmdCustomRendererMethods, reactKey: string, src: string, alt: string, title?: string) => ReactNode;
50
+ codespan: (this: FoxmdCustomRendererMethods, reactKey: string, code: string, lang?: string | null) => ReactNode;
51
+ code: (this: FoxmdCustomRendererMethods, reactKey: string, code: string, lang?: string) => ReactNode;
52
+ blockquote: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode) => ReactNode;
53
+ list: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode, ordered: boolean, start?: number) => ReactNode;
54
+ listItem: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[]) => ReactNode;
55
+ checkbox: (this: FoxmdCustomRendererMethods, reactKey: string, checked?: boolean) => ReactNode;
56
+ table: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[]) => ReactNode;
57
+ tableHeader: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode) => ReactNode;
58
+ tableBody: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[]) => ReactNode;
59
+ tableRow: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[]) => ReactNode;
60
+ tableCell: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode[], flags: TableFlags) => ReactNode;
61
+ strong: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode) => ReactNode;
62
+ em: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode) => ReactNode;
63
+ del: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode) => ReactNode;
64
+ text: (this: FoxmdCustomRendererMethods, reactKey: string, text: ReactNode) => ReactNode;
65
+ html: (this: FoxmdCustomRendererMethods, reactKey: string, html: string) => ReactNode | ReactNode[];
66
+ hr: (this: FoxmdCustomRendererMethods, reactKey: string) => ReactNode;
67
+ br: (this: FoxmdCustomRendererMethods, reactKey: string) => ReactNode;
69
68
  };
70
69
  type FoxmdRenderer = ReturnType<typeof createInternalFoxmdRenderer>;
71
70
 
72
71
  interface FoxmdParserParseResult {
73
- jsx: React.ReactNode[];
72
+ jsx: React$1.ReactNode[];
74
73
  toc: Array<{
75
74
  text: string;
76
75
  id: string;
@@ -95,4 +94,4 @@ interface FoxmdOptions {
95
94
  declare function foxmd(markdownString: string, { foxmdRendererOptions, foxmdParserOptions, markedInstance, lexerOptions, isInline }?: FoxmdOptions): FoxmdParserParseResult;
96
95
 
97
96
  export { createFoxmdParser, createFoxmdRenderer, foxmd };
98
- export type { FoxmdOptions, FoxmdParserOptions, FoxmdRendererOptions };
97
+ export type { FoxmdCustomRendererMethods, FoxmdOptions, FoxmdParserOptions, FoxmdRendererOptions };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import"server-only";import{lazyValue as e}from"foxts/lazy-value";import{Marked as t}from"marked";import{createElement as s}from"react";import{decode as r}from"html-entities";import{fastStringArrayJoin as l}from"foxts/fast-string-array-join";import{escapeRegexp as a}from"fast-escape-regexp";let n=new Map([["bash","shell"],["zsh","shell"],["sh","shell"],["js","javascript"],["ts","typescript"],["py","python"],["yml","yaml"]]);function o({suppressHydrationWarning:e=!1,specialImageSizeInTitleOrAlt:t=!0,customRenderMethods:r={},UNSAFE_allowHtml:l=!1}={}){return{...function(e,t,r){let l=[];function a(){return l.join("-")}function o(t,r=null,l={}){let n={key:"foxmd-"+a(),suppressHydrationWarning:e};return s(t,{...l,...n},r)}return{get elIdList(){return l},get elementId(){return a()},incrementElId(){l[l.length-1]+=1},heading:(e,t,s)=>o(`h${t}`,e,{id:s}),paragraph:e=>o("p",e),link:(e,t,s)=>((e.startsWith("javascript:")||e.startsWith("data:")||e.startsWith("vbscript:"))&&(e=""),o("a",t,{href:e,title:s,target:void 0})),image(e,s,r){let l,a;if(t){if(s.includes("|")){let[e,t]=s.split("|");t&&t.includes("x")&&([l,a]=t.split("x").map(e=>e.trim()),s=e)}(void 0===l||void 0===a)&&r?.includes("size:")&&(r=r.replace(/size:(\d+)x(\d+)/,(e,t,s)=>(l=t,a=s,"")))}return o("img",null,{src:e,alt:s,title:r,width:l,height:a})},codespan:(e,t=null)=>o("code",e,{className:t?`language-${t}`:void 0}),code(e,t=""){return o("pre",this.codespan(e,t),{"data-language":(n.has(t)?n.get(t):t).toUpperCase()})},blockquote:e=>o("blockquote",e),list:(e,t,s)=>o(t?"ol":"ul",e,t&&1!==s?{start:s}:{}),listItem:e=>o("li",e),checkbox:e=>o("input",null,{type:"checkbox",disabled:!0,checked:e}),table:e=>o("table",e),tableHeader:e=>o("thead",e),tableBody:e=>o("tbody",e),tableRow:e=>o("tr",e),tableCell:(e,t)=>o(t.header?"th":"td",e,{align:t.align}),strong:e=>o("strong",e),em:e=>o("em",e),del:e=>o("del",e),text:e=>e,html:e=>r?o("div",null,{dangerouslySetInnerHTML:{__html:e},style:{display:"contents"}}):e,hr:()=>o("hr"),br:()=>o("br")}}(e,t,l),...r}}let i=/[\u0000-\u001F]/g,b=/[\s!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~-]+/g,c={};for(let e of[{base:"A",letters:"AⒶA\xc0\xc1\xc2ẦẤẪẨ\xc3ĀĂẰẮẴẲȦǠ\xc4ǞẢ\xc5ǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",letters:"Ꜳ"},{base:"AE",letters:"\xc6ǼǢ"},{base:"AO",letters:"Ꜵ"},{base:"AU",letters:"Ꜷ"},{base:"AV",letters:"ꜸꜺ"},{base:"AY",letters:"Ꜽ"},{base:"B",letters:"BⒷBḂḄḆɃƂƁ"},{base:"C",letters:"CⒸCĆĈĊČ\xc7ḈƇȻꜾ"},{base:"D",letters:"DⒹDḊĎḌḐḒḎĐƋƊƉꝹ"},{base:"DZ",letters:"DZDŽ"},{base:"Dz",letters:"DzDž"},{base:"E",letters:"EⒺE\xc8\xc9\xcaỀẾỄỂẼĒḔḖĔĖ\xcbẺĚȄȆẸỆȨḜĘḘḚƐƎ"},{base:"F",letters:"FⒻFḞƑꝻ"},{base:"G",letters:"GⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾ"},{base:"H",letters:"HⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",letters:"IⒾI\xcc\xcd\xceĨĪĬİ\xcfḮỈǏȈȊỊĮḬƗ"},{base:"J",letters:"JⒿJĴɈ"},{base:"K",letters:"KⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",letters:"LⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",letters:"LJ"},{base:"Lj",letters:"Lj"},{base:"M",letters:"MⓂMḾṀṂⱮƜ"},{base:"N",letters:"NⓃNǸŃ\xd1ṄŇṆŅṊṈȠƝꞐꞤ"},{base:"NJ",letters:"NJ"},{base:"Nj",letters:"Nj"},{base:"O",letters:"OⓄO\xd2\xd3\xd4ỒỐỖỔ\xd5ṌȬṎŌṐṒŎȮȰ\xd6ȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬ\xd8ǾƆƟꝊꝌ"},{base:"OI",letters:"Ƣ"},{base:"OO",letters:"Ꝏ"},{base:"OU",letters:"Ȣ"},{base:"OE",letters:"\x8cŒ"},{base:"oe",letters:"\x9cœ"},{base:"P",letters:"PⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",letters:"QⓆQꝖꝘɊ"},{base:"R",letters:"RⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",letters:"SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",letters:"TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"TZ",letters:"Ꜩ"},{base:"U",letters:"UⓊU\xd9\xda\xdbŨṸŪṺŬ\xdcǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",letters:"VⓋVṼṾƲꝞɅ"},{base:"VY",letters:"Ꝡ"},{base:"W",letters:"WⓌWẀẂŴẆẄẈⱲ"},{base:"X",letters:"XⓍXẊẌ"},{base:"Y",letters:"YⓎYỲ\xddŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",letters:"ZⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",letters:"aⓐaẚ\xe0\xe1\xe2ầấẫẩ\xe3āăằắẵẳȧǡ\xe4ǟả\xe5ǻǎȁȃạậặḁąⱥɐ"},{base:"aa",letters:"ꜳ"},{base:"ae",letters:"\xe6ǽǣ"},{base:"ao",letters:"ꜵ"},{base:"au",letters:"ꜷ"},{base:"av",letters:"ꜹꜻ"},{base:"ay",letters:"ꜽ"},{base:"b",letters:"bⓑbḃḅḇƀƃɓ"},{base:"c",letters:"cⓒcćĉċč\xe7ḉƈȼꜿↄ"},{base:"d",letters:"dⓓdḋďḍḑḓḏđƌɖɗꝺ"},{base:"dz",letters:"dzdž"},{base:"e",letters:"eⓔe\xe8\xe9\xeaềếễểẽēḕḗĕė\xebẻěȅȇẹệȩḝęḙḛɇɛǝ"},{base:"f",letters:"fⓕfḟƒꝼ"},{base:"g",letters:"gⓖgǵĝḡğġǧģǥɠꞡᵹꝿ"},{base:"h",letters:"hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",letters:"ƕ"},{base:"i",letters:"iⓘi\xec\xed\xeeĩīĭ\xefḯỉǐȉȋịįḭɨı"},{base:"j",letters:"jⓙjĵǰɉ"},{base:"k",letters:"kⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",letters:"lⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇ"},{base:"lj",letters:"lj"},{base:"m",letters:"mⓜmḿṁṃɱɯ"},{base:"n",letters:"nⓝnǹń\xf1ṅňṇņṋṉƞɲʼnꞑꞥ"},{base:"nj",letters:"nj"},{base:"o",letters:"oⓞo\xf2\xf3\xf4ồốỗổ\xf5ṍȭṏōṑṓŏȯȱ\xf6ȫỏőǒȍȏơờớỡởợọộǫǭ\xf8ǿɔꝋꝍɵ"},{base:"oi",letters:"ƣ"},{base:"ou",letters:"ȣ"},{base:"oo",letters:"ꝏ"},{base:"p",letters:"pⓟpṕṗƥᵽꝑꝓꝕ"},{base:"q",letters:"qⓠqɋꝗꝙ"},{base:"r",letters:"rⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",letters:"sⓢs\xdfśṥŝṡšṧṣṩșşȿꞩꞅẛ"},{base:"t",letters:"tⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"tz",letters:"ꜩ"},{base:"u",letters:"uⓤu\xf9\xfa\xfbũṹūṻŭ\xfcǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",letters:"vⓥvṽṿʋꝟʌ"},{base:"vy",letters:"ꝡ"},{base:"w",letters:"wⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",letters:"xⓧxẋẍ"},{base:"y",letters:"yⓨyỳ\xfdŷỹȳẏ\xffỷẙỵƴɏỿ"},{base:"z",letters:"zⓩzźẑżžẓẕƶȥɀⱬꝣ"}])for(let t of e.letters.split(""))c[t]=e.base;function d(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let s=new Map;function n(t=[]){e.elIdList.push(0);let s=t.map(t=>{switch(t.type){case"text":return e.incrementElId(),e.text(r(t.text));case"strong":return e.incrementElId(),e.strong(n(t.tokens).jsx);case"em":return e.incrementElId(),e.em(n(t.tokens).jsx);case"del":return e.incrementElId(),e.del(n(t.tokens).jsx);case"codespan":return e.incrementElId(),e.codespan(r(t.text));case"link":return e.incrementElId(),e.link(t.href,n(t.tokens).jsx,t.title??void 0);case"image":return e.incrementElId(),e.image(t.href,t.text,t.title);case"html":return e.incrementElId(),e.html(t.text);case"br":return e.incrementElId(),e.br();case"escape":return e.incrementElId(),e.text(t.text);default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),null}});return e.elIdList.pop(),{jsx:s,toc:[]}}return{parse:function o(d){let u=[];e.elIdList.push(0);let p=d.map(d=>{switch(d.type){case"space":return null;case"heading":{let t=d.depth,o=function e(t=[]){return l(t.map(t=>{switch(t.type){case"text":case"codespan":return r(t.text);case"strong":case"em":case"del":case"link":return e(t.tokens);case"image":case"html":case"br":case"escape":return"";default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),""}}),"-")}(d.tokens),p=function(e){if("string"!=typeof e)throw TypeError("str must be a string!");let t=a("-");return e.replaceAll(/[^\u0000-\u007E]/g,e=>c[e]||e).replaceAll(i,"").replaceAll(b,"-").replaceAll(RegExp(`${t}{2,}`,"g"),"-").replaceAll(RegExp(`^${t}+|${t}+$`,"g"),"").toLowerCase()}(o),m=1;return s.has(p)?(m=s.get(p)+1,s.set(p,m),p=p+"-"+m):s.set(p,m),u.push({text:o,id:p,level:t}),e.incrementElId(),e.heading(n(d.tokens).jsx,t,p)}case"paragraph":if(t&&d.tokens?.length===1&&"image"===d.tokens[0].type)return n(d.tokens).jsx;return e.incrementElId(),e.paragraph(n(d.tokens).jsx);case"text":return d.tokens?n(d.tokens).jsx:d.text;case"blockquote":{let t=o(d.tokens).jsx;return e.incrementElId(),e.blockquote(t)}case"list":{e.elIdList.push(0);let t=d.items.map(t=>{let s=[];return t.task&&(e.incrementElId(),s.push(e.checkbox(t.checked??!1))),s.push(o(t.tokens).jsx),e.incrementElId(),e.listItem(s)});return e.elIdList.pop(),e.incrementElId(),e.list(t,d.ordered,d.ordered?d.start:void 0)}case"code":return e.incrementElId(),e.code(d.text,d.lang);case"html":return e.incrementElId(),e.html(d.text);case"table":{e.elIdList.push(0);let t=d.header.map((t,s)=>e.tableCell(n(t.tokens).jsx,{header:!0,align:d.align[s]}));e.elIdList.pop(),e.incrementElId();let s=e.tableRow(t);e.incrementElId();let r=e.tableHeader(s);e.elIdList.push(0);let l=d.rows.map(t=>{e.elIdList.push(0);let s=t.map((t,s)=>e.tableCell(n(t.tokens).jsx,{header:!1,align:d.align[s]}));return e.elIdList.pop(),e.incrementElId(),e.tableRow(s)});e.elIdList.pop(),e.incrementElId();let a=e.tableBody(l);return e.incrementElId(),e.table([r,a])}case"hr":return e.incrementElId(),e.hr();default:return console.warn(`[foxmd] Token with "${d.type}" type was not found`),null}});return e.elIdList.pop(),{jsx:p,toc:u}},parseInline:n}}let u=e(()=>new t);function p(e,{foxmdRendererOptions:t,foxmdParserOptions:s,markedInstance:r=u(),lexerOptions:l=function(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}(r),isInline:a=!1}={}){let n=r.lexer(e,l),i=d(o(t),s);return a?i.parseInline(n):i.parse(n)}export{d as createFoxmdParser,o as createFoxmdRenderer,p as foxmd};
1
+ import"server-only";import{lazyValue as e}from"foxts/lazy-value";import{Marked as t}from"marked";import{createElement as r,Fragment as a}from"react";import{Parser as n}from"htmlparser2";import{isDocument as i,DomHandler as s,isDirective as o,isText as l,isComment as c,isCDATA as p}from"domhandler";import d from"style-to-object";import{escapeRegexp as u}from"fast-escape-regexp";import{decode as h}from"html-entities";import{fastStringArrayJoin as m}from"foxts/fast-string-array-join";let g={accept:"accept",acceptcharset:"acceptCharset","accept-charset":"acceptCharset",accesskey:"accessKey",action:"action",allowfullscreen:"allowFullScreen",alt:"alt",as:"as",async:"async",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",capture:"capture",cellpadding:"cellPadding",cellspacing:"cellSpacing",challenge:"challenge",charset:"charSet",checked:"checked",children:"children",cite:"cite",class:"className",classid:"classID",classname:"className",cols:"cols",colspan:"colSpan",content:"content",contenteditable:"contentEditable",contextmenu:"contextMenu",controls:"controls",controlslist:"controlsList",coords:"coords",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",data:"data",datetime:"dateTime",default:"default",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",defer:"defer",dir:"dir",disabled:"disabled",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback",download:"download",draggable:"draggable",enctype:"encType",enterkeyhint:"enterKeyHint",fetchpriority:"fetchPriority",for:"htmlFor",form:"form",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",headers:"headers",height:"height",hidden:"hidden",high:"high",href:"href",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",id:"id",imagesizes:"imageSizes",imagesrcset:"imageSrcSet",inert:"inert",innerhtml:"innerHTML",inputmode:"inputMode",integrity:"integrity",is:"is",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",kind:"kind",label:"label",lang:"lang",list:"list",loop:"loop",low:"low",manifest:"manifest",marginwidth:"marginWidth",marginheight:"marginHeight",max:"max",maxlength:"maxLength",media:"media",mediagroup:"mediaGroup",method:"method",min:"min",minlength:"minLength",multiple:"multiple",muted:"muted",name:"name",nomodule:"noModule",nonce:"nonce",novalidate:"noValidate",open:"open",optimum:"optimum",pattern:"pattern",placeholder:"placeholder",playsinline:"playsInline",poster:"poster",preload:"preload",profile:"profile",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rel:"rel",required:"required",reversed:"reversed",role:"role",rows:"rows",rowspan:"rowSpan",sandbox:"sandbox",scope:"scope",scoped:"scoped",scrolling:"scrolling",seamless:"seamless",selected:"selected",shape:"shape",size:"size",sizes:"sizes",span:"span",spellcheck:"spellCheck",src:"src",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",start:"start",step:"step",style:"style",summary:"summary",tabindex:"tabIndex",target:"target",title:"title",type:"type",usemap:"useMap",value:"value",width:"width",wmode:"wmode",wrap:"wrap",about:"about",accentheight:"accentHeight","accent-height":"accentHeight",accumulate:"accumulate",additive:"additive",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",alphabetic:"alphabetic",amplitude:"amplitude",arabicform:"arabicForm","arabic-form":"arabicForm",ascent:"ascent",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",azimuth:"azimuth",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",bbox:"bbox",begin:"begin",bias:"bias",by:"by",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clip:"clip",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",color:"color",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",cursor:"cursor",cx:"cx",cy:"cy",d:"d",datatype:"datatype",decelerate:"decelerate",descent:"descent",diffuseconstant:"diffuseConstant",direction:"direction",display:"display",divisor:"divisor",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",dur:"dur",dx:"dx",dy:"dy",edgemode:"edgeMode",elevation:"elevation",enablebackground:"enableBackground","enable-background":"enableBackground",end:"end",exponent:"exponent",externalresourcesrequired:"externalResourcesRequired",fill:"fill",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filter:"filter",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",focusable:"focusable",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",format:"format",from:"from",fx:"fx",fy:"fy",g1:"g1",g2:"g2",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",hanging:"hanging",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",ideographic:"ideographic",imagerendering:"imageRendering","image-rendering":"imageRendering",in2:"in2",in:"in",inlist:"inlist",intercept:"intercept",k1:"k1",k2:"k2",k3:"k3",k4:"k4",k:"k",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",kerning:"kerning",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",local:"local",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",mask:"mask",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",mathematical:"mathematical",mode:"mode",numoctaves:"numOctaves",offset:"offset",opacity:"opacity",operator:"operator",order:"order",orient:"orient",orientation:"orientation",origin:"origin",overflow:"overflow",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder",panose1:"panose1","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",points:"points",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",popover:"popover",popovertarget:"popoverTarget",popovertargetaction:"popoverTargetAction",prefix:"prefix",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",property:"property",r:"r",radius:"radius",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",resource:"resource",restart:"restart",result:"result",results:"results",rotate:"rotate",rx:"rx",ry:"ry",scale:"scale",security:"security",seed:"seed",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",slope:"slope",spacing:"spacing",specularconstant:"specularConstant",specularexponent:"specularExponent",speed:"speed",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stemh:"stemh",stemv:"stemv",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",string:"string",stroke:"stroke",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",to:"to",transform:"transform",transformorigin:"transformOrigin","transform-origin":"transformOrigin",typeof:"typeof",u1:"u1",u2:"u2",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicode:"unicode",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",values:"values",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",version:"version",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",visibility:"visibility",vmathematical:"vMathematical","v-mathematical":"vMathematical",vocab:"vocab",widths:"widths",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",x1:"x1",x2:"x2",x:"x",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang",xmlns:"xmlns","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",y1:"y1",y2:"y2",y:"y",ychannelselector:"yChannelSelector",z:"z",zoomandpan:"zoomAndPan"},f=new Set(["allowFullScreen","async","autoPlay","controls","default","defer","disabled","disablePictureInPicture","disableRemotePlayback","formNoValidate","hidden","loop","noModule","noValidate","open","playsInline","readOnly","required","reversed","scoped","seamless","itemScope","autoFocus"]),b=new Set(["capture","download"]);function k(e,t){return e in t?t[e]:e}let y=/[\u0000-\u001F]/g,x=/[\s!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~-]+/g,v={};for(let e of[{base:"A",letters:"AⒶA\xc0\xc1\xc2ẦẤẪẨ\xc3ĀĂẰẮẴẲȦǠ\xc4ǞẢ\xc5ǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",letters:"Ꜳ"},{base:"AE",letters:"\xc6ǼǢ"},{base:"AO",letters:"Ꜵ"},{base:"AU",letters:"Ꜷ"},{base:"AV",letters:"ꜸꜺ"},{base:"AY",letters:"Ꜽ"},{base:"B",letters:"BⒷBḂḄḆɃƂƁ"},{base:"C",letters:"CⒸCĆĈĊČ\xc7ḈƇȻꜾ"},{base:"D",letters:"DⒹDḊĎḌḐḒḎĐƋƊƉꝹ"},{base:"DZ",letters:"DZDŽ"},{base:"Dz",letters:"DzDž"},{base:"E",letters:"EⒺE\xc8\xc9\xcaỀẾỄỂẼĒḔḖĔĖ\xcbẺĚȄȆẸỆȨḜĘḘḚƐƎ"},{base:"F",letters:"FⒻFḞƑꝻ"},{base:"G",letters:"GⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾ"},{base:"H",letters:"HⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",letters:"IⒾI\xcc\xcd\xceĨĪĬİ\xcfḮỈǏȈȊỊĮḬƗ"},{base:"J",letters:"JⒿJĴɈ"},{base:"K",letters:"KⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",letters:"LⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",letters:"LJ"},{base:"Lj",letters:"Lj"},{base:"M",letters:"MⓂMḾṀṂⱮƜ"},{base:"N",letters:"NⓃNǸŃ\xd1ṄŇṆŅṊṈȠƝꞐꞤ"},{base:"NJ",letters:"NJ"},{base:"Nj",letters:"Nj"},{base:"O",letters:"OⓄO\xd2\xd3\xd4ỒỐỖỔ\xd5ṌȬṎŌṐṒŎȮȰ\xd6ȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬ\xd8ǾƆƟꝊꝌ"},{base:"OI",letters:"Ƣ"},{base:"OO",letters:"Ꝏ"},{base:"OU",letters:"Ȣ"},{base:"OE",letters:"\x8cŒ"},{base:"oe",letters:"\x9cœ"},{base:"P",letters:"PⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",letters:"QⓆQꝖꝘɊ"},{base:"R",letters:"RⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",letters:"SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",letters:"TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"TZ",letters:"Ꜩ"},{base:"U",letters:"UⓊU\xd9\xda\xdbŨṸŪṺŬ\xdcǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",letters:"VⓋVṼṾƲꝞɅ"},{base:"VY",letters:"Ꝡ"},{base:"W",letters:"WⓌWẀẂŴẆẄẈⱲ"},{base:"X",letters:"XⓍXẊẌ"},{base:"Y",letters:"YⓎYỲ\xddŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",letters:"ZⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",letters:"aⓐaẚ\xe0\xe1\xe2ầấẫẩ\xe3āăằắẵẳȧǡ\xe4ǟả\xe5ǻǎȁȃạậặḁąⱥɐ"},{base:"aa",letters:"ꜳ"},{base:"ae",letters:"\xe6ǽǣ"},{base:"ao",letters:"ꜵ"},{base:"au",letters:"ꜷ"},{base:"av",letters:"ꜹꜻ"},{base:"ay",letters:"ꜽ"},{base:"b",letters:"bⓑbḃḅḇƀƃɓ"},{base:"c",letters:"cⓒcćĉċč\xe7ḉƈȼꜿↄ"},{base:"d",letters:"dⓓdḋďḍḑḓḏđƌɖɗꝺ"},{base:"dz",letters:"dzdž"},{base:"e",letters:"eⓔe\xe8\xe9\xeaềếễểẽēḕḗĕė\xebẻěȅȇẹệȩḝęḙḛɇɛǝ"},{base:"f",letters:"fⓕfḟƒꝼ"},{base:"g",letters:"gⓖgǵĝḡğġǧģǥɠꞡᵹꝿ"},{base:"h",letters:"hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",letters:"ƕ"},{base:"i",letters:"iⓘi\xec\xed\xeeĩīĭ\xefḯỉǐȉȋịįḭɨı"},{base:"j",letters:"jⓙjĵǰɉ"},{base:"k",letters:"kⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",letters:"lⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇ"},{base:"lj",letters:"lj"},{base:"m",letters:"mⓜmḿṁṃɱɯ"},{base:"n",letters:"nⓝnǹń\xf1ṅňṇņṋṉƞɲʼnꞑꞥ"},{base:"nj",letters:"nj"},{base:"o",letters:"oⓞo\xf2\xf3\xf4ồốỗổ\xf5ṍȭṏōṑṓŏȯȱ\xf6ȫỏőǒȍȏơờớỡởợọộǫǭ\xf8ǿɔꝋꝍɵ"},{base:"oi",letters:"ƣ"},{base:"ou",letters:"ȣ"},{base:"oo",letters:"ꝏ"},{base:"p",letters:"pⓟpṕṗƥᵽꝑꝓꝕ"},{base:"q",letters:"qⓠqɋꝗꝙ"},{base:"r",letters:"rⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",letters:"sⓢs\xdfśṥŝṡšṧṣṩșşȿꞩꞅẛ"},{base:"t",letters:"tⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"tz",letters:"ꜩ"},{base:"u",letters:"uⓤu\xf9\xfa\xfbũṹūṻŭ\xfcǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",letters:"vⓥvṽṿʋꝟʌ"},{base:"vy",letters:"ꝡ"},{base:"w",letters:"wⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",letters:"xⓧxẋẍ"},{base:"y",letters:"yⓨyỳ\xfdŷỹȳẏ\xffỷẙỵƴɏỿ"},{base:"z",letters:"zⓩzźẑżžẓẕƶȥɀⱬꝣ"}])for(let t of e.letters.split(""))v[t]=e.base;let w=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"]),z=new Map([["bash","shell"],["zsh","shell"],["sh","shell"],["js","javascript"],["ts","typescript"],["py","python"],["yml","yaml"]]);function S({suppressHydrationWarning:e=!1,specialImageSizeInTitleOrAlt:t=!0,customRenderMethods:u={},customReactComponentsForHtmlTags:h={},UNSAFE_allowHtml:m=!1}={}){return{...function(e,t,u,h){function m(t,a,n=null,i={}){return r(k(t,u),{...i,key:a,suppressHydrationWarning:e},n)}return{heading:(e,t,r,a)=>m(`h${r}`,e,t,{id:a}),paragraph:(e,t)=>m("p",e,t),link:(e,t,r,a)=>((t.startsWith("javascript:")||t.startsWith("data:")||t.startsWith("vbscript:"))&&(t=""),m("a",e,r,{href:t,title:a,target:void 0})),image(e,r,a,n){let i,s;if(t){if(a.includes("|")){let[e,t]=a.split("|");t&&t.includes("x")&&([i,s]=t.split("x").map(e=>e.trim()),a=e)}(void 0===i||void 0===s)&&n?.includes("size:")&&(n=n.replace(/size:(\d+)x(\d+)/,(e,t,r)=>(i=t,s=r,"")))}return m("img",e,null,{src:r,alt:a,title:n,width:i,height:s})},codespan:(e,t,r=null)=>m("code",e,t,{className:r?`language-${r}`:void 0}),code(e,t,r=""){return m("pre",e,this.codespan(e+"-codespan-"+r,t,r),{"data-language":(z.has(r)?z.get(r):r).toUpperCase()})},blockquote:(e,t)=>m("blockquote",e,t),list:(e,t,r,a)=>m(r?"ol":"ul",e,t,r&&1!==a?{start:a}:{}),listItem:(e,t)=>m("li",e,t),checkbox:(e,t)=>m("input",e,null,{type:"checkbox",disabled:!0,checked:t}),table:(e,t)=>m("table",e,t),tableHeader:(e,t)=>m("thead",e,t),tableBody:(e,t)=>m("tbody",e,t),tableRow:(e,t)=>m("tr",e,t),tableCell:(e,t,r)=>m(r.header?"th":"td",e,t,{align:r.align}),strong:(e,t)=>m("strong",e,t),em:(e,t)=>m("em",e,t),del:(e,t)=>m("del",e,t),text:e=>e,html(e,t){if(h){let h;return new n(h=new s,{decodeEntities:!0}).parseComplete(t),h.dom.map((t,n)=>(function e(t,n,s,u){if(o(t))return null;if(l(t))return t.data;if(c(t)||p(t))return null;let h=null;"children"in t&&t.children.length>0&&(h=t.children.reduce((t,r,a)=>{let i=e(r,a,s+"-"+n,u);return null!=i&&t.push(i),t},[]));var m,y=h;let x="name"in t&&t.name.includes("-"),v={key:"foxmd-html-"+s+"-"+n+("name"in t?"-"+t.name:"")};if("attribs"in t&&t.attribs){for(let e in t.attribs)if(Object.hasOwn(t.attribs,e)){if(x){v[e]=t.attribs[e];continue}if("ref"===e||e.startsWith("on"))continue;let r=t.attribs[e];if(e.startsWith("data-")||e.startsWith("aria-")){v[e]=""===r||r;continue}let a=e.toLowerCase();if(a in g&&(e=g[a]),"style"===e){v.style=d(r);continue}if(("checked"===e||"value"===e)&&"reset"!==t.attribs.type&&"submit"!==t.attribs.type){e=g[`default${a}`]||e;continue}if(f.has(e)){v[e]=!0;continue}if(b.has(e)){v[e]=""===r||r;continue}v[e]=r}}if("data"in t&&null!=t.data&&console.warn("[foxmd] Unknown node.data found vs node:",{node:t,data:t.data}),i(t))return r(a,v,y);return(m=t.name,w.has(m))?y?.length?(console.warn("[foxmd] Void HTML tag should not have children, foxmd push children after the self-closing tags.",{node:t,tag:t.name,children:y}),r(a,null,r(k(t.name,u),v),y)):r(k(t.name,u),v):r(k(t.name,u),v,y)})(t,n,e,u))}return t},hr:e=>m("hr",e),br:e=>m("br",e)}}(e,t,h,m),...u}}function A(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let r=new Map,a=[],n=()=>{a[a.length-1]+=1},i=()=>"foxmd|"+a.join("-");function s(t=[]){a.push(0);let r=!1,o="",l=t.map(t=>{switch(t.type){case"text":if(r)return o+=t.text,null;return n(),e.text(i(),h(t.text));case"strong":return n(),e.strong(i(),s(t.tokens).jsx);case"em":return n(),e.em(i(),s(t.tokens).jsx);case"del":return n(),e.del(i(),s(t.tokens).jsx);case"codespan":return n(),e.codespan(i(),h(t.text));case"link":return n(),e.link(i(),t.href,s(t.tokens).jsx,t.title??void 0);case"image":return n(),e.image(i(),t.href,t.text,t.title);case"html":{if("inRawBlock"in t&&(r=t.inRawBlock),r)return o+=t.text,null;n();let a=e.html(i(),o);return o="",a}case"br":return n(),e.br(i());case"escape":return n(),e.text(i(),t.text);default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),null}});return a.pop(),{jsx:l,toc:[]}}return{parse:function o(l){let c=[];a.push(0);let p=!1,d="",g=l.map(l=>{switch(l.type){case"space":return null;case"heading":{let t=l.depth,a=function e(t=[]){return m(t.map(t=>{switch(t.type){case"text":case"codespan":return h(t.text);case"strong":case"em":case"del":case"link":return e(t.tokens);case"image":case"html":case"br":case"escape":return"";default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),""}}),"-")}(l.tokens),o=function(e){if("string"!=typeof e)throw TypeError("str must be a string!");let t=u("-");return e.replaceAll(/[^\u0000-\u007E]/g,e=>v[e]||e).replaceAll(y,"").replaceAll(x,"-").replaceAll(RegExp(`${t}{2,}`,"g"),"-").replaceAll(RegExp(`^${t}+|${t}+$`,"g"),"").toLowerCase()}(a),p=1;return r.has(o)?(p=r.get(o)+1,r.set(o,p),o=o+"-"+p):r.set(o,p),c.push({text:a,id:o,level:t}),n(),e.heading(i(),s(l.tokens).jsx,t,o)}case"paragraph":if(t&&l.tokens?.length===1&&"image"===l.tokens[0].type)return s(l.tokens).jsx;return n(),e.paragraph(i(),s(l.tokens).jsx);case"text":if(p)return d+=l.text,null;return l.tokens?s(l.tokens).jsx:l.text;case"blockquote":{let t=o(l.tokens).jsx;return n(),e.blockquote(i(),t)}case"list":{a.push(0);let t=l.items.map(t=>{let r=[];return t.task&&(n(),r.push(e.checkbox(i(),t.checked??!1))),r.push(o(t.tokens).jsx),n(),e.listItem(i(),r)});return a.pop(),n(),e.list(i(),t,l.ordered,l.ordered?l.start:void 0)}case"code":return n(),e.code(i(),l.text,l.lang);case"html":{if("inRawBlock"in l&&(p=l.inRawBlock),p)return d+=l.text,null;n();let t=e.html(i(),d);return d="",t}case"table":{a.push(0);let t=l.header.map((t,r)=>(n(),e.tableCell(i(),s(t.tokens).jsx,{header:!0,align:l.align[r]})));a.pop(),n();let r=e.tableRow(i(),t);n();let o=e.tableHeader(i(),r);a.push(0);let c=l.rows.map(t=>{a.push(0);let r=t.map((t,r)=>(n(),e.tableCell(i(),s(t.tokens).jsx,{header:!1,align:l.align[r]})));return a.pop(),n(),e.tableRow(i(),r)});a.pop(),n();let p=e.tableBody(i(),c);return n(),e.table(i(),[o,p])}case"hr":return n(),e.hr(i());default:return console.warn(`[foxmd] Token with "${l.type}" type was not found`),null}});return a.pop(),{jsx:g,toc:c}},parseInline:s}}let R=e(()=>new t);function j(e,{foxmdRendererOptions:t,foxmdParserOptions:r,markedInstance:a=R(),lexerOptions:n=function(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}(a),isInline:i=!1}={}){let s=a.lexer(e,n),o=A(S(t),r);return i?o.parseInline(s):o.parse(s)}export{A as createFoxmdParser,S as createFoxmdRenderer,j as foxmd};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foxmd",
3
- "version": "0.1.0-beta.4",
3
+ "version": "0.2.0-beta.10",
4
4
  "description": "An opinionated Markdown to React transformer for React Server Component",
5
5
  "repository": {
6
6
  "url": "https://github.com/SukkaW/foxmd"
@@ -32,19 +32,23 @@
32
32
  "author": "SukkaW <https://skk.moe>",
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
+ "domhandler": "^5.0.3",
35
36
  "fast-escape-regexp": "^1.0.1",
36
- "foxts": "^5.0.2",
37
+ "foxts": "^5.0.4",
37
38
  "html-entities": "^2.6.0",
39
+ "htmlparser2": "^10.0.0",
38
40
  "marked": "^15.0.12",
39
- "server-only": "^0.0.1"
41
+ "server-only": "^0.0.1",
42
+ "style-to-object": "^1.0.14"
40
43
  },
41
44
  "devDependencies": {
42
45
  "@types/react": "^19.2.7",
43
46
  "bumpp": "^10.3.2",
44
47
  "bunchee": "^6.6.2",
45
- "eslint": "^9.39.1",
46
- "eslint-config-sukka": "^8.0.5",
47
- "eslint-formatter-sukka": "^8.0.5",
48
+ "eslint": "^9.39.2",
49
+ "eslint-config-sukka": "^8.0.6",
50
+ "eslint-formatter-sukka": "^8.0.6",
51
+ "html-tags": "^5.1.0",
48
52
  "typescript": "^5.9.3"
49
53
  },
50
54
  "peerDependencies": {