Files
ontime/apps/client/src/views/cuesheet/cuesheet-table/cuesheet-table-menu/useCuesheetTableMenu.tsx
T
2025-07-14 11:39:16 +02:00

55 lines
1.2 KiB
TypeScript

import { EntryId, SupportedEntry } from 'ontime-types';
import { create } from 'zustand';
type Anchor = { x: number; y: number };
type OpenMenu = {
isOpen: true;
entryId: EntryId;
entryType: SupportedEntry;
entryIndex: number;
parentId: EntryId | null;
flag: boolean | null;
};
type ClosedMenu = {
isOpen: false;
entryId: null;
entryType: null;
entryIndex: null;
parentId: null;
flag: null;
};
type CuesheetTableMenuStore = (OpenMenu | ClosedMenu) & {
position: Anchor;
openMenu: (
position: Anchor,
entryId: EntryId,
entryType: SupportedEntry,
entryIndex: number,
parentId: EntryId | null,
flag: boolean | null,
) => void;
closeMenu: () => void;
};
export const useCuesheetTableMenu = create<CuesheetTableMenuStore>((set) => ({
isOpen: false,
entryId: null,
entryType: null,
entryIndex: null,
parentId: null,
position: { x: 0, y: 0 },
flag: null,
openMenu: (
position: Anchor,
entryId: EntryId,
entryType: SupportedEntry,
entryIndex: number,
parentId: EntryId | null,
flag: null | boolean,
) => set({ isOpen: true, position, entryId, entryType, entryIndex, parentId, flag }),
closeMenu: () => set({ isOpen: false }),
}));