jsx-md
Version:
Generate markdown files with a React-like syntax.
49 lines (48 loc) • 1.93 kB
TypeScript
/** @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 {};