mostly-dom
Version:
A virtual-dom for TypeScript
39 lines • 1.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
function removeVNodes(parentNode, vNodes, startIndex, endIndex, moduleCallbacks) {
for (; startIndex <= endIndex; ++startIndex) {
var vNode = vNodes[startIndex];
if (!vNode)
continue;
if (isElementVNode(vNode)) {
var props = vNode.props;
invokeDestroyHook(vNode, moduleCallbacks);
var removeElement = moduleCallbacks.createRemoveElementFn(vNode.element);
moduleCallbacks.remove(vNode, removeElement);
if (props.remove)
props.remove(vNode, removeElement);
else
removeElement();
}
else {
parentNode.removeChild(vNode.element);
}
}
}
exports.removeVNodes = removeVNodes;
function isElementVNode(vNode) {
return vNode.tagName && vNode.element;
}
function invokeDestroyHook(vNode, moduleCallbacks) {
var props = vNode.props;
if (props.destroy)
props.destroy(vNode);
if (isElementVNode(vNode))
moduleCallbacks.destroy(vNode);
var children = vNode.children;
if (!children)
return;
for (var i = 0; i < children.length; ++i)
invokeDestroyHook(children[i], moduleCallbacks);
}
//# sourceMappingURL=removeVNodes.js.map
;