@@ -65,7 +65,7 @@ function start ({ rect, startOffset, state, interaction, pageCoords }: ModifierA
6565  state . offset  =  offset 
6666} 
6767
68- function  set  ( {  coords,  interaction,  state } : ModifierArg < RestrictState > )  { 
68+ function  set  ( {  coords,  interaction,  state,  edges  } : ModifierArg < RestrictState > )  { 
6969  const  {  options,  offset }  =  state 
7070
7171  const  restriction  =  getRestrictionRect ( options . restriction ,  interaction ,  coords ) 
@@ -74,8 +74,43 @@ function set ({ coords, interaction, state }: ModifierArg<RestrictState>) {
7474
7575  const  rect  =  rectUtils . xywhToTlbr ( restriction ) 
7676
77-   coords . x  =  Math . max ( Math . min ( rect . right  -  offset . right ,  coords . x ) ,  rect . left  +  offset . left ) 
78-   coords . y  =  Math . max ( Math . min ( rect . bottom  -  offset . bottom ,  coords . y ) ,  rect . top  +  offset . top ) 
77+   // Configure coords X 
78+   switch  ( true )  { 
79+     // Drag 
80+     case  edges . left  &&  edges . right :
81+       coords . x  =  Math . max ( Math . min ( rect . right  -  offset . right ,  coords . x ) ,  rect . left  +  offset . left ) 
82+       break 
83+     // Resize 
84+     case  edges . left :
85+       coords . x  =  Math . max ( rect . left  +  offset . left ,  coords . x ) 
86+       break 
87+     case  edges . right :
88+       coords . x  =  Math . min ( rect . right  -  offset . right ,  coords . x ) 
89+       break 
90+     // Other 
91+     default :
92+       coords . x  =  Math . max ( Math . min ( rect . right  -  offset . right ,  coords . x ) ,  rect . left  +  offset . left ) 
93+       break 
94+   } 
95+ 
96+   // Configure coords Y 
97+   switch  ( true )  { 
98+     // Drag 
99+     case  edges . top  &&  edges . bottom :
100+       coords . y  =  Math . max ( Math . min ( rect . bottom  -  offset . bottom ,  coords . y ) ,  rect . top  +  offset . top ) 
101+       break 
102+     // Resize 
103+     case  edges . top :
104+       coords . y  =  Math . max ( rect . top  +  offset . top ,  coords . y ) 
105+       break 
106+     case  edges . bottom :
107+       coords . y  =  Math . min ( rect . bottom  -  offset . bottom ,  coords . y ) 
108+       break 
109+     // Other 
110+     default :
111+       coords . y  =  Math . max ( Math . min ( rect . bottom  -  offset . bottom ,  coords . y ) ,  rect . top  +  offset . top ) 
112+       break 
113+   } 
79114} 
80115
81116export  function  getRestrictionRect  ( 
0 commit comments