useOnEventTrigger.ts
1.34 KB
import type { RenderComponentExposeType } from '../types'
import type { DoubleClickEventDataType, MouseDownEventDataType, MouseUpEventDataType, NodeDataType, SingleClickEventDataType } from '@/api/node/model'
import { EventTypeEnum } from '@/enums/datasource'
interface UseOnEventTriggerParamsType {
onMouseDown?: (eventData: MouseDownEventDataType, nodeData: NodeDataType) => any
onMouseUp?: (eventData: MouseUpEventDataType, nodeData: NodeDataType) => any
onClick?: (eventData: SingleClickEventDataType, nodeData: NodeDataType) => any
onDbClick?: (eventData: DoubleClickEventDataType, nodeData: NodeDataType) => any
}
export function useOnEventTrigger(params: UseOnEventTriggerParamsType) {
const onEventTrigger: RenderComponentExposeType['onEventTrigger'] = (eventName: EventTypeEnum, nodeData: NodeDataType) => {
if (!nodeData.eventJson[eventName].enable) return
if (eventName === EventTypeEnum.SINGLE)
params.onClick?.(nodeData.eventJson[eventName], nodeData)
else if (eventName === EventTypeEnum.DOUBLE)
params.onDbClick?.(nodeData.eventJson[eventName], nodeData)
else if (eventName === EventTypeEnum.DOWN)
params.onMouseDown?.(nodeData.eventJson[eventName], nodeData)
else if (eventName === EventTypeEnum.UP)
params.onMouseDown?.(nodeData.eventJson[eventName], nodeData)
}
return {
onEventTrigger,
}
}