@@ -56,7 +56,7 @@ export const createResizableFileBlockWrapper = (
5656
5757 // Updates the element width with an updated width depending on the cursor X
5858 // offset from when the resize began, and which resize handle is being used.
59- const windowMouseMoveHandler = ( event : MouseEvent ) => {
59+ const windowMouseMoveHandler = ( event : MouseEvent | TouchEvent ) => {
6060 if ( ! resizeParams ) {
6161 if (
6262 ! editor . isEditable &&
@@ -72,27 +72,26 @@ export const createResizableFileBlockWrapper = (
7272
7373 let newWidth : number ;
7474
75+ const clientX =
76+ "touches" in event ? event . touches [ 0 ] . clientX : event . clientX ;
77+
7578 if ( block . props . textAlignment === "center" ) {
7679 if ( resizeParams . handleUsed === "left" ) {
7780 newWidth =
7881 resizeParams . initialWidth +
79- ( resizeParams . initialClientX - event . clientX ) * 2 ;
82+ ( resizeParams . initialClientX - clientX ) * 2 ;
8083 } else {
8184 newWidth =
8285 resizeParams . initialWidth +
83- ( event . clientX - resizeParams . initialClientX ) * 2 ;
86+ ( clientX - resizeParams . initialClientX ) * 2 ;
8487 }
8588 } else {
8689 if ( resizeParams . handleUsed === "left" ) {
8790 newWidth =
88- resizeParams . initialWidth +
89- resizeParams . initialClientX -
90- event . clientX ;
91+ resizeParams . initialWidth + resizeParams . initialClientX - clientX ;
9192 } else {
9293 newWidth =
93- resizeParams . initialWidth +
94- event . clientX -
95- resizeParams . initialClientX ;
94+ resizeParams . initialWidth + clientX - resizeParams . initialClientX ;
9695 }
9796 }
9897
@@ -109,7 +108,7 @@ export const createResizableFileBlockWrapper = (
109108 } ;
110109 // Stops mouse movements from resizing the element and updates the block's
111110 // `width` prop to the new value.
112- const windowMouseUpHandler = ( event : MouseEvent ) => {
111+ const windowMouseUpHandler = ( event : MouseEvent | TouchEvent ) => {
113112 // Hides the drag handles if the cursor is no longer over the element.
114113 if (
115114 ( ! event . target ||
@@ -172,62 +171,90 @@ export const createResizableFileBlockWrapper = (
172171
173172 // Sets the resize params, allowing the user to begin resizing the element by
174173 // moving the cursor left or right.
175- const leftResizeHandleMouseDownHandler = ( event : MouseEvent ) => {
174+ const leftResizeHandleMouseDownHandler = ( event : MouseEvent | TouchEvent ) => {
176175 event . preventDefault ( ) ;
177176
178177 if ( ! wrapper . contains ( eventCaptureElement ) ) {
179178 wrapper . appendChild ( eventCaptureElement ) ;
180179 }
181180
181+ const clientX =
182+ "touches" in event ? event . touches [ 0 ] . clientX : event . clientX ;
183+
182184 resizeParams = {
183185 handleUsed : "left" ,
184186 initialWidth : wrapper . clientWidth ,
185- initialClientX : event . clientX ,
187+ initialClientX : clientX ,
186188 } ;
187189 } ;
188- const rightResizeHandleMouseDownHandler = ( event : MouseEvent ) => {
190+ const rightResizeHandleMouseDownHandler = (
191+ event : MouseEvent | TouchEvent ,
192+ ) => {
189193 event . preventDefault ( ) ;
190194
191195 if ( ! wrapper . contains ( eventCaptureElement ) ) {
192196 wrapper . appendChild ( eventCaptureElement ) ;
193197 }
194198
199+ const clientX =
200+ "touches" in event ? event . touches [ 0 ] . clientX : event . clientX ;
201+
195202 resizeParams = {
196203 handleUsed : "right" ,
197204 initialWidth : wrapper . clientWidth ,
198- initialClientX : event . clientX ,
205+ initialClientX : clientX ,
199206 } ;
200207 } ;
201208
202209 window . addEventListener ( "mousemove" , windowMouseMoveHandler ) ;
210+ window . addEventListener ( "touchmove" , windowMouseMoveHandler ) ;
203211 window . addEventListener ( "mouseup" , windowMouseUpHandler ) ;
212+ window . addEventListener ( "touchend" , windowMouseUpHandler ) ;
204213 wrapper . addEventListener ( "mouseenter" , wrapperMouseEnterHandler ) ;
205214 wrapper . addEventListener ( "mouseleave" , wrapperMouseLeaveHandler ) ;
206215 leftResizeHandle . addEventListener (
207216 "mousedown" ,
208217 leftResizeHandleMouseDownHandler ,
209218 ) ;
219+ leftResizeHandle . addEventListener (
220+ "touchstart" ,
221+ leftResizeHandleMouseDownHandler ,
222+ ) ;
210223 rightResizeHandle . addEventListener (
211224 "mousedown" ,
212225 rightResizeHandleMouseDownHandler ,
213226 ) ;
227+ rightResizeHandle . addEventListener (
228+ "touchstart" ,
229+ rightResizeHandleMouseDownHandler ,
230+ ) ;
214231
215232 return {
216233 dom : wrapper ,
217234 destroy : ( ) => {
218235 destroy ?.( ) ;
219236 window . removeEventListener ( "mousemove" , windowMouseMoveHandler ) ;
237+ window . removeEventListener ( "touchmove" , windowMouseMoveHandler ) ;
220238 window . removeEventListener ( "mouseup" , windowMouseUpHandler ) ;
239+ window . removeEventListener ( "touchend" , windowMouseUpHandler ) ;
221240 wrapper . removeEventListener ( "mouseenter" , wrapperMouseEnterHandler ) ;
222241 wrapper . removeEventListener ( "mouseleave" , wrapperMouseLeaveHandler ) ;
223242 leftResizeHandle . removeEventListener (
224243 "mousedown" ,
225244 leftResizeHandleMouseDownHandler ,
226245 ) ;
246+ leftResizeHandle . removeEventListener (
247+ "touchstart" ,
248+ leftResizeHandleMouseDownHandler ,
249+ ) ;
227250 rightResizeHandle . removeEventListener (
228251 "mousedown" ,
229252 rightResizeHandleMouseDownHandler ,
230253 ) ;
254+ rightResizeHandle . removeEventListener (
255+ "touchstart" ,
256+ rightResizeHandleMouseDownHandler ,
257+ ) ;
231258 } ,
232259 } ;
233260} ;
0 commit comments