UNPKG

@travetto/email-inky

Version:

Email Inky templating module

30 lines (24 loc) 930 B
import { castTo, type FileLoader } from '@travetto/runtime'; import { type EmailTemplateLocation, EmailResourceLoader } from '@travetto/email'; import { type JSXElementByFn, c } from '../components.ts'; import { createElement } from '../../support/jsx-runtime.ts'; 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)); } }