UNPKG

@travetto/email-inky

Version:

Email Inky templating module

22 lines (18 loc) 807 B
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>; };