@@ -75,11 +75,13 @@ import {
75
75
IS_PASSIVE ,
76
76
} from 'legacy-events/EventSystemFlags' ;
77
77
import {
78
- attachElementListener ,
79
- detachElementListener ,
80
- isDOMDocument ,
81
- isDOMElement ,
78
+ isManagedDOMElement ,
79
+ isValidEventTarget ,
82
80
listenToTopLevelEvent ,
81
+ detachListenerFromManagedDOMElement ,
82
+ attachListenerFromManagedDOMElement ,
83
+ detachTargetEventListener ,
84
+ attachTargetEventListener ,
83
85
} from '../events/DOMModernPluginEventSystem' ;
84
86
import { getListenerMapForElement } from '../events/DOMEventListenerMap' ;
85
87
@@ -1122,25 +1124,21 @@ export function registerEvent(
1122
1124
export function mountEventListener ( listener : ReactDOMListener ) : void {
1123
1125
if ( enableUseEventAPI ) {
1124
1126
const { target} = listener ;
1125
- if ( target === window ) {
1126
- // TODO (useEvent)
1127
- } else if ( isDOMDocument ( target ) ) {
1128
- // TODO (useEvent)
1129
- } else if ( isDOMElement ( target ) ) {
1130
- attachElementListener ( listener ) ;
1127
+ if ( isManagedDOMElement ( target ) ) {
1128
+ attachListenerFromManagedDOMElement ( listener ) ;
1129
+ } else {
1130
+ attachTargetEventListener ( listener ) ;
1131
1131
}
1132
1132
}
1133
1133
}
1134
1134
1135
1135
export function unmountEventListener ( listener : ReactDOMListener ) : void {
1136
1136
if ( enableUseEventAPI ) {
1137
1137
const { target} = listener ;
1138
- if ( target === window ) {
1139
- // TODO (useEvent)
1140
- } else if ( isDOMDocument ( target ) ) {
1141
- // TODO (useEvent)
1142
- } else if ( isDOMElement ( target ) ) {
1143
- detachElementListener ( listener ) ;
1138
+ if ( isManagedDOMElement ( target ) ) {
1139
+ detachListenerFromManagedDOMElement ( listener ) ;
1140
+ } else {
1141
+ detachTargetEventListener ( listener ) ;
1144
1142
}
1145
1143
}
1146
1144
}
@@ -1152,10 +1150,7 @@ export function validateEventListenerTarget(
1152
1150
if ( enableUseEventAPI ) {
1153
1151
if (
1154
1152
target != null &&
1155
- ( target === window ||
1156
- isDOMDocument ( target ) ||
1157
- ( isDOMElement ( target ) &&
1158
- getClosestInstanceFromNode ( ( ( target : any ) : Element ) ) ) )
1153
+ ( isManagedDOMElement ( target ) || isValidEventTarget ( target ) )
1159
1154
) {
1160
1155
if ( listener == null || typeof listener === 'function' ) {
1161
1156
return true ;
@@ -1169,11 +1164,8 @@ export function validateEventListenerTarget(
1169
1164
}
1170
1165
if ( __DEV__ ) {
1171
1166
console . warn (
1172
- 'Event listener method setListener() from useEvent() hook requires the first argument to be either:' +
1173
- '\n\n' +
1174
- '1. A valid DOM node that was rendered and managed by React\n' +
1175
- '2. The "window" object\n' +
1176
- '3. The "document" object' ,
1167
+ 'Event listener method setListener() from useEvent() hook requires the first argument to be ' +
1168
+ 'a valid DOM EventTarget. If using a ref, ensure the current value is not null.' ,
1177
1169
) ;
1178
1170
}
1179
1171
}
0 commit comments