mostly-dom
Version:
A virtual-dom for TypeScript
29 lines • 1.26 kB
JavaScript
import { ModuleCallbacks } from './modules/ModuleCallbacks';
import { createElement } from './createElement';
import { patchVNode } from './patchVNode';
import { removeVNodes } from './removeVNodes';
import { vNodesAreEqual } from './helpers';
export function init(modules) {
if (modules === void 0) { modules = []; }
var moduleCallbacks = new ModuleCallbacks(modules);
return function patch(formerVNode, vNode) {
var insertedVNodeQueue = [];
moduleCallbacks.pre(vNode);
if (vNodesAreEqual(formerVNode, vNode))
patchVNode(formerVNode, vNode, moduleCallbacks, insertedVNodeQueue);
else {
var element = formerVNode.element;
var parentNode = element.parentNode;
vNode = createElement(vNode, moduleCallbacks, insertedVNodeQueue);
if (parentNode) {
parentNode.insertBefore(vNode.element, element.nextSibling);
removeVNodes(parentNode, [formerVNode], 0, 0, moduleCallbacks);
}
}
for (var i = 0; i < insertedVNodeQueue.length; ++i)
insertedVNodeQueue[i].props.insert(insertedVNodeQueue[i]);
moduleCallbacks.post(vNode);
return vNode;
};
}
//# sourceMappingURL=init.js.map