@@ -20,18 +20,20 @@ export interface Position {
2020type MouseMovementHandler = (
2121 initialRect : Partial < Rect > ,
2222 mouseDownPosition : Position ,
23- mouseMoveEvent : MouseEvent
23+ mouseMoveEvent : MouseEvent ,
2424) => number ;
2525
2626interface UseDragToResizeProps {
2727 elementRef : React . RefObject < HTMLElement > ;
2828 elementRect : MutableRefObject < Partial < Rect > > ;
2929 minDimensions : Dimensions ;
30+ maxDimensions ?: Dimensions ;
3031}
3132
3233function useDragToResize ( {
3334 elementRef,
3435 minDimensions,
36+ maxDimensions,
3537 elementRect,
3638} : UseDragToResizeProps ) {
3739 const resizeHandleN = useRef < HTMLDivElement > ( null ) ;
@@ -86,7 +88,11 @@ function useDragToResize({
8688 const newLeft =
8789 leftFn ?.( initialRect , startPos , mouseMoveEvent ) ?? initialRect . left ;
8890
89- if ( newWidth >= minDimensions . width ) {
91+ if (
92+ newWidth >= minDimensions . width &&
93+ ( ! maxDimensions || newWidth <= maxDimensions . width )
94+ ) {
95+ console . log ( "maxwidth" , maxDimensions ?. width , "new width" , newWidth ) ;
9096 elementRect . current . width = newWidth ;
9197 elementRef . current . style . width = `${ elementRect . current . width } px` ;
9298 elementRect . current . left = newLeft ;
@@ -101,7 +107,10 @@ function useDragToResize({
101107 const newTop =
102108 topFn ?.( initialRect , startPos , mouseMoveEvent ) ?? initialRect . top ;
103109
104- if ( newHeight >= minDimensions . height ) {
110+ if (
111+ newHeight >= minDimensions . height &&
112+ ( ! maxDimensions || newHeight <= maxDimensions . height )
113+ ) {
105114 elementRect . current . height = newHeight ;
106115 elementRef . current . style . height = `${ elementRect . current . height } px` ;
107116 elementRect . current . top = newTop ;
@@ -122,37 +131,37 @@ function useDragToResize({
122131 const nHeightFn : MouseMovementHandler = (
123132 initialRect ,
124133 mouseDownPosition ,
125- mouseMoveEvent
134+ mouseMoveEvent ,
126135 ) => ( initialRect . height ?? 0 ) + mouseDownPosition . y - mouseMoveEvent . pageY ;
127136
128137 const nTopFn : MouseMovementHandler = (
129138 initialRect ,
130139 mouseDownPosition ,
131- mouseMoveEvent
140+ mouseMoveEvent ,
132141 ) => ( initialRect . top ?? 0 ) - mouseDownPosition . y + mouseMoveEvent . pageY ;
133142
134143 const eWidthFn : MouseMovementHandler = (
135144 initialRect ,
136145 mouseDownPosition ,
137- mouseMoveEvent
146+ mouseMoveEvent ,
138147 ) => ( initialRect . width ?? 0 ) - mouseDownPosition . x + mouseMoveEvent . pageX ;
139148
140149 const sHeightFn : MouseMovementHandler = (
141150 initialRect ,
142151 mouseDownPosition ,
143- mouseMoveEvent
152+ mouseMoveEvent ,
144153 ) => ( initialRect . height ?? 0 ) - mouseDownPosition . y + mouseMoveEvent . pageY ;
145154
146155 const wWidthFn : MouseMovementHandler = (
147156 initialRect ,
148157 mouseDownPosition ,
149- mouseMoveEvent
158+ mouseMoveEvent ,
150159 ) => ( initialRect . width ?? 0 ) + mouseDownPosition . x - mouseMoveEvent . pageX ;
151160
152161 const wLeftFn : MouseMovementHandler = (
153162 initialRect ,
154163 mouseDownPosition ,
155- mouseMoveEvent
164+ mouseMoveEvent ,
156165 ) => ( initialRect . left ?? 0 ) - mouseDownPosition . x + mouseMoveEvent . pageX ;
157166 //#endregion
158167
@@ -242,19 +251,19 @@ function useDragToResize({
242251 _resizeWRef ?. current ?. removeEventListener ( "mousedown" , handleMouseDownW ) ;
243252 _resizeNERef ?. current ?. removeEventListener (
244253 "mousedown" ,
245- handleMouseDownNE
254+ handleMouseDownNE ,
246255 ) ;
247256 _resizeSERef ?. current ?. removeEventListener (
248257 "mousedown" ,
249- handleMouseDownSE
258+ handleMouseDownSE ,
250259 ) ;
251260 _resizeSWRef ?. current ?. removeEventListener (
252261 "mousedown" ,
253- handleMouseDownSW
262+ handleMouseDownSW ,
254263 ) ;
255264 _resizeNWRef ?. current ?. removeEventListener (
256265 "mousedown" ,
257- handleMouseDownNW
266+ handleMouseDownNW ,
258267 ) ;
259268 } ;
260269 //#endregion
0 commit comments