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

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"),n=require("htmlparser2"),a=require("domhandler"),i=require("style-to-object"),s=require("html-entities"),l=require("foxts/fast-string-array-join"),o=require("fast-escape-regexp"),c=i&&i.__esModule?i:{default:i};let d={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"},p=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"]),m=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"]),h=new Map([["bash","shell"],["zsh","shell"],["sh","shell"],["js","javascript"],["ts","typescript"],["py","python"],["yml","yaml"]]);function g({suppressHydrationWarning:e=!1,specialImageSizeInTitleOrAlt:t=!0,customRenderMethods:i={},UNSAFE_allowHtml:s=!1}={}){return{...function(e,t,i){let s=[];function l(){return s.join("-")}function o(t,n=null,a={}){let i={key:"foxmd-"+l(),suppressHydrationWarning:e};return r.createElement(t,{...a,...i},n)}return{get elIdList(){return s},get elementId(){return l()},incrementElId(){s[s.length-1]+=1},heading:(e,t,r)=>o(`h${t}`,e,{id:r}),paragraph:e=>o("p",e),link:(e,t,r)=>((e.startsWith("javascript:")||e.startsWith("data:")||e.startsWith("vbscript:"))&&(e=""),o("a",t,{href:e,title:r,target:void 0})),image(e,r,n){let a,i;if(t){if(r.includes("|")){let[e,t]=r.split("|");t&&t.includes("x")&&([a,i]=t.split("x").map(e=>e.trim()),r=e)}(void 0===a||void 0===i)&&n?.includes("size:")&&(n=n.replace(/size:(\d+)x(\d+)/,(e,t,r)=>(a=t,i=r,"")))}return o("img",null,{src:e,alt:r,title:n,width:a,height:i})},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":(h.has(t)?h.get(t):t).toUpperCase()})},blockquote:e=>o("blockquote",e),list:(e,t,r)=>o(t?"ol":"ul",e,t&&1!==r?{start:r}:{}),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){if(i){var t;let i;return t=l(),i=new a.DomHandler,new n.Parser(i,{decodeEntities:!0}).parseComplete(e),i.dom.map((e,n)=>(function e(t,n,i,s=0){if(a.isDirective(t))return null;if(a.isText(t))return t.data;if(a.isComment(t)||a.isCDATA(t))return null;let l=null;"children"in t&&t.children.length>0&&(l=t.children.reduce((t,r,n)=>{let a=e(r,n,i,s+1);return null!=a&&t.push(a),t},[]));var o,h=l;let g="name"in t&&t.name.includes("-"),f={key:"foxmd-html-"+i+"-"+s+"-"+n};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 n=e.toLowerCase();if(n in d&&(e=d[n]),"style"===e){f.style=c.default(r);continue}if(("checked"===e||"value"===e)&&"reset"!==t.attribs.type&&"submit"!==t.attribs.type){e=d[`default${n}`]||e;continue}if(p.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}),a.isDocument(t))return r.createElement(r.Fragment,f,h);return(o=t.name,m.has(o))?h?.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:h}),r.createElement(r.Fragment,{key:f.key},r.createElement(t.name,f),h)):r.createElement(t.name,f):r.createElement(t.name,f,h)})(e,n,t,0))}return e},hr:()=>o("hr"),br:()=>o("br")}}(e,t,s),...i}}let f=/[\u0000-\u001F]/g,b=/[\s!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~-]+/g,k={};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(""))k[t]=e.base;function y(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let r=new Map;function n(t=[]){e.elIdList.push(0);let r=t.map(t=>{switch(t.type){case"text":return e.incrementElId(),e.text(s.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(s.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:r,toc:[]}}return{parse:function a(i){let c=[];e.elIdList.push(0);let d=i.map(i=>{switch(i.type){case"space":return null;case"heading":{let t=i.depth,a=function e(t=[]){return l.fastStringArrayJoin(t.map(t=>{switch(t.type){case"text":case"codespan":return s.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`),""}}),"-")}(i.tokens),d=function(e){if("string"!=typeof e)throw TypeError("str must be a string!");let t=o.escapeRegexp("-");return e.replaceAll(/[^\u0000-\u007E]/g,e=>k[e]||e).replaceAll(f,"").replaceAll(b,"-").replaceAll(RegExp(`${t}{2,}`,"g"),"-").replaceAll(RegExp(`^${t}+|${t}+$`,"g"),"").toLowerCase()}(a),p=1;return r.has(d)?(p=r.get(d)+1,r.set(d,p),d=d+"-"+p):r.set(d,p),c.push({text:a,id:d,level:t}),e.incrementElId(),e.heading(n(i.tokens).jsx,t,d)}case"paragraph":if(t&&i.tokens?.length===1&&"image"===i.tokens[0].type)return n(i.tokens).jsx;return e.incrementElId(),e.paragraph(n(i.tokens).jsx);case"text":return i.tokens?n(i.tokens).jsx:i.text;case"blockquote":{let t=a(i.tokens).jsx;return e.incrementElId(),e.blockquote(t)}case"list":{e.elIdList.push(0);let t=i.items.map(t=>{let r=[];return t.task&&(e.incrementElId(),r.push(e.checkbox(t.checked??!1))),r.push(a(t.tokens).jsx),e.incrementElId(),e.listItem(r)});return e.elIdList.pop(),e.incrementElId(),e.list(t,i.ordered,i.ordered?i.start:void 0)}case"code":return e.incrementElId(),e.code(i.text,i.lang);case"html":return e.incrementElId(),e.html(i.text);case"table":{e.elIdList.push(0);let t=i.header.map((t,r)=>e.tableCell(n(t.tokens).jsx,{header:!0,align:i.align[r]}));e.elIdList.pop(),e.incrementElId();let r=e.tableRow(t);e.incrementElId();let a=e.tableHeader(r);e.elIdList.push(0);let s=i.rows.map(t=>{e.elIdList.push(0);let r=t.map((t,r)=>e.tableCell(n(t.tokens).jsx,{header:!1,align:i.align[r]}));return e.elIdList.pop(),e.incrementElId(),e.tableRow(r)});e.elIdList.pop(),e.incrementElId();let l=e.tableBody(s);return e.incrementElId(),e.table([a,l])}case"hr":return e.incrementElId(),e.hr();default:return console.warn(`[foxmd] Token with "${i.type}" type was not found`),null}});return e.elIdList.pop(),{jsx:d,toc:c}},parseInline:n}}let x=e.lazyValue(()=>new t.Marked);exports.createFoxmdParser=y,exports.createFoxmdRenderer=g,exports.foxmd=function(e,{foxmdRendererOptions:t,foxmdParserOptions:r,markedInstance:n=x(),lexerOptions:a=function(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}(n),isInline:i=!1}={}){let s=n.lexer(e,a),l=y(g(t),r);return i?l.parseInline(s):l.parse(s)};
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Token, Marked, MarkedOptions } from 'marked';
2
- import React, { ReactNode } from 'react';
2
+ import React$1, { ReactNode } from 'react';
3
3
 
4
4
  type HeadingLevels = 1 | 2 | 3 | 4 | 5 | 6;
5
5
  interface TableFlags {
@@ -36,7 +36,7 @@ declare function createInternalFoxmdRenderer(suppressHydrationWarning: boolean,
36
36
  em(children: ReactNode): ReactNode;
37
37
  del(children: ReactNode): ReactNode;
38
38
  text(text: ReactNode): ReactNode;
39
- html(html: string): ReactNode;
39
+ html(html: string): React.ReactNode | React.ReactNode[];
40
40
  hr(): ReactNode;
41
41
  br(): ReactNode;
42
42
  };
@@ -60,7 +60,7 @@ declare function createFoxmdRenderer({ suppressHydrationWarning, specialImageSiz
60
60
  em: (children: ReactNode) => ReactNode;
61
61
  del: (children: ReactNode) => ReactNode;
62
62
  text: (text: ReactNode) => ReactNode;
63
- html: (html: string) => ReactNode;
63
+ html: (html: string) => React.ReactNode | React.ReactNode[];
64
64
  hr: () => ReactNode;
65
65
  br: () => ReactNode;
66
66
  elIdList: number[];
@@ -70,7 +70,7 @@ declare function createFoxmdRenderer({ suppressHydrationWarning, specialImageSiz
70
70
  type FoxmdRenderer = ReturnType<typeof createInternalFoxmdRenderer>;
71
71
 
72
72
  interface FoxmdParserParseResult {
73
- jsx: React.ReactNode[];
73
+ jsx: React$1.ReactNode[];
74
74
  toc: Array<{
75
75
  text: string;
76
76
  id: string;
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 n}from"react";import{Parser as i}from"htmlparser2";import{isDocument as a,DomHandler as s,isDirective as o,isText as l,isComment as c,isCDATA as d}from"domhandler";import p from"style-to-object";import{decode as u}from"html-entities";import{fastStringArrayJoin as m}from"foxts/fast-string-array-join";import{escapeRegexp as h}from"fast-escape-regexp";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"]),k=new Set(["area","base","br","col","embed","hr","img","input","link","meta","source","track","wbr"]),y=new Map([["bash","shell"],["zsh","shell"],["sh","shell"],["js","javascript"],["ts","typescript"],["py","python"],["yml","yaml"]]);function x({suppressHydrationWarning:e=!1,specialImageSizeInTitleOrAlt:t=!0,customRenderMethods:u={},UNSAFE_allowHtml:m=!1}={}){return{...function(e,t,u){let m=[];function h(){return m.join("-")}function x(t,n=null,i={}){let a={key:"foxmd-"+h(),suppressHydrationWarning:e};return r(t,{...i,...a},n)}return{get elIdList(){return m},get elementId(){return h()},incrementElId(){m[m.length-1]+=1},heading:(e,t,r)=>x(`h${t}`,e,{id:r}),paragraph:e=>x("p",e),link:(e,t,r)=>((e.startsWith("javascript:")||e.startsWith("data:")||e.startsWith("vbscript:"))&&(e=""),x("a",t,{href:e,title:r,target:void 0})),image(e,r,n){let i,a;if(t){if(r.includes("|")){let[e,t]=r.split("|");t&&t.includes("x")&&([i,a]=t.split("x").map(e=>e.trim()),r=e)}(void 0===i||void 0===a)&&n?.includes("size:")&&(n=n.replace(/size:(\d+)x(\d+)/,(e,t,r)=>(i=t,a=r,"")))}return x("img",null,{src:e,alt:r,title:n,width:i,height:a})},codespan:(e,t=null)=>x("code",e,{className:t?`language-${t}`:void 0}),code(e,t=""){return x("pre",this.codespan(e,t),{"data-language":(y.has(t)?y.get(t):t).toUpperCase()})},blockquote:e=>x("blockquote",e),list:(e,t,r)=>x(t?"ol":"ul",e,t&&1!==r?{start:r}:{}),listItem:e=>x("li",e),checkbox:e=>x("input",null,{type:"checkbox",disabled:!0,checked:e}),table:e=>x("table",e),tableHeader:e=>x("thead",e),tableBody:e=>x("tbody",e),tableRow:e=>x("tr",e),tableCell:(e,t)=>x(t.header?"th":"td",e,{align:t.align}),strong:e=>x("strong",e),em:e=>x("em",e),del:e=>x("del",e),text:e=>e,html(e){if(u){var t;let u;return t=h(),new i(u=new s,{decodeEntities:!0}).parseComplete(e),u.dom.map((e,i)=>(function e(t,i,s,u=0){if(o(t))return null;if(l(t))return t.data;if(c(t)||d(t))return null;let m=null;"children"in t&&t.children.length>0&&(m=t.children.reduce((t,r,n)=>{let i=e(r,n,s,u+1);return null!=i&&t.push(i),t},[]));var h,y=m;let x="name"in t&&t.name.includes("-"),v={key:"foxmd-html-"+s+"-"+u+"-"+i};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 n=e.toLowerCase();if(n in g&&(e=g[n]),"style"===e){v.style=p(r);continue}if(("checked"===e||"value"===e)&&"reset"!==t.attribs.type&&"submit"!==t.attribs.type){e=g[`default${n}`]||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}),a(t))return r(n,v,y);return(h=t.name,k.has(h))?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(n,{key:v.key},r(t.name,v),y)):r(t.name,v):r(t.name,v,y)})(e,i,t,0))}return e},hr:()=>x("hr"),br:()=>x("br")}}(e,t,m),...u}}let v=/[\u0000-\u001F]/g,w=/[\s!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~-]+/g,I={};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(""))I[t]=e.base;function E(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let r=new Map;function n(t=[]){e.elIdList.push(0);let r=t.map(t=>{switch(t.type){case"text":return e.incrementElId(),e.text(u(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(u(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:r,toc:[]}}return{parse:function i(a){let s=[];e.elIdList.push(0);let o=a.map(a=>{switch(a.type){case"space":return null;case"heading":{let t=a.depth,i=function e(t=[]){return m(t.map(t=>{switch(t.type){case"text":case"codespan":return u(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`),""}}),"-")}(a.tokens),o=function(e){if("string"!=typeof e)throw TypeError("str must be a string!");let t=h("-");return e.replaceAll(/[^\u0000-\u007E]/g,e=>I[e]||e).replaceAll(v,"").replaceAll(w,"-").replaceAll(RegExp(`${t}{2,}`,"g"),"-").replaceAll(RegExp(`^${t}+|${t}+$`,"g"),"").toLowerCase()}(i),l=1;return r.has(o)?(l=r.get(o)+1,r.set(o,l),o=o+"-"+l):r.set(o,l),s.push({text:i,id:o,level:t}),e.incrementElId(),e.heading(n(a.tokens).jsx,t,o)}case"paragraph":if(t&&a.tokens?.length===1&&"image"===a.tokens[0].type)return n(a.tokens).jsx;return e.incrementElId(),e.paragraph(n(a.tokens).jsx);case"text":return a.tokens?n(a.tokens).jsx:a.text;case"blockquote":{let t=i(a.tokens).jsx;return e.incrementElId(),e.blockquote(t)}case"list":{e.elIdList.push(0);let t=a.items.map(t=>{let r=[];return t.task&&(e.incrementElId(),r.push(e.checkbox(t.checked??!1))),r.push(i(t.tokens).jsx),e.incrementElId(),e.listItem(r)});return e.elIdList.pop(),e.incrementElId(),e.list(t,a.ordered,a.ordered?a.start:void 0)}case"code":return e.incrementElId(),e.code(a.text,a.lang);case"html":return e.incrementElId(),e.html(a.text);case"table":{e.elIdList.push(0);let t=a.header.map((t,r)=>e.tableCell(n(t.tokens).jsx,{header:!0,align:a.align[r]}));e.elIdList.pop(),e.incrementElId();let r=e.tableRow(t);e.incrementElId();let i=e.tableHeader(r);e.elIdList.push(0);let s=a.rows.map(t=>{e.elIdList.push(0);let r=t.map((t,r)=>e.tableCell(n(t.tokens).jsx,{header:!1,align:a.align[r]}));return e.elIdList.pop(),e.incrementElId(),e.tableRow(r)});e.elIdList.pop(),e.incrementElId();let o=e.tableBody(s);return e.incrementElId(),e.table([i,o])}case"hr":return e.incrementElId(),e.hr();default:return console.warn(`[foxmd] Token with "${a.type}" type was not found`),null}});return e.elIdList.pop(),{jsx:o,toc:s}},parseInline:n}}let z=e(()=>new t);function S(e,{foxmdRendererOptions:t,foxmdParserOptions:r,markedInstance:n=z(),lexerOptions:i=function(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}(n),isInline:a=!1}={}){let s=n.lexer(e,i),o=E(x(t),r);return a?o.parseInline(s):o.parse(s)}export{E as createFoxmdParser,x as createFoxmdRenderer,S 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.1",
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,11 +32,14 @@
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
37
  "foxts": "^5.0.2",
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",
@@ -45,6 +48,7 @@
45
48
  "eslint": "^9.39.1",
46
49
  "eslint-config-sukka": "^8.0.5",
47
50
  "eslint-formatter-sukka": "^8.0.5",
51
+ "html-tags": "^5.1.0",
48
52
  "typescript": "^5.9.3"
49
53
  },
50
54
  "peerDependencies": {