feat: updates

This commit is contained in:
qier222 2022-08-22 16:51:23 +08:00
parent ebebf2a733
commit a1b0bcf4d3
No known key found for this signature in database
GPG key ID: 9C85007ED905F14D
68 changed files with 4776 additions and 5559 deletions

View file

@ -0,0 +1,56 @@
import { assign } from 'lodash-es'
import { proxy, ref } from 'valtio'
interface ContextMenu {
target: HTMLElement | null
cursorPosition: {
x: number
y: number
} | null
type: 'album' | 'track' | 'playlist' | 'artist' | null
dataSourceID: string | number | null
options: {
useCursorPosition?: boolean
} | null
}
const initContextMenu: ContextMenu = {
target: null,
cursorPosition: null,
type: null,
dataSourceID: null,
options: null,
}
const contextMenus = proxy<ContextMenu>(initContextMenu)
export default contextMenus
export const openContextMenu = ({
event,
type,
dataSourceID,
options = null,
}: {
event: React.MouseEvent<HTMLElement, MouseEvent>
type: ContextMenu['type']
dataSourceID: ContextMenu['dataSourceID']
options?: ContextMenu['options']
}) => {
const target = event.target as HTMLElement
contextMenus.target = ref(target)
contextMenus.type = type
contextMenus.dataSourceID = dataSourceID
contextMenus.options = options
contextMenus.cursorPosition = {
x: event.clientX,
y: event.clientY,
}
}
export const closeContextMenu = (event: MouseEvent) => {
if (event.target === contextMenus.target) {
return
}
assign(contextMenus, initContextMenu)
}