mostly-dom
Version:
A virtual-dom for TypeScript
32 lines • 1.24 kB
JavaScript
import { SCOPE_ATTRIBUTE } from './dom-scope-attribute';
export function createElement(vNode, moduleCallbacks, insertedVNodeQueue) {
var props = vNode.props;
moduleCallbacks.init(vNode);
if (props.init)
props.init(vNode);
if (vNode.tagName) {
var element = vNode.namespace
? document.createElementNS(vNode.namespace, vNode.tagName)
: document.createElement(vNode.tagName);
if (vNode.scope)
element.setAttribute(SCOPE_ATTRIBUTE, vNode.scope);
vNode.element = element;
var children = vNode.children;
if (children) {
var childCount = children.length;
for (var i = 0; i < childCount; ++i)
element.appendChild(createElement(children[i], moduleCallbacks, insertedVNodeQueue).element);
}
if (vNode.text)
element.appendChild(document.createTextNode(vNode.text));
moduleCallbacks.create(vNode);
if (props.create)
props.create(vNode);
if (props.insert)
insertedVNodeQueue.push(vNode);
return vNode;
}
vNode.element = document.createTextNode(vNode.text);
return vNode;
}
//# sourceMappingURL=createElement.js.map