@@ -16,17 +16,33 @@ enum EndEvent {
1616 Touch = "touchend" ,
1717}
1818
19+ interface IResizeChange {
20+ x : number ;
21+ y : number ;
22+ }
23+
1924export function startTouchResize (
2025 e : React . TouchEvent < HTMLElement > ,
2126 parentContext : ISpaceContext | undefined ,
2227 space : ISpace ,
2328 props : AllProps ,
2429 element : HTMLElement | undefined ,
30+ customResizeHandler ?: ( resizeDelta : IResizeChange ) => void ,
2531) {
26- return startResize ( e , parentContext , space , props , element , EndEvent . Touch , MoveEvent . Touch , ( e ) => ( {
27- x : e . touches [ 0 ] . pageX ,
28- y : e . touches [ 0 ] . pageY ,
29- } ) ) ;
32+ return startResize (
33+ e ,
34+ parentContext ,
35+ space ,
36+ props ,
37+ element ,
38+ EndEvent . Touch ,
39+ MoveEvent . Touch ,
40+ ( e ) => ( {
41+ x : e . touches [ 0 ] . pageX ,
42+ y : e . touches [ 0 ] . pageY ,
43+ } ) ,
44+ customResizeHandler ,
45+ ) ;
3046}
3147
3248export function startMouseResize (
@@ -35,11 +51,22 @@ export function startMouseResize(
3551 space : ISpace ,
3652 props : AllProps ,
3753 element : HTMLElement | undefined ,
54+ customResizeHandler ?: ( resizeDelta : IResizeChange ) => void ,
3855) {
39- return startResize ( e , parentContext , space , props , element , EndEvent . Mouse , MoveEvent . Mouse , ( e ) => ( {
40- x : e . pageX ,
41- y : e . pageY ,
42- } ) ) ;
56+ return startResize (
57+ e ,
58+ parentContext ,
59+ space ,
60+ props ,
61+ element ,
62+ EndEvent . Mouse ,
63+ MoveEvent . Mouse ,
64+ ( e ) => ( {
65+ x : e . pageX ,
66+ y : e . pageY ,
67+ } ) ,
68+ customResizeHandler ,
69+ ) ;
4370}
4471
4572function onResizeEnd ( props : AllProps , resizeType : ResizeType , element : HTMLElement ) {
@@ -59,6 +86,7 @@ function onResize(
5986 y : number ,
6087 minimumAdjust : number ,
6188 maximumAdjust : number | undefined ,
89+ customResizeHandler ?: ( resizeDelta : IResizeChange ) => void ,
6290) {
6391 const adjustmentX = Math . min (
6492 Math . max ( resizeType === ResizeType . Left ? originalX - x : x - originalX , minimumAdjust ) ,
@@ -69,10 +97,14 @@ function onResize(
6997 maximumAdjust === undefined ? 999999 : maximumAdjust ,
7098 ) ;
7199
72- const adjustment = isHorizontalSpace ( props . anchor ) ? adjustmentX : adjustmentY ;
100+ if ( customResizeHandler ) {
101+ customResizeHandler ( { x : adjustmentX , y : adjustmentY } ) ;
102+ } else {
103+ const adjustment = isHorizontalSpace ( props . anchor ) ? adjustmentX : adjustmentY ;
73104
74- if ( adjustment !== space . adjustedSize ) {
75- updateSpace ( parentContext , space . id , { adjustedSize : adjustment } ) ;
105+ if ( adjustment !== space . adjustedSize ) {
106+ updateSpace ( parentContext , space . id , { adjustedSize : adjustment } ) ;
107+ }
76108 }
77109}
78110
@@ -85,6 +117,7 @@ function startResize<T extends SyntheticEvent<HTMLElement> | MouseEvent | TouchE
85117 endEvent : EndEvent ,
86118 moveEvent : MoveEvent ,
87119 getCoords : ( event : T ) => { x : number ; y : number } ,
120+ customResizeHandler ?: ( resizeDelta : IResizeChange ) => void ,
88121) {
89122 if ( element && props . resizable && props . anchor && parentContext ) {
90123 const resizeType : ResizeType | undefined = AnchorToResizeTypeMap [ props . anchor ] ;
@@ -112,7 +145,19 @@ function startResize<T extends SyntheticEvent<HTMLElement> | MouseEvent | TouchE
112145 let moved = false ;
113146
114147 const resize = ( x : number , y : number ) =>
115- onResize ( props , parentContext , space , resizeType , originalMouseX , originalMouseY , x , y , minimumAdjust , maximumAdjust ) ;
148+ onResize (
149+ props ,
150+ parentContext ,
151+ space ,
152+ resizeType ,
153+ originalMouseX ,
154+ originalMouseY ,
155+ x ,
156+ y ,
157+ minimumAdjust ,
158+ maximumAdjust ,
159+ customResizeHandler ,
160+ ) ;
116161
117162 const withPreventDefault = ( e : T ) => {
118163 moved = true ;
0 commit comments