/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
status
packages/react-native-renderer/src/ReactNativeBridgeEventPlugin.js
69 строк
2 KB
Nicolas Gallagher
Move eventSystemFlags to last argument in event plugin extractors (#16978)
02 окт 2019, 20:31
Не верифицирован
02 окт 2019, 20:31
ab1a4f2
Код
Авторство
О чём код?
/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow */ import type {AnyNativeEvent} from 'legacy-events/PluginModuleType'; import type {EventSystemFlags} from 'legacy-events/EventSystemFlags'; import { accumulateTwoPhaseDispatches, accumulateDirectDispatches, } from 'legacy-events/EventPropagators'; import type {TopLevelType} from 'legacy-events/TopLevelEventTypes'; import SyntheticEvent from 'legacy-events/SyntheticEvent'; import invariant from 'shared/invariant'; // Module provided by RN: import {ReactNativeViewConfigRegistry} from 'react-native/Libraries/ReactPrivate/ReactNativePrivateInterface'; const { customBubblingEventTypes, customDirectEventTypes, } = ReactNativeViewConfigRegistry; const ReactNativeBridgeEventPlugin = { eventTypes: {}, /** * @see {EventPluginHub.extractEvents} */ extractEvents: function( topLevelType: TopLevelType, targetInst: null | Object, nativeEvent: AnyNativeEvent, nativeEventTarget: Object, eventSystemFlags: EventSystemFlags, ): ?Object { if (targetInst == null) { // Probably a node belonging to another renderer's tree. return null; } const bubbleDispatchConfig = customBubblingEventTypes[topLevelType]; const directDispatchConfig = customDirectEventTypes[topLevelType]; invariant( bubbleDispatchConfig || directDispatchConfig, 'Unsupported top level event type "%s" dispatched', topLevelType, ); const event = SyntheticEvent.getPooled( bubbleDispatchConfig || directDispatchConfig, targetInst, nativeEvent, nativeEventTarget, ); if (bubbleDispatchConfig) { accumulateTwoPhaseDispatches(event); } else if (directDispatchConfig) { accumulateDirectDispatches(event); } else { return null; } return event; }, }; export default ReactNativeBridgeEventPlugin;