Skip to content

Commit

Permalink
easier to read
Browse files Browse the repository at this point in the history
  • Loading branch information
JoviDeCroock committed Jun 25, 2024
1 parent c189ade commit c739eae
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 10 deletions.
12 changes: 2 additions & 10 deletions src/diff/children.js
Original file line number Diff line number Diff line change
Expand Up @@ -320,16 +320,8 @@ function constructNewChildrenArray(newParentVNode, renderResult, oldChildren) {
skew--;
}
} else if (matchingIndex < skewedIndex) {
// Our matched DOM-node is further in the negative way in the list of children
// than where it's at now.

// When the remaining old chiildren is less than the new children
// plus our skewed index we know we are dealing with a growing list
if (remainingOldChildren < newChildrenLength + skewedIndex) {
skew += matchingIndex + skewedIndex;
} else {
skew = 0;
}
// When our new position is in front of our old position than we increase the skew
skew++;
}

// Move this VNode's DOM if the original index (matchingIndex) doesn't
Expand Down
38 changes: 38 additions & 0 deletions test/browser/render.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1636,7 +1636,9 @@ describe('render()', () => {
);
const a = ['0', '1', '2', '3', '4', '5', '6'];
const b = ['1', '3', '5', '2', '6', '4', '0'];
const c = ['11', '3', '1', '4', '6', '2', '5', '0', '9', '10'];
render(<App items={a} />, scratch);
clearLog();
expect(scratch.innerHTML).to.equal(
`<div>${a.map(n => `<div>${n}</div>`).join('')}</div>`
);
Expand All @@ -1645,10 +1647,46 @@ describe('render()', () => {
expect(scratch.innerHTML).to.equal(
`<div>${b.map(n => `<div>${n}</div>`).join('')}</div>`
);
expect(getLog()).to.deep.equal([
'<div>0123456.insertBefore(<div>2, <div>6)',
'<div>0134526.appendChild(<div>4)',
'<div>0135264.appendChild(<div>0)'
]);
clearLog();

render(<App items={c} />, scratch);
expect(scratch.innerHTML).to.equal(
`<div>${c.map(n => `<div>${n}</div>`).join('')}</div>`
);
expect(getLog()).to.deep.equal([
'<div>.appendChild(#text)',
'<div>1352640.insertBefore(<div>11, <div>1)',
'<div>111352640.insertBefore(<div>1, <div>5)',
'<div>113152640.insertBefore(<div>6, <div>0)',
'<div>113152460.insertBefore(<div>2, <div>0)',
'<div>113154620.insertBefore(<div>5, <div>0)',
'<div>.appendChild(#text)',
'<div>113146250.appendChild(<div>9)',
'<div>.appendChild(#text)',
'<div>1131462509.appendChild(<div>10)'
]);
clearLog();

render(<App items={a} />, scratch);
expect(scratch.innerHTML).to.equal(
`<div>${a.map(n => `<div>${n}</div>`).join('')}</div>`
);
expect(getLog()).to.deep.equal([
'<div>11.remove()',
'<div>9.remove()',
'<div>10.remove()',
'<div>3146250.appendChild(<div>1)',
'<div>3462501.appendChild(<div>2)',
'<div>3465012.appendChild(<div>3)',
'<div>4650123.appendChild(<div>4)',
'<div>6501234.appendChild(<div>5)',
'<div>6012345.appendChild(<div>6)'
]);
clearLog();
});
});

0 comments on commit c739eae

Please sign in to comment.