18874: Add 'services/workbench2/' from commit 'f6f88d9ca9cdeeeebfadcfe999789bfb9f69e5c6'
[arvados.git] / services / workbench2 / src / store / context-menu / context-menu-reducer.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { contextMenuActions, ContextMenuAction, ContextMenuResource } from "./context-menu-actions";
6
7 export interface ContextMenuState {
8     open: boolean;
9     position: ContextMenuPosition;
10     resource?: ContextMenuResource;
11 }
12
13 export interface ContextMenuPosition {
14     x: number;
15     y: number;
16 }
17
18 const initialState = {
19     open: false,
20     position: { x: 0, y: 0 }
21 };
22
23 export const contextMenuReducer = (state: ContextMenuState = initialState, action: ContextMenuAction) =>
24     contextMenuActions.match(action, {
25         default: () => state,
26         OPEN_CONTEXT_MENU: ({ resource, position }) => ({ open: true, resource, position }),
27         CLOSE_CONTEXT_MENU: () => ({ ...state, open: false })
28     });
29