blob: a0fd2cf4fadac8680efce74a144a1d3135c544c6 (
plain)
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
|
import { create } from 'zustand'
export type ContextMenuIcon = 'copy' | 'cut' | 'paste' | 'undo' | 'redo' | 'selectAll' | 'close' | 'folder' | 'file' | 'link' | 'rename' | 'trash'
export interface ContextMenuItem {
id: string
label: string
shortcut?: string
icon?: ContextMenuIcon
action: () => void
disabled?: boolean
separator?: boolean
}
interface ContextMenuState {
isOpen: boolean
x: number
y: number
items: ContextMenuItem[]
open: (x: number, y: number, items: ContextMenuItem[]) => void
close: () => void
}
export const useContextMenuStore = create<ContextMenuState>((set) => ({
isOpen: false,
x: 0,
y: 0,
items: [],
open: (x, y, items) => set({ isOpen: true, x, y, items }),
close: () => set({ isOpen: false }),
}))
|