y: getClampedAxis()

in packages/react-components/src/components/ModalClone/ModalClone.tsx [249:336]


            y: getClampedAxis('y', coordinates.y)
          });
        }
      }
    };

    /**
     * Clamps an axis to a specified min and max position.
     *
     * @param axis A string that represents the axis (x/y).
     * @param position The position on the axis.
     */
    const getClampedAxis = React.useCallback(
      (axis: keyof _ICoordinates, position: number) => {
        const { minPosition, maxPosition } = internalState;
        if (keepInBounds && minPosition && maxPosition) {
          position = Math.max(minPosition[axis], position);
          position = Math.min(maxPosition[axis], position);
        }
        return position;
      },
      [keepInBounds, internalState]
    );

    const handleModalClose = (): void => {
      internalState.lastSetCoordinates = ZERO;

      setModalMenuClose();
      internalState.isInKeyboardMoveMode = false;
      setIsModalOpen(false);
      setCoordinates(ZERO);

      internalState.disposeOnKeyUp?.();

      onDismissed?.();
    };

    const handleDragStart = React.useCallback((): void => {
      setModalMenuClose();
      internalState.isInKeyboardMoveMode = false;
    }, [internalState, setModalMenuClose]);

    const handleDrag = React.useCallback(
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      (ev: React.MouseEvent<HTMLElement> & React.TouchEvent<HTMLElement>, dragData: any): void => {
        setCoordinates((prevValue) => ({
          x: getClampedAxis('x', prevValue.x + dragData.delta.x),
          y: getClampedAxis('y', prevValue.y + dragData.delta.y)
        }));
      },
      [getClampedAxis]
    );

    const handleDragStop = React.useCallback((): void => {
      if (focusTrapZone.current) {
        focusTrapZone.current.focus();
      }
    }, []);

    const handleEnterKeyboardMoveMode = () => {
      // We need a global handleKeyDown event when we are in the move mode so that we can
      // handle the key presses and the components inside the modal do not get the events
      const handleKeyDown = (event: Event): void => {
        const ev = event as KeyboardEvent;
        if (ev.altKey && ev.ctrlKey && ev.keyCode === KeyCodes.space) {
          // CTRL + ALT + SPACE is handled during keyUp
          ev.preventDefault();
          ev.stopPropagation();
          return;
        }

        const newLocal = ev.altKey || ev.keyCode === KeyCodes.escape;
        if (isModalMenuOpen && newLocal) {
          setModalMenuClose();
        }

        if (internalState.isInKeyboardMoveMode && (ev.keyCode === KeyCodes.escape || ev.keyCode === KeyCodes.enter)) {
          internalState.isInKeyboardMoveMode = false;
          forceUpdateCallback();
          ev.preventDefault();
          ev.stopPropagation();
        }

        if (internalState.isInKeyboardMoveMode) {
          let handledEvent = true;
          const delta = getMoveDelta(ev);

          switch (ev.keyCode) {