feat: add useStore and useHooks composables that provide default store/hooks

This commit is contained in:
Braks
2021-10-20 22:39:54 +02:00
parent 61dc9dea33
commit b2b1fe822f
27 changed files with 174 additions and 128 deletions
+40 -37
View File
@@ -1,45 +1,48 @@
// global hooks
import { EventHook } from '@vueuse/core'
import { Connection, Edge, Elements, FlowTransform, Node, OnConnectStartParams, OnLoadParams } from '../types'
export type FlowHook<T = any> = EventHook<T>
export interface FlowHooks {
elementClick: EventHook<{ event: MouseEvent; element: Node | Edge }>
elementsRemove: EventHook<Elements>
nodeDoubleClick: EventHook<{ event: MouseEvent; node: Node }>
nodeClick: EventHook<{ event: MouseEvent; node: Node }>
nodeMouseEnter: EventHook<{ event: MouseEvent; node: Node }>
nodeMouseMove: EventHook<{ event: MouseEvent; node: Node }>
nodeMouseLeave: EventHook<{ event: MouseEvent; node: Node }>
nodeContextMenu: EventHook<{ event: MouseEvent; node: Node }>
nodeDragStart: EventHook<{ event: MouseEvent; node: Node }>
nodeDrag: EventHook<{ event: MouseEvent; node: Node }>
nodeDragStop: EventHook<{ event: MouseEvent; node: Node }>
connect: EventHook<Connection>
connectStart: EventHook<{
elementClick: FlowHook<{ event: MouseEvent; element: Node | Edge }>
elementsRemove: FlowHook<Elements>
nodeDoubleClick: FlowHook<{ event: MouseEvent; node: Node }>
nodeClick: FlowHook<{ event: MouseEvent; node: Node }>
nodeMouseEnter: FlowHook<{ event: MouseEvent; node: Node }>
nodeMouseMove: FlowHook<{ event: MouseEvent; node: Node }>
nodeMouseLeave: FlowHook<{ event: MouseEvent; node: Node }>
nodeContextMenu: FlowHook<{ event: MouseEvent; node: Node }>
nodeDragStart: FlowHook<{ event: MouseEvent; node: Node }>
nodeDrag: FlowHook<{ event: MouseEvent; node: Node }>
nodeDragStop: FlowHook<{ event: MouseEvent; node: Node }>
connect: FlowHook<Connection>
connectStart: FlowHook<{
event: MouseEvent
params: OnConnectStartParams
}>
connectStop: EventHook<MouseEvent>
connectEnd: EventHook<MouseEvent>
load: EventHook<OnLoadParams>
move: EventHook<FlowTransform | undefined>
moveStart: EventHook<FlowTransform | undefined>
moveEnd: EventHook<FlowTransform | undefined>
selectionChange: EventHook<Elements | null>
selectionDragStart: EventHook<{ event: MouseEvent; nodes: Node[] }>
selectionDrag: EventHook<{ event: MouseEvent; nodes: Node[] }>
selectionDragStop: EventHook<{ event: MouseEvent; nodes: Node[] }>
selectionContextMenu: EventHook<{ event: MouseEvent; nodes: Node[] }>
paneScroll: EventHook<WheelEvent | undefined>
paneClick: EventHook<MouseEvent>
paneContextMenu: EventHook<MouseEvent>
edgeUpdate: EventHook<{ edge: Edge; connection: Connection }>
edgeContextMenu: EventHook<{ event: MouseEvent; edge: Edge }>
edgeMouseEnter: EventHook<{ event: MouseEvent; edge: Edge }>
edgeMouseMove: EventHook<{ event: MouseEvent; edge: Edge }>
edgeMouseLeave: EventHook<{ event: MouseEvent; edge: Edge }>
edgeDoubleClick: EventHook<{ event: MouseEvent; edge: Edge }>
edgeClick: EventHook<{ event: MouseEvent; edge: Edge }>
edgeUpdateStart: EventHook<{ event: MouseEvent; edge: Edge }>
edgeUpdateEnd: EventHook<{ event: MouseEvent; edge: Edge }>
connectStop: FlowHook<MouseEvent>
connectEnd: FlowHook<MouseEvent>
load: FlowHook<OnLoadParams>
move: FlowHook<FlowTransform | undefined>
moveStart: FlowHook<FlowTransform | undefined>
moveEnd: FlowHook<FlowTransform | undefined>
selectionChange: FlowHook<Elements | null>
selectionDragStart: FlowHook<{ event: MouseEvent; nodes: Node[] }>
selectionDrag: FlowHook<{ event: MouseEvent; nodes: Node[] }>
selectionDragStop: FlowHook<{ event: MouseEvent; nodes: Node[] }>
selectionContextMenu: FlowHook<{ event: MouseEvent; nodes: Node[] }>
paneScroll: FlowHook<WheelEvent | undefined>
paneClick: FlowHook<MouseEvent>
paneContextMenu: FlowHook<MouseEvent>
edgeUpdate: FlowHook<{ edge: Edge; connection: Connection }>
edgeContextMenu: FlowHook<{ event: MouseEvent; edge: Edge }>
edgeMouseEnter: FlowHook<{ event: MouseEvent; edge: Edge }>
edgeMouseMove: FlowHook<{ event: MouseEvent; edge: Edge }>
edgeMouseLeave: FlowHook<{ event: MouseEvent; edge: Edge }>
edgeDoubleClick: FlowHook<{ event: MouseEvent; edge: Edge }>
edgeClick: FlowHook<{ event: MouseEvent; edge: Edge }>
edgeUpdateStart: FlowHook<{ event: MouseEvent; edge: Edge }>
edgeUpdateEnd: FlowHook<{ event: MouseEvent; edge: Edge }>
}
export type EmitFunc<T extends FlowHooks = FlowHooks> = (name: keyof T, ...args: any[]) => void