mostly-dom
Version:
A virtual-dom for TypeScript
20 lines • 1.02 kB
JavaScript
import { postpatchHooks, prepatchHooks, updateHooks } from './hooks';
import { patchVNodeChildren } from './patchVNodeChildren';
import { replacePreviousElement } from './replacePreviousElement';
import { updateElement } from './updateElement';
import { vNodesAreEqual } from '../helpers';
export function patchVNode(formerVNode, vNode, moduleCallbacks, insertedVNodeQueue) {
prepatchHooks(formerVNode, vNode, moduleCallbacks);
vNode = updateElement(formerVNode, vNode);
if (formerVNode === vNode)
return;
if (!vNodesAreEqual(formerVNode, vNode))
return replacePreviousElement(formerVNode, vNode, moduleCallbacks, insertedVNodeQueue);
updateHooks(formerVNode, vNode, moduleCallbacks);
if (!vNode.text)
patchVNodeChildren(formerVNode, vNode, moduleCallbacks, insertedVNodeQueue);
else if (formerVNode.text !== vNode.text)
vNode.element.textContent = vNode.text;
postpatchHooks(formerVNode, vNode, moduleCallbacks);
}
//# sourceMappingURL=patchVNode.js.map