diff --git a/packages/react-native/Libraries/Components/View/ReactNativeViewAttributes.js b/packages/react-native/Libraries/Components/View/ReactNativeViewAttributes.js index fecdc5bf207569..f349a0a9b0a79b 100644 --- a/packages/react-native/Libraries/Components/View/ReactNativeViewAttributes.js +++ b/packages/react-native/Libraries/Components/View/ReactNativeViewAttributes.js @@ -46,6 +46,7 @@ const UIView = { focusable: true, onMouseEnter: true, onMouseLeave: true, + onDoubleClick: true, onDragEnter: true, onDragLeave: true, onDrop: true, diff --git a/packages/react-native/Libraries/Components/View/ViewPropTypes.d.ts b/packages/react-native/Libraries/Components/View/ViewPropTypes.d.ts index 76e8f1bf0cc37e..d46aab430ae1a2 100644 --- a/packages/react-native/Libraries/Components/View/ViewPropTypes.d.ts +++ b/packages/react-native/Libraries/Components/View/ViewPropTypes.d.ts @@ -119,6 +119,7 @@ export interface ViewPropsMacOS { enableFocusRing?: boolean | undefined; onMouseEnter?: ((event: MouseEvent) => void) | undefined; onMouseLeave?: ((event: MouseEvent) => void) | undefined; + onDoubleClick?: ((event: MouseEvent) => void) | undefined; onDragEnter?: ((event: DragEvent) => void) | undefined; onDragLeave?: ((event: DragEvent) => void) | undefined; onDrop?: ((event: DragEvent) => void) | undefined; diff --git a/packages/react-native/Libraries/Components/View/ViewPropTypes.js b/packages/react-native/Libraries/Components/View/ViewPropTypes.js index 37532c8cf330fe..1b9d8f5bf9e9be 100644 --- a/packages/react-native/Libraries/Components/View/ViewPropTypes.js +++ b/packages/react-native/Libraries/Components/View/ViewPropTypes.js @@ -127,6 +127,7 @@ export type KeyboardEventProps = $ReadOnly<{| type MouseEventProps = $ReadOnly<{ onMouseEnter?: ?(event: MouseEvent) => void, onMouseLeave?: ?(event: MouseEvent) => void, + onDoubleClick?: ?(event: MouseEvent) => void, // [macOS] }>; // Experimental/Work in Progress Pointer Event Callbacks (not yet ready for use) diff --git a/packages/react-native/Libraries/NativeComponent/BaseViewConfig.macos.js b/packages/react-native/Libraries/NativeComponent/BaseViewConfig.macos.js index 84f5db15f92a37..bb766656a91734 100644 --- a/packages/react-native/Libraries/NativeComponent/BaseViewConfig.macos.js +++ b/packages/react-native/Libraries/NativeComponent/BaseViewConfig.macos.js @@ -34,6 +34,9 @@ const bubblingEventTypes = { const directEventTypes = { ...PlatformBaseViewConfigIos.directEventTypes, + topDoubleClick: { + registrationName: 'onDoubleClick', + }, topDragEnter: { registrationName: 'onDragEnter', }, @@ -68,6 +71,7 @@ const validAttributesForNonEventProps = { // Props for bubbling and direct events const validAttributesForEventProps = ConditionallyIgnoredEventHandlers({ onBlur: true, + onDoubleClick: true, onDragEnter: true, onDragLeave: true, onDrop: true, diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index 1e77d76abc771d..47315fb0d736c9 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -3866,6 +3866,7 @@ exports[`public API should not change unintentionally Libraries/Components/View/ focusable: true, onMouseEnter: true, onMouseLeave: true, + onDoubleClick: true, onDragEnter: true, onDragLeave: true, onDrop: true, @@ -4106,6 +4107,7 @@ export type KeyboardEventProps = $ReadOnly<{| type MouseEventProps = $ReadOnly<{ onMouseEnter?: ?(event: MouseEvent) => void, onMouseLeave?: ?(event: MouseEvent) => void, + onDoubleClick?: ?(event: MouseEvent) => void, }>; type PointerEventProps = $ReadOnly<{ onClick?: ?(event: PointerEvent) => void, diff --git a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index c48815a95920f3..0086fc4ce33536 100644 --- a/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/packages/react-native/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -1905,7 +1905,14 @@ - (BOOL)performDragOperation:(id )sender #pragma mark - Mouse Events -- (void)emitMouseEvent { +enum MouseEventType { + MouseEnter, + MouseLeave, + DoubleClick, +}; + +- (void)emitMouseEvent:(MouseEventType)eventType +{ if (!_eventEmitter) { return; } @@ -1926,10 +1933,18 @@ - (void)emitMouseEvent { .metaKey = static_cast(modifierFlags & NSEventModifierFlagCommand), }; - if (_hasMouseOver) { - _eventEmitter->onMouseEnter(mouseEvent); - } else { - _eventEmitter->onMouseLeave(mouseEvent); + switch (eventType) { + case MouseEnter: + _eventEmitter->onMouseEnter(mouseEvent); + break; + + case MouseLeave: + _eventEmitter->onMouseLeave(mouseEvent); + break; + + case DoubleClick: + _eventEmitter->onDoubleClick(mouseEvent); + break; } } @@ -1958,7 +1973,7 @@ - (void)updateMouseOverIfNeeded if (hasMouseOver != _hasMouseOver) { _hasMouseOver = hasMouseOver; - [self emitMouseEvent]; + [self emitMouseEvent:hasMouseOver ? MouseEnter : MouseLeave]; } } @@ -2031,7 +2046,7 @@ - (void)mouseEntered:(NSEvent *)event } _hasMouseOver = YES; - [self emitMouseEvent]; + [self emitMouseEvent:MouseEnter]; } - (void)mouseExited:(NSEvent *)event @@ -2041,7 +2056,17 @@ - (void)mouseExited:(NSEvent *)event } _hasMouseOver = NO; - [self emitMouseEvent]; + [self emitMouseEvent:MouseLeave]; +} + +- (void)mouseUp:(NSEvent *)event +{ + BOOL hasDoubleClickEventHandler = _props->hostPlatformEvents[HostPlatformViewEvents::Offset::DoubleClick]; + if (hasDoubleClickEventHandler && event.clickCount == 2) { + [self emitMouseEvent :DoubleClick]; + } else { + [super mouseUp:event]; + } } #endif // macOS] diff --git a/packages/react-native/React/Views/RCTView.h b/packages/react-native/React/Views/RCTView.h index 8c346c2d0f757b..fab2ec1f449d3e 100644 --- a/packages/react-native/React/Views/RCTView.h +++ b/packages/react-native/React/Views/RCTView.h @@ -174,6 +174,7 @@ extern const UIAccessibilityTraits SwitchAccessibilityTrait; @property (nonatomic, copy) RCTDirectEventBlock onDragEnter; @property (nonatomic, copy) RCTDirectEventBlock onDragLeave; @property (nonatomic, copy) RCTDirectEventBlock onDrop; +@property (nonatomic, copy) RCTDirectEventBlock onDoubleClick; // Keyboarding events // NOTE does not properly work with single line text inputs (most key downs). This is because those are diff --git a/packages/react-native/React/Views/RCTView.m b/packages/react-native/React/Views/RCTView.m index 8d4353d8d5b131..35e04098424874 100644 --- a/packages/react-native/React/Views/RCTView.m +++ b/packages/react-native/React/Views/RCTView.m @@ -1552,6 +1552,15 @@ - (void)mouseExited:(NSEvent *)event additionalData:nil]; } +- (void)mouseUp:(NSEvent *)event +{ + if (_onDoubleClick && event.clickCount == 2){ + _onDoubleClick(nil); + } else { + [super mouseUp:event]; + } +} + - (BOOL)mouseDownCanMoveWindow { return _mouseDownCanMoveWindow; diff --git a/packages/react-native/React/Views/RCTViewManager.m b/packages/react-native/React/Views/RCTViewManager.m index 1181a95ad97374..f0ab7716a7e192 100644 --- a/packages/react-native/React/Views/RCTViewManager.m +++ b/packages/react-native/React/Views/RCTViewManager.m @@ -641,6 +641,7 @@ - (void) updateAccessibilityRole:(RCTView *)view withDefaultView:(RCTView *)defa RCT_EXPORT_VIEW_PROPERTY(onFocus, RCTBubblingEventBlock) RCT_EXPORT_VIEW_PROPERTY(onBlur, RCTBubblingEventBlock) +RCT_EXPORT_VIEW_PROPERTY(onDoubleClick, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onMouseEnter, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onMouseLeave, RCTDirectEventBlock) RCT_EXPORT_VIEW_PROPERTY(onDragEnter, RCTDirectEventBlock) diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEventEmitter.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEventEmitter.cpp index eb0ea08daa61d2..357ab6917ef514 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEventEmitter.cpp @@ -67,17 +67,23 @@ static jsi::Object mouseEventPayload(jsi::Runtime& runtime, const MouseEvent& ev }; void HostPlatformViewEventEmitter::onMouseEnter(const MouseEvent& mouseEvent) const { - dispatchEvent("mouseEnter", [mouseEvent](jsi::Runtime &runtime) { + dispatchEvent("mouseEnter", [mouseEvent](jsi::Runtime& runtime) { return mouseEventPayload(runtime, mouseEvent); }); } void HostPlatformViewEventEmitter::onMouseLeave(const MouseEvent& mouseEvent) const { - dispatchEvent("mouseLeave", [mouseEvent](jsi::Runtime &runtime) { + dispatchEvent("mouseLeave", [mouseEvent](jsi::Runtime& runtime) { return mouseEventPayload(runtime, mouseEvent); }); } +void HostPlatformViewEventEmitter::onDoubleClick(const MouseEvent& mouseEvent) const { + dispatchEvent("doubleClick", [mouseEvent](jsi::Runtime& runtime) { + return mouseEventPayload(runtime, mouseEvent); + }); +} + #pragma mark - Drag and Drop Events jsi::Value HostPlatformViewEventEmitter::dataTransferPayload( @@ -170,20 +176,20 @@ static jsi::Value dragEventPayload( return payload; } -void HostPlatformViewEventEmitter::onDragEnter(DragEvent const& dragEvent) const { - dispatchEvent("dragEnter", [dragEvent](jsi::Runtime &runtime) { +void HostPlatformViewEventEmitter::onDragEnter(const DragEvent& dragEvent) const { + dispatchEvent("dragEnter", [dragEvent](jsi::Runtime& runtime) { return dragEventPayload(runtime, dragEvent); }); } -void HostPlatformViewEventEmitter::onDragLeave(DragEvent const& dragEvent) const { - dispatchEvent("dragLeave", [dragEvent](jsi::Runtime &runtime) { +void HostPlatformViewEventEmitter::onDragLeave(const DragEvent& dragEvent) const { + dispatchEvent("dragLeave", [dragEvent](jsi::Runtime& runtime) { return dragEventPayload(runtime, dragEvent); }); } -void HostPlatformViewEventEmitter::onDrop(DragEvent const& dragEvent) const { - dispatchEvent("drop", [dragEvent](jsi::Runtime &runtime) { +void HostPlatformViewEventEmitter::onDrop(const DragEvent& dragEvent) const { + dispatchEvent("drop", [dragEvent](jsi::Runtime& runtime) { return dragEventPayload(runtime, dragEvent); }); } diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEventEmitter.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEventEmitter.h index 0fd77c573f38d0..c5587906a51950 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEventEmitter.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEventEmitter.h @@ -33,6 +33,7 @@ class HostPlatformViewEventEmitter : public BaseViewEventEmitter { void onMouseEnter(MouseEvent const& mouseEvent) const; void onMouseLeave(MouseEvent const& mouseEvent) const; + void onDoubleClick(MouseEvent const& mouseEvent) const; #pragma mark - Drag and Drop Events diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEvents.h b/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEvents.h index 26b7cb9bd9512e..cefa27d007a321 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEvents.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewEvents.h @@ -29,6 +29,7 @@ struct HostPlatformViewEvents { // Mouse Events MouseEnter = 4, MouseLeave = 5, + DoubleClick = 6, }; constexpr bool operator[](const Offset offset) const { @@ -71,6 +72,8 @@ static inline HostPlatformViewEvents convertRawProp( convertRawProp(context, rawProps, "onMouseEnter", sourceValue[Offset::MouseEnter], defaultValue[Offset::MouseEnter]); result[Offset::MouseLeave] = convertRawProp(context, rawProps, "onMouseLeave", sourceValue[Offset::MouseLeave], defaultValue[Offset::MouseLeave]); + result[Offset::DoubleClick] = + convertRawProp(context, rawProps, "onDoubleClick", sourceValue[Offset::DoubleClick], defaultValue[Offset::DoubleClick]); return result; } diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewProps.cpp index 318ebfb8b76fac..48ba8dc545aee0 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/platform/macos/react/renderer/components/view/HostPlatformViewProps.cpp @@ -143,6 +143,7 @@ void HostPlatformViewProps::setProp( VIEW_EVENT_CASE_MACOS(KeyUp); VIEW_EVENT_CASE_MACOS(MouseEnter); VIEW_EVENT_CASE_MACOS(MouseLeave); + VIEW_EVENT_CASE_MACOS(DoubleClick); RAW_SET_PROP_SWITCH_CASE_BASIC(focusable); RAW_SET_PROP_SWITCH_CASE_BASIC(enableFocusRing); RAW_SET_PROP_SWITCH_CASE_BASIC(keyDownEvents); diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 0c498053a0f364..751b2a749f4820 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -2053,82 +2053,82 @@ SPEC CHECKSUMS: boost: cea1d4f90a3a59537f3deb03ff5656489d7133dd DoubleConversion: d31b1eb37f6d6f456530c4fd9124b857d6889cab fast_float: 5596a99716f77fe44b617183d4db34777538174d - FBLazyVector: 0a3f4ff238f4a5a12df1ce799726fbae48b3219a + FBLazyVector: c3d0c3eb45c5a3c5985c4cdbe037b1530a7eef2d fmt: 24e7591456deb60b4a77518f83d9a916ac84223f glog: 0b31c25149b9d350b2666c7d459229861a00ec07 - hermes-engine: cc8feeacabc5b95002c368a555a173cddafb29c5 + hermes-engine: 9b033746b84dd3782beba1ee78de2d8ce709e5e1 MyNativeView: 012965daf7594f221bfe8f48c3a6be88dc926ec7 NativeCxxModuleExample: d89bddc6be7c578088d4c441e1de365cca37d369 OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 OSSLibraryExample: d57a46a4520f0964e36b3ac349cb37404a469ae3 RCT-Folly: 957ce397c08be7a9a91bb9245e57e69fa5255ec5 RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf - RCTRequired: 5c10a42787b18fabbacda1669d333270f78dfed1 - RCTTypeSafety: 04629d6e8ee80c4ddb1bc2acb80b1ca88de284c9 - React: ee7f072e1e2db3fd4da25483b3cb6868964aa7ed - React-callinvoker: 94acfd04af532e289b9e992fad6f71b0a1fb752f - React-Core: 7b58428f7a2c1a685713e3e14387a8f98da88e03 - React-CoreModules: 5f97a14ece13839935df5ae9456db172f966c1f4 - React-cxxreact: d152f08b17a34ae1ec345029cdc24919828bda88 - React-debug: bd53bf62a49fe5858a569204c3df64dc0a3c0e6a - React-defaultsnativemodule: a59c04097aff0751a08745ef6aaa217ab1178be7 - React-domnativemodule: 403a11dd566425a55d3bf58a13127a2c12c2afc7 - React-Fabric: 0c8a6ce4745ccdc43aec6a664e496218d8bdfc33 - React-FabricComponents: 4af2a2865dc407f5c2e75faa2734ba389461e4b4 - React-FabricImage: 7ca716a0ed4dcf506fcdcd60986501c527cfcc6e - React-featureflags: 8a8f76aa906abe8a561c2e81569d159509a7b244 - React-featureflagsnativemodule: f9330ce11a0cb7e1b51e30cc261add31294d93c2 - React-graphics: aa9108bb694c9ddb04eb0cd8b9bd7c0c09de83a2 - React-hermes: a10ae5b0156d75c05f4c737336cb593b2b27a2df - React-idlecallbacksnativemodule: c9fe93ba4f421319ad4bcd0d7131e0d3c510cbfb - React-ImageManager: cfbe01dd1d75ed9aa33c09c66e3e3f20970f4981 - React-jserrorhandler: 099f5a111a9117e5cb7be4a31a151e2977ec20ef - React-jsi: f06232f271ddafb13d90bfecda92a84d29bb0d36 - React-jsiexecutor: 445b0458ddf8920c995d96af05bc8d66b7fc138a - React-jsinspector: af8da9536a4e2402d65c47e01a64118628f067b4 - React-jsinspectortracing: eef865f1f8db567faac91bb857a880f7eab7e2d0 - React-jsitooling: 397f96aed700fd416ff6fe16ed88f4fa45c64ba2 - React-jsitracing: b149f1f31dda23f0ba72151b0024964a76741fa7 - React-logger: 51cdb2d4cb36b78f9f154dda2fdb1e7dba204765 - React-Mapbuffer: bb17a086220da31233ca695abe63ca01dec40d82 - React-microtasksnativemodule: ac413e56d6d81b77b9a1aae7ff1aad8afb6050c5 - React-NativeModulesApple: db1a001d34e7f0e8b25dfefa2a2ce83b6a6442d9 - React-oscompat: 825c3b67ca607307fc7493101bee3ec6c18b2ca7 - React-perflogger: ad75d71af0ddce6ea06d6d47eae3151563a01b55 - React-performancetimeline: 53df2b097c87eab5bb14ed00cab95be9f82e2f64 - React-RCTActionSheet: a9fc70ec6783733305602ffb0cb9ab956221230e - React-RCTAnimation: cc7bff4261b79f6fbb2df431bf6c312690f6c40c - React-RCTAppDelegate: bd84d753358c4103b81d6fe33c1e64c844615516 - React-RCTBlob: 80c0a82e1b20f05416636841f0f13cbe28c6df6d - React-RCTFabric: dd0221952b4cfafbe1d548e59272a48f5d7b233a - React-RCTFBReactNativeSpec: c3b76c04af6b9842ce62db58c670a756a45bdee1 - React-RCTImage: f810320175a60490085043f6aa65f4e91c4fd42d - React-RCTLinking: 1a4ed8deb97f91b641bbe31c223a80d3bfa040b2 - React-RCTNetwork: bd30579e9d1b20708525428d6f1a44c1adfdcf5f - React-RCTPushNotification: 85664072a6ed949dbc244440a60be24f201eee2b - React-RCTRuntime: e7a1a5d3c48065d96e351f20b521c3e1e01cd55f - React-RCTSettings: 65a4df3015d7fd9c6efc455f0df9de8a48001b88 - React-RCTTest: 0ee2333eb05005b100ce25749e3b3dfca40908f7 - React-RCTText: d633a9c03fca2a1a228a0ede5e340169bb851618 - React-RCTVibration: 0deb664da65c4302963a8c2d6f23995059341fea - React-rendererconsistency: 00316a8639306ac717d62d2874b885088cde31d4 - React-renderercss: f11c56e70856232f2d34ab96df245a674a2ba769 - React-rendererdebug: 12d895f5fae069c25aa0c33a138ddd3f308fd8f2 - React-rncore: a0871316bff44288ba62c1374b6e9093717dbc89 - React-RuntimeApple: 29d74569f8f83a2e98b73a532d063250a5170347 - React-RuntimeCore: 54235f3ab77822160c01fa7ab543f3ea512e56e6 - React-runtimeexecutor: a3ea35a56f73642ff5c888869e3e5eecd842f8c9 - React-RuntimeHermes: 9f0c0fd0b045d2ee552ad96044be15e76a1b7485 - React-runtimescheduler: 5d60a6ef3abdba3b0f688eacd3a106a45f09c334 - React-timing: ba0ea02d49e288be015576fc217184a521f3508d - React-utils: 3101cddb3c50406b3949fe36e8fad34609dd561c - ReactAppDependencyProvider: 4d000089a4f20b7df5b5849581808301af186297 + RCTRequired: dcedfb7f34fb38066e52e1cab957c57ccd7db9ad + RCTTypeSafety: 2c91e5de653d7c3b23201e16d633bbe86e1a68b6 + React: af07878ea8559b32d8b065186c2928675788bd6e + React-callinvoker: 10b8534fbdbbf1c0c109aebfa03bdde4bdd98398 + React-Core: 73c734a1cb66fc59f69e4966c52586bddf85531f + React-CoreModules: 1e50e62facd501e3f81a69c3f279f6c2a0785e41 + React-cxxreact: dbe209231951c184f8fc785699aca4e4792beef8 + React-debug: 02e3133cf01637dffc89c62deae2c881c27486dc + React-defaultsnativemodule: bd35f550f11cbf5c6dc72e5abe8b4f7afa41d14c + React-domnativemodule: 349bffb2ccd4cdd058b623e4f6d69729d430a482 + React-Fabric: 5428224da0383007e2ad070289ad0f5e2e19fb36 + React-FabricComponents: 542e573dac1ce367ecf916167c2cb7bf84c64835 + React-FabricImage: 23799abf2c5f0bdce9ffb3bcc26dafe97bc6cdee + React-featureflags: 60c98ff6dea8def99600224c3f6f70dfc694a242 + React-featureflagsnativemodule: f2c6690d9b26b802613f7c42fdb1967f6506f47a + React-graphics: da87e874689b2b4154b68f7a4dfa4814f8b13290 + React-hermes: 434a2f81b1f0b827a60deb7ac187721523d39123 + React-idlecallbacksnativemodule: 4ae844826cc8a8805fa50bcd8ffb15d89bce53e3 + React-ImageManager: 8f9670e145e307b031c36db00fe18503afbef8ae + React-jserrorhandler: 734bc5d129478ab1f4aa601f05d63b60f636174a + React-jsi: d0915ece43c59ecdb8b64e4fb372a9c1ad45d23d + React-jsiexecutor: 2107bcf79b1345263f88c808b1c18e22741d02d1 + React-jsinspector: 326fb8dd123a835532a702e85b9b3e92a8a91ce7 + React-jsinspectortracing: 0da6865c91ffcb6074a7a918075f1e16af40b379 + React-jsitooling: c1391fe5eee3b55df9bbe238e8b1ad0da4802be9 + React-jsitracing: 2859fb1906371bb6a3ca037d05f25ffa9edb75d5 + React-logger: f22a76c45f743c1bb5d9d8fa8cfd7b0114dc4b35 + React-Mapbuffer: 49d322ddf11ffa8973463d484836d0c2b059b1ce + React-microtasksnativemodule: 1f39febc6ecea57b1d75ba88d77d081e2689b8a8 + React-NativeModulesApple: ff4068eae18729a5689b0ee67638245db9a20751 + React-oscompat: d5a3795b18b684c669546d619fe37daad9682b8f + React-perflogger: 65216186ecadcd7c1ae7d664163d51c0d87391db + React-performancetimeline: 31f83c222133d3eff1fb34fe5593bbfa44e20dd3 + React-RCTActionSheet: b8fa8dc5462eeb5d6bf07de5c6205748625df025 + React-RCTAnimation: 06aabab19321735d02619d56d370d66cd7dfa724 + React-RCTAppDelegate: 5e27b038a0de10535cc17ee5eb0f9fb5ea8f05ff + React-RCTBlob: e5a049f652a015b59a44313879539325274d1fc0 + React-RCTFabric: e012c85f94a07dd63f2bb98831bfc514ffb80814 + React-RCTFBReactNativeSpec: f3b0131b2f651ba4272f5f41ee508db7cca9a715 + React-RCTImage: 07f34ba290ef73e1c7905197365eb0424ae24979 + React-RCTLinking: 65a5cf6bb17d8b056719206e62adf00d1b587d19 + React-RCTNetwork: 754630d124eace3ecb7e8c5d79f4f98fa8be1f6c + React-RCTPushNotification: f688a11d989f643b9581b48b762fa2aaed36e8b0 + React-RCTRuntime: d05f4ca1afba2d3b0ab92cb538f9acc58737ac6e + React-RCTSettings: e47018e632656bfbd7298c2d1becc2dfa914309b + React-RCTTest: f16c68419017c74b94bb3a61b8541c0352603e4b + React-RCTText: 41bc42eb95f304f797a3cc6f2ec3618d25df0c75 + React-RCTVibration: 49c58ededff60875d03d519a9e1f36f9616eed1e + React-rendererconsistency: ce698aa83e253467df7f3de853eb9cf975ab833a + React-renderercss: 5956a051ae04e2bbb1550e30f01361fed05d7649 + React-rendererdebug: ea93c790b40731bd6fedab213a0bca8d48e82752 + React-rncore: dddfbb3e510df07ea24a3d31432a114856ffebb4 + React-RuntimeApple: 9f9013c5ac7675ada7c4ea74250e77c87c131c82 + React-RuntimeCore: 2644fe75ab6889bfa23f3e097ddf5b2ede9372bb + React-runtimeexecutor: 693ad2e64732b5bce44b6fcc90eabe494dfc595a + React-RuntimeHermes: 2a30129486526ac5d53334f48fbe38875964ef01 + React-runtimescheduler: 1338928f41e96f431a85c7bbc78a4994b11f21b5 + React-timing: eb7eb17a751191160f60b886f4d57afe06a99c06 + React-utils: 63603fc28423587c8e36241b854fafc8996bbb71 + ReactAppDependencyProvider: 83ef076ee1b1457ea3ab8beaecc79f953db5be41 ReactCodegen: 0082198e27eef7ce13bf03680eb9d15bbde56601 - ReactCommon: ccca86fc30847bda1f64f6d8f84a596a4ce02f26 - ReactCommon-Samples: feac96a466176d8aa790a5ae4e6076d66f437ffc + ReactCommon: 4b3b727acbd08deb6d3c318a2925f25c1cfa3cf5 + ReactCommon-Samples: 4281d6886e7c27ec967a2a9392a3836edfc110ca ScreenshotManager: c96f07e207c96f5d91080e408aff95df63875dae SocketRocket: a1845ec01e17d55e3da5df40600892972afb45e1 - Yoga: 1cff0cfbf14d209e21b2f3b023de56f24b43b6fd + Yoga: deb1f9afd79094c9e76d19fa2e312428a74ba934 PODFILE CHECKSUM: 07eddbe098f0e50aff590a91207f692788a9fe4c diff --git a/packages/rn-tester/js/examples/Pressable/PressableExample.js b/packages/rn-tester/js/examples/Pressable/PressableExample.js index 3c853ef1e12e4b..b0aef904c1221d 100644 --- a/packages/rn-tester/js/examples/Pressable/PressableExample.js +++ b/packages/rn-tester/js/examples/Pressable/PressableExample.js @@ -131,6 +131,7 @@ function PressableFeedbackEvents() { onDragLeave={() => appendEvent('dragLeave')} onDrop={() => appendEvent('drop')} draggedTypes={'fileUrl'} + onDoubleClick={() => appendEvent('doubleClick')} // macOS] onPress={() => appendEvent('press')} onPressIn={() => appendEvent('pressIn')}