Boll of fruit
Five apples animate into a row, then shrink and vanish as they are eaten or replaced by lemons. This demonstrates the D3 data join pattern with explicit enter, update, and exit selections. The code uses `selection.data`, `selection.enter`, `selection.merge`, and `selection.exit` alongside `.transition().duration()` for smooth radius and position changes. Fruit type determines color and size through `scaleOrdinal` with a d3.v5 SVG rendering approach.
AI-generated description/* When we call selectAll and data, we create a "data join", we join data (in this case our 5 apples (array) and some elements (DOM elements in this case: our circle)
We have 3 case > Enter : we only have data, no elements
Update : we have both data and elements Exit : we only have elements but no data
In d3 we need to explicitly call thos 3 functions (.enter, .update, .exit)
selectAll give the elements part, .data give the data (always an array)
thanks to that d3 know exactly how much element are on the enter, update and exit */