@travetto/email-inky
Version:
Email Inky templating module
22 lines (18 loc) • 807 B
text/typescript
import type { JSXElement, ValidHtmlTags } from '../support/jsx-runtime.ts';
import type { JSXElementByFn, c } from './components.ts';
export type Wrapper = Record<string, (count: string) => string>;
export type RenderState<T extends JSXElement, C> = {
node: T;
props: T['props'];
recurse: () => Promise<string>;
stack: JSXElement[];
createState: <K extends keyof typeof c>(key: K, props: JSXElementByFn<K>['props']) => RenderState<JSXElementByFn<K>, C>;
context: C;
};
/**
* Renderer
*/
export type RenderProvider<C> =
{ finalize: (text: string, ctx: C, isRoot?: boolean) => (string | Promise<string>) } &
{ [K in ValidHtmlTags]: (state: RenderState<JSXElement<K>, C>) => Promise<string>; } &
{ [K in keyof typeof c]: (state: RenderState<JSXElementByFn<K>, C>) => Promise<string>; };