react-markdown
Advanced tools
Comparing version 6.0.2 to 6.0.3
{ | ||
"name": "react-markdown", | ||
"version": "6.0.2", | ||
"version": "6.0.3", | ||
"description": "Render Markdown as React components", | ||
@@ -82,3 +82,3 @@ "license": "MIT", | ||
"prop-types": "^15.7.2", | ||
"property-information": "^5.0.0", | ||
"property-information": "^5.3.0", | ||
"react-is": "^17.0.0", | ||
@@ -103,6 +103,6 @@ "remark-parse": "^9.0.0", | ||
"@rollup/plugin-babel": "^5.0.0", | ||
"@rollup/plugin-commonjs": "^18.0.0", | ||
"@rollup/plugin-commonjs": "^19.0.0", | ||
"@rollup/plugin-json": "^4.0.0", | ||
"@rollup/plugin-node-resolve": "^13.0.0", | ||
"@testing-library/react": "^11.0.0", | ||
"@testing-library/react": "^12.0.0", | ||
"@types/jest": "^26.0.0", | ||
@@ -119,3 +119,3 @@ "@types/react": "^17.0.0", | ||
"eslint-plugin-security": "^1.0.0", | ||
"jest": "^26.0.0", | ||
"jest": "^27.0.0", | ||
"katex": "^0.13.0", | ||
@@ -173,2 +173,3 @@ "npm-run-all": "^4.0.0", | ||
"jest": { | ||
"testEnvironment": "jsdom", | ||
"coverageThreshold": { | ||
@@ -175,0 +176,0 @@ "global": { |
@@ -258,3 +258,5 @@ # react-markdown | ||
) : ( | ||
<code className={className} {...props} /> | ||
<code className={className} {...props}> | ||
{children} | ||
</code> | ||
) | ||
@@ -261,0 +263,0 @@ } |
@@ -55,11 +55,7 @@ export type IntrinsicElements = JSX.IntrinsicElements | ||
title: string | null | ||
) => string | ||
export type ReactMarkdownNames = keyof IntrinsicElements | ||
) => string | undefined | ||
/** | ||
* To do: is `data-sourcepos` typeable? | ||
*/ | ||
export type ReactBaseProps = { | ||
[key: string]: unknown | ||
className?: string | ||
} | ||
export type ReactMarkdownNames = keyof IntrinsicElements | ||
export type ReactMarkdownProps = { | ||
@@ -72,17 +68,14 @@ node: Element | ||
*/ | ||
sourcePosition?: Position | null | ||
sourcePosition?: import('unist').Position | null | undefined | ||
/** | ||
* Passed when `options.includeElementIndex` is given | ||
*/ | ||
index?: number | ||
index?: number | undefined | ||
/** | ||
* Passed when `options.includeElementIndex` is given | ||
*/ | ||
siblingCount?: number | ||
siblingCount?: number | undefined | ||
} | ||
export type NormalComponent = ( | ||
props: ReactBaseProps & ReactMarkdownProps | ||
) => ReactNode | ||
export type CodeComponent = ( | ||
props: ReactBaseProps & | ||
props: JSX.IntrinsicElements['code'] & | ||
ReactMarkdownProps & { | ||
@@ -93,3 +86,3 @@ inline?: boolean | ||
export type HeadingComponent = ( | ||
props: ReactBaseProps & | ||
props: JSX.IntrinsicElements['h1'] & | ||
ReactMarkdownProps & { | ||
@@ -100,3 +93,3 @@ level: number | ||
export type LiComponent = ( | ||
props: ReactBaseProps & | ||
props: JSX.IntrinsicElements['li'] & | ||
ReactMarkdownProps & { | ||
@@ -109,3 +102,3 @@ checked: boolean | null | ||
export type OrderedListComponent = ( | ||
props: ReactBaseProps & | ||
props: JSX.IntrinsicElements['ol'] & | ||
ReactMarkdownProps & { | ||
@@ -117,3 +110,3 @@ depth: number | ||
export type TableCellComponent = ( | ||
props: ReactBaseProps & | ||
props: JSX.IntrinsicElements['table'] & | ||
ReactMarkdownProps & { | ||
@@ -127,3 +120,3 @@ style?: { | ||
export type TableRowComponent = ( | ||
props: ReactBaseProps & | ||
props: JSX.IntrinsicElements['tr'] & | ||
ReactMarkdownProps & { | ||
@@ -134,3 +127,3 @@ isHeader: boolean | ||
export type UnorderedListComponent = ( | ||
props: ReactBaseProps & | ||
props: JSX.IntrinsicElements['ul'] & | ||
ReactMarkdownProps & { | ||
@@ -156,16 +149,1116 @@ depth: number | ||
} | ||
export type NormalComponents = Record< | ||
Exclude<ReactMarkdownNames, keyof SpecialComponents>, | ||
NormalComponent | ReactMarkdownNames | ||
export type NormalComponents = { | ||
a: | ||
| 'a' | ||
| (( | ||
props: React.ClassAttributes<HTMLAnchorElement> & | ||
React.AnchorHTMLAttributes<HTMLAnchorElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
abbr: | ||
| 'abbr' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
address: | ||
| 'address' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
area: | ||
| 'area' | ||
| (( | ||
props: React.ClassAttributes<HTMLAreaElement> & | ||
React.AreaHTMLAttributes<HTMLAreaElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
article: | ||
| 'article' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
aside: | ||
| 'aside' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
audio: | ||
| 'audio' | ||
| (( | ||
props: React.ClassAttributes<HTMLAudioElement> & | ||
React.AudioHTMLAttributes<HTMLAudioElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
b: | ||
| 'b' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
base: | ||
| 'base' | ||
| (( | ||
props: React.ClassAttributes<HTMLBaseElement> & | ||
React.BaseHTMLAttributes<HTMLBaseElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
bdi: | ||
| 'bdi' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
bdo: | ||
| 'bdo' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
big: | ||
| 'big' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
blockquote: | ||
| 'blockquote' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.BlockquoteHTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
body: | ||
| 'body' | ||
| (( | ||
props: React.ClassAttributes<HTMLBodyElement> & | ||
React.HTMLAttributes<HTMLBodyElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
br: | ||
| 'br' | ||
| (( | ||
props: React.ClassAttributes<HTMLBRElement> & | ||
React.HTMLAttributes<HTMLBRElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
button: | ||
| 'button' | ||
| (( | ||
props: React.ClassAttributes<HTMLButtonElement> & | ||
React.ButtonHTMLAttributes<HTMLButtonElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
canvas: | ||
| 'canvas' | ||
| (( | ||
props: React.ClassAttributes<HTMLCanvasElement> & | ||
React.CanvasHTMLAttributes<HTMLCanvasElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
caption: | ||
| 'caption' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
cite: | ||
| 'cite' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
code: | ||
| 'code' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
col: | ||
| 'col' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableColElement> & | ||
React.ColHTMLAttributes<HTMLTableColElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
colgroup: | ||
| 'colgroup' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableColElement> & | ||
React.ColgroupHTMLAttributes<HTMLTableColElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
data: | ||
| 'data' | ||
| (( | ||
props: React.ClassAttributes<HTMLDataElement> & | ||
React.DataHTMLAttributes<HTMLDataElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
datalist: | ||
| 'datalist' | ||
| (( | ||
props: React.ClassAttributes<HTMLDataListElement> & | ||
React.HTMLAttributes<HTMLDataListElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
dd: | ||
| 'dd' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
del: | ||
| 'del' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.DelHTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
details: | ||
| 'details' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.DetailsHTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
dfn: | ||
| 'dfn' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
dialog: | ||
| 'dialog' | ||
| (( | ||
props: React.ClassAttributes<HTMLDialogElement> & | ||
React.DialogHTMLAttributes<HTMLDialogElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
div: | ||
| 'div' | ||
| (( | ||
props: React.ClassAttributes<HTMLDivElement> & | ||
React.HTMLAttributes<HTMLDivElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
dl: | ||
| 'dl' | ||
| (( | ||
props: React.ClassAttributes<HTMLDListElement> & | ||
React.HTMLAttributes<HTMLDListElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
dt: | ||
| 'dt' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
em: | ||
| 'em' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
embed: | ||
| 'embed' | ||
| (( | ||
props: React.ClassAttributes<HTMLEmbedElement> & | ||
React.EmbedHTMLAttributes<HTMLEmbedElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
fieldset: | ||
| 'fieldset' | ||
| (( | ||
props: React.ClassAttributes<HTMLFieldSetElement> & | ||
React.FieldsetHTMLAttributes<HTMLFieldSetElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
figcaption: | ||
| 'figcaption' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
figure: | ||
| 'figure' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
footer: | ||
| 'footer' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
form: | ||
| 'form' | ||
| (( | ||
props: React.ClassAttributes<HTMLFormElement> & | ||
React.FormHTMLAttributes<HTMLFormElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
h1: | ||
| 'h1' | ||
| (( | ||
props: React.ClassAttributes<HTMLHeadingElement> & | ||
React.HTMLAttributes<HTMLHeadingElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
h2: | ||
| 'h2' | ||
| (( | ||
props: React.ClassAttributes<HTMLHeadingElement> & | ||
React.HTMLAttributes<HTMLHeadingElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
h3: | ||
| 'h3' | ||
| (( | ||
props: React.ClassAttributes<HTMLHeadingElement> & | ||
React.HTMLAttributes<HTMLHeadingElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
h4: | ||
| 'h4' | ||
| (( | ||
props: React.ClassAttributes<HTMLHeadingElement> & | ||
React.HTMLAttributes<HTMLHeadingElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
h5: | ||
| 'h5' | ||
| (( | ||
props: React.ClassAttributes<HTMLHeadingElement> & | ||
React.HTMLAttributes<HTMLHeadingElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
h6: | ||
| 'h6' | ||
| (( | ||
props: React.ClassAttributes<HTMLHeadingElement> & | ||
React.HTMLAttributes<HTMLHeadingElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
head: | ||
| 'head' | ||
| (( | ||
props: React.ClassAttributes<HTMLHeadElement> & | ||
React.HTMLAttributes<HTMLHeadElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
header: | ||
| 'header' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
hgroup: | ||
| 'hgroup' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
hr: | ||
| 'hr' | ||
| (( | ||
props: React.ClassAttributes<HTMLHRElement> & | ||
React.HTMLAttributes<HTMLHRElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
html: | ||
| 'html' | ||
| (( | ||
props: React.ClassAttributes<HTMLHtmlElement> & | ||
React.HtmlHTMLAttributes<HTMLHtmlElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
i: | ||
| 'i' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
iframe: | ||
| 'iframe' | ||
| (( | ||
props: React.ClassAttributes<HTMLIFrameElement> & | ||
React.IframeHTMLAttributes<HTMLIFrameElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
img: | ||
| 'img' | ||
| (( | ||
props: React.ClassAttributes<HTMLImageElement> & | ||
React.ImgHTMLAttributes<HTMLImageElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
input: | ||
| 'input' | ||
| (( | ||
props: React.ClassAttributes<HTMLInputElement> & | ||
React.InputHTMLAttributes<HTMLInputElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
ins: | ||
| 'ins' | ||
| (( | ||
props: React.ClassAttributes<HTMLModElement> & | ||
React.InsHTMLAttributes<HTMLModElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
kbd: | ||
| 'kbd' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
keygen: | ||
| 'keygen' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.KeygenHTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
label: | ||
| 'label' | ||
| (( | ||
props: React.ClassAttributes<HTMLLabelElement> & | ||
React.LabelHTMLAttributes<HTMLLabelElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
legend: | ||
| 'legend' | ||
| (( | ||
props: React.ClassAttributes<HTMLLegendElement> & | ||
React.HTMLAttributes<HTMLLegendElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
li: | ||
| 'li' | ||
| (( | ||
props: React.ClassAttributes<HTMLLIElement> & | ||
React.LiHTMLAttributes<HTMLLIElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
link: | ||
| 'link' | ||
| (( | ||
props: React.ClassAttributes<HTMLLinkElement> & | ||
React.LinkHTMLAttributes<HTMLLinkElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
main: | ||
| 'main' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
map: | ||
| 'map' | ||
| (( | ||
props: React.ClassAttributes<HTMLMapElement> & | ||
React.MapHTMLAttributes<HTMLMapElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
mark: | ||
| 'mark' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
menu: | ||
| 'menu' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.MenuHTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
menuitem: | ||
| 'menuitem' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
meta: | ||
| 'meta' | ||
| (( | ||
props: React.ClassAttributes<HTMLMetaElement> & | ||
React.MetaHTMLAttributes<HTMLMetaElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
meter: | ||
| 'meter' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.MeterHTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
nav: | ||
| 'nav' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
noindex: | ||
| 'noindex' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
noscript: | ||
| 'noscript' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
object: | ||
| 'object' | ||
| (( | ||
props: React.ClassAttributes<HTMLObjectElement> & | ||
React.ObjectHTMLAttributes<HTMLObjectElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
ol: | ||
| 'ol' | ||
| (( | ||
props: React.ClassAttributes<HTMLOListElement> & | ||
React.OlHTMLAttributes<HTMLOListElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
optgroup: | ||
| 'optgroup' | ||
| (( | ||
props: React.ClassAttributes<HTMLOptGroupElement> & | ||
React.OptgroupHTMLAttributes<HTMLOptGroupElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
option: | ||
| 'option' | ||
| (( | ||
props: React.ClassAttributes<HTMLOptionElement> & | ||
React.OptionHTMLAttributes<HTMLOptionElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
output: | ||
| 'output' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.OutputHTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
p: | ||
| 'p' | ||
| (( | ||
props: React.ClassAttributes<HTMLParagraphElement> & | ||
React.HTMLAttributes<HTMLParagraphElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
param: | ||
| 'param' | ||
| (( | ||
props: React.ClassAttributes<HTMLParamElement> & | ||
React.ParamHTMLAttributes<HTMLParamElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
picture: | ||
| 'picture' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
pre: | ||
| 'pre' | ||
| (( | ||
props: React.ClassAttributes<HTMLPreElement> & | ||
React.HTMLAttributes<HTMLPreElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
progress: | ||
| 'progress' | ||
| (( | ||
props: React.ClassAttributes<HTMLProgressElement> & | ||
React.ProgressHTMLAttributes<HTMLProgressElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
q: | ||
| 'q' | ||
| (( | ||
props: React.ClassAttributes<HTMLQuoteElement> & | ||
React.QuoteHTMLAttributes<HTMLQuoteElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
rp: | ||
| 'rp' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
rt: | ||
| 'rt' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
ruby: | ||
| 'ruby' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
s: | ||
| 's' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
samp: | ||
| 'samp' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
slot: | ||
| 'slot' | ||
| (( | ||
props: React.ClassAttributes<HTMLSlotElement> & | ||
React.SlotHTMLAttributes<HTMLSlotElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
script: | ||
| 'script' | ||
| (( | ||
props: React.ClassAttributes<HTMLScriptElement> & | ||
React.ScriptHTMLAttributes<HTMLScriptElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
section: | ||
| 'section' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
select: | ||
| 'select' | ||
| (( | ||
props: React.ClassAttributes<HTMLSelectElement> & | ||
React.SelectHTMLAttributes<HTMLSelectElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
small: | ||
| 'small' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
source: | ||
| 'source' | ||
| (( | ||
props: React.ClassAttributes<HTMLSourceElement> & | ||
React.SourceHTMLAttributes<HTMLSourceElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
span: | ||
| 'span' | ||
| (( | ||
props: React.ClassAttributes<HTMLSpanElement> & | ||
React.HTMLAttributes<HTMLSpanElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
strong: | ||
| 'strong' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
style: | ||
| 'style' | ||
| (( | ||
props: React.ClassAttributes<HTMLStyleElement> & | ||
React.StyleHTMLAttributes<HTMLStyleElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
sub: | ||
| 'sub' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
summary: | ||
| 'summary' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
sup: | ||
| 'sup' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
table: | ||
| 'table' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableElement> & | ||
React.TableHTMLAttributes<HTMLTableElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
template: | ||
| 'template' | ||
| (( | ||
props: React.ClassAttributes<HTMLTemplateElement> & | ||
React.HTMLAttributes<HTMLTemplateElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
tbody: | ||
| 'tbody' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableSectionElement> & | ||
React.HTMLAttributes<HTMLTableSectionElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
td: | ||
| 'td' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableDataCellElement> & | ||
React.TdHTMLAttributes<HTMLTableDataCellElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
textarea: | ||
| 'textarea' | ||
| (( | ||
props: React.ClassAttributes<HTMLTextAreaElement> & | ||
React.TextareaHTMLAttributes<HTMLTextAreaElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
tfoot: | ||
| 'tfoot' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableSectionElement> & | ||
React.HTMLAttributes<HTMLTableSectionElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
th: | ||
| 'th' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableHeaderCellElement> & | ||
React.ThHTMLAttributes<HTMLTableHeaderCellElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
thead: | ||
| 'thead' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableSectionElement> & | ||
React.HTMLAttributes<HTMLTableSectionElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
time: | ||
| 'time' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.TimeHTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
title: | ||
| 'title' | ||
| (( | ||
props: React.ClassAttributes<HTMLTitleElement> & | ||
React.HTMLAttributes<HTMLTitleElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
tr: | ||
| 'tr' | ||
| (( | ||
props: React.ClassAttributes<HTMLTableRowElement> & | ||
React.HTMLAttributes<HTMLTableRowElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
track: | ||
| 'track' | ||
| (( | ||
props: React.ClassAttributes<HTMLTrackElement> & | ||
React.TrackHTMLAttributes<HTMLTrackElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
u: | ||
| 'u' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
ul: | ||
| 'ul' | ||
| (( | ||
props: React.ClassAttributes<HTMLUListElement> & | ||
React.HTMLAttributes<HTMLUListElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
var: | ||
| 'var' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
video: | ||
| 'video' | ||
| (( | ||
props: React.ClassAttributes<HTMLVideoElement> & | ||
React.VideoHTMLAttributes<HTMLVideoElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
wbr: | ||
| 'wbr' | ||
| (( | ||
props: React.ClassAttributes<HTMLElement> & | ||
React.HTMLAttributes<HTMLElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
webview: | ||
| 'webview' | ||
| (( | ||
props: React.ClassAttributes<HTMLWebViewElement> & | ||
React.WebViewHTMLAttributes<HTMLWebViewElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
svg: | ||
| 'svg' | ||
| ((props: React.SVGProps<SVGSVGElement> & ReactMarkdownProps) => ReactNode) | ||
animate: | ||
| 'animate' | ||
| ((props: React.SVGProps<SVGElement> & ReactMarkdownProps) => ReactNode) | ||
animateMotion: | ||
| 'animateMotion' | ||
| ((props: React.SVGProps<SVGElement> & ReactMarkdownProps) => ReactNode) | ||
animateTransform: | ||
| 'animateTransform' | ||
| ((props: React.SVGProps<SVGElement> & ReactMarkdownProps) => ReactNode) | ||
circle: | ||
| 'circle' | ||
| (( | ||
props: React.SVGProps<SVGCircleElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
clipPath: | ||
| 'clipPath' | ||
| (( | ||
props: React.SVGProps<SVGClipPathElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
defs: | ||
| 'defs' | ||
| (( | ||
props: React.SVGProps<SVGDefsElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
desc: | ||
| 'desc' | ||
| (( | ||
props: React.SVGProps<SVGDescElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
ellipse: | ||
| 'ellipse' | ||
| (( | ||
props: React.SVGProps<SVGEllipseElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feBlend: | ||
| 'feBlend' | ||
| (( | ||
props: React.SVGProps<SVGFEBlendElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feColorMatrix: | ||
| 'feColorMatrix' | ||
| (( | ||
props: React.SVGProps<SVGFEColorMatrixElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feComponentTransfer: | ||
| 'feComponentTransfer' | ||
| (( | ||
props: React.SVGProps<SVGFEComponentTransferElement> & | ||
ReactMarkdownProps | ||
) => ReactNode) | ||
feComposite: | ||
| 'feComposite' | ||
| (( | ||
props: React.SVGProps<SVGFECompositeElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feConvolveMatrix: | ||
| 'feConvolveMatrix' | ||
| (( | ||
props: React.SVGProps<SVGFEConvolveMatrixElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feDiffuseLighting: | ||
| 'feDiffuseLighting' | ||
| (( | ||
props: React.SVGProps<SVGFEDiffuseLightingElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feDisplacementMap: | ||
| 'feDisplacementMap' | ||
| (( | ||
props: React.SVGProps<SVGFEDisplacementMapElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feDistantLight: | ||
| 'feDistantLight' | ||
| (( | ||
props: React.SVGProps<SVGFEDistantLightElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feDropShadow: | ||
| 'feDropShadow' | ||
| (( | ||
props: React.SVGProps<SVGFEDropShadowElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feFlood: | ||
| 'feFlood' | ||
| (( | ||
props: React.SVGProps<SVGFEFloodElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feFuncA: | ||
| 'feFuncA' | ||
| (( | ||
props: React.SVGProps<SVGFEFuncAElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feFuncB: | ||
| 'feFuncB' | ||
| (( | ||
props: React.SVGProps<SVGFEFuncBElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feFuncG: | ||
| 'feFuncG' | ||
| (( | ||
props: React.SVGProps<SVGFEFuncGElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feFuncR: | ||
| 'feFuncR' | ||
| (( | ||
props: React.SVGProps<SVGFEFuncRElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feGaussianBlur: | ||
| 'feGaussianBlur' | ||
| (( | ||
props: React.SVGProps<SVGFEGaussianBlurElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feImage: | ||
| 'feImage' | ||
| (( | ||
props: React.SVGProps<SVGFEImageElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feMerge: | ||
| 'feMerge' | ||
| (( | ||
props: React.SVGProps<SVGFEMergeElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feMergeNode: | ||
| 'feMergeNode' | ||
| (( | ||
props: React.SVGProps<SVGFEMergeNodeElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feMorphology: | ||
| 'feMorphology' | ||
| (( | ||
props: React.SVGProps<SVGFEMorphologyElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feOffset: | ||
| 'feOffset' | ||
| (( | ||
props: React.SVGProps<SVGFEOffsetElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
fePointLight: | ||
| 'fePointLight' | ||
| (( | ||
props: React.SVGProps<SVGFEPointLightElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feSpecularLighting: | ||
| 'feSpecularLighting' | ||
| (( | ||
props: React.SVGProps<SVGFESpecularLightingElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feSpotLight: | ||
| 'feSpotLight' | ||
| (( | ||
props: React.SVGProps<SVGFESpotLightElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feTile: | ||
| 'feTile' | ||
| (( | ||
props: React.SVGProps<SVGFETileElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
feTurbulence: | ||
| 'feTurbulence' | ||
| (( | ||
props: React.SVGProps<SVGFETurbulenceElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
filter: | ||
| 'filter' | ||
| (( | ||
props: React.SVGProps<SVGFilterElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
foreignObject: | ||
| 'foreignObject' | ||
| (( | ||
props: React.SVGProps<SVGForeignObjectElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
g: | ||
| 'g' | ||
| ((props: React.SVGProps<SVGGElement> & ReactMarkdownProps) => ReactNode) | ||
image: | ||
| 'image' | ||
| (( | ||
props: React.SVGProps<SVGImageElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
line: | ||
| 'line' | ||
| (( | ||
props: React.SVGProps<SVGLineElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
linearGradient: | ||
| 'linearGradient' | ||
| (( | ||
props: React.SVGProps<SVGLinearGradientElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
marker: | ||
| 'marker' | ||
| (( | ||
props: React.SVGProps<SVGMarkerElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
mask: | ||
| 'mask' | ||
| (( | ||
props: React.SVGProps<SVGMaskElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
metadata: | ||
| 'metadata' | ||
| (( | ||
props: React.SVGProps<SVGMetadataElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
mpath: | ||
| 'mpath' | ||
| ((props: React.SVGProps<SVGElement> & ReactMarkdownProps) => ReactNode) | ||
path: | ||
| 'path' | ||
| (( | ||
props: React.SVGProps<SVGPathElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
pattern: | ||
| 'pattern' | ||
| (( | ||
props: React.SVGProps<SVGPatternElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
polygon: | ||
| 'polygon' | ||
| (( | ||
props: React.SVGProps<SVGPolygonElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
polyline: | ||
| 'polyline' | ||
| (( | ||
props: React.SVGProps<SVGPolylineElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
radialGradient: | ||
| 'radialGradient' | ||
| (( | ||
props: React.SVGProps<SVGRadialGradientElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
rect: | ||
| 'rect' | ||
| (( | ||
props: React.SVGProps<SVGRectElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
stop: | ||
| 'stop' | ||
| (( | ||
props: React.SVGProps<SVGStopElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
switch: | ||
| 'switch' | ||
| (( | ||
props: React.SVGProps<SVGSwitchElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
symbol: | ||
| 'symbol' | ||
| (( | ||
props: React.SVGProps<SVGSymbolElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
text: | ||
| 'text' | ||
| (( | ||
props: React.SVGProps<SVGTextElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
textPath: | ||
| 'textPath' | ||
| (( | ||
props: React.SVGProps<SVGTextPathElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
tspan: | ||
| 'tspan' | ||
| (( | ||
props: React.SVGProps<SVGTSpanElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
use: | ||
| 'use' | ||
| ((props: React.SVGProps<SVGUseElement> & ReactMarkdownProps) => ReactNode) | ||
view: | ||
| 'view' | ||
| (( | ||
props: React.SVGProps<SVGViewElement> & ReactMarkdownProps | ||
) => ReactNode) | ||
} | ||
export type Components = Partial< | ||
Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents | ||
> | ||
export type Components = Partial<NormalComponents & SpecialComponents> | ||
export type TransformOptions = { | ||
sourcePos?: boolean | ||
rawSourcePos?: boolean | ||
skipHtml?: boolean | ||
includeElementIndex?: boolean | ||
transformLinkUri?: false | TransformLink | ||
transformImageUri?: TransformImage | ||
linkTarget?: string | TransformLinkTarget | ||
components?: Components | ||
sourcePos?: boolean | undefined | ||
rawSourcePos?: boolean | undefined | ||
skipHtml?: boolean | undefined | ||
includeElementIndex?: boolean | undefined | ||
transformLinkUri?: false | TransformLink | null | undefined | ||
transformImageUri?: TransformImage | undefined | ||
linkTarget?: string | TransformLinkTarget | undefined | ||
components?: | ||
| Partial< | ||
Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents | ||
> | ||
| undefined | ||
} | ||
@@ -172,0 +1265,0 @@ /** |
@@ -5,11 +5,6 @@ 'use strict' | ||
const ReactIs = require('react-is') | ||
// @ts-ignore remove when typed | ||
const svg = require('property-information/svg') | ||
// @ts-ignore remove when typed | ||
const find = require('property-information/find') | ||
// @ts-ignore remove when typed | ||
const hastToReact = require('property-information/hast-to-react.json') | ||
// @ts-ignore remove when typed | ||
const spaces = require('space-separated-tokens') | ||
// @ts-ignore remove when typed | ||
const commas = require('comma-separated-tokens') | ||
@@ -33,3 +28,3 @@ const style = require('style-to-object') | ||
/** | ||
* @typedef {Object} Info | ||
* @typedef Info | ||
* @property {string?} space | ||
@@ -48,3 +43,3 @@ * @property {string?} attribute | ||
* | ||
* @typedef {Object} Schema | ||
* @typedef Schema | ||
* @property {Object.<string, Info>} property | ||
@@ -54,7 +49,7 @@ * @property {Object.<string, string>} normal | ||
* | ||
* @typedef {Object} Raw | ||
* @typedef Raw | ||
* @property {'raw'} type | ||
* @property {string} value | ||
* | ||
* @typedef {Object} Context | ||
* @typedef Context | ||
* @property {TransformOptions} options | ||
@@ -80,11 +75,9 @@ * @property {Schema} schema | ||
* @param {string?} title | ||
* @returns {string} | ||
* @returns {string|undefined} | ||
* | ||
* @typedef {keyof IntrinsicElements} ReactMarkdownNames | ||
* | ||
* @typedef {{ [key: string]: unknown, className?: string }} ReactBaseProps | ||
* | ||
* To do: is `data-sourcepos` typeable? | ||
* | ||
* @typedef {Object} ReactMarkdownProps | ||
* @typedef ReactMarkdownProps | ||
* @property {Element} node | ||
@@ -97,35 +90,31 @@ * @property {string} key | ||
* | ||
* @callback NormalComponent | ||
* @param {ReactBaseProps & ReactMarkdownProps} props | ||
* @returns {ReactNode} | ||
* | ||
* @callback CodeComponent | ||
* @param {ReactBaseProps & ReactMarkdownProps & {inline?: boolean}} props | ||
* @param {JSX.IntrinsicElements['code'] & ReactMarkdownProps & {inline?: boolean}} props | ||
* @returns {ReactNode} | ||
* | ||
* @callback HeadingComponent | ||
* @param {ReactBaseProps & ReactMarkdownProps & {level: number}} props | ||
* @param {JSX.IntrinsicElements['h1'] & ReactMarkdownProps & {level: number}} props | ||
* @returns {ReactNode} | ||
* | ||
* @callback LiComponent | ||
* @param {ReactBaseProps & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} props | ||
* @param {JSX.IntrinsicElements['li'] & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} props | ||
* @returns {ReactNode} | ||
* | ||
* @callback OrderedListComponent | ||
* @param {ReactBaseProps & ReactMarkdownProps & {depth: number, ordered: true}} props | ||
* @param {JSX.IntrinsicElements['ol'] & ReactMarkdownProps & {depth: number, ordered: true}} props | ||
* @returns {ReactNode} | ||
* | ||
* @callback TableCellComponent | ||
* @param {ReactBaseProps & ReactMarkdownProps & {style?: Object.<string, unknown>, isHeader: boolean}} props | ||
* @param {JSX.IntrinsicElements['table'] & ReactMarkdownProps & {style?: Object.<string, unknown>, isHeader: boolean}} props | ||
* @returns {ReactNode} | ||
* | ||
* @callback TableRowComponent | ||
* @param {ReactBaseProps & ReactMarkdownProps & {isHeader: boolean}} props | ||
* @param {JSX.IntrinsicElements['tr'] & ReactMarkdownProps & {isHeader: boolean}} props | ||
* @returns {ReactNode} | ||
* | ||
* @callback UnorderedListComponent | ||
* @param {ReactBaseProps & ReactMarkdownProps & {depth: number, ordered: false}} props | ||
* @param {JSX.IntrinsicElements['ul'] & ReactMarkdownProps & {depth: number, ordered: false}} props | ||
* @returns {ReactNode} | ||
* | ||
* @typedef {Object} SpecialComponents | ||
* @typedef SpecialComponents | ||
* @property {CodeComponent|ReactMarkdownNames} code | ||
@@ -145,8 +134,8 @@ * @property {HeadingComponent|ReactMarkdownNames} h1 | ||
* | ||
* @typedef {Record<Exclude<ReactMarkdownNames, keyof SpecialComponents>, NormalComponent|ReactMarkdownNames>} NormalComponents | ||
* @typedef {Partial<NormalComponents & SpecialComponents>} Components | ||
* @typedef {{[TagName in keyof IntrinsicElements]: TagName | ((props: IntrinsicElements[TagName] & ReactMarkdownProps) => ReactNode)}} NormalComponents | ||
* @typedef {Partial<Omit<NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components | ||
*/ | ||
/** | ||
* @typedef {Object} TransformOptions | ||
* @typedef TransformOptions | ||
* @property {boolean} [sourcePos=false] | ||
@@ -156,3 +145,3 @@ * @property {boolean} [rawSourcePos=false] | ||
* @property {boolean} [includeElementIndex=false] | ||
* @property {false|TransformLink} [transformLinkUri] | ||
* @property {null|false|TransformLink} [transformLinkUri] | ||
* @property {TransformImage} [transformImageUri] | ||
@@ -196,6 +185,6 @@ * @property {string|TransformLinkTarget} [linkTarget] | ||
} | ||
// @ts-ignore `raw` nodes are non-standard | ||
// @ts-expect-error `raw` nodes are non-standard | ||
else if (child.type === 'raw' && !context.options.skipHtml) { | ||
// Default behavior is to show (encoded) HTML. | ||
// @ts-ignore `raw` nodes are non-standard | ||
// @ts-expect-error `raw` nodes are non-standard | ||
children.push(child.value) | ||
@@ -218,3 +207,3 @@ } | ||
/** @type {ReactMarkdownNames} */ | ||
// @ts-ignore assume a known HTML/SVG element. | ||
// @ts-expect-error assume a known HTML/SVG element. | ||
const name = node.tagName | ||
@@ -232,6 +221,9 @@ /** @type {Object.<string, unknown>} */ | ||
for (property in node.properties) { | ||
/* istanbul ignore else - prototype polution. */ | ||
if (own.call(node.properties, property)) { | ||
addProperty(properties, property, node.properties[property], context) | ||
/* istanbul ignore else - types say they’re optional. */ | ||
if (node.properties) { | ||
for (property in node.properties) { | ||
/* istanbul ignore else - prototype polution. */ | ||
if (own.call(node.properties, property)) { | ||
addProperty(properties, property, node.properties[property], context) | ||
} | ||
} | ||
@@ -259,3 +251,2 @@ } | ||
} | ||
/** @type {NormalComponent|SpecialComponents[keyof SpecialComponents]|ReactMarkdownNames} */ | ||
const component = | ||
@@ -283,3 +274,3 @@ options.components && own.call(options.components, name) | ||
typeof options.linkTarget === 'function' | ||
? // @ts-ignore assume `href` is a string | ||
? // @ts-expect-error assume `href` is a string | ||
options.linkTarget(properties.href, node.children, properties.title) | ||
@@ -291,3 +282,3 @@ : options.linkTarget | ||
properties.href = options.transformLinkUri( | ||
// @ts-ignore assume `href` is a string | ||
// @ts-expect-error assume `href` is a string | ||
properties.href, | ||
@@ -299,3 +290,8 @@ node.children, | ||
if (!basic && name === 'code' && parent.tagName !== 'pre') { | ||
if ( | ||
!basic && | ||
name === 'code' && | ||
parent.type === 'element' && | ||
parent.tagName !== 'pre' | ||
) { | ||
properties.inline = true | ||
@@ -318,3 +314,3 @@ } | ||
properties.src = options.transformImageUri( | ||
// @ts-ignore assume `src` is a string | ||
// @ts-expect-error assume `src` is a string | ||
properties.src, | ||
@@ -326,5 +322,6 @@ properties.alt, | ||
if (!basic && name === 'li') { | ||
if (!basic && name === 'li' && parent.type === 'element') { | ||
const input = getInputElement(node) | ||
properties.checked = input ? Boolean(input.properties.checked) : null | ||
properties.checked = | ||
input && input.properties ? Boolean(input.properties.checked) : null | ||
properties.index = getElementsBeforeCount(parent, node) | ||
@@ -342,3 +339,3 @@ properties.ordered = parent.tagName === 'ol' | ||
if (!properties.style) properties.style = {} | ||
// @ts-ignore assume `style` is an object | ||
// @ts-expect-error assume `style` is an object | ||
properties.style.textAlign = properties.align | ||
@@ -353,3 +350,3 @@ delete properties.align | ||
if (!basic && name === 'tr') { | ||
if (!basic && name === 'tr' && parent.type === 'element') { | ||
properties.isHeader = Boolean(parent.tagName === 'thead') | ||
@@ -446,3 +443,4 @@ } | ||
if (info.space) { | ||
/* istanbul ignore else - types say they’re optional. */ | ||
if (info.space && info.property) { | ||
props[ | ||
@@ -453,3 +451,3 @@ own.call(hastToReact, info.property) | ||
] = result | ||
} else { | ||
} else if (info.attribute) { | ||
props[info.attribute] = result | ||
@@ -469,3 +467,3 @@ } | ||
style(value, iterator) | ||
} catch (/** @type {Error} */ _) { | ||
} catch (/** @type {unknown} */ _) { | ||
// Silent. | ||
@@ -495,3 +493,3 @@ } | ||
/** | ||
* @param {Position} pos | ||
* @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos | ||
* @returns {string} | ||
@@ -498,0 +496,0 @@ */ |
@@ -38,7 +38,7 @@ export = ReactMarkdown | ||
const allowElement: PropTypes.Requireable<(...args: any[]) => any> | ||
const allowedElements: PropTypes.Requireable<string[]> | ||
const disallowedElements: PropTypes.Requireable<string[]> | ||
const allowedElements: PropTypes.Requireable<(string | null | undefined)[]> | ||
const disallowedElements: PropTypes.Requireable<(string | null | undefined)[]> | ||
const unwrapDisallowed: PropTypes.Requireable<boolean> | ||
const remarkPlugins: PropTypes.Requireable<object[]> | ||
const rehypePlugins: PropTypes.Requireable<object[]> | ||
const remarkPlugins: PropTypes.Requireable<(object | null | undefined)[]> | ||
const rehypePlugins: PropTypes.Requireable<(object | null | undefined)[]> | ||
const sourcePos: PropTypes.Requireable<boolean> | ||
@@ -55,3 +55,3 @@ const rawSourcePos: PropTypes.Requireable<boolean> | ||
} | ||
import uriTransformer = require('./uri-transformer') | ||
import uriTransformer = require('./uri-transformer.js') | ||
type ReactNode = import('react').ReactNode | ||
@@ -69,13 +69,13 @@ type PluggableList = import('unified').PluggableList | ||
*/ | ||
plugins?: PluggableList | ||
remarkPlugins?: PluggableList | ||
rehypePlugins?: PluggableList | ||
plugins?: PluggableList | undefined | ||
remarkPlugins?: PluggableList | undefined | ||
rehypePlugins?: PluggableList | undefined | ||
} | ||
type LayoutOptions = { | ||
className?: string | ||
className?: string | undefined | ||
} | ||
type Deprecation = { | ||
id: string | ||
to?: string | ||
to?: string | undefined | ||
} | ||
import PropTypes = require('prop-types') |
@@ -9,6 +9,5 @@ 'use strict' | ||
const PropTypes = require('prop-types') | ||
// @ts-ignore remove when typed | ||
const html = require('property-information/html') | ||
const filter = require('./rehype-filter') | ||
const uriTransformer = require('./uri-transformer') | ||
const filter = require('./rehype-filter.js') | ||
const uriTransformer = require('./uri-transformer.js') | ||
const childrenToReact = require('./ast-to-react.js').hastChildrenToReact | ||
@@ -24,6 +23,6 @@ | ||
* | ||
* @typedef {Object} CoreOptions | ||
* @typedef CoreOptions | ||
* @property {string} children | ||
* | ||
* @typedef {Object} PluginOptions | ||
* @typedef PluginOptions | ||
* @property {PluggableList} [plugins=[]] **deprecated**: use `remarkPlugins` instead | ||
@@ -33,3 +32,3 @@ * @property {PluggableList} [remarkPlugins=[]] | ||
* | ||
* @typedef {Object} LayoutOptions | ||
* @typedef LayoutOptions | ||
* @property {string} [className] | ||
@@ -47,3 +46,3 @@ * | ||
/** | ||
* @typedef {Object} Deprecation | ||
* @typedef Deprecation | ||
* @property {string} id | ||
@@ -122,3 +121,3 @@ * @property {string} [to] | ||
/** @type {Root} */ | ||
// @ts-ignore we’ll throw if it isn’t a root next. | ||
// @ts-expect-error we’ll throw if it isn’t a root next. | ||
const hastNode = processor.runSync(processor.parse(file), file) | ||
@@ -125,0 +124,0 @@ |
export = rehypeFilter | ||
/** | ||
* @typedef {import('unist').Node} Node | ||
* @typedef {import('hast').Root} Root | ||
@@ -10,5 +11,5 @@ * @typedef {import('hast').Element} Element | ||
* @param {Element|Root} parent | ||
* @returns {boolean} | ||
* @returns {boolean|undefined} | ||
* | ||
* @typedef {Object} RehypeFilterOptions | ||
* @typedef RehypeFilterOptions | ||
* @property {Array.<string>} [allowedElements] | ||
@@ -20,16 +21,17 @@ * @property {Array.<string>} [disallowedElements=[]] | ||
/** | ||
* @param {RehypeFilterOptions} options | ||
* @type {import('unified').Plugin<[RehypeFilterOptions]>} | ||
*/ | ||
declare function rehypeFilter( | ||
options: RehypeFilterOptions | ||
): (tree: Root) => void | ||
): void | import('unified').Transformer | ||
declare namespace rehypeFilter { | ||
export {Root, Element, AllowElement, RehypeFilterOptions} | ||
export {Node, Root, Element, AllowElement, RehypeFilterOptions} | ||
} | ||
type RehypeFilterOptions = { | ||
allowedElements?: Array<string> | ||
disallowedElements?: Array<string> | ||
allowElement?: AllowElement | ||
unwrapDisallowed?: boolean | ||
allowedElements?: string[] | undefined | ||
disallowedElements?: string[] | undefined | ||
allowElement?: AllowElement | undefined | ||
unwrapDisallowed?: boolean | undefined | ||
} | ||
type Node = import('unist').Node | ||
type Root = import('hast').Root | ||
@@ -41,2 +43,2 @@ type Element = import('hast').Element | ||
parent: Element | Root | ||
) => boolean | ||
) => boolean | undefined |
const visit = require('unist-util-visit') | ||
const splice = [].splice | ||
module.exports = rehypeFilter | ||
/** | ||
* @typedef {import('unist').Node} Node | ||
* @typedef {import('hast').Root} Root | ||
@@ -15,5 +14,5 @@ * @typedef {import('hast').Element} Element | ||
* @param {Element|Root} parent | ||
* @returns {boolean} | ||
* @returns {boolean|undefined} | ||
* | ||
* @typedef {Object} RehypeFilterOptions | ||
* @typedef RehypeFilterOptions | ||
* @property {Array.<string>} [allowedElements] | ||
@@ -26,3 +25,3 @@ * @property {Array.<string>} [disallowedElements=[]] | ||
/** | ||
* @param {RehypeFilterOptions} options | ||
* @type {import('unified').Plugin<[RehypeFilterOptions]>} | ||
*/ | ||
@@ -36,23 +35,23 @@ function rehypeFilter(options) { | ||
return options.allowedElements || | ||
if ( | ||
options.allowedElements || | ||
options.disallowedElements || | ||
options.allowElement | ||
? transform | ||
: undefined | ||
/** | ||
* @param {Root} tree | ||
*/ | ||
function transform(tree) { | ||
visit(tree, 'element', onelement) | ||
) { | ||
return (tree) => { | ||
const node = /** @type {Root} */ (tree) | ||
visit(node, 'element', onelement) | ||
} | ||
} | ||
/** | ||
* @param {Element} node | ||
* @param {number} index | ||
* @param {Element|Root} parent | ||
* @param {Node} node_ | ||
* @param {number|null|undefined} index | ||
* @param {Node|null|undefined} parent_ | ||
* @returns {number|void} | ||
*/ | ||
function onelement(node, index, parent) { | ||
/** @type {boolean} */ | ||
function onelement(node_, index, parent_) { | ||
const node = /** @type {Element} */ (node_) | ||
const parent = /** @type {Element|Root} */ (parent_) | ||
/** @type {boolean|undefined} */ | ||
let remove | ||
@@ -66,15 +65,13 @@ | ||
if (!remove && options.allowElement) { | ||
if (!remove && options.allowElement && typeof index === 'number') { | ||
remove = !options.allowElement(node, index, parent) | ||
} | ||
if (remove) { | ||
/** @type {Array.<unknown>} */ | ||
let parameters = [index, 1] | ||
if (remove && typeof index === 'number') { | ||
if (options.unwrapDisallowed && node.children) { | ||
parameters = parameters.concat(node.children) | ||
parent.children.splice(index, 1, ...node.children) | ||
} else { | ||
parent.children.splice(index, 1) | ||
} | ||
splice.apply(parent.children, parameters) | ||
return index | ||
@@ -81,0 +78,0 @@ } |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
237006
2684
600
12
Updatedproperty-information@^5.3.0