##// END OF EJS Templates
corrected tear down logic handling in observables. Added support for observable query results
corrected tear down logic handling in observables. Added support for observable query results

File last commit:

r102:c65ea2350b1a v1.3
r110:1a190b3a757d v1.4.0 default
Show More
HtmlRendition.ts
50 lines | 1.4 KiB | video/mp2t | TypeScriptLexer
/ djx / src / main / ts / tsx / HtmlRendition.ts
import djDom = require("dojo/dom-construct");
import djAttr = require("dojo/dom-attr");
import { argumentNotEmptyString } from "@implab/core-amd/safe";
import { RenditionBase } from "./RenditionBase";
import { placeAt } from "./traits";
import { getItemDom, refHook } from "./render";
export class HtmlRendition extends RenditionBase<Element> {
elementType: string;
_element: Element | undefined;
constructor(elementType: string) {
argumentNotEmptyString(elementType, "elementType");
super();
this.elementType = elementType;
}
_addChild(child: unknown): void {
if (!this._element)
throw new Error("The HTML element isn't created");
placeAt(getItemDom(child), this._element);
}
_create({ xmlns, ref, ...attrs }: { xmlns?: string, ref?: JSX.Ref<Element> }, children: unknown[]) {
if (xmlns) {
this._element = document.createElementNS(xmlns, this.elementType);
djAttr.set(this._element, attrs);
} else {
this._element = djDom.create(this.elementType, attrs);
}
children.forEach(v => this._addChild(v));
const element = this._element;
if (ref)
refHook(element, ref);
}
_getDomNode() {
if (!this._element)
throw new Error("The HTML element isn't created");
return this._element;
}
}