import type { DirectiveBinding } from 'vue' import type { LoggerInterface } from 'zeed' import { Logger } from 'zeed' const log: LoggerInterface = Logger('oui:v-menu') export const vMenu = { updated: (element: any, binding: DirectiveBinding) => { log.assert(typeof binding.value === 'function', 'v-menu requires function as argument') element.__ouiVMenu = binding.value }, mounted: (element: any, binding: DirectiveBinding) => { log.assert(typeof binding.value === 'function', 'v-menu requires function as argument') element.__ouiVMenu = binding.value element.addEventListener('contextmenu', (event: MouseEvent) => { event.preventDefault() // no system menu element.__ouiVMenu?.(event, element) }) element.addEventListener('click', (event: MouseEvent) => { element.__ouiVMenu?.(event, element) }) }, } export const vMenuContext = { updated: (element: any, binding: DirectiveBinding) => { log.assert(typeof binding.value === 'function', 'v-menu requires function as argument') element.__ouiVMenuContext = binding.value }, mounted: (element: any, binding: DirectiveBinding) => { log.assert(typeof binding.value === 'function', 'v-menu requires function as argument') element.__ouiVMenuContext = binding.value element.addEventListener('contextmenu', (event: MouseEvent) => { event.preventDefault() // no system menu element.__ouiVMenuContext?.(event, element) }) }, } export const vContext = vMenuContext