MCPcopy
hub / github.com/jorgebucaran/hyperapp / patch

Function patch

index.js:124–317  ·  view source on GitHub ↗
(parent, node, oldVNode, newVNode, listener, isSvg)

Source from the content-addressed store, hash-verified

122}
123
124var 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],

Callers 1

renderFunction · 0.85

Calls 4

createNodeFunction · 0.85
maybeVNodeFunction · 0.85
patchPropertyFunction · 0.85
getKeyFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…