@@ -25,32 +25,34 @@ type InferEvent<
2525 : Event ;
2626
2727function useListener <
28- TTarget extends EventTarget | null | undefined ,
29- TType extends InferEventType < NonNullable < TTarget > > ,
28+ TTarget extends EventTarget ,
29+ TType extends InferEventType < TTarget > ,
3030> (
31- target : ( ( ) => TTarget ) | TTarget ,
31+ target : TTarget ,
3232 type : TType ,
33- listener : ( event : InferEvent < NonNullable < TTarget > , TType > ) => void ,
33+ listener : ( event : InferEvent < TTarget , TType > ) => void ,
3434) {
3535 const latestListener = useLatest ( listener ) ;
3636 React . useLayoutEffect ( ( ) => {
3737 const handler : typeof listener = ( ev ) => latestListener . current ( ev ) ;
38- const resolvedTarget = typeof target === 'function' ? target ( ) : target ;
39-
4038 // might happen if document.fonts is not defined, for instance
41- if ( ! resolvedTarget ) {
39+ if ( ! target ) {
4240 return ;
4341 }
44- resolvedTarget . addEventListener ( type , handler ) ;
45- return ( ) => resolvedTarget . removeEventListener ( type , handler ) ;
42+ target . addEventListener ( type , handler ) ;
43+ return ( ) => target . removeEventListener ( type , handler ) ;
4644 } , [ ] ) ;
4745}
4846
4947export const useFormResetListener = (
5048 libRef : React . MutableRefObject < HTMLTextAreaElement | null > ,
5149 listener : ( event : Event ) => any ,
5250) => {
53- useListener ( ( ) => libRef . current ?. form , 'reset' , listener ) ;
51+ useListener ( document . body , 'reset' , ( ev ) => {
52+ if ( libRef . current ?. form === ev . target ) {
53+ listener ( ev ) ;
54+ }
55+ } ) ;
5456} ;
5557
5658export const useWindowResizeListener = ( listener : ( event : UIEvent ) => any ) => {
@@ -60,8 +62,3 @@ export const useWindowResizeListener = (listener: (event: UIEvent) => any) => {
6062export const useFontsLoadedListener = ( listener : ( event : Event ) => any ) => {
6163 useListener ( document . fonts , 'loadingdone' , listener ) ;
6264} ;
63-
64- export const useForceRerender = ( ) => {
65- const [ , setState ] = React . useState ( { } ) ;
66- return React . useCallback ( ( ) => setState ( { } ) , [ ] ) ;
67- } ;
0 commit comments