mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Drop some top-level events from the list (#11912)
* Drop some top-level events from the list * Put both whitelists in one file
This commit is contained in:
committed by
Nathan Hunzaker
parent
bb0bcc0541
commit
73fa26a88b
+7
-34
@@ -22,6 +22,7 @@ import * as inputValueTracking from './inputValueTracking';
|
||||
import setInnerHTML from './setInnerHTML';
|
||||
import setTextContent from './setTextContent';
|
||||
import {listenTo, trapBubbledEvent} from '../events/ReactBrowserEventEmitter';
|
||||
import {mediaEventTypes} from '../events/BrowserEventConstants';
|
||||
import * as CSSPropertyOperations from '../shared/CSSPropertyOperations';
|
||||
import {Namespaces, getIntrinsicNamespace} from '../shared/DOMNamespaces';
|
||||
import {
|
||||
@@ -223,34 +224,6 @@ function getOwnerDocumentFromRootContainer(
|
||||
: rootContainerElement.ownerDocument;
|
||||
}
|
||||
|
||||
// There are so many media events, it makes sense to just
|
||||
// maintain a list rather than create a `trapBubbledEvent` for each
|
||||
const mediaEvents = {
|
||||
topAbort: 'abort',
|
||||
topCanPlay: 'canplay',
|
||||
topCanPlayThrough: 'canplaythrough',
|
||||
topDurationChange: 'durationchange',
|
||||
topEmptied: 'emptied',
|
||||
topEncrypted: 'encrypted',
|
||||
topEnded: 'ended',
|
||||
topError: 'error',
|
||||
topLoadedData: 'loadeddata',
|
||||
topLoadedMetadata: 'loadedmetadata',
|
||||
topLoadStart: 'loadstart',
|
||||
topPause: 'pause',
|
||||
topPlay: 'play',
|
||||
topPlaying: 'playing',
|
||||
topProgress: 'progress',
|
||||
topRateChange: 'ratechange',
|
||||
topSeeked: 'seeked',
|
||||
topSeeking: 'seeking',
|
||||
topStalled: 'stalled',
|
||||
topSuspend: 'suspend',
|
||||
topTimeUpdate: 'timeupdate',
|
||||
topVolumeChange: 'volumechange',
|
||||
topWaiting: 'waiting',
|
||||
};
|
||||
|
||||
function trapClickOnNonInteractiveElement(node: HTMLElement) {
|
||||
// Mobile Safari does not fire properly bubble click events on
|
||||
// non-interactive elements, which means delegated click listeners do not
|
||||
@@ -472,9 +445,9 @@ export function setInitialProperties(
|
||||
case 'video':
|
||||
case 'audio':
|
||||
// Create listener for each media event
|
||||
for (const event in mediaEvents) {
|
||||
if (mediaEvents.hasOwnProperty(event)) {
|
||||
trapBubbledEvent(event, mediaEvents[event], domElement);
|
||||
for (const event in mediaEventTypes) {
|
||||
if (mediaEventTypes.hasOwnProperty(event)) {
|
||||
trapBubbledEvent(event, mediaEventTypes[event], domElement);
|
||||
}
|
||||
}
|
||||
props = rawProps;
|
||||
@@ -860,9 +833,9 @@ export function diffHydratedProperties(
|
||||
case 'video':
|
||||
case 'audio':
|
||||
// Create listener for each media event
|
||||
for (const event in mediaEvents) {
|
||||
if (mediaEvents.hasOwnProperty(event)) {
|
||||
trapBubbledEvent(event, mediaEvents[event], domElement);
|
||||
for (const event in mediaEventTypes) {
|
||||
if (mediaEventTypes.hasOwnProperty(event)) {
|
||||
trapBubbledEvent(event, mediaEventTypes[event], domElement);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
+34
-31
@@ -10,19 +10,16 @@ import getVendorPrefixedEventName from './getVendorPrefixedEventName';
|
||||
/**
|
||||
* Types of raw signals from the browser caught at the top level.
|
||||
*
|
||||
* For events like 'submit' which don't consistently bubble (which we
|
||||
* trap at a lower node than `document`), binding at `document` would
|
||||
* cause duplicate events so we don't include them here.
|
||||
* For events like 'submit' or audio/video events which don't consistently
|
||||
* bubble (which we trap at a lower node than `document`), binding
|
||||
* at `document` would cause duplicate events so we don't include them here.
|
||||
*/
|
||||
const topLevelTypes = {
|
||||
topAbort: 'abort',
|
||||
export const topLevelTypes = {
|
||||
topAnimationEnd: getVendorPrefixedEventName('animationend'),
|
||||
topAnimationIteration: getVendorPrefixedEventName('animationiteration'),
|
||||
topAnimationStart: getVendorPrefixedEventName('animationstart'),
|
||||
topBlur: 'blur',
|
||||
topCancel: 'cancel',
|
||||
topCanPlay: 'canplay',
|
||||
topCanPlayThrough: 'canplaythrough',
|
||||
topChange: 'change',
|
||||
topClick: 'click',
|
||||
topClose: 'close',
|
||||
@@ -41,19 +38,12 @@ const topLevelTypes = {
|
||||
topDragOver: 'dragover',
|
||||
topDragStart: 'dragstart',
|
||||
topDrop: 'drop',
|
||||
topDurationChange: 'durationchange',
|
||||
topEmptied: 'emptied',
|
||||
topEncrypted: 'encrypted',
|
||||
topEnded: 'ended',
|
||||
topError: 'error',
|
||||
topFocus: 'focus',
|
||||
topInput: 'input',
|
||||
topKeyDown: 'keydown',
|
||||
topKeyPress: 'keypress',
|
||||
topKeyUp: 'keyup',
|
||||
topLoadedData: 'loadeddata',
|
||||
topLoad: 'load',
|
||||
topLoadedMetadata: 'loadedmetadata',
|
||||
topLoadStart: 'loadstart',
|
||||
topMouseDown: 'mousedown',
|
||||
topMouseMove: 'mousemove',
|
||||
@@ -61,34 +51,47 @@ const topLevelTypes = {
|
||||
topMouseOver: 'mouseover',
|
||||
topMouseUp: 'mouseup',
|
||||
topPaste: 'paste',
|
||||
topPause: 'pause',
|
||||
topPlay: 'play',
|
||||
topPlaying: 'playing',
|
||||
topProgress: 'progress',
|
||||
topRateChange: 'ratechange',
|
||||
topScroll: 'scroll',
|
||||
topSeeked: 'seeked',
|
||||
topSeeking: 'seeking',
|
||||
topSelectionChange: 'selectionchange',
|
||||
topStalled: 'stalled',
|
||||
topSuspend: 'suspend',
|
||||
topTextInput: 'textInput',
|
||||
topTimeUpdate: 'timeupdate',
|
||||
topToggle: 'toggle',
|
||||
topTouchCancel: 'touchcancel',
|
||||
topTouchEnd: 'touchend',
|
||||
topTouchMove: 'touchmove',
|
||||
topTouchStart: 'touchstart',
|
||||
topTransitionEnd: getVendorPrefixedEventName('transitionend'),
|
||||
topVolumeChange: 'volumechange',
|
||||
topWaiting: 'waiting',
|
||||
topWheel: 'wheel',
|
||||
};
|
||||
|
||||
export type TopLevelTypes = $Enum<typeof topLevelTypes>;
|
||||
|
||||
const BrowserEventConstants = {
|
||||
topLevelTypes,
|
||||
// There are so many media events, it makes sense to just
|
||||
// maintain a list of them. Note these aren't technically
|
||||
// "top-level" since they don't bubble. We should come up
|
||||
// with a better naming convention if we come to refactoring
|
||||
// the event system.
|
||||
export const mediaEventTypes = {
|
||||
topAbort: 'abort',
|
||||
topCanPlay: 'canplay',
|
||||
topCanPlayThrough: 'canplaythrough',
|
||||
topDurationChange: 'durationchange',
|
||||
topEmptied: 'emptied',
|
||||
topEncrypted: 'encrypted',
|
||||
topEnded: 'ended',
|
||||
topError: 'error',
|
||||
topLoadedData: 'loadeddata',
|
||||
topLoadedMetadata: 'loadedmetadata',
|
||||
topLoadStart: 'loadstart',
|
||||
topPause: 'pause',
|
||||
topPlay: 'play',
|
||||
topPlaying: 'playing',
|
||||
topProgress: 'progress',
|
||||
topRateChange: 'ratechange',
|
||||
topSeeked: 'seeked',
|
||||
topSeeking: 'seeking',
|
||||
topStalled: 'stalled',
|
||||
topSuspend: 'suspend',
|
||||
topTimeUpdate: 'timeupdate',
|
||||
topVolumeChange: 'volumechange',
|
||||
topWaiting: 'waiting',
|
||||
};
|
||||
|
||||
export default BrowserEventConstants;
|
||||
export type TopLevelTypes = $Enum<typeof topLevelTypes>;
|
||||
|
||||
@@ -13,9 +13,7 @@ import {
|
||||
trapCapturedEvent,
|
||||
} from './ReactDOMEventListener';
|
||||
import isEventSupported from './isEventSupported';
|
||||
import BrowserEventConstants from './BrowserEventConstants';
|
||||
|
||||
const {topLevelTypes} = BrowserEventConstants;
|
||||
import {topLevelTypes} from './BrowserEventConstants';
|
||||
|
||||
/**
|
||||
* Summary of `ReactBrowserEventEmitter` event handling:
|
||||
|
||||
+1
-3
@@ -18,7 +18,7 @@ import {
|
||||
import SyntheticEvent from 'events/SyntheticEvent';
|
||||
import invariant from 'fbjs/lib/invariant';
|
||||
|
||||
import BrowserEventConstants from '../events/BrowserEventConstants';
|
||||
import {topLevelTypes} from '../events/BrowserEventConstants';
|
||||
|
||||
const {findDOMNode} = ReactDOM;
|
||||
const {
|
||||
@@ -30,8 +30,6 @@ const {
|
||||
ReactDOMEventListener,
|
||||
} = ReactDOM.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
||||
|
||||
const topLevelTypes = BrowserEventConstants.topLevelTypes;
|
||||
|
||||
function Event(suffix) {}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user