2023-01-07 18:16:19 -08:00
|
|
|
import { RowNode } from '@ag-grid-community/core';
|
|
|
|
|
import type { AgGridReact as AgGridReactType } from '@ag-grid-community/react/lib/agGridReact';
|
2022-12-28 15:32:02 -08:00
|
|
|
import { createUseExternalEvents } from '@mantine/utils';
|
2023-01-07 18:16:19 -08:00
|
|
|
import { MutableRefObject } from 'react';
|
2023-01-05 21:59:07 -08:00
|
|
|
import { LibraryItem } from '/@/renderer/api/types';
|
2022-12-28 15:32:02 -08:00
|
|
|
|
|
|
|
|
export type OpenContextMenuProps = {
|
|
|
|
|
data: any[];
|
2023-01-07 18:16:19 -08:00
|
|
|
dataNodes?: RowNode[];
|
2022-12-28 15:32:02 -08:00
|
|
|
menuItems: SetContextMenuItems;
|
2023-01-07 18:16:19 -08:00
|
|
|
tableRef?: MutableRefObject<AgGridReactType | null>;
|
2022-12-28 15:32:02 -08:00
|
|
|
type: LibraryItem;
|
|
|
|
|
xPos: number;
|
|
|
|
|
yPos: number;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type ContextMenuEvents = {
|
|
|
|
|
closeContextMenu: () => void;
|
|
|
|
|
openContextMenu: (args: OpenContextMenuProps) => void;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export type ContextMenuItem =
|
|
|
|
|
| 'play'
|
|
|
|
|
| 'playLast'
|
|
|
|
|
| 'playNext'
|
|
|
|
|
| 'addToPlaylist'
|
|
|
|
|
| 'addToFavorites'
|
|
|
|
|
| 'removeFromFavorites'
|
2022-12-31 03:46:12 -08:00
|
|
|
| 'setRating'
|
2023-01-03 00:50:09 -08:00
|
|
|
| 'deletePlaylist'
|
|
|
|
|
| 'createPlaylist';
|
2022-12-28 15:32:02 -08:00
|
|
|
|
|
|
|
|
export type SetContextMenuItems = {
|
|
|
|
|
disabled?: boolean;
|
2022-12-29 17:03:49 -08:00
|
|
|
divider?: boolean;
|
2022-12-28 15:32:02 -08:00
|
|
|
id: ContextMenuItem;
|
|
|
|
|
onClick?: () => void;
|
|
|
|
|
}[];
|
|
|
|
|
|
|
|
|
|
export const [useContextMenuEvents, createEvent] =
|
|
|
|
|
createUseExternalEvents<ContextMenuEvents>('context-menu');
|
|
|
|
|
|
|
|
|
|
export const openContextMenu = createEvent('openContextMenu');
|
|
|
|
|
export const closeContextMenu = createEvent('closeContextMenu');
|