Files
react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModuleConstants.java
T
David Vacca 44143b50fd Update ViewConfigs to support onEnter/onExit/onMove events
Summary:
This diff updates the ViewConfigs in RN Android to add support for onEnter/onExit/onMove events.

Open questions:

- Should we just remove the override for RN VR: https://www.internalfb.com/code/ovrsource/[c82b81893393ad0c6f8c6e7f347e82bba39dc8cc]/arvr/js/libraries/reactvr/VrShellPanelLib/rn-support/setUpViewConfigOverrides.js

- Should we use w3c naming now (e.g. onPointerEnter / onPointerExit / onPointerMove) ? or should we migrate to it later? what would be the effort for VR to migrate now to onPointerEnter / onPointerExit / onPointerMove?

changelog: [Android][Changed] Add ViewConfigs to support onEnter/onExit/onMove events

Reviewed By: RSNara

Differential Revision: D32253129

fbshipit-source-id: 539d8672825c7f18f0b6a2570764a5988cd936bc
2021-11-19 15:48:14 -08:00

127 lines
4.9 KiB
Java

/*
* 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.
*/
package com.facebook.react.uimanager;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.events.TouchEventType;
import java.util.Map;
/** Constants exposed to JS from {@link UIManagerModule}. */
/* package */ class UIManagerModuleConstants {
public static final String ACTION_DISMISSED = "dismissed";
public static final String ACTION_ITEM_SELECTED = "itemSelected";
/* package */ static Map getBubblingEventTypeConstants() {
return MapBuilder.builder()
.put(
"topChange",
MapBuilder.of(
"phasedRegistrationNames",
MapBuilder.of("bubbled", "onChange", "captured", "onChangeCapture")))
.put(
"topSelect",
MapBuilder.of(
"phasedRegistrationNames",
MapBuilder.of("bubbled", "onSelect", "captured", "onSelectCapture")))
.put(
TouchEventType.getJSEventName(TouchEventType.START),
MapBuilder.of(
"phasedRegistrationNames",
MapBuilder.of("bubbled", "onTouchStart", "captured", "onTouchStartCapture")))
.put(
TouchEventType.getJSEventName(TouchEventType.MOVE),
MapBuilder.of(
"phasedRegistrationNames",
MapBuilder.of("bubbled", "onTouchMove", "captured", "onTouchMoveCapture")))
.put(
TouchEventType.getJSEventName(TouchEventType.END),
MapBuilder.of(
"phasedRegistrationNames",
MapBuilder.of("bubbled", "onTouchEnd", "captured", "onTouchEndCapture")))
.put(
TouchEventType.getJSEventName(TouchEventType.CANCEL),
MapBuilder.of(
"phasedRegistrationNames",
MapBuilder.of("bubbled", "onTouchCancel", "captured", "onTouchCancelCapture")))
.build();
}
/* package */ static Map getDirectEventTypeConstants() {
final String rn = "registrationName";
return MapBuilder.builder()
.put("topContentSizeChange", MapBuilder.of(rn, "onContentSizeChange"))
.put("topLayout", MapBuilder.of(rn, "onLayout"))
.put("topPointerEnter", MapBuilder.of(rn, "pointerenter"))
.put("topPointerLeave", MapBuilder.of(rn, "pointerleave"))
.put("topPointerMove", MapBuilder.of(rn, "pointermove"))
.put("topLoadingError", MapBuilder.of(rn, "onLoadingError"))
.put("topLoadingFinish", MapBuilder.of(rn, "onLoadingFinish"))
.put("topLoadingStart", MapBuilder.of(rn, "onLoadingStart"))
.put("topSelectionChange", MapBuilder.of(rn, "onSelectionChange"))
.put("topMessage", MapBuilder.of(rn, "onMessage"))
.put("topClick", MapBuilder.of(rn, "onClick"))
// Scroll events are added as per task T22348735.
// Subject for further improvement.
.put("topScrollBeginDrag", MapBuilder.of(rn, "onScrollBeginDrag"))
.put("topScrollEndDrag", MapBuilder.of(rn, "onScrollEndDrag"))
.put("topScroll", MapBuilder.of(rn, "onScroll"))
.put("topMomentumScrollBegin", MapBuilder.of(rn, "onMomentumScrollBegin"))
.put("topMomentumScrollEnd", MapBuilder.of(rn, "onMomentumScrollEnd"))
.build();
}
public static Map<String, Object> getConstants() {
Map<String, Object> constants = MapBuilder.newHashMap();
constants.put(
"UIView",
MapBuilder.of(
"ContentMode",
MapBuilder.of(
"ScaleAspectFit",
ImageView.ScaleType.FIT_CENTER.ordinal(),
"ScaleAspectFill",
ImageView.ScaleType.CENTER_CROP.ordinal(),
"ScaleAspectCenter",
ImageView.ScaleType.CENTER_INSIDE.ordinal())));
constants.put(
"StyleConstants",
MapBuilder.of(
"PointerEventsValues",
MapBuilder.of(
"none",
PointerEvents.NONE.ordinal(),
"boxNone",
PointerEvents.BOX_NONE.ordinal(),
"boxOnly",
PointerEvents.BOX_ONLY.ordinal(),
"unspecified",
PointerEvents.AUTO.ordinal())));
constants.put(
"PopupMenu",
MapBuilder.of(
ACTION_DISMISSED, ACTION_DISMISSED, ACTION_ITEM_SELECTED, ACTION_ITEM_SELECTED));
constants.put(
"AccessibilityEventTypes",
MapBuilder.of(
"typeWindowStateChanged",
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED,
"typeViewFocused",
AccessibilityEvent.TYPE_VIEW_FOCUSED,
"typeViewClicked",
AccessibilityEvent.TYPE_VIEW_CLICKED));
return constants;
}
}