@@ -11,7 +11,7 @@ const GRID_EVENT_MOUSE_HOLD_DELAY = 750; // ms
1111const GRID_EVENT_MOUSE_HOLD_MOVE_THRESHOLD = 25 ; // pixels
1212
1313export const useGridEventMouseHold = (
14- cb : ( event : Schema_GridEvent ) => void ,
14+ cb : ( event : Schema_GridEvent , nextAction : "click" | "drag" ) => void ,
1515 eventType : Categories_Event . TIMED | Categories_Event . ALLDAY ,
1616 delay : number = GRID_EVENT_MOUSE_HOLD_DELAY ,
1717) => {
@@ -25,8 +25,11 @@ export const useGridEventMouseHold = (
2525 const timeoutId = useRef < NodeJS . Timeout | null > ( null ) ;
2626 const mouseMoved = useRef < boolean > ( false ) ;
2727
28- const handleCallback = ( event : Schema_GridEvent ) => {
29- cb ( event ) ;
28+ const handleCallback = (
29+ event : Schema_GridEvent ,
30+ nextAction : "click" | "drag" ,
31+ ) => {
32+ cb ( event , nextAction ) ;
3033 } ;
3134
3235 const onMouseDown = ( e : ReactMouseEvent , event : Schema_GridEvent ) => {
@@ -38,7 +41,8 @@ export const useGridEventMouseHold = (
3841
3942 timeoutId . current = setTimeout ( ( ) => {
4043 if ( ! mouseMoved . current ) {
41- handleCallback ( event ) ;
44+ console . log ( "dragging cuz timeout elapsed" ) ;
45+ handleCallback ( event , "drag" ) ;
4246 }
4347 } , delay ) ;
4448
@@ -55,36 +59,50 @@ export const useGridEventMouseHold = (
5559 if ( timeoutId . current ) {
5660 clearTimeout ( timeoutId . current ) ;
5761 }
58- handleCallback ( event ) ;
62+ console . log ( "dragging cuz mouse moved" ) ;
63+ handleCallback ( event , "drag" ) ;
5964 cleanup ( ) ;
6065 }
6166 } ;
6267
6368 const onMouseUp = ( ) => {
69+ if ( ! mouseMoved . current && timeoutId . current ) {
70+ clearTimeout ( timeoutId . current ) ;
71+ console . log ( "clicking cuz mouse up" ) ;
72+ handleCallback ( event , "click" ) ;
73+ }
6474 cleanup ( ) ;
65-
66- // Manually dispatch a new 'mouseup' event to ensure other listeners execute
67- const _event = new MouseEvent ( "mouseup" , {
68- bubbles : true ,
69- cancelable : true ,
70- button : 0 ,
71- clientX : e . clientX ,
72- clientY : e . clientY ,
73- } ) ;
74-
75- // Delay dispatching the new event to let React flush updates
76- setTimeout ( ( ) => {
77- getElemById ( elementId ) . dispatchEvent ( _event ) ;
78- } , 1 ) ;
7975 } ;
76+ // const onMouseUp = () => {
77+ // console.log("onMouseUp...");
78+ // cleanup();
79+
80+ // // Manually dispatch a new 'mouseup' event to ensure other listeners execute
81+ // const _event = new MouseEvent("mouseup", {
82+ // bubbles: true,
83+ // cancelable: true,
84+ // button: 0,
85+ // clientX: e.clientX,
86+ // clientY: e.clientY,
87+ // });
88+
89+ // // Delay dispatching the new event to let React flush updates
90+ // setTimeout(() => {
91+ // console.log("dispatching mouseup event...");
92+ // getElemById(elementId).dispatchEvent(_event);
93+ // }, 1);
94+ // };
8095
8196 const cleanup = ( ) => {
82- handleCallback ( event ) ;
97+ console . log ( "cleaning up..." ) ;
98+ handleCallback ( event , "drag" ) ;
8399
84100 if ( timeoutId . current ) {
101+ console . log ( "clearing timeout..." ) ;
85102 clearTimeout ( timeoutId . current ) ;
86103 }
87104
105+ console . log ( "removing event listeners..." ) ;
88106 getElemById ( elementId ) . removeEventListener ( "mousemove" , onMouseMove ) ;
89107 getElemById ( elementId ) . removeEventListener ( "mouseup" , onMouseUp ) ;
90108 } ;
0 commit comments