dompro
Version:
31 lines (25 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.updateDOM = updateDOM;
var _createElement = require('./createElement.js');
var _hasChanged = require('./hasChanged.js');
var _propHandler = require('./propHandler.js');
function updateDOM($parent, newNode, oldNode) {
var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
if (!oldNode) {
$parent.appendChild((0, _createElement.createElement)(newNode));
} else if (!newNode) {
$parent.removeChild($parent.childNodes[index]);
} else if ((0, _hasChanged.hasChanged)(newNode, oldNode)) {
$parent.replaceChild((0, _createElement.createElement)(newNode), $parent.childNodes[index]);
} else if (newNode.type) {
(0, _propHandler.updateProps)($parent.childNodes[index], newNode.props, oldNode.props);
var newLength = newNode.children.length;
var oldLength = oldNode.children.length;
for (var i = 0; i < newLength || i < oldLength; i++) {
updateDOM($parent.childNodes[index], newNode.children[i], oldNode.children[i], i);
}
}
}