update(hooks): add elementsProcessed event hook
* triggered after elements have been processed and updated in store * add missing selection change trigger to store Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
@@ -17,6 +17,7 @@ export const createHooks = (): FlowHooks => ({
|
|||||||
connectStart: createEventHook(),
|
connectStart: createEventHook(),
|
||||||
connectStop: createEventHook(),
|
connectStop: createEventHook(),
|
||||||
connectEnd: createEventHook(),
|
connectEnd: createEventHook(),
|
||||||
|
elementsProcessed: createEventHook(),
|
||||||
load: createEventHook(),
|
load: createEventHook(),
|
||||||
move: createEventHook(),
|
move: createEventHook(),
|
||||||
moveStart: createEventHook(),
|
moveStart: createEventHook(),
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ export default (id: string, preloadedState: FlowState) => {
|
|||||||
await processElements([...nodes, ...edges], (processed) => {
|
await processElements([...nodes, ...edges], (processed) => {
|
||||||
this.elements = [...this.elements, ...processed]
|
this.elements = [...this.elements, ...processed]
|
||||||
})
|
})
|
||||||
|
this.hooks.elementsProcessed.trigger(this.elements)
|
||||||
},
|
},
|
||||||
setUserSelection(mousePos) {
|
setUserSelection(mousePos) {
|
||||||
this.selectionActive = true
|
this.selectionActive = true
|
||||||
@@ -128,6 +129,7 @@ export default (id: string, preloadedState: FlowState) => {
|
|||||||
|
|
||||||
if (!this.getSelectedNodes || this.getSelectedNodes.length === 0) {
|
if (!this.getSelectedNodes || this.getSelectedNodes.length === 0) {
|
||||||
this.selectedElements = undefined
|
this.selectedElements = undefined
|
||||||
|
this.hooks.selectionChange.trigger(undefined)
|
||||||
this.nodesSelectionActive = false
|
this.nodesSelectionActive = false
|
||||||
} else {
|
} else {
|
||||||
this.selectedNodesBbox = getRectOfNodes(this.getSelectedNodes)
|
this.selectedNodesBbox = getRectOfNodes(this.getSelectedNodes)
|
||||||
@@ -138,6 +140,7 @@ export default (id: string, preloadedState: FlowState) => {
|
|||||||
const selectedElementsArr = Array.isArray(elements) ? elements : [elements]
|
const selectedElementsArr = Array.isArray(elements) ? elements : [elements]
|
||||||
const selectedElementsUpdated = microDiff(selectedElementsArr, this.selectedElements ?? []).length
|
const selectedElementsUpdated = microDiff(selectedElementsArr, this.selectedElements ?? []).length
|
||||||
this.selectedElements = selectedElementsUpdated ? selectedElementsArr : this.selectedElements
|
this.selectedElements = selectedElementsUpdated ? selectedElementsArr : this.selectedElements
|
||||||
|
if (selectedElementsUpdated) this.hooks.selectionChange.trigger(selectedElementsArr)
|
||||||
},
|
},
|
||||||
initD3Zoom({ d3ZoomHandler, d3Zoom, d3Selection }) {
|
initD3Zoom({ d3ZoomHandler, d3Zoom, d3Selection }) {
|
||||||
this.d3Zoom = d3Zoom
|
this.d3Zoom = d3Zoom
|
||||||
|
|||||||
+2
-1
@@ -25,10 +25,11 @@ export interface FlowEvents {
|
|||||||
connectStop: MouseEvent
|
connectStop: MouseEvent
|
||||||
connectEnd: MouseEvent
|
connectEnd: MouseEvent
|
||||||
load: FlowInstance
|
load: FlowInstance
|
||||||
|
elementsProcessed: FlowElements
|
||||||
move: FlowTransform | undefined
|
move: FlowTransform | undefined
|
||||||
moveStart: FlowTransform | undefined
|
moveStart: FlowTransform | undefined
|
||||||
moveEnd: FlowTransform | undefined
|
moveEnd: FlowTransform | undefined
|
||||||
selectionChange: FlowElements | null
|
selectionChange: FlowElements | undefined
|
||||||
selectionDragStart: { event: MouseEvent; nodes: GraphNode[] }
|
selectionDragStart: { event: MouseEvent; nodes: GraphNode[] }
|
||||||
selectionDrag: { event: MouseEvent; nodes: GraphNode[] }
|
selectionDrag: { event: MouseEvent; nodes: GraphNode[] }
|
||||||
selectionDragStop: { event: MouseEvent; nodes: GraphNode[] }
|
selectionDragStop: { event: MouseEvent; nodes: GraphNode[] }
|
||||||
|
|||||||
Reference in New Issue
Block a user