All files / src/components/world/contextMenus useSceneContextMenu.ts

0% Statements 0/19
0% Branches 0/1
0% Functions 0/3
0% Lines 0/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                                                                                 
import { useCallback } from "react";
import { useAppDispatch, useAppStore } from "store/hooks";
import { sceneSelectors } from "store/features/entities/entitiesSelectors";
import { useContextMenu } from "ui/hooks/use-context-menu";
import renderSceneContextMenu from "components/world/contextMenus/renderSceneContextMenu";
 
export const useSceneContextMenu = (sceneId: string, isEnabled: boolean) => {
  const dispatch = useAppDispatch();
  const store = useAppStore();
 
  const getContextMenu = useCallback(
    ({ closeMenu: onClose }: { closeMenu: () => void }) => {
      const state = store.getState();
      const scene = sceneSelectors.selectById(state, sceneId);
 
      Iif (!scene) {
        return undefined;
      }
 
      const { x: hoverX, y: hoverY } = state.editor.hover;
 
      return renderSceneContextMenu({
        dispatch,
        sceneId,
        additionalSceneIds: state.editor.sceneSelectionIds,
        startSceneId: state.project.present.settings.startSceneId,
        startDirection: state.project.present.settings.startDirection,
        hoverX,
        hoverY,
        colorsEnabled: state.project.present.settings.colorMode !== "mono",
        colorModeOverride: scene.colorModeOverride,
        runSceneSelectionOnly:
          state.project.present.settings.runSceneSelectionOnly,
        onClose,
      });
    },
    [dispatch, sceneId, store],
  );
 
  const getContextMenuEnabled = useCallback(() => {
    return isEnabled;
  }, [isEnabled]);
 
  return useContextMenu({
    getMenu: getContextMenu,
    getIsEnabled: getContextMenuEnabled,
  });
};