+183
| # foxmd | ||
| An opinionated Markdown to React transformer for React Server Components. | ||
| ## Why foxmd? | ||
| **Markdown with React** | ||
| It is very common to use Markdown files as a content source (either from CMS or local files) for React applications, for building interactive documentation sites, blogs, knowledge bases, etc. However, many existing Markdown renderers (like `marked.js` or `markdown-it`, and many more) focus on converting Markdown to static HTML strings, which has limitations when working with React: | ||
| - We have to use `dangerouslySetInnerHTML`, which can lead to security vulnerabilities if not handled properly. | ||
| - We cannot customize how static HTML strings are rendered using React components. | ||
| - The most notable example would be links, where we often want to use meta-frameworks/router libraries' `<Link />` component instead of a standard `<a>` tag. | ||
| **Why not MDX** | ||
| MDX is somewhat a popular solution to this problem. In fact, I have been using MDX in some of my projects for a while, the most notable one being [MirrorZ Help](https://help.mirrorz.org) ([GitHub](https://github.com/mirrorz-org/mirrorz-help)). However, MDX has its own limitations: | ||
| - The entire "Unified" infrastructure ecosystem is just overly complicated. So you have Markdown/MDX, you will have to wrap them in a self-contained virtual file object `VFile`, and then you will have to process them through the Retext and/or Remark infrastructure. Then you will have to convert Markdown/MDX to HTML (not exactly, but you get the idea), and then process the HTML (actually it is HAST, but you get the idea) through Rehype infrastructure. | ||
| - The "Unified" ecosystem has an overly complicated AST structure. | ||
| - Once I tried to write a custom Remark plugin to extract code string from an MDX code block component to extract and process some metadata (for the [MirrorZ Help](https://help.mirrorz.org) project I mentioned above). This is what I ended up with: https://github.com/mirrorz-org/mirrorz-help/blob/348843ef19e96c0924b6b334f58c94f832dd8e31/src/lib/server/remark-extract-code-from-codeblock.ts | ||
| - Once I tried to port custom header ID generation logic from Gatsby (a React-based framework which also uses Remark), here is what I ended up with: https://github.com/mirrorz-org/mirrorz-help/blob/348843ef19e96c0924b6b334f58c94f832dd8e31/src/lib/server/remark-header-custom-id.ts | ||
| - Do you like working with such complicated AST structures? Well, I don't. | ||
| - The MDX compiler only outputs the "code" string, not the actual React elements JavaScript objects. This is OK if your Markdown/MDX is all local files that can be compiled at build time (via a webpack loader or compiler plugin of sorts), but it becomes a huge problem when you want to load Markdown/MDX content from a CMS (a.k.a. Remote MDX). In this case, you will always end up using `eval` or `new Function` (`@mdx-js/mdx` even exposes `new Function` via its `run` and `runSync` exports). | ||
| **What makes foxmd different** | ||
| foxmd offers a more straightforward solution that focuses on very specific use cases, so it is way simpler and performant: | ||
| - foxmd only works with Markdown. So no need to deal with the complicated MDX syntax. | ||
| - foxmd turns Markdown into React elements directly without any intermediate steps, i.e., does not turn Markdown into HTML first. | ||
| - To work with Markdown directly, foxmd uses `marked.js`'s Tokenizer/Lexer to turn a Markdown string into a series of Tokens, and turns those Tokens directly into React elements, without generating or processing any AST. | ||
| - Even without an AST, foxmd still allows customization of how Markdown Tokens are rendered. | ||
| - foxmd also supports HTML inside Markdown (manual opt-in required). By using `htmlparser2` (one of the most performant JavaScript-based HTML parsers), foxmd can turn an HTML string into a series of "DOM" Tokens, and then render them into React elements (yes, still no AST here). This not only avoids the need for `dangerouslySetInnerHTML`, but also allows customization of how HTML tags are rendered. | ||
| - foxmd not only provides a way to customize how different Markdown Tokens are rendered, but also provides a way of customizing how different tags are rendered (which is similar to `MDXComponents`). | ||
| - In the end, foxmd produces React elements JavaScript objects directly, so you don't need to use `eval` or `new Function`. | ||
| - foxmd works on both the server and client sides. However, it is recommended to use foxmd within React Server Components to reduce the client bundle size. Since foxmd produces React elements as JavaScript objects, it is very easy to use foxmd in React Server Components and utilize foxmd's customization options to render specific parts (such as links) using React Client Components. | ||
| - If you do need to run foxmd within the browser (e.g., in React Client Components), after minifying and bundling, the foxmd package size is around 190 KiB (68.6 KiB gzipped). And foxmd is fully synchronous and pure (without side effects), so you can even run foxmd directly in the components' render phase, without worrying about `useEffect`. | ||
| ## Installation | ||
| ```bash | ||
| # npm | ||
| npm install foxmd | ||
| # yarn | ||
| yarn add foxmd | ||
| # pnpm | ||
| pnpm add foxmd | ||
| ``` | ||
| ## Usage | ||
| **Turn Markdown string into React elements** | ||
| ```tsx | ||
| import { foxmd } from 'foxmd'; | ||
| import Link from 'next/link'; | ||
| export interface MarkdownComponentProps { | ||
| filePath: string; | ||
| } | ||
| // Example React Server Component that renders Markdown content | ||
| export default async function MarkdownComponent({ slug }: MarkdownComponentProps) { | ||
| /** Load your markdown string from file system, CMS, or other sources, in your React Server Component **/ | ||
| const markdownString = await fsp.readFile(filePath, 'utf-8'); | ||
| const { jsx, toc }: React.ReactNode[] = foxmd(markdownString, { | ||
| // Whether to parse markdown as inline or as block, default to false (block) | ||
| isInline: false, | ||
| // Options for rendering markdown tokens | ||
| foxmdRendererOptions: { | ||
| // Whether to add `suppressHydrationWarning` to all elements, default to false | ||
| // Note that if you override the default render methods, this option no longer applies | ||
| suppressHydrationWarning: false, | ||
| // Define how different markdown tokens should be rendered to React elements | ||
| customRenderMethods: { | ||
| // Here is an example of customizing how the Markdown "link" token is rendered | ||
| link(reactKey: string, href: string, text: ReactNode, title?: string) { | ||
| // You can even strip potentially dangerous links here | ||
| if (href.startsWith('javascript:')) { | ||
| href = '#'; | ||
| } | ||
| return <Link key={reactKey} href={href} title={title}>{text}</Link>; | ||
| } | ||
| }, | ||
| // Define how different tags should be rendered to React elements. | ||
| // This option is not applied to customized markdown token render method (overridden by `customRenderMethods` above) | ||
| customReactComponentsForHtmlTags: { | ||
| // Here is an example of customizing how `<a>` tag is rendered | ||
| // This is just for demonstration purposes. In real-world usage, since you have already customized the "link" token render method above, | ||
| //This option will not affect links from markdown (if you have "UNSAFE_allowHtml" enabled, links from inline HTML still apply). | ||
| a: (props) => <Link {...props} /> | ||
| }, | ||
| // Whether to use `htmlparser2` to parse inline HTML and turn them into React elements, default to false | ||
| //Even though foxmd does not use `dangerouslySetInnerHTML`, enabling this option may still introduce XSS security risks | ||
| // if the markdown content is not sanitized properly | ||
| UNSAFE_allowHtml: false | ||
| }, | ||
| foxmdParserOptions: { | ||
| // This is a very special option designed to work with Hexo (https://hexo.io/), a Node.js-powered static site generator. | ||
| // Have I ever mentioned that foxmd is opinionated? This is one of those opinions. Default to false, only enable this if you know what you are doing. | ||
| UNSAFE_pickSingleImageChildOutOfParentParagraph: false | ||
| }, | ||
| // Options for the Marked.js lexer | ||
| // By default, GFM and Breaks are enabled (opinionated choices), but you can always provide your own options here | ||
| lexerOptions: {}, | ||
| // Sometimes Marked.js options are not enough, you may want to provide your own customized Marked.js instance, | ||
| // e.g., enabling some Marked.js extensions/plugins that are not supported via options, and here is where you do it | ||
| // Note that not all Marked.js extensions/plugins are compatible with foxmd, since foxmd only uses the Tokenizer/Lexer from Marked.js | ||
| markedInstance: undefined, | ||
| }); | ||
| // Want to work with the Table of Contents (TOC)? No problem, foxmd gets you covered | ||
| // foxmd handles slug/id generation and collision avoidance out of the box. | ||
| // | ||
| // Currently, slug/id generation is not customizable (have I ever mentioned that foxmd is opinionated?), but PR | ||
| // is always welcome if you really want a custom slug/id generation logic (e.g., working with your existing system) | ||
| // | ||
| // Also, note that the toc is a flat array of headings, with their level and text content. | ||
| // Most likely, you will want to convert this flat array into a tree structure. | ||
| // Currently, foxmd does not provide such utilities, but in the future, it may provide one, and as always, PR is welcome. | ||
| console.log({ toc }); | ||
| return ( | ||
| <div> | ||
| {/** Since foxmd returns an array of React elements, you can just use it directly in your React component */} | ||
| {jsx} | ||
| </div> | ||
| ); | ||
| } | ||
| ``` | ||
| **Get Pure Text version of the Markdown content** | ||
| Sometimes you may want to extract the pure text content from a Markdown string. Here are the most notable use cases: | ||
| - `<meta />` description for SEO or OpenGraph purpose | ||
| - Text preview/summaries/excerpts for article listing | ||
| - Search index | ||
| - Word counter/reading time estimator | ||
| And foxmd has got you covered: | ||
| ```tsx | ||
| import { markdownToText } from 'foxmd'; | ||
| // For the word counter/reading time estimator example, I use the "alfaaz" package here | ||
| // It is the fastest word counter library on Node.js with CJK support | ||
| import { countWords } from "alfaaz"; | ||
| const markdownString = ` | ||
| # Hello World | ||
| `; | ||
| const textContent = markdownToText(markdownString, { | ||
| // You are already familiar with these options by now | ||
| lexerOptions: {}, | ||
| markedInstance: undefined, | ||
| // Whether to SKIP (NOT INCLUDE) code block content when extracting text, default to false | ||
| // Enable this option if you don't want code block content to be included in the text content | ||
| // Inline code (`code`) is always included | ||
| skipCodeBlock: false | ||
| }); | ||
| const wordCount = countWords(textContent); | ||
| ``` | ||
| ## License | ||
| [MIT](LICENSE) | ||
| ---- | ||
| **foxmd** © [Sukka](https://github.com/SukkaW), Authored and maintained by Sukka with help from contributors ([list](https://github.com/SukkaW/foxmd/graphs/contributors)). | ||
| > [Personal Website](https://skk.moe) · [Blog](https://blog.skk.moe) · GitHub [@SukkaW](https://github.com/SukkaW) · Telegram Channel [@SukkaChannel](https://t.me/SukkaChannel) · Twitter [@isukkaw](https://twitter.com/isukkaw) · BlueSky [@skk.moe](https://bsky.app/profile/skk.moe) · Mastodon [@sukka@acg.mn](https://acg.mn/@sukka) | ||
| <p align="center"> | ||
| <a href="https://github.com/sponsors/SukkaW/"> | ||
| <img src="https://sponsor.cdn.skk.moe/sponsors.svg"/> | ||
| </a> | ||
| </p> |
+1
-1
@@ -1,1 +0,1 @@ | ||
| Object.defineProperty(exports,"__esModule",{value:!0});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("fast-escape-regexp"),o=require("foxts/guard"),l=require("html-entities"),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"]);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;function b(e,t){let r="";for(let n=0,a=e.length;n<a;n++)r+=function(e,t){switch(e.type){case"text":if(e.tokens)return b(e.tokens,t);return l.decode(e.text);case"heading":case"paragraph":case"blockquote":return b(e.tokens,t)+"\n";case"link":case"list_item":return b(e.tokens,t);case"em":case"strong":case"codespan":case"del":case"escape":return l.decode(e.text);case"code":if(t)return"";return l.decode(e.text)+"\n";case"br":case"hr":case"html":case"image":case"table":case"def":return"\n";case"space":return e.raw;case"list":{let r="";for(let n=0,a=e.items.length;n<a;n++)r+=b(e.items[n].tokens,t)+"\n";return r}default:o.never(e,"marked token")}}(e[n],t);return r}let 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:i={},customReactComponentsForHtmlTags:s={},UNSAFE_allowHtml:o=!1}={}){return{...function(e,t,i,s){function o(t,n,a=null,s={}){let l=h(t,i),c=Object.entries(s).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});return c.key=n,e&&(c.suppressHydrationWarning=!0),r.createElement(l,c,a)}return{heading:(e,t,r,n)=>o(`h${r}`,e,t,{id:n}),paragraph:(e,t)=>o("p",e,t),link:(e,t,r,n)=>((t.startsWith("javascript:")||t.startsWith("data:")||t.startsWith("vbscript:"))&&(t=""),o("a",e,r,{href:t,title:n})),image(e,r,n,a){let i,s;if(t){if(n.includes("|")){let[e,t]=n.split("|");t&&t.includes("x")&&([i,s]=t.split("x").map(e=>e.trim()),n=e)}(void 0===i||void 0===s)&&a?.includes("size:")&&(a=a.replace(/size:(\d+)x(\d+)/,(e,t,r)=>(i=t,s=r,"")))}return o("img",e,null,{src:r,alt:n,title:a,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":(y.has(r)?y.get(r):r).toUpperCase()})},blockquote:(e,t)=>o("blockquote",e,t),list:(e,t,r,n)=>o(r?"ol":"ul",e,t,r&&1!==n?{start:n}:{}),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||void 0}),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 a.DomHandler,new n.Parser(s,{decodeEntities:!0}).parseComplete(t),s.dom.map((t,n)=>(function e(t,n,i,s){if(a.isDirective(t))return null;if(a.isText(t))return t.data;if(a.isComment(t)||a.isCDATA(t))return null;let o=null;"children"in t&&t.children.length>0&&(o=t.children.reduce((t,r,a)=>{let o=e(r,a,i+"-"+n,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+"-"+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(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,m);return(l=t.name,k.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,n,e,i))}return t},hr:e=>o("hr",e),br:e=>o("br",e)}}(e,t,s,o),...i}}function v(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let r=new Map,n=[],a=()=>{n[n.length-1]+=1};function i(t=[]){n.push(0);let r=!1,s="",o=t.map(t=>{switch(t.type){case"text":if(r)return s+=t.text,null;return a(),e.text(l.decode(t.text));case"strong":return a(),e.strong(n.join("-"),i(t.tokens).jsx);case"em":return a(),e.em(n.join("-"),i(t.tokens).jsx);case"del":return a(),e.del(n.join("-"),i(t.tokens).jsx);case"codespan":return a(),e.codespan(n.join("-"),l.decode(t.text));case"link":return a(),e.link(n.join("-"),t.href,i(t.tokens).jsx,t.title??void 0);case"image":return a(),e.image(n.join("-"),t.href,t.text,t.title);case"html":{if("inRawBlock"in t&&(r=t.inRawBlock),r)return s+=t.text,null;a();let i=e.html(n.join("-"),s);return s="",i}case"br":return a(),e.br(n.join("-"));case"escape":return a(),e.text(t.text);default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),null}});return n.pop(),{jsx:o,toc:[]}}return{parse:function o(c){let d=[];n.push(0);let p=!1,u="",h=c.map(c=>{switch(c.type){case"space":return" ";case"heading":{let t=c.depth,o=b(c.tokens,!0),l=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()}(o),p=1;return r.has(l)?(p=r.get(l)+1,r.set(l,p),l=l+"-"+p):r.set(l,p),d.push({text:o,id:l,level:t}),a(),e.heading(n.join("-"),i(c.tokens).jsx,t,l)}case"paragraph":if(t&&c.tokens?.length===1&&"image"===c.tokens[0].type)return i(c.tokens).jsx;return a(),e.paragraph(n.join("-"),i(c.tokens).jsx);case"text":if(p)return u+=c.text,null;return c.tokens?i(c.tokens).jsx:l.decode(c.text);case"blockquote":{let t=o(c.tokens).jsx;return a(),e.blockquote(n.join("-"),t)}case"list":{n.push(0);let t=c.items.map(t=>{let r=[];return t.task&&(a(),r.push(e.checkbox(n.join("-"),t.checked??!1))),r.push(o(t.tokens).jsx),a(),e.listItem(n.join("-"),r)});return n.pop(),a(),e.list(n.join("-"),t,c.ordered,c.ordered?c.start:null)}case"code":return a(),e.code(n.join("-"),c.text,c.lang);case"html":{if("inRawBlock"in c&&(p=c.inRawBlock),p)return u+=c.text,null;a();let t=e.html(n.join("-"),u);return u="",t}case"table":{n.push(0);let t=c.header.map((t,r)=>(a(),e.tableCell(n.join("-"),i(t.tokens).jsx,{header:!0,align:c.align[r]})));n.pop(),a();let r=e.tableRow(n.join("-"),t);a();let s=e.tableHeader(n.join("-"),r);n.push(0);let o=c.rows.map(t=>{n.push(0);let r=t.map((t,r)=>(a(),e.tableCell(n.join("-"),i(t.tokens).jsx,{header:!1,align:c.align[r]})));return n.pop(),a(),e.tableRow(n.join("-"),r)});n.pop(),a();let l=e.tableBody(n.join("-"),o);return a(),e.table(n.join("-"),[s,l])}case"hr":return a(),e.hr(n.join("-"));default:return console.warn(`[foxmd] Token with "${c.type}" type was not found`),null}});return n.pop(),{jsx:h,toc:d}},parseInline:i}}let w=e.lazyValue(()=>new t.Marked);function j(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}exports.createFoxmdParser=v,exports.createFoxmdRenderer=x,exports.foxmd=function(e,{foxmdRendererOptions:t,foxmdParserOptions:r,markedInstance:n=w(),lexerOptions:a=j(n),isInline:i=!1}={}){let s=n.lexer(e,a),o=v(x(t),r);return i?o.parseInline(s):o.parse(s)},exports.markdownToText=function(e,{markedInstance:t=w(),lexerOptions:r=j(t),skipCodeBlock:n=!1}={}){return b(t.lexer(e,r),n)}; | ||
| Object.defineProperty(exports,"__esModule",{value:!0});var e=require("foxts/lazy-value"),t=require("marked"),r=require("react"),n=require("htmlparser2"),a=require("domhandler"),i=require("postcss"),s=require("postcss-js"),o=require("fast-escape-regexp"),l=require("foxts/guard"),c=require("html-entities");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(["inert","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;function b(e,t){let r="";for(let n=0,a=e.length;n<a;n++)r+=function(e,t){switch(e.type){case"text":if(e.tokens)return b(e.tokens,t);return c.decode(e.text);case"heading":case"paragraph":case"blockquote":return b(e.tokens,t)+"\n";case"link":case"list_item":return b(e.tokens,t);case"em":case"strong":case"codespan":case"del":case"escape":return c.decode(e.text);case"code":if(t)return"";return c.decode(e.text)+"\n";case"br":case"hr":case"html":case"image":case"table":case"def":return"\n";case"space":return e.raw;case"list":{let r="";for(let n=0,a=e.items.length;n<a;n++)r+=b(e.items[n].tokens,t)+"\n";return r}default:l.never(e,"marked token")}}(e[n],t);return r}let 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,customRenderMethods:t={},customReactComponentsForHtmlTags:o={},UNSAFE_allowHtml:l=!1}={}){return{...function(e,t,o){function l(n,a,i=null,s={}){let o=h(n,t),c=Object.entries(s).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});return c.key=a,e&&(c.suppressHydrationWarning=!0),r.createElement(o,c,i)}return{heading:(e,t,r,n)=>l(`h${r}`,e,t,{id:n}),paragraph:(e,t)=>l("p",e,t),link:(e,t,r,n)=>((t.startsWith("javascript:")||t.startsWith("data:")||t.startsWith("vbscript:"))&&(t=""),l("a",e,r,{href:t,title:n})),image:(e,t,r,n)=>l("img",e,null,{src:t,alt:r,title:n}),codespan:(e,t,r=null)=>l("code",e,t,{className:r?`language-${r}`:void 0}),code(e,t,r=""){return l("pre",e,this.codespan(e+"-codespan-"+r,t,r),{"data-language":(y.has(r)?y.get(r):r).toUpperCase()})},blockquote:(e,t)=>l("blockquote",e,t),list:(e,t,r,n)=>l(r?"ol":"ul",e,t,r&&1!==n?{start:n}:{}),listItem:(e,t)=>l("li",e,t),checkbox:(e,t)=>l("input",e,null,{type:"checkbox",disabled:!0,checked:t}),table:(e,t)=>l("table",e,t),tableHeader:(e,t)=>l("thead",e,t),tableBody:(e,t)=>l("tbody",e,t),tableRow:(e,t)=>l("tr",e,t),tableCell:(e,t,r)=>l(r.header?"th":"td",e,t,{align:r.align||void 0}),strong:(e,t)=>l("strong",e,t),em:(e,t)=>l("em",e,t),del:(e,t)=>l("del",e,t),text:e=>e,html(e,l){if(o){let o;return o=new a.DomHandler,new n.Parser(o,{decodeEntities:!0}).parseComplete(l),o.dom.map((n,o)=>(function e(t,n,o,l){if(a.isDirective(t))return null;if(a.isText(t))return t.data;if(a.isComment(t)||a.isCDATA(t))return null;let c=null;"children"in t&&t.children.length>0&&(c=t.children.reduce((t,r,a)=>{let i=e(r,a,o+"-"+n,l);return null!=i&&t.push(i),t},[]));var m,g=c;let f="name"in t&&t.name.includes("-"),b={key:"foxmd-html-"+o+"-"+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(f){b[e]=t.attribs[e];continue}if("ref"===e||e.startsWith("on"))continue;let r=t.attribs[e];if(e.startsWith("data-")||e.startsWith("aria-")){b[e]=""===r||r;continue}let n=e.toLowerCase();if(n in p&&(e=p[n]),"style"===e){b.style=s.objectify(i.parse(r),{stringifyImportant:!0});continue}if(("checked"===e||"value"===e)&&"reset"!==t.attribs.type&&"submit"!==t.attribs.type){e=p[`default${n}`]||e;continue}if(d.has(e)){b[e]=!0;continue}if(u.has(e)){b[e]=""===r||r;continue}b[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,b,g);return(m=t.name,k.has(m))?g?.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:g}),r.createElement(r.Fragment,null,r.createElement(h(t.name,l),b),g)):r.createElement(h(t.name,l),b):r.createElement(h(t.name,l),b,g)})(n,o,e,t))}return l},hr:e=>l("hr",e),br:e=>l("br",e)}}(e,o,l),...t}}function v(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let r=new Map,n=[],a=()=>{n[n.length-1]+=1};function i(t=[]){n.push(0);let r=!1,s="",o=t.map(t=>{switch(t.type){case"text":if(r)return s+=t.text,null;return a(),e.text(c.decode(t.text));case"strong":return a(),e.strong(n.join("-"),i(t.tokens).jsx);case"em":return a(),e.em(n.join("-"),i(t.tokens).jsx);case"del":return a(),e.del(n.join("-"),i(t.tokens).jsx);case"codespan":return a(),e.codespan(n.join("-"),c.decode(t.text));case"link":return a(),e.link(n.join("-"),t.href,i(t.tokens).jsx,t.title??void 0);case"image":return a(),e.image(n.join("-"),t.href,t.text,t.title);case"html":{if("inRawBlock"in t&&(r=t.inRawBlock),r)return s+=t.text,null;a();let i=e.html(n.join("-"),s);return s="",i}case"br":return a(),e.br(n.join("-"));case"escape":return a(),e.text(t.text);default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),null}});return n.pop(),{jsx:o,toc:[]}}return{parse:function s(l){let p=[];n.push(0);let d=!1,u="",h=l.map(l=>{switch(l.type){case"space":return" ";case"heading":{let t=l.depth,s=b(l.tokens,!0),c=function(e){if("string"!=typeof e)throw TypeError("str must be a string!");let t=o.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()}(s),d=1;return r.has(c)?(d=r.get(c)+1,r.set(c,d),c=c+"-"+d):r.set(c,d),p.push({text:s,id:c,level:t}),a(),e.heading(n.join("-"),i(l.tokens).jsx,t,c)}case"paragraph":if(t&&l.tokens?.length===1&&"image"===l.tokens[0].type)return i(l.tokens).jsx;return a(),e.paragraph(n.join("-"),i(l.tokens).jsx);case"text":if(d)return u+=l.text,null;return l.tokens?i(l.tokens).jsx:c.decode(l.text);case"blockquote":{let t=s(l.tokens).jsx;return a(),e.blockquote(n.join("-"),t)}case"list":{n.push(0);let t=l.items.map(t=>{let r=[];return t.task&&(a(),r.push(e.checkbox(n.join("-"),t.checked??!1))),r.push(s(t.tokens).jsx),a(),e.listItem(n.join("-"),r)});return n.pop(),a(),e.list(n.join("-"),t,l.ordered,l.ordered?l.start:null)}case"code":return a(),e.code(n.join("-"),l.text,l.lang);case"html":{if("inRawBlock"in l&&(d=l.inRawBlock),d)return u+=l.text,null;a();let t=e.html(n.join("-"),u);return u="",t}case"table":{n.push(0);let t=l.header.map((t,r)=>(a(),e.tableCell(n.join("-"),i(t.tokens).jsx,{header:!0,align:l.align[r]})));n.pop(),a();let r=e.tableRow(n.join("-"),t);a();let s=e.tableHeader(n.join("-"),r);n.push(0);let o=l.rows.map(t=>{n.push(0);let r=t.map((t,r)=>(a(),e.tableCell(n.join("-"),i(t.tokens).jsx,{header:!1,align:l.align[r]})));return n.pop(),a(),e.tableRow(n.join("-"),r)});n.pop(),a();let c=e.tableBody(n.join("-"),o);return a(),e.table(n.join("-"),[s,c])}case"hr":return a(),e.hr(n.join("-"));default:return console.warn(`[foxmd] Token with "${l.type}" type was not found`),null}});return n.pop(),{jsx:h,toc:p}},parseInline:i}}let w=e.lazyValue(()=>new t.Marked);function j(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}exports.createFoxmdParser=v,exports.createFoxmdRenderer=x,exports.foxmd=function(e,{foxmdRendererOptions:t,foxmdParserOptions:r,markedInstance:n=w(),lexerOptions:a=j(n),isInline:i=!1}={}){let s;s="string"==typeof e?n.lexer(e,a):e;let o=v(x(t),r);return i?o.parseInline(s):o.parse(s)},exports.markdownToText=function(e,{markedInstance:t=w(),lexerOptions:r=j(t),skipCodeBlock:n=!1}={}){return b("string"==typeof e?t.lexer(e,r):e,n)}; |
+5
-6
@@ -1,2 +0,2 @@ | ||
| import { MarkedToken, Marked, MarkedOptions } from 'marked'; | ||
| import { MarkedToken, Marked, MarkedOptions, Token } from 'marked'; | ||
| import React$1, { ReactNode } from 'react'; | ||
@@ -17,3 +17,2 @@ | ||
| customReactComponentsForHtmlTags?: HtmlTagReplaceReact; | ||
| specialImageSizeInTitleOrAlt?: boolean; | ||
| UNSAFE_allowHtml?: boolean; | ||
@@ -45,4 +44,4 @@ } | ||
| } | ||
| declare function createInternalFoxmdRenderer(suppressHydrationWarning: boolean, specialImageSizeInTitleOrAlt: boolean, customReactComponentsForHtmlTags: HtmlTagReplaceReact, UNSAFE_allowHtml: boolean): FoxmdCustomRendererMethods; | ||
| declare function createFoxmdRenderer({ suppressHydrationWarning, specialImageSizeInTitleOrAlt, customRenderMethods, customReactComponentsForHtmlTags, UNSAFE_allowHtml }?: FoxmdRendererOptions): { | ||
| declare function createInternalFoxmdRenderer(suppressHydrationWarning: boolean, customReactComponentsForHtmlTags: HtmlTagReplaceReact, UNSAFE_allowHtml: boolean): FoxmdCustomRendererMethods; | ||
| declare function createFoxmdRenderer({ suppressHydrationWarning, customRenderMethods, customReactComponentsForHtmlTags, UNSAFE_allowHtml }?: FoxmdRendererOptions): { | ||
| heading: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode, level: HeadingLevels, id?: string) => ReactNode; | ||
@@ -96,3 +95,3 @@ paragraph: (this: FoxmdCustomRendererMethods, reactKey: string, children: ReactNode) => ReactNode; | ||
| } | ||
| declare function foxmd(markdownString: string, { foxmdRendererOptions, foxmdParserOptions, markedInstance, lexerOptions, isInline }?: FoxmdOptions): FoxmdParserParseResult; | ||
| declare function foxmd(markdownString: string | Token[], { foxmdRendererOptions, foxmdParserOptions, markedInstance, lexerOptions, isInline }?: FoxmdOptions): FoxmdParserParseResult; | ||
| interface MarkdownToTextOptions { | ||
@@ -103,5 +102,5 @@ markedInstance?: Marked; | ||
| } | ||
| declare function markdownToText(markdownString: string, { markedInstance, lexerOptions, skipCodeBlock }?: MarkdownToTextOptions): string; | ||
| declare function markdownToText(markdownString: string | Token[], { markedInstance, lexerOptions, skipCodeBlock }?: MarkdownToTextOptions): string; | ||
| export { createFoxmdParser, createFoxmdRenderer, foxmd, markdownToText }; | ||
| export type { FoxmdCustomRendererMethods, FoxmdOptions, FoxmdParserOptions, FoxmdRendererOptions, MarkdownToTextOptions }; |
+1
-1
@@ -1,1 +0,1 @@ | ||
| 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 a}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{never as h}from"foxts/guard";import{decode as m}from"html-entities";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;function w(e,t){let r="";for(let n=0,a=e.length;n<a;n++)r+=function(e,t){switch(e.type){case"text":if(e.tokens)return w(e.tokens,t);return m(e.text);case"heading":case"paragraph":case"blockquote":return w(e.tokens,t)+"\n";case"link":case"list_item":return w(e.tokens,t);case"em":case"strong":case"codespan":case"del":case"escape":return m(e.text);case"code":if(t)return"";return m(e.text)+"\n";case"br":case"hr":case"html":case"image":case"table":case"def":return"\n";case"space":return e.raw;case"list":{let r="";for(let n=0,a=e.items.length;n<a;n++)r+=w(e.items[n].tokens,t)+"\n";return r}default:h(e,"marked token")}}(e[n],t);return r}let j=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,n,a=null,i={}){let s=k(t,u),o=Object.entries(i).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});return o.key=n,e&&(o.suppressHydrationWarning=!0),r(s,o,a)}return{heading:(e,t,r,n)=>m(`h${r}`,e,t,{id:n}),paragraph:(e,t)=>m("p",e,t),link:(e,t,r,n)=>((t.startsWith("javascript:")||t.startsWith("data:")||t.startsWith("vbscript:"))&&(t=""),m("a",e,r,{href:t,title:n})),image(e,r,n,a){let i,s;if(t){if(n.includes("|")){let[e,t]=n.split("|");t&&t.includes("x")&&([i,s]=t.split("x").map(e=>e.trim()),n=e)}(void 0===i||void 0===s)&&a?.includes("size:")&&(a=a.replace(/size:(\d+)x(\d+)/,(e,t,r)=>(i=t,s=r,"")))}return m("img",e,null,{src:r,alt:n,title:a,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,n)=>m(r?"ol":"ul",e,t,r&&1!==n?{start:n}:{}),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||void 0}),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 a(h=new s,{decodeEntities:!0}).parseComplete(t),h.dom.map((t,a)=>(function e(t,a,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,n)=>{let i=e(r,n,s+"-"+a,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+"-"+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(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=d(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}),i(t))return r(n,v,y);return(m=t.name,j.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(n,null,r(k(t.name,u),v),y)):r(k(t.name,u),v):r(k(t.name,u),v,y)})(t,a,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,n=[],a=()=>{n[n.length-1]+=1};function i(t=[]){n.push(0);let r=!1,s="",o=t.map(t=>{switch(t.type){case"text":if(r)return s+=t.text,null;return a(),e.text(m(t.text));case"strong":return a(),e.strong(n.join("-"),i(t.tokens).jsx);case"em":return a(),e.em(n.join("-"),i(t.tokens).jsx);case"del":return a(),e.del(n.join("-"),i(t.tokens).jsx);case"codespan":return a(),e.codespan(n.join("-"),m(t.text));case"link":return a(),e.link(n.join("-"),t.href,i(t.tokens).jsx,t.title??void 0);case"image":return a(),e.image(n.join("-"),t.href,t.text,t.title);case"html":{if("inRawBlock"in t&&(r=t.inRawBlock),r)return s+=t.text,null;a();let i=e.html(n.join("-"),s);return s="",i}case"br":return a(),e.br(n.join("-"));case"escape":return a(),e.text(t.text);default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),null}});return n.pop(),{jsx:o,toc:[]}}return{parse:function s(o){let l=[];n.push(0);let c=!1,p="",d=o.map(o=>{switch(o.type){case"space":return" ";case"heading":{let t=o.depth,s=w(o.tokens,!0),c=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()}(s),p=1;return r.has(c)?(p=r.get(c)+1,r.set(c,p),c=c+"-"+p):r.set(c,p),l.push({text:s,id:c,level:t}),a(),e.heading(n.join("-"),i(o.tokens).jsx,t,c)}case"paragraph":if(t&&o.tokens?.length===1&&"image"===o.tokens[0].type)return i(o.tokens).jsx;return a(),e.paragraph(n.join("-"),i(o.tokens).jsx);case"text":if(c)return p+=o.text,null;return o.tokens?i(o.tokens).jsx:m(o.text);case"blockquote":{let t=s(o.tokens).jsx;return a(),e.blockquote(n.join("-"),t)}case"list":{n.push(0);let t=o.items.map(t=>{let r=[];return t.task&&(a(),r.push(e.checkbox(n.join("-"),t.checked??!1))),r.push(s(t.tokens).jsx),a(),e.listItem(n.join("-"),r)});return n.pop(),a(),e.list(n.join("-"),t,o.ordered,o.ordered?o.start:null)}case"code":return a(),e.code(n.join("-"),o.text,o.lang);case"html":{if("inRawBlock"in o&&(c=o.inRawBlock),c)return p+=o.text,null;a();let t=e.html(n.join("-"),p);return p="",t}case"table":{n.push(0);let t=o.header.map((t,r)=>(a(),e.tableCell(n.join("-"),i(t.tokens).jsx,{header:!0,align:o.align[r]})));n.pop(),a();let r=e.tableRow(n.join("-"),t);a();let s=e.tableHeader(n.join("-"),r);n.push(0);let l=o.rows.map(t=>{n.push(0);let r=t.map((t,r)=>(a(),e.tableCell(n.join("-"),i(t.tokens).jsx,{header:!1,align:o.align[r]})));return n.pop(),a(),e.tableRow(n.join("-"),r)});n.pop(),a();let c=e.tableBody(n.join("-"),l);return a(),e.table(n.join("-"),[s,c])}case"hr":return a(),e.hr(n.join("-"));default:return console.warn(`[foxmd] Token with "${o.type}" type was not found`),null}});return n.pop(),{jsx:d,toc:l}},parseInline:i}}let O=e(()=>new t);function R(e,{foxmdRendererOptions:t,foxmdParserOptions:r,markedInstance:n=O(),lexerOptions:a=T(n),isInline:i=!1}={}){let s=n.lexer(e,a),o=A(S(t),r);return i?o.parseInline(s):o.parse(s)}function T(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}function P(e,{markedInstance:t=O(),lexerOptions:r=T(t),skipCodeBlock:n=!1}={}){return w(t.lexer(e,r),n)}export{A as createFoxmdParser,S as createFoxmdRenderer,R as foxmd,P as markdownToText}; | ||
| 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 a}from"htmlparser2";import{isDocument as i,DomHandler as s,isDirective as o,isText as l,isComment as c,isCDATA as p}from"domhandler";import{parse as d}from"postcss";import{objectify as u}from"postcss-js";import{escapeRegexp as h}from"fast-escape-regexp";import{never as m}from"foxts/guard";import{decode as g}from"html-entities";let f={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"},b=new Set(["inert","allowFullScreen","async","autoPlay","controls","default","defer","disabled","disablePictureInPicture","disableRemotePlayback","formNoValidate","hidden","loop","noModule","noValidate","open","playsInline","readOnly","required","reversed","scoped","seamless","itemScope","autoFocus"]),k=new Set(["capture","download"]);function y(e,t){return e in t?t[e]:e}let x=/[\u0000-\u001F]/g,v=/[\s!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~-]+/g,w={};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(""))w[t]=e.base;function j(e,t){let r="";for(let n=0,a=e.length;n<a;n++)r+=function(e,t){switch(e.type){case"text":if(e.tokens)return j(e.tokens,t);return g(e.text);case"heading":case"paragraph":case"blockquote":return j(e.tokens,t)+"\n";case"link":case"list_item":return j(e.tokens,t);case"em":case"strong":case"codespan":case"del":case"escape":return g(e.text);case"code":if(t)return"";return g(e.text)+"\n";case"br":case"hr":case"html":case"image":case"table":case"def":return"\n";case"space":return e.raw;case"list":{let r="";for(let n=0,a=e.items.length;n<a;n++)r+=j(e.items[n].tokens,t)+"\n";return r}default:m(e,"marked token")}}(e[n],t);return r}let S=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 A({suppressHydrationWarning:e=!1,customRenderMethods:t={},customReactComponentsForHtmlTags:h={},UNSAFE_allowHtml:m=!1}={}){return{...function(e,t,h){function m(n,a,i=null,s={}){let o=y(n,t),l=Object.entries(s).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});return l.key=a,e&&(l.suppressHydrationWarning=!0),r(o,l,i)}return{heading:(e,t,r,n)=>m(`h${r}`,e,t,{id:n}),paragraph:(e,t)=>m("p",e,t),link:(e,t,r,n)=>((t.startsWith("javascript:")||t.startsWith("data:")||t.startsWith("vbscript:"))&&(t=""),m("a",e,r,{href:t,title:n})),image:(e,t,r,n)=>m("img",e,null,{src:t,alt:r,title:n}),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,n)=>m(r?"ol":"ul",e,t,r&&1!==n?{start:n}:{}),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||void 0}),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,m){if(h){let h;return new a(h=new s,{decodeEntities:!0}).parseComplete(m),h.dom.map((a,s)=>(function e(t,a,s,h){if(o(t))return null;if(l(t))return t.data;if(c(t)||p(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+"-"+a,h);return null!=i&&t.push(i),t},[]));var g,x=m;let v="name"in t&&t.name.includes("-"),w={key:"foxmd-html-"+s+"-"+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(v){w[e]=t.attribs[e];continue}if("ref"===e||e.startsWith("on"))continue;let r=t.attribs[e];if(e.startsWith("data-")||e.startsWith("aria-")){w[e]=""===r||r;continue}let n=e.toLowerCase();if(n in f&&(e=f[n]),"style"===e){w.style=u(d(r),{stringifyImportant:!0});continue}if(("checked"===e||"value"===e)&&"reset"!==t.attribs.type&&"submit"!==t.attribs.type){e=f[`default${n}`]||e;continue}if(b.has(e)){w[e]=!0;continue}if(k.has(e)){w[e]=""===r||r;continue}w[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(n,w,x);return(g=t.name,S.has(g))?x?.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:x}),r(n,null,r(y(t.name,h),w),x)):r(y(t.name,h),w):r(y(t.name,h),w,x)})(a,s,e,t))}return m},hr:e=>m("hr",e),br:e=>m("br",e)}}(e,h,m),...t}}function O(e,{UNSAFE_pickSingleImageChildOutOfParentParagraph:t=!1}={}){let r=new Map,n=[],a=()=>{n[n.length-1]+=1};function i(t=[]){n.push(0);let r=!1,s="",o=t.map(t=>{switch(t.type){case"text":if(r)return s+=t.text,null;return a(),e.text(g(t.text));case"strong":return a(),e.strong(n.join("-"),i(t.tokens).jsx);case"em":return a(),e.em(n.join("-"),i(t.tokens).jsx);case"del":return a(),e.del(n.join("-"),i(t.tokens).jsx);case"codespan":return a(),e.codespan(n.join("-"),g(t.text));case"link":return a(),e.link(n.join("-"),t.href,i(t.tokens).jsx,t.title??void 0);case"image":return a(),e.image(n.join("-"),t.href,t.text,t.title);case"html":{if("inRawBlock"in t&&(r=t.inRawBlock),r)return s+=t.text,null;a();let i=e.html(n.join("-"),s);return s="",i}case"br":return a(),e.br(n.join("-"));case"escape":return a(),e.text(t.text);default:return console.warn(`[foxmd] Token with "${t.type}" type was not found`),null}});return n.pop(),{jsx:o,toc:[]}}return{parse:function s(o){let l=[];n.push(0);let c=!1,p="",d=o.map(o=>{switch(o.type){case"space":return" ";case"heading":{let t=o.depth,s=j(o.tokens,!0),c=function(e){if("string"!=typeof e)throw TypeError("str must be a string!");let t=h("-");return e.replaceAll(/[^\u0000-\u007E]/g,e=>w[e]||e).replaceAll(x,"").replaceAll(v,"-").replaceAll(RegExp(`${t}{2,}`,"g"),"-").replaceAll(RegExp(`^${t}+|${t}+$`,"g"),"").toLowerCase()}(s),p=1;return r.has(c)?(p=r.get(c)+1,r.set(c,p),c=c+"-"+p):r.set(c,p),l.push({text:s,id:c,level:t}),a(),e.heading(n.join("-"),i(o.tokens).jsx,t,c)}case"paragraph":if(t&&o.tokens?.length===1&&"image"===o.tokens[0].type)return i(o.tokens).jsx;return a(),e.paragraph(n.join("-"),i(o.tokens).jsx);case"text":if(c)return p+=o.text,null;return o.tokens?i(o.tokens).jsx:g(o.text);case"blockquote":{let t=s(o.tokens).jsx;return a(),e.blockquote(n.join("-"),t)}case"list":{n.push(0);let t=o.items.map(t=>{let r=[];return t.task&&(a(),r.push(e.checkbox(n.join("-"),t.checked??!1))),r.push(s(t.tokens).jsx),a(),e.listItem(n.join("-"),r)});return n.pop(),a(),e.list(n.join("-"),t,o.ordered,o.ordered?o.start:null)}case"code":return a(),e.code(n.join("-"),o.text,o.lang);case"html":{if("inRawBlock"in o&&(c=o.inRawBlock),c)return p+=o.text,null;a();let t=e.html(n.join("-"),p);return p="",t}case"table":{n.push(0);let t=o.header.map((t,r)=>(a(),e.tableCell(n.join("-"),i(t.tokens).jsx,{header:!0,align:o.align[r]})));n.pop(),a();let r=e.tableRow(n.join("-"),t);a();let s=e.tableHeader(n.join("-"),r);n.push(0);let l=o.rows.map(t=>{n.push(0);let r=t.map((t,r)=>(a(),e.tableCell(n.join("-"),i(t.tokens).jsx,{header:!1,align:o.align[r]})));return n.pop(),a(),e.tableRow(n.join("-"),r)});n.pop(),a();let c=e.tableBody(n.join("-"),l);return a(),e.table(n.join("-"),[s,c])}case"hr":return a(),e.hr(n.join("-"));default:return console.warn(`[foxmd] Token with "${o.type}" type was not found`),null}});return n.pop(),{jsx:d,toc:l}},parseInline:i}}let R=e(()=>new t);function T(e,{foxmdRendererOptions:t,foxmdParserOptions:r,markedInstance:n=R(),lexerOptions:a=P(n),isInline:i=!1}={}){let s;s="string"==typeof e?n.lexer(e,a):e;let o=O(A(t),r);return i?o.parseInline(s):o.parse(s)}function P(e){return{gfm:!0,breaks:!0,tokenizer:e.defaults.tokenizer}}function C(e,{markedInstance:t=R(),lexerOptions:r=P(t),skipCodeBlock:n=!1}={}){return j("string"==typeof e?t.lexer(e,r):e,n)}export{O as createFoxmdParser,A as createFoxmdRenderer,T as foxmd,C as markdownToText}; |
+5
-3
| { | ||
| "name": "foxmd", | ||
| "version": "0.2.0-beta.17", | ||
| "version": "0.2.0", | ||
| "description": "An opinionated Markdown to React transformer for React Server Component", | ||
@@ -41,8 +41,10 @@ "repository": { | ||
| "marked": "^15.0.12", | ||
| "style-to-object": "^1.0.14" | ||
| "postcss": "^8.5.6", | ||
| "postcss-js": "^5.0.3" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/postcss-js": "^4.1.0", | ||
| "@types/react": "^19.2.7", | ||
| "bumpp": "^10.3.2", | ||
| "bunchee": "^6.8.0", | ||
| "bunchee": "^6.9.3", | ||
| "eslint": "^9.39.2", | ||
@@ -49,0 +51,0 @@ "eslint-config-sukka": "^8.0.6", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
68497
18.94%6
20%0
-100%184
Infinity%10
11.11%9
12.5%282
-0.7%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed