export function determinePosition( canvasRect: DOMRect, relativeX: number, relativeY: number ): { top: number | "auto"; left: number | "auto"; right: number | "auto"; bottom: number | "auto"; } { const centerX = canvasRect.width / 2; const centerY = canvasRect.height / 2; // Define a threshold for considering a point as "centered" const centerThreshold = 10; // Adjust this value as needed // Check if the point is within the center threshold const isCenterX = Math.abs(relativeX - centerX) <= centerThreshold; const isCenterY = Math.abs(relativeY - centerY) <= centerThreshold; // If the point is centered, return a special "centered" position if (isCenterX && isCenterY) { return { top: "auto", left: "auto", right: "auto", bottom: "auto", }; } let position: { top: number | "auto"; left: number | "auto"; right: number | "auto"; bottom: number | "auto"; }; if (relativeY < centerY) { if (relativeX < centerX) { // Top-left quadrant position = { top: relativeY - 41.5, left: relativeX - 125, right: "auto", bottom: "auto", }; } else { // Top-right quadrant position = { top: relativeY - 41.5, right: canvasRect.width - relativeX - 125, left: "auto", bottom: "auto", }; } } else { if (relativeX < centerX) { // Bottom-left quadrant position = { bottom: canvasRect.height - relativeY - 41.5, left: relativeX - 125, right: "auto", top: "auto", }; } else { // Bottom-right quadrant position = { bottom: canvasRect.height - relativeY - 41.5, right: canvasRect.width - relativeX - 125, left: "auto", top: "auto", }; } } return position; }