(parent, node, oldVNode, newVNode, listener, isSvg)
| 122 | } |
| 123 | |
| 124 | var patch = (parent, node, oldVNode, newVNode, listener, isSvg) => { |
| 125 | if (oldVNode === newVNode) { |
| 126 | } else if ( |
| 127 | oldVNode != null && |
| 128 | oldVNode.type === TEXT_NODE && |
| 129 | newVNode.type === TEXT_NODE |
| 130 | ) { |
| 131 | if (oldVNode.tag !== newVNode.tag) node.nodeValue = newVNode.tag |
| 132 | } else if (oldVNode == null || oldVNode.tag !== newVNode.tag) { |
| 133 | node = parent.insertBefore( |
| 134 | createNode((newVNode = maybeVNode(newVNode)), listener, isSvg), |
| 135 | node |
| 136 | ) |
| 137 | if (oldVNode != null) { |
| 138 | parent.removeChild(oldVNode.node) |
| 139 | } |
| 140 | } else { |
| 141 | var tmpVKid |
| 142 | var oldVKid |
| 143 | |
| 144 | var oldKey |
| 145 | var newKey |
| 146 | |
| 147 | var oldProps = oldVNode.props |
| 148 | var newProps = newVNode.props |
| 149 | |
| 150 | var oldVKids = oldVNode.children |
| 151 | var newVKids = newVNode.children |
| 152 | |
| 153 | var oldHead = 0 |
| 154 | var newHead = 0 |
| 155 | var oldTail = oldVKids.length - 1 |
| 156 | var newTail = newVKids.length - 1 |
| 157 | |
| 158 | isSvg = isSvg || newVNode.tag === "svg" |
| 159 | |
| 160 | for (var i in { ...oldProps, ...newProps }) { |
| 161 | if ( |
| 162 | (i === "value" || i === "selected" || i === "checked" |
| 163 | ? node[i] |
| 164 | : oldProps[i]) !== newProps[i] |
| 165 | ) { |
| 166 | patchProperty(node, i, oldProps[i], newProps[i], listener, isSvg) |
| 167 | } |
| 168 | } |
| 169 | |
| 170 | while (newHead <= newTail && oldHead <= oldTail) { |
| 171 | if ( |
| 172 | (oldKey = getKey(oldVKids[oldHead])) == null || |
| 173 | oldKey !== getKey(newVKids[newHead]) |
| 174 | ) { |
| 175 | break |
| 176 | } |
| 177 | |
| 178 | patch( |
| 179 | node, |
| 180 | oldVKids[oldHead].node, |
| 181 | oldVKids[oldHead], |
no test coverage detected
searching dependent graphs…