1- import { MutableRefObject , useEffect } from "react" ;
1+ import { MutableRefObject , useEffect , useRef } from "react" ;
22
33// reference: https://stackoverflow.com/questions/62436814/react-drag-corner-of-element-to-resize-contents
44
@@ -27,29 +27,22 @@ interface UseDragToResizeProps {
2727 elementRef : React . RefObject < HTMLElement > ;
2828 elementRect : MutableRefObject < Partial < Rect > > ;
2929 minDimensions : Dimensions ;
30- resizeNRef ?: React . RefObject < HTMLElement > | null ;
31- resizeNERef ?: React . RefObject < HTMLElement > | null ;
32- resizeERef ?: React . RefObject < HTMLElement > | null ;
33- resizeSERef ?: React . RefObject < HTMLElement > | null ;
34- resizeSRef ?: React . RefObject < HTMLElement > | null ;
35- resizeSWRef ?: React . RefObject < HTMLElement > | null ;
36- resizeWRef ?: React . RefObject < HTMLElement > | null ;
37- resizeNWRef ?: React . RefObject < HTMLElement > | null ;
3830}
3931
4032function useDragToResize ( {
4133 elementRef,
42- resizeERef,
43- resizeNRef,
44- resizeSRef,
45- resizeWRef,
46- resizeNERef,
47- resizeNWRef,
48- resizeSERef,
49- resizeSWRef,
5034 minDimensions,
5135 elementRect,
52- } : UseDragToResizeProps ) : void {
36+ } : UseDragToResizeProps ) {
37+ const resizeHandleN = useRef < HTMLDivElement > ( null ) ;
38+ const resizeHandleNE = useRef < HTMLDivElement > ( null ) ;
39+ const resizeHandleE = useRef < HTMLDivElement > ( null ) ;
40+ const resizeHandleSE = useRef < HTMLDivElement > ( null ) ;
41+ const resizeHandleS = useRef < HTMLDivElement > ( null ) ;
42+ const resizeHandleSW = useRef < HTMLDivElement > ( null ) ;
43+ const resizeHandleW = useRef < HTMLDivElement > ( null ) ;
44+ const resizeHandleNW = useRef < HTMLDivElement > ( null ) ;
45+
5346 useEffect ( ( ) => {
5447 /**
5548 * Whenever a mousedown event happens on any of the resize refs,
@@ -222,25 +215,25 @@ function useDragToResize({
222215 //#endregion
223216
224217 //#region add/remove handlers
225- resizeERef ?. current ?. addEventListener ( "mousedown" , handleMouseDownE ) ;
226- resizeNRef ?. current ?. addEventListener ( "mousedown" , handleMouseDownN ) ;
227- resizeSRef ?. current ?. addEventListener ( "mousedown" , handleMouseDownS ) ;
228- resizeWRef ?. current ?. addEventListener ( "mousedown" , handleMouseDownW ) ;
229-
230- resizeNERef ?. current ?. addEventListener ( "mousedown" , handleMouseDownNE ) ;
231- resizeSERef ?. current ?. addEventListener ( "mousedown" , handleMouseDownSE ) ;
232- resizeSWRef ?. current ?. addEventListener ( "mousedown" , handleMouseDownSW ) ;
233- resizeNWRef ?. current ?. addEventListener ( "mousedown" , handleMouseDownNW ) ;
234-
235- const _resizeERef = resizeERef ;
236- const _resizeNRef = resizeNRef ;
237- const _resizeSRef = resizeSRef ;
238- const _resizeWRef = resizeWRef ;
239-
240- const _resizeNERef = resizeNERef ;
241- const _resizeSERef = resizeSERef ;
242- const _resizeSWRef = resizeSWRef ;
243- const _resizeNWRef = resizeNWRef ;
218+ resizeHandleE ?. current ?. addEventListener ( "mousedown" , handleMouseDownE ) ;
219+ resizeHandleN ?. current ?. addEventListener ( "mousedown" , handleMouseDownN ) ;
220+ resizeHandleS ?. current ?. addEventListener ( "mousedown" , handleMouseDownS ) ;
221+ resizeHandleW ?. current ?. addEventListener ( "mousedown" , handleMouseDownW ) ;
222+
223+ resizeHandleNE ?. current ?. addEventListener ( "mousedown" , handleMouseDownNE ) ;
224+ resizeHandleSE ?. current ?. addEventListener ( "mousedown" , handleMouseDownSE ) ;
225+ resizeHandleSW ?. current ?. addEventListener ( "mousedown" , handleMouseDownSW ) ;
226+ resizeHandleNW ?. current ?. addEventListener ( "mousedown" , handleMouseDownNW ) ;
227+
228+ const _resizeERef = resizeHandleE ;
229+ const _resizeNRef = resizeHandleN ;
230+ const _resizeSRef = resizeHandleS ;
231+ const _resizeWRef = resizeHandleW ;
232+
233+ const _resizeNERef = resizeHandleNE ;
234+ const _resizeSERef = resizeHandleSE ;
235+ const _resizeSWRef = resizeHandleSW ;
236+ const _resizeNWRef = resizeHandleNW ;
244237
245238 return ( ) => {
246239 _resizeERef ?. current ?. removeEventListener ( "mousedown" , handleMouseDownE ) ;
@@ -266,6 +259,17 @@ function useDragToResize({
266259 } ;
267260 //#endregion
268261 } ) ;
262+
263+ return {
264+ resizeHandleN : resizeHandleN ,
265+ resizeHandleNE : resizeHandleNE ,
266+ resizeHandleE : resizeHandleE ,
267+ resizeHandleSE : resizeHandleSE ,
268+ resizeHandleS : resizeHandleS ,
269+ resizeHandleSW : resizeHandleSW ,
270+ resizeHandleW : resizeHandleW ,
271+ resizeHandleNW : resizeHandleNW ,
272+ } ;
269273}
270274
271275export default useDragToResize ;
0 commit comments