UNPKG

@travetto/email-inky

Version:

Email Inky templating module

30 lines (24 loc) 916 B
import { createElement } from '@travetto/email-inky/jsx-runtime'; import { castTo, FileLoader } from '@travetto/runtime'; import { EmailTemplateLocation, EmailResourceLoader } from '@travetto/email'; import { JSXElementByFn, c } from '../components'; export type RenderContextInit = EmailTemplateLocation & { loader?: FileLoader, columnCount?: number }; /** * Render Context */ export class RenderContext implements RenderContextInit { columnCount: number = 12; file: string; module: string; loader: FileLoader; constructor(ctx: RenderContextInit) { Object.assign(this, ctx); this.loader ??= new EmailResourceLoader(ctx.module); } /** * Create a new element from a given JSX factory */ createElement<K extends keyof typeof c>(name: K, props: JSXElementByFn<K>['props']): JSXElementByFn<K> { return castTo(createElement(castTo<Record<string, string>>(c)[name], props)); } }