1- import * as React from 'react' ;
1+ import React , { useCallback } from 'react' ;
22import { setMulti } from '../gameSlice' ;
33import { useAppDispatch , useAppSelector } from '../store' ;
44
@@ -7,28 +7,26 @@ const COORDS_RE = /[+-]?[0-9]+(?:\.?[0-9]+)?[,\s]+[+-]?[0-9]+(?:\.?[0-9]+)?/g;
77const MultiInput = ( ) => {
88 const dispatch = useAppDispatch ( ) ;
99 const text = useAppSelector ( ( state ) => state . game . multiText ) ;
10- const onChange : React . ChangeEventHandler < HTMLTextAreaElement > =
11- React . useCallback (
12- ( evt ) => {
13- dispatch ( setMulti ( evt . target . value ) ) ;
14- } ,
15- [ dispatch ]
16- ) ;
17- const onPaste : React . ClipboardEventHandler < HTMLTextAreaElement > =
18- React . useCallback (
19- ( evt ) => {
20- const data = evt . clipboardData . getData ( 'text/plain' ) ;
21- let results : string [ ] = [ ] ;
22- for ( const result of data . matchAll ( COORDS_RE ) ) {
23- results . push ( result [ 0 ] ) ;
24- }
25- if ( results . length > 0 ) {
26- evt . preventDefault ( ) ;
27- dispatch ( setMulti ( results . join ( '\n' ) ) ) ;
28- }
29- } ,
30- [ dispatch ]
31- ) ;
10+ const onChange : React . ChangeEventHandler < HTMLTextAreaElement > = useCallback (
11+ ( evt ) => {
12+ dispatch ( setMulti ( evt . target . value ) ) ;
13+ } ,
14+ [ dispatch ]
15+ ) ;
16+ const onPaste : React . ClipboardEventHandler < HTMLTextAreaElement > = useCallback (
17+ ( evt ) => {
18+ const data = evt . clipboardData . getData ( 'text/plain' ) ;
19+ let results : string [ ] = [ ] ;
20+ for ( const result of data . matchAll ( COORDS_RE ) ) {
21+ results . push ( result [ 0 ] ) ;
22+ }
23+ if ( results . length > 0 ) {
24+ evt . preventDefault ( ) ;
25+ dispatch ( setMulti ( results . join ( '\n' ) ) ) ;
26+ }
27+ } ,
28+ [ dispatch ]
29+ ) ;
3230 return (
3331 < label >
3432 Target coordinates (one per line):
0 commit comments