import dom = require("dojo/dom-construct"); import { argumentNotEmptyString } from "@implab/core-amd/safe"; import { RenditionBase } from "./RenditionBase"; import { placeAt } from "./traits"; import { IScope } from "./Scope"; import { getItemDom } from "./render"; export class HtmlRendition extends RenditionBase { elementType: string; _element: HTMLElement | undefined; constructor(elementType: string) { argumentNotEmptyString(elementType, "elementType"); super(); this.elementType = elementType; } _addChild(child: unknown, scope: IScope): void { if (!this._element) throw new Error("The HTML element isn't created"); placeAt(getItemDom(child, scope), this._element); } _create(attrs: object, children: unknown[], scope: IScope) { this._element = dom.create(this.elementType, attrs); children.forEach(v => this._addChild(v, scope)); } _getDomNode() { if (!this._element) throw new Error("The HTML element isn't created"); return this._element; } }