* Sort collisions in descending order (from greatest to smallest value)
export function sortCollisionsDesc(
function getCircleIntersection(entry, target) {
// Abstracted the logic to calculate the radius for simplicity
var circle1 = {radius: 20, x: entry.offsetLeft, y: entry.offsetTop};
var circle2 = {radius: 12, x: target.offsetLeft, y: target.offsetTop};
var dx = circle1.x - circle2.x;
var dy = circle1.y - circle2.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < circle1.radius + circle2.radius) {
* Returns the circle that has the greatest intersection area
function circleIntersection({
for (const droppableContainer of droppableContainers) {
const {id} = droppableContainer;
const rect = droppableRects.get(id);
const intersectionRatio = getCircleIntersection(rect, collisionRect);
if (intersectionRatio > 0) {
data: {droppableContainer, value: intersectionRatio},
return collisions.sort(sortCollisionsDesc);