mostly-dom
Version:
A virtual-dom for TypeScript
32 lines • 1.42 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var ModuleCallbacks_1 = require("./modules/ModuleCallbacks");
var createElement_1 = require("./createElement");
var patchVNode_1 = require("./patchVNode");
var removeVNodes_1 = require("./removeVNodes");
var helpers_1 = require("./helpers");
function init(modules) {
if (modules === void 0) { modules = []; }
var moduleCallbacks = new ModuleCallbacks_1.ModuleCallbacks(modules);
return function patch(formerVNode, vNode) {
var insertedVNodeQueue = [];
moduleCallbacks.pre(vNode);
if (helpers_1.vNodesAreEqual(formerVNode, vNode))
patchVNode_1.patchVNode(formerVNode, vNode, moduleCallbacks, insertedVNodeQueue);
else {
var element = formerVNode.element;
var parentNode = element.parentNode;
vNode = createElement_1.createElement(vNode, moduleCallbacks, insertedVNodeQueue);
if (parentNode) {
parentNode.insertBefore(vNode.element, element.nextSibling);
removeVNodes_1.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;
};
}
exports.init = init;
//# sourceMappingURL=init.js.map
;