import { FlatTemplatable } from "tempstream"; import { FormControl, FormControlContext } from "./form-control.js"; type Renderer = | ((fctx: FormControlContext) => FlatTemplatable) | FlatTemplatable; export class HTML extends FormControl { role = ("decoration") as "decoration" | "submit"; public renderer: Renderer; constructor(role: "decoration" | "submit", renderer: Renderer); constructor(renderer: Renderer); constructor( // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents role_or_renderer: "decoration" | "submit" | Renderer, renderer_or_undefined?: Renderer | FlatTemplatable ) { super(); if (arguments.length == 2) { this.role = role_or_renderer as "decoration" | "submit"; this.renderer = renderer_or_undefined as Renderer; } else { this.renderer = role_or_renderer; } } async render(fctx: FormControlContext): Promise { if (typeof this.renderer === "string") { return this.renderer; } return typeof this.renderer == "function" ? this.renderer(fctx) : this.renderer; } }