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,
  }
}