From 53a2ed2335789473080f3b8eee9fca65e2e7aef8 Mon Sep 17 00:00:00 2001 From: Sibiraj Date: Sat, 7 May 2022 13:12:31 +0530 Subject: [PATCH] Fix renderer types --- .lintstagedrc.yml | 2 +- src/index.d.ts | 39 ++++++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/.lintstagedrc.yml b/.lintstagedrc.yml index c74be11..76023a3 100644 --- a/.lintstagedrc.yml +++ b/.lintstagedrc.yml @@ -1,2 +1,2 @@ '*.{js,jsx,cjs}': eslint --fix -'*.{html,css,md,ts,yaml,yml,json}': prettier --write +'*.{html,css,md,ts,yaml,yml,json,ts}': prettier --write diff --git a/src/index.d.ts b/src/index.d.ts index 7ed665e..7c2244f 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -1,7 +1,5 @@ declare module 'marked-react' { - import React, { ReactElement } from 'react'; - - type RendererFunction = (...args: any[]) => ReactElement | null; + import { ReactElement, FC, ReactNode } from 'react'; export interface MarkdownOptions { breaks?: boolean; @@ -9,14 +7,45 @@ declare module 'marked-react' { baseURL?: string; openLinksInNewTab?: boolean; langPrefix?: string; - renderer?: Record; + renderer?: ReactRenderer | RendererObject; + } + + type RendererObject = Partial>; + + class ReactRenderer { + elementId: number; + + constructor(options?: MarkdownOptions); + heading(children: any, level: any): ReactElement; + paragraph(children: any): ReactElement; + link(href: any, text: any): ReactElement; + image(href: any, text: any, title: any): ReactElement; + codespan(code: any, lang: any): ReactElement; + code(code: any, lang: any): ReactElement; + blockquote(children: any): ReactElement; + list(children: any, ordered: any): ReactElement; + listItem(children: any): ReactElement; + checkbox(checked: any): ReactElement; + table(children: any): ReactElement; + tableHeader(children: any): ReactElement; + tableBody(children: any): ReactElement; + tableRow(children: any): ReactElement; + tableCell(children: any, flags: any): ReactElement; + strong(children: any): ReactElement; + em(children: any): ReactElement; + del(children: any): ReactElement; + text(text: any): any; + html(html: any): any; + hr(): ReactElement; + br(): ReactElement; } interface Props extends MarkdownOptions { value?: string; + children?: ReactNode; } - const Markdown: React.FC; + const Markdown: FC; export default Markdown; }