##// END OF EJS Templates
Corrected Scope.own() to cleanup the supplied object immediately when the scope is disposed already
Corrected Scope.own() to cleanup the supplied object immediately when the scope is disposed already

File last commit:

r102:c65ea2350b1a v1.3
r131:c7d9ad82b374 v1.8.1 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;
}
}