import { HtmlElement, HtmlElementConfigBase, HtmlElementInstance } from "./HtmlElement"; import { RenderingContext } from "../ui/RenderingContext"; export interface HeadingConfig extends HtmlElementConfigBase { /** Name of the HTML element to be rendered. Default is `div`. */ tag?: string; /** Heading level. Allowed values go from 1 to 6. Default is 3. */ level?: number | string; /** Base CSS class. Default is `heading`. */ baseClass?: string; } export class Heading extends HtmlElement { declare level?: number | string; init(): void { this.tag = `h${this.level}`; super.init(); } prepareData(context: RenderingContext, instance: HtmlElementInstance): void { let { data } = instance; data.stateMods = { ...data.stateMods, [`level-${this.level}`]: true, }; super.prepareData(context, instance); } isValidHtmlAttribute(attrName: string): string | false { switch (attrName) { case "level": return false; default: return super.isValidHtmlAttribute(attrName); } } } Heading.prototype.level = 3; Heading.prototype.baseClass = "heading";