feat: time to next flag

This commit is contained in:
Carlos Valente
2025-07-13 16:52:35 +02:00
parent 637454f73d
commit 445cc9e845
43 changed files with 550 additions and 310 deletions
@@ -11,8 +11,8 @@ import { useCuesheetTableMenu } from './useCuesheetTableMenu';
export default memo(CuesheetTableMenu);
function CuesheetTableMenu() {
const { isOpen, entryId, entryIndex, parentId, position, closeMenu } = useCuesheetTableMenu();
const { addEntry, clone, deleteEntry, move } = useEntryActions();
const { isOpen, entryId, entryIndex, parentId, flag, position, closeMenu } = useCuesheetTableMenu();
const { addEntry, clone, deleteEntry, move, updateEntry } = useEntryActions();
const showModal = useCuesheetEditModal((state) => state.setEditableEntry);
if (!isOpen) {
@@ -26,6 +26,14 @@ function CuesheetTableMenu() {
items={[
{ type: 'item', label: 'Edit...', onClick: () => showModal(entryId), icon: IoOptions },
{ type: 'divider' },
{
type: 'item',
label: flag ? 'Remove flag' : 'Add flag',
onClick: () => updateEntry({ id: entryId, flag: !flag }),
icon: IoDuplicateOutline,
disabled: flag === null,
},
{ type: 'divider' },
{
type: 'item',
label: 'Add event above',
@@ -9,6 +9,7 @@ type OpenMenu = {
entryType: SupportedEntry;
entryIndex: number;
parentId: EntryId | null;
flag: boolean | null;
};
type ClosedMenu = {
@@ -17,6 +18,7 @@ type ClosedMenu = {
entryType: null;
entryIndex: null;
parentId: null;
flag: null;
};
type CuesheetTableMenuStore = (OpenMenu | ClosedMenu) & {
@@ -27,6 +29,7 @@ type CuesheetTableMenuStore = (OpenMenu | ClosedMenu) & {
entryType: SupportedEntry,
entryIndex: number,
parentId: EntryId | null,
flag: boolean | null,
) => void;
closeMenu: () => void;
};
@@ -38,12 +41,14 @@ export const useCuesheetTableMenu = create<CuesheetTableMenuStore>((set) => ({
entryIndex: null,
parentId: null,
position: { x: 0, y: 0 },
flag: null,
openMenu: (
position: Anchor,
entryId: EntryId,
entryType: SupportedEntry,
entryIndex: number,
parentId: EntryId | null,
) => set({ isOpen: true, position, entryId, entryType, entryIndex, parentId }),
flag: null | boolean,
) => set({ isOpen: true, position, entryId, entryType, entryIndex, parentId, flag }),
closeMenu: () => set({ isOpen: false }),
}));