@@ -8,42 +8,60 @@ import { Attributes } from "graphology-types";
88
99type EventType = keyof EventHandlers ;
1010
11- const sigmaEvents : Array < keyof SigmaEvents > = [
12- "clickNode" ,
13- "rightClickNode" ,
14- "downNode" ,
15- "enterNode" ,
16- "leaveNode" ,
17- "doubleClickNode" ,
18- "wheelNode" ,
19- "clickEdge" ,
20- "rightClickEdge" ,
21- "downEdge" ,
22- "enterEdge" ,
23- "leaveEdge" ,
24- "doubleClickEdge" ,
25- "wheelEdge" ,
26- "clickStage" ,
27- "rightClickStage" ,
28- "downStage" ,
29- "doubleClickStage" ,
30- "wheelStage" ,
31- "beforeRender" ,
32- "afterRender" ,
33- "kill" ,
34- ] ;
35- const mouseEvents : Array < keyof MouseCaptorEvents > = [
36- "click" ,
37- "rightClick" ,
38- "mouseup" ,
39- "mousedown" ,
40- "mousemove" ,
41- "mousemovebody" ,
42- "doubleClick" ,
43- "wheel" ,
44- ] ;
45- const touchEvents : Array < keyof TouchCaptorEvents > = [ "touchup" , "touchdown" , "touchmove" ] ;
46- const cameraEvents : Array < keyof CameraEvents > = [ "updated" ] ;
11+ function keySet < T > ( record : Record < keyof T , unknown > ) : Set < string > {
12+ return new Set < string > ( Object . keys ( record ) ) ;
13+ }
14+
15+ const sigmaEvents = keySet < SigmaEvents > ( {
16+ clickNode : true ,
17+ rightClickNode : true ,
18+ downNode : true ,
19+ enterNode : true ,
20+ leaveNode : true ,
21+ doubleClickNode : true ,
22+ wheelNode : true ,
23+ clickEdge : true ,
24+ rightClickEdge : true ,
25+ downEdge : true ,
26+ enterEdge : true ,
27+ leaveEdge : true ,
28+ doubleClickEdge : true ,
29+ wheelEdge : true ,
30+ clickStage : true ,
31+ rightClickStage : true ,
32+ downStage : true ,
33+ doubleClickStage : true ,
34+ wheelStage : true ,
35+ beforeRender : true ,
36+ afterRender : true ,
37+ kill : true ,
38+ upStage : true ,
39+ upEdge : true ,
40+ upNode : true ,
41+ enterStage : true ,
42+ leaveStage : true ,
43+ resize : true ,
44+ } ) ;
45+
46+ const mouseEvents = keySet < MouseCaptorEvents > ( {
47+ click : true ,
48+ rightClick : true ,
49+ doubleClick : true ,
50+ mouseup : true ,
51+ mousedown : true ,
52+ mousemove : true ,
53+ mousemovebody : true ,
54+ mouseleave : true ,
55+ mouseenter : true ,
56+ wheel : true ,
57+ } ) ;
58+
59+ const touchEvents = keySet < TouchCaptorEvents > ( {
60+ touchup : true ,
61+ touchdown : true ,
62+ touchmove : true ,
63+ } ) ;
64+ const cameraEvents = keySet < CameraEvents > ( { updated : true } ) ;
4765
4866/**
4967 * React hook that helps you to listen Sigma’s events.
@@ -84,16 +102,16 @@ export function useRegisterEvents<
84102 // register events
85103 eventTypes . forEach ( ( event : EventType ) => {
86104 const eventHandler = userEvents [ event ] as ( ...args : unknown [ ] ) => void ;
87- if ( sigmaEvents . find ( ( e ) => e === event ) ) {
105+ if ( sigmaEvents . has ( event ) ) {
88106 sigma . on ( event as keyof SigmaEvents , eventHandler ) ;
89107 }
90- if ( mouseEvents . find ( ( e ) => e === event ) ) {
108+ if ( mouseEvents . has ( event ) ) {
91109 sigma . getMouseCaptor ( ) . on ( event as keyof MouseCaptorEvents , eventHandler ) ;
92110 }
93- if ( touchEvents . find ( ( e ) => e === event ) ) {
111+ if ( touchEvents . has ( event ) ) {
94112 sigma . getTouchCaptor ( ) . on ( event as keyof TouchCaptorEvents , eventHandler ) ;
95113 }
96- if ( cameraEvents . find ( ( e ) => e === event ) ) {
114+ if ( cameraEvents . has ( event ) ) {
97115 sigma . getCamera ( ) . on ( event as keyof CameraEvents , eventHandler ) ;
98116 }
99117 } ) ;
@@ -104,16 +122,16 @@ export function useRegisterEvents<
104122 if ( sigma ) {
105123 eventTypes . forEach ( ( event : EventType ) => {
106124 const eventHandler = userEvents [ event ] as ( ...args : unknown [ ] ) => void ;
107- if ( sigmaEvents . find ( ( e ) => e === event ) ) {
125+ if ( sigmaEvents . has ( event ) ) {
108126 sigma . off ( event as keyof SigmaEvents , eventHandler ) ;
109127 }
110- if ( mouseEvents . find ( ( e ) => e === event ) ) {
128+ if ( mouseEvents . has ( event ) ) {
111129 sigma . getMouseCaptor ( ) . off ( event as keyof MouseCaptorEvents , eventHandler ) ;
112130 }
113- if ( touchEvents . find ( ( e ) => e === event ) ) {
131+ if ( touchEvents . has ( event ) ) {
114132 sigma . getTouchCaptor ( ) . off ( event as keyof TouchCaptorEvents , eventHandler ) ;
115133 }
116- if ( cameraEvents . find ( ( e ) => e === event ) ) {
134+ if ( cameraEvents . has ( event ) ) {
117135 sigma . getCamera ( ) . off ( event as keyof CameraEvents , eventHandler ) ;
118136 }
119137 } ) ;
0 commit comments