import { getElem } from "./perks";

export default (mouseX, mouseY) => {
  const scope = getElem("app", "id");
  const contextMenu = getElem("context-menu", "class");
  // ? compute what is the mouse position relative to the container element
  // (scope)
  let { left: scopeOffsetX, top: scopeOffsetY } = scope.getBoundingClientRect();

  scopeOffsetX = scopeOffsetX < 0 ? 0 : scopeOffsetX;
  scopeOffsetY = scopeOffsetY < 0 ? 0 : scopeOffsetY;

  const scopeX = mouseX - scopeOffsetX;
  const scopeY = mouseY - scopeOffsetY;

  // ? check if the element will go out of bounds
  const outOfBoundsOnX = scopeX + contextMenu.clientWidth > scope.clientWidth;

  const outOfBoundsOnY = scopeY + contextMenu.clientHeight > scope.clientHeight;

  let normalX = mouseX;
  let normalY = mouseY;
  let normalizedX = false;
  let normalizedY = false;

  if (window.innerWidth - normalX < 375) {
    normalizedX = true;
  }
  // ? normalize on X
  if (outOfBoundsOnX) {
    normalX = scopeOffsetX + scope.clientWidth - contextMenu.clientWidth;
    normalX -= 10;
  }

  // ? normalize on Y
  if (outOfBoundsOnY) {
    normalY = scopeOffsetY + scope.clientHeight - contextMenu.clientHeight;
    normalY -= 10;

    normalizedY = true;
  }

  return { normalX, normalY, normalizedX, normalizedY };
};
