UNPKG

jsx-md

Version:

Generate markdown files with a React-like syntax.

49 lines (48 loc) 1.93 kB
/** @internal */ export declare const MdFragmentType: "mdFragment"; /** @internal */ export declare const MdAwaitType: "mdAwait"; /** @internal */ interface MdElement<Type, Props = unknown> { type: Type; props: Props; key: string | number | null; } /** @internal */ export declare type MdFunctionElement<Props = any> = MdElement<Component<Props>, Props>; /** @internal */ export declare type MdFragmentElement = MdElement<typeof MdFragmentType, PropsWithChildren>; /** @internal */ export declare type MdAwaitElement = MdElement<typeof MdAwaitType, { children: Promise<MarkdownChildren>; }>; /** Internal representation of markdown before rendering. */ export declare type MarkdownElement<Props = unknown> = MdFunctionElement<Props> | MdFragmentElement | MdAwaitElement; /** Primitive text types that get converted into text. */ export declare type MarkdownText = string | number; /** Nil types that get ignored. */ export declare type MarkdownNil = false | null | undefined; /** Any primitive Markdown type. */ export declare type MarkdownNode = MarkdownNil | MarkdownText | MarkdownElement; /** Nested Markdown type. */ export declare type MarkdownChildren = MarkdownNode | MarkdownChildren[]; /** Helper type for creating Elements that accept other markdown as children. */ export declare type PropsWithChildren<AdditionalProps extends unknown = unknown> = AdditionalProps & { children?: MarkdownChildren; }; /** A functional component that creates Markdown elements. */ export declare type Component<ComponentProps extends unknown = unknown> = (props: ComponentProps) => MarkdownElement | null; /** @internal */ declare global { namespace JSX { interface IntrinsicElements { mdFragment: { children?: MarkdownChildren; }; mdAwait: { children?: Promise<MarkdownElement<any> | null>; }; } } } export {};