if (key === "key") {
} else if (key[0] === "o" && key[1] === "n") {
if (
!((node.events || (node.events = {}))[(key = key.slice(2))] = newValue)
) {
node.removeEventListener(key, listener)
} else if (!oldValue) {
node.addEventListener(key, listener)
}
} else if (!isSvg && key !== "list" && key !== "form" && key in node) {
node[key] = newValue == null ? "" : newValue
} else if (newValue == null || newValue === false) {
node.removeAttribute(key)
} else {
node.setAttribute(key, newValue)
}
}
var createNode = (vdom, isSvg) => {
var props = vdom.props,
node =
vdom.type === TEXT_NODE
? document.createTextNode(vdom.tag)
: (isSvg = isSvg || vdom.tag === "svg")
? document.createElementNS(SVG_NS, vdom.tag, { is: props.is })
: document.createElement(vdom.tag, { is: props.is })
for (var k in props) {
patchProperty(node, k, null, props[k], isSvg)
}
for (var i = 0; i < vdom.children.length; i++) {
node.appendChild(
createNode((vdom.children[i] = vdomify(vdom.children[i])), isSvg)
)
}
return (vdom.node = node)
}
var patchNode = (parent, node, oldVNode, newVNode, isSvg) => {
if (oldVNode === newVNode) {
} else if (
oldVNode != null &&
oldVNode.type === TEXT_NODE &&
newVNode.type === TEXT_NODE
) {
if (oldVNode.tag !== newVNode.tag) node.nodeValue = newVNode.tag
} else if (oldVNode == null || oldVNode.tag !== newVNode.tag) {
node = parent.insertBefore(
createNode((newVNode = vdomify(newVNode)), isSvg),
node
)
if (oldVNode != null) {
parent.removeChild(oldVNode.node)
}
} else {
var tmpVKid,
oldVKid,
oldKey,
newKey,
oldProps = oldVNode.props,
newProps = newVNode.props,
oldVKids = oldVNode.children,
newVKids = newVNode.children,
oldHead = 0,
newHead = 0,
oldTail = oldVKids.length - 1,
newTail = newVKids.length - 1
isSvg = isSvg || newVNode.tag === "svg"