react-native-tvos 0.69.6-1 → 0.69.6-3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/Libraries/Components/Pressable/Pressable.js +11 -2
  2. package/Libraries/Components/ScrollView/ScrollView.js +1 -0
  3. package/Libraries/Components/TV/TVEventHandler.js +4 -2
  4. package/Libraries/Components/TV/TVFocusEventHandler.js +4 -2
  5. package/Libraries/Components/TV/TVFocusGuideView.js +42 -66
  6. package/Libraries/Components/TV/TVViewPropTypes.js +7 -0
  7. package/Libraries/Components/TV/useTVEventHandler.js +2 -1
  8. package/Libraries/Components/TextInput/TextInput.js +1 -1
  9. package/Libraries/Components/Touchable/TVTouchable.js +1 -1
  10. package/Libraries/Components/Touchable/TouchableBounce.js +5 -0
  11. package/Libraries/Components/Touchable/TouchableHighlight.js +7 -2
  12. package/Libraries/Components/Touchable/TouchableOpacity.js +7 -2
  13. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +7 -0
  14. package/Libraries/Core/ReactNativeVersion.js +1 -1
  15. package/Libraries/LogBox/UI/LogBoxButton.js +16 -12
  16. package/Libraries/LogBox/UI/LogBoxNotification.js +1 -1
  17. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +2 -20
  18. package/Libraries/StyleSheet/StyleSheetTypes.js +1 -0
  19. package/Libraries/Types/CoreEventTypes.js +9 -0
  20. package/README.md +2 -2
  21. package/React/Base/RCTTVRemoteHandler.h +4 -0
  22. package/React/Base/RCTTVRemoteHandler.m +40 -0
  23. package/React/Base/RCTVersion.m +1 -1
  24. package/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +48 -4
  25. package/React/Views/RCTTVView.h +5 -0
  26. package/React/Views/RCTTVView.m +19 -0
  27. package/React/Views/RCTViewManager.m +1 -0
  28. package/ReactAndroid/gradle.properties +1 -1
  29. package/ReactAndroid/src/main/java/com/facebook/react/animated/EventAnimationDriver.java +6 -1
  30. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedModule.java +4 -5
  31. package/ReactAndroid/src/main/java/com/facebook/react/animated/NativeAnimatedNodesManager.java +57 -62
  32. package/ReactAndroid/src/main/java/com/facebook/react/modules/core/ReactAndroidHWInputDeviceHelper.java +27 -3
  33. package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.java +1 -1
  34. package/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +18 -0
  35. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java +190 -1
  36. package/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +5 -0
  37. package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
  38. package/ReactCommon/jsi/JSCRuntime.cpp +9 -2
  39. package/ReactCommon/react/renderer/components/view/ViewProps.cpp +13 -1
  40. package/ReactCommon/react/renderer/components/view/ViewProps.h +2 -1
  41. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar → 0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar} +0 -0
  42. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.md5 +1 -0
  43. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha1 +1 -0
  44. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha256 +1 -0
  45. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug-javadoc.jar.sha512 +1 -0
  46. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar} +0 -0
  47. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar.md5 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.md5} +0 -0
  48. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar.sha1 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha1} +0 -0
  49. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar.sha256 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha256} +0 -0
  50. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-sources.jar.sha512 → 0.69.6-3/hermes-engine-0.69.6-3-debug-sources.jar.sha512} +0 -0
  51. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar +0 -0
  52. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.md5 +1 -0
  53. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.sha1 +1 -0
  54. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.sha256 +1 -0
  55. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-debug.aar.sha512 +1 -0
  56. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar → 0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar} +0 -0
  57. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.md5 +1 -0
  58. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha1 +1 -0
  59. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha256 +1 -0
  60. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release-javadoc.jar.sha512 +1 -0
  61. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar} +0 -0
  62. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar.md5 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.md5} +0 -0
  63. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar.sha1 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha1} +0 -0
  64. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar.sha256 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha256} +0 -0
  65. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1-release-sources.jar.sha512 → 0.69.6-3/hermes-engine-0.69.6-3-release-sources.jar.sha512} +0 -0
  66. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar +0 -0
  67. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.md5 +1 -0
  68. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.sha1 +1 -0
  69. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.sha256 +1 -0
  70. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3-release.aar.sha512 +1 -0
  71. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1.module → 0.69.6-3/hermes-engine-0.69.6-3.module} +47 -47
  72. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.md5 +1 -0
  73. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.sha1 +1 -0
  74. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.sha256 +1 -0
  75. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.module.sha512 +1 -0
  76. package/android/com/facebook/react/hermes-engine/{0.69.6-1/hermes-engine-0.69.6-1.pom → 0.69.6-3/hermes-engine-0.69.6-3.pom} +1 -1
  77. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.md5 +1 -0
  78. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.sha1 +1 -0
  79. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.sha256 +1 -0
  80. package/android/com/facebook/react/hermes-engine/0.69.6-3/hermes-engine-0.69.6-3.pom.sha512 +1 -0
  81. package/android/com/facebook/react/hermes-engine/maven-metadata.xml +4 -4
  82. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.md5 +1 -1
  83. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha1 +1 -1
  84. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha256 +1 -1
  85. package/android/com/facebook/react/hermes-engine/maven-metadata.xml.sha512 +1 -1
  86. package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-release-javadoc.jar → 0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar} +0 -0
  87. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.md5 +1 -0
  88. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.sha1 +1 -0
  89. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.sha256 +1 -0
  90. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-javadoc.jar.sha512 +1 -0
  91. package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-debug-sources.jar → 0.69.6-3/react-native-0.69.6-3-debug-sources.jar} +0 -0
  92. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.md5 +1 -0
  93. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.sha1 +1 -0
  94. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.sha256 +1 -0
  95. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug-sources.jar.sha512 +1 -0
  96. package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-debug.aar → 0.69.6-3/react-native-0.69.6-3-debug.aar} +0 -0
  97. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.md5 +1 -0
  98. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha1 +1 -0
  99. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha256 +1 -0
  100. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-debug.aar.sha512 +1 -0
  101. package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar → 0.69.6-3/react-native-0.69.6-3-release-javadoc.jar} +0 -0
  102. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.md5 +1 -0
  103. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.sha1 +1 -0
  104. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.sha256 +1 -0
  105. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-javadoc.jar.sha512 +1 -0
  106. package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-release-sources.jar → 0.69.6-3/react-native-0.69.6-3-release-sources.jar} +0 -0
  107. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.md5 +1 -0
  108. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.sha1 +1 -0
  109. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.sha256 +1 -0
  110. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release-sources.jar.sha512 +1 -0
  111. package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1-release.aar → 0.69.6-3/react-native-0.69.6-3-release.aar} +0 -0
  112. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.md5 +1 -0
  113. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.sha1 +1 -0
  114. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.sha256 +1 -0
  115. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3-release.aar.sha512 +1 -0
  116. package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1.module → 0.69.6-3/react-native-0.69.6-3.module} +57 -57
  117. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.md5 +1 -0
  118. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.sha1 +1 -0
  119. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.sha256 +1 -0
  120. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.module.sha512 +1 -0
  121. package/android/com/facebook/react/react-native/{0.69.6-1/react-native-0.69.6-1.pom → 0.69.6-3/react-native-0.69.6-3.pom} +1 -1
  122. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.md5 +1 -0
  123. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.sha1 +1 -0
  124. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.sha256 +1 -0
  125. package/android/com/facebook/react/react-native/0.69.6-3/react-native-0.69.6-3.pom.sha512 +1 -0
  126. package/android/com/facebook/react/react-native/maven-metadata.xml +4 -4
  127. package/android/com/facebook/react/react-native/maven-metadata.xml.md5 +1 -1
  128. package/android/com/facebook/react/react-native/maven-metadata.xml.sha1 +1 -1
  129. package/android/com/facebook/react/react-native/maven-metadata.xml.sha256 +1 -1
  130. package/android/com/facebook/react/react-native/maven-metadata.xml.sha512 +1 -1
  131. package/index.js +1 -7
  132. package/package.json +1 -1
  133. package/react.gradle +14 -0
  134. package/template/package.json +1 -1
  135. package/tvos-types.d.ts +11 -2
  136. package/Libraries/DeprecatedPropTypes/DeprecatedTVViewPropTypes.js +0 -23
  137. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar.md5 +0 -1
  138. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar.sha1 +0 -1
  139. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar.sha256 +0 -1
  140. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug-javadoc.jar.sha512 +0 -1
  141. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar +0 -0
  142. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar.md5 +0 -1
  143. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar.sha1 +0 -1
  144. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar.sha256 +0 -1
  145. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-debug.aar.sha512 +0 -1
  146. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar.md5 +0 -1
  147. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar.sha1 +0 -1
  148. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar.sha256 +0 -1
  149. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release-javadoc.jar.sha512 +0 -1
  150. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar +0 -0
  151. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar.md5 +0 -1
  152. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar.sha1 +0 -1
  153. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar.sha256 +0 -1
  154. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1-release.aar.sha512 +0 -1
  155. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.module.md5 +0 -1
  156. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.module.sha1 +0 -1
  157. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.module.sha256 +0 -1
  158. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.module.sha512 +0 -1
  159. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.pom.md5 +0 -1
  160. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.pom.sha1 +0 -1
  161. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.pom.sha256 +0 -1
  162. package/android/com/facebook/react/hermes-engine/0.69.6-1/hermes-engine-0.69.6-1.pom.sha512 +0 -1
  163. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar.md5 +0 -1
  164. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar.sha1 +0 -1
  165. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar.sha256 +0 -1
  166. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-javadoc.jar.sha512 +0 -1
  167. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-sources.jar.md5 +0 -1
  168. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-sources.jar.sha1 +0 -1
  169. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-sources.jar.sha256 +0 -1
  170. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug-sources.jar.sha512 +0 -1
  171. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug.aar.md5 +0 -1
  172. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug.aar.sha1 +0 -1
  173. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug.aar.sha256 +0 -1
  174. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-debug.aar.sha512 +0 -1
  175. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-javadoc.jar.md5 +0 -1
  176. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-javadoc.jar.sha1 +0 -1
  177. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-javadoc.jar.sha256 +0 -1
  178. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-javadoc.jar.sha512 +0 -1
  179. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-sources.jar.md5 +0 -1
  180. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-sources.jar.sha1 +0 -1
  181. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-sources.jar.sha256 +0 -1
  182. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release-sources.jar.sha512 +0 -1
  183. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release.aar.md5 +0 -1
  184. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release.aar.sha1 +0 -1
  185. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release.aar.sha256 +0 -1
  186. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1-release.aar.sha512 +0 -1
  187. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.module.md5 +0 -1
  188. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.module.sha1 +0 -1
  189. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.module.sha256 +0 -1
  190. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.module.sha512 +0 -1
  191. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.pom.md5 +0 -1
  192. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.pom.sha1 +0 -1
  193. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.pom.sha256 +0 -1
  194. package/android/com/facebook/react/react-native/0.69.6-1/react-native-0.69.6-1.pom.sha512 +0 -1
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
24
24
  RCTVersionMajor: @(0),
25
25
  RCTVersionMinor: @(69),
26
26
  RCTVersionPatch: @(6),
27
- RCTVersionPrerelease: @"1",
27
+ RCTVersionPrerelease: @"3",
28
28
  };
29
29
  });
30
30
  return __rnVersion;
@@ -52,6 +52,7 @@ using namespace facebook::react;
52
52
  UIView *_nextFocusLeft;
53
53
  UIView *_nextFocusRight;
54
54
  UIView *_nextFocusActiveTarget;
55
+ BOOL _autoFocus;
55
56
  }
56
57
 
57
58
  @synthesize removeClippedSubviews = _removeClippedSubviews;
@@ -131,7 +132,7 @@ using namespace facebook::react;
131
132
  return (RCTRootComponentView *)rootview;
132
133
  }
133
134
 
134
- - (void)addFocusDestinations:(NSArray*)destinations {
135
+ - (void)addFocusGuide {
135
136
  if (self.focusGuide == nil) {
136
137
  self.focusGuide = [UIFocusGuide new];
137
138
  [self addLayoutGuide:self.focusGuide];
@@ -141,7 +142,17 @@ using namespace facebook::react;
141
142
  [self.focusGuide.widthAnchor constraintEqualToAnchor:self.widthAnchor].active = YES;
142
143
  [self.focusGuide.heightAnchor constraintEqualToAnchor:self.heightAnchor].active = YES;
143
144
  }
145
+ }
144
146
 
147
+ - (void)removeFocusGuide {
148
+ if (self.focusGuide != nil) {
149
+ [self removeLayoutGuide:self.focusGuide];
150
+ self.focusGuide = nil;
151
+ }
152
+ }
153
+
154
+ - (void)addFocusDestinations:(NSArray*)destinations {
155
+ [self addFocusGuide];
145
156
  self.focusGuide.preferredFocusEnvironments = destinations;
146
157
  }
147
158
 
@@ -416,6 +427,17 @@ using namespace facebook::react;
416
427
  if (context.previouslyFocusedView == context.nextFocusedView) {
417
428
  return;
418
429
  }
430
+
431
+ if (_autoFocus && self.focusGuide != nil && context.previouslyFocusedItem != nil) {
432
+ // Whenever focus leaves the container, `nextFocusedView` is the destination, the item outside the container.
433
+ // So, `previouslyFocusedItem` is always the last focused child of `TVFocusGuide`.
434
+ // We should update `preferredFocusEnvironments` in this case to make sure `FocusGuide` remembers
435
+ // the last focused element and redirects the focus to it whenever focus comes back.
436
+ // We also add `self` as the second option in case `previouslyFocusedItem` becomes unreachable (e.g gets detached).
437
+ // `self` helps redirecting focus to the first focusable element in that case.
438
+ self.focusGuide.preferredFocusEnvironments = @[context.previouslyFocusedItem, self];
439
+ }
440
+
419
441
  if (context.nextFocusedView == self && self.isUserInteractionEnabled ) {
420
442
  [self becomeFirstResponder];
421
443
  [self enableDirectionalFocusGuides];
@@ -825,6 +847,16 @@ using namespace facebook::react;
825
847
  _nextFocusRight = nil;
826
848
  }
827
849
  }
850
+
851
+ // `autoFocus`
852
+ if (oldViewProps.autoFocus != newViewProps.autoFocus) {
853
+ _autoFocus = newViewProps.autoFocus;
854
+ if (_autoFocus == true) {
855
+ [self addFocusGuide];
856
+ } else {
857
+ [self removeFocusGuide];
858
+ }
859
+ }
828
860
  #endif
829
861
 
830
862
 
@@ -910,10 +942,22 @@ using namespace facebook::react;
910
942
  if ([_propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN containsObject:@"opacity"]) {
911
943
  self.layer.opacity = (float)props.opacity;
912
944
  }
913
-
945
+
946
+ // We reset the `preferredFocusEnvironments` in case of recycling to prevent bugs.
947
+ // Resetting it also introduces a bug but it prevents much worse ones.
948
+ // The destination `focusEnvironment` reference could be recycled and used in another place so we might
949
+ // be holding a reference and redirecting the focus to the wrong view.
950
+ // To make sure that's not the case, we reset the destination to `self` which will
951
+ // redirect the focus to the first focusable child.
914
952
  if (self.focusGuide != nil) {
915
- [self removeLayoutGuide:self.focusGuide];
916
- self.focusGuide = nil;
953
+ self.focusGuide.preferredFocusEnvironments = @[self];
954
+ }
955
+
956
+ // If `autoFocus` is enabled, addition/removal process of `UIFocusGuide` is managed
957
+ // inside `updateProps` method. Removing `UIFocusGuide` here for that case would cause
958
+ // weird bugs and state loss.
959
+ if (!_autoFocus) {
960
+ [self removeFocusGuide];
917
961
  }
918
962
 
919
963
  _propKeysManagedByAnimated_DO_NOT_USE_THIS_IS_BROKEN = nil;
@@ -42,6 +42,11 @@
42
42
  @property (nonatomic, strong) UIFocusGuide * focusGuideLeft;
43
43
  @property (nonatomic, strong) UIFocusGuide * focusGuideRight;
44
44
 
45
+ /**
46
+ * Auto focus
47
+ */
48
+ @property (nonatomic, assign) BOOL autoFocus;
49
+
45
50
  - (instancetype)initWithBridge:(RCTBridge *)bridge;
46
51
 
47
52
  /**
@@ -261,6 +261,17 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithCoder : unused)
261
261
  if (context.previouslyFocusedView == context.nextFocusedView) {
262
262
  return;
263
263
  }
264
+
265
+ if (_autoFocus && self.focusGuide != nil && context.previouslyFocusedItem != nil) {
266
+ // Whenever focus leaves the container, `nextFocusedView` is the destination, the item outside the container.
267
+ // So, `previouslyFocusedItem` is always the last focused child of `TVFocusGuide`.
268
+ // We should update `preferredFocusEnvironments` in this case to make sure `FocusGuide` remembers
269
+ // the last focused element and redirects the focus to it whenever focus comes back.
270
+ // We also add `self` as the second option in case `previouslyFocusedItem` becomes unreachable (e.g gets detached).
271
+ // `self` helps redirecting focus to the first focusable element in that case.
272
+ self.focusGuide.preferredFocusEnvironments = @[context.previouslyFocusedItem, self];
273
+ }
274
+
264
275
  if (context.nextFocusedView == self && self.isTVSelectable ) {
265
276
  [self becomeFirstResponder];
266
277
  [self enableDirectionalFocusGuides];
@@ -432,6 +443,14 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithCoder : unused)
432
443
  [self setPreferredFocus:hasTVPreferredFocus];
433
444
  }
434
445
 
446
+ - (void)setAutoFocus:(BOOL)autoFocus
447
+ {
448
+ if (_autoFocus != autoFocus) {
449
+ _autoFocus = autoFocus;
450
+ [self addFocusGuide:@[self]];
451
+ }
452
+ }
453
+
435
454
  - (void)addFocusGuide:(NSArray*)destinations {
436
455
  if (self.focusGuide == nil) {
437
456
  self.focusGuide = [UIFocusGuide new];
@@ -137,6 +137,7 @@ RCT_EXPORT_VIEW_PROPERTY(nextFocusUp, NSNumber)
137
137
  RCT_EXPORT_VIEW_PROPERTY(nextFocusDown, NSNumber)
138
138
  RCT_EXPORT_VIEW_PROPERTY(nextFocusLeft, NSNumber)
139
139
  RCT_EXPORT_VIEW_PROPERTY(nextFocusRight, NSNumber)
140
+ RCT_EXPORT_VIEW_PROPERTY(autoFocus, BOOL)
140
141
  #endif
141
142
 
142
143
  // Accessibility related properties
@@ -1,4 +1,4 @@
1
- VERSION_NAME=0.69.6-1
1
+ VERSION_NAME=0.69.6-3
2
2
  GROUP=com.facebook.react
3
3
 
4
4
  POM_NAME=ReactNative
@@ -21,8 +21,13 @@ import java.util.List;
21
21
  /* package */ class EventAnimationDriver implements RCTEventEmitter {
22
22
  private List<String> mEventPath;
23
23
  /* package */ ValueAnimatedNode mValueNode;
24
+ /* package */ String mEventName;
25
+ /* package */ int mViewTag;
24
26
 
25
- public EventAnimationDriver(List<String> eventPath, ValueAnimatedNode valueNode) {
27
+ public EventAnimationDriver(
28
+ String eventName, int viewTag, List<String> eventPath, ValueAnimatedNode valueNode) {
29
+ mEventName = eventName;
30
+ mViewTag = viewTag;
26
31
  mEventPath = eventPath;
27
32
  mValueNode = valueNode;
28
33
  }
@@ -113,7 +113,7 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
113
113
 
114
114
  @AnyThread
115
115
  boolean isEmpty() {
116
- return mQueue.isEmpty();
116
+ return mQueue.isEmpty() && mPeekedOperation != null;
117
117
  }
118
118
 
119
119
  void setSynchronizedAccess(boolean isSynchronizedAccess) {
@@ -393,8 +393,8 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
393
393
 
394
394
  /**
395
395
  * Given a viewTag, detect if we're running in Fabric or non-Fabric and attach an event listener
396
- * to the correct UIManager, if necessary. This is expected to only be called from the JS thread,
397
- * and not concurrently.
396
+ * to the correct UIManager, if necessary. This is expected to only be called from the native
397
+ * module thread, and not concurrently.
398
398
  *
399
399
  * @param viewTag
400
400
  */
@@ -417,8 +417,7 @@ public class NativeAnimatedModule extends NativeAnimatedModuleSpec
417
417
  }
418
418
 
419
419
  // Subscribe to UIManager (Fabric or non-Fabric) lifecycle events if we haven't yet
420
- if ((mInitializedForFabric && mUIManagerType == UIManagerType.FABRIC)
421
- || (mInitializedForNonFabric && mUIManagerType == UIManagerType.DEFAULT)) {
420
+ if (mUIManagerType == UIManagerType.FABRIC ? mInitializedForFabric : mInitializedForNonFabric) {
422
421
  return;
423
422
  }
424
423
 
@@ -30,11 +30,9 @@ import com.facebook.react.uimanager.events.EventDispatcher;
30
30
  import com.facebook.react.uimanager.events.EventDispatcherListener;
31
31
  import java.util.ArrayDeque;
32
32
  import java.util.ArrayList;
33
- import java.util.HashMap;
34
33
  import java.util.LinkedList;
35
34
  import java.util.List;
36
35
  import java.util.ListIterator;
37
- import java.util.Map;
38
36
  import java.util.Queue;
39
37
 
40
38
  /**
@@ -57,9 +55,9 @@ import java.util.Queue;
57
55
  private final SparseArray<AnimatedNode> mAnimatedNodes = new SparseArray<>();
58
56
  private final SparseArray<AnimationDriver> mActiveAnimations = new SparseArray<>();
59
57
  private final SparseArray<AnimatedNode> mUpdatedNodes = new SparseArray<>();
60
- // Mapping of a view tag and an event name to a list of event animation drivers. 99% of the time
61
- // there will be only one driver per mapping so all code code should be optimized around that.
62
- private final Map<String, List<EventAnimationDriver>> mEventDrivers = new HashMap<>();
58
+ // List of event animation drivers for an event on view.
59
+ // There may be multiple drivers for the same event and view.
60
+ private final List<EventAnimationDriver> mEventDrivers = new ArrayList<>();
63
61
  private final ReactApplicationContext mReactApplicationContext;
64
62
  private int mAnimatedGraphBFSColor = 0;
65
63
  // Used to avoid allocating a new array on every frame in `runUpdates` and `onEventDispatch`.
@@ -76,36 +74,27 @@ import java.util.Queue;
76
74
 
77
75
  /**
78
76
  * Initialize event listeners for Fabric UIManager or non-Fabric UIManager, exactly once. Once
79
- * Fabric is the only UIManager, this logic can be simplified. This is only called on the JS
80
- * thread.
77
+ * Fabric is the only UIManager, this logic can be simplified. This is expected to only be called
78
+ * from the native module thread.
81
79
  *
82
80
  * @param uiManagerType
83
81
  */
84
- @UiThread
85
82
  public void initializeEventListenerForUIManagerType(@UIManagerType final int uiManagerType) {
86
- if ((uiManagerType == UIManagerType.FABRIC && mEventListenerInitializedForFabric)
87
- || (uiManagerType == UIManagerType.DEFAULT && mEventListenerInitializedForNonFabric)) {
83
+ if (uiManagerType == UIManagerType.FABRIC
84
+ ? mEventListenerInitializedForFabric
85
+ : mEventListenerInitializedForNonFabric) {
88
86
  return;
89
87
  }
90
88
 
91
- final NativeAnimatedNodesManager self = this;
92
- mReactApplicationContext.runOnUiQueueThread(
93
- new Runnable() {
94
- @Override
95
- public void run() {
96
- UIManager uiManager =
97
- UIManagerHelper.getUIManager(mReactApplicationContext, uiManagerType);
98
- if (uiManager != null) {
99
- uiManager.<EventDispatcher>getEventDispatcher().addListener(self);
100
-
101
- if (uiManagerType == UIManagerType.FABRIC) {
102
- mEventListenerInitializedForFabric = true;
103
- } else {
104
- mEventListenerInitializedForNonFabric = true;
105
- }
106
- }
107
- }
108
- });
89
+ UIManager uiManager = UIManagerHelper.getUIManager(mReactApplicationContext, uiManagerType);
90
+ if (uiManager != null) {
91
+ uiManager.<EventDispatcher>getEventDispatcher().addListener(this);
92
+ if (uiManagerType == UIManagerType.FABRIC) {
93
+ mEventListenerInitializedForFabric = true;
94
+ } else {
95
+ mEventListenerInitializedForNonFabric = true;
96
+ }
97
+ }
109
98
  }
110
99
 
111
100
  /*package*/ @Nullable
@@ -471,7 +460,8 @@ import java.util.Queue;
471
460
  }
472
461
 
473
462
  @UiThread
474
- public void addAnimatedEventToView(int viewTag, String eventName, ReadableMap eventMapping) {
463
+ public void addAnimatedEventToView(
464
+ int viewTag, String eventHandlerName, ReadableMap eventMapping) {
475
465
  int nodeTag = eventMapping.getInt("animatedValueTag");
476
466
  AnimatedNode node = mAnimatedNodes.get(nodeTag);
477
467
  if (node == null) {
@@ -482,8 +472,8 @@ import java.util.Queue;
482
472
  throw new JSApplicationIllegalArgumentException(
483
473
  "addAnimatedEventToView: Animated node on view ["
484
474
  + viewTag
485
- + "] connected to event ("
486
- + eventName
475
+ + "] connected to event handler ("
476
+ + eventHandlerName
487
477
  + ") should be of type "
488
478
  + ValueAnimatedNode.class.getName());
489
479
  }
@@ -494,37 +484,31 @@ import java.util.Queue;
494
484
  pathList.add(path.getString(i));
495
485
  }
496
486
 
497
- EventAnimationDriver event = new EventAnimationDriver(pathList, (ValueAnimatedNode) node);
498
- String key = viewTag + eventName;
499
- if (mEventDrivers.containsKey(key)) {
500
- mEventDrivers.get(key).add(event);
501
- } else {
502
- List<EventAnimationDriver> drivers = new ArrayList<>(1);
503
- drivers.add(event);
504
- mEventDrivers.put(key, drivers);
505
- }
487
+ String eventName = normalizeEventName(eventHandlerName);
488
+
489
+ EventAnimationDriver eventDriver =
490
+ new EventAnimationDriver(eventName, viewTag, pathList, (ValueAnimatedNode) node);
491
+ mEventDrivers.add(eventDriver);
506
492
  }
507
493
 
508
494
  @UiThread
509
- public void removeAnimatedEventFromView(int viewTag, String eventName, int animatedValueTag) {
510
- String key = viewTag + eventName;
511
- if (mEventDrivers.containsKey(key)) {
512
- List<EventAnimationDriver> driversForKey = mEventDrivers.get(key);
513
- if (driversForKey.size() == 1) {
514
- mEventDrivers.remove(viewTag + eventName);
515
- } else {
516
- ListIterator<EventAnimationDriver> it = driversForKey.listIterator();
517
- while (it.hasNext()) {
518
- if (it.next().mValueNode.mTag == animatedValueTag) {
519
- it.remove();
520
- break;
521
- }
522
- }
495
+ public void removeAnimatedEventFromView(
496
+ int viewTag, String eventHandlerName, int animatedValueTag) {
497
+
498
+ String eventName = normalizeEventName(eventHandlerName);
499
+
500
+ ListIterator<EventAnimationDriver> it = mEventDrivers.listIterator();
501
+ while (it.hasNext()) {
502
+ EventAnimationDriver driver = it.next();
503
+ if (eventName.equals(driver.mEventName)
504
+ && viewTag == driver.mViewTag
505
+ && animatedValueTag == driver.mValueNode.mTag) {
506
+ it.remove();
507
+ break;
523
508
  }
524
509
  }
525
510
  }
526
511
 
527
- @UiThread
528
512
  @Override
529
513
  public void onEventDispatch(final Event event) {
530
514
  // Events can be dispatched from any thread so we have to make sure handleEvent is run from the
@@ -556,18 +540,19 @@ import java.util.Queue;
556
540
  if (uiManager == null) {
557
541
  return;
558
542
  }
559
- String eventName = uiManager.resolveCustomDirectEventName(event.getEventName());
560
- if (eventName == null) {
561
- eventName = "";
562
- }
563
543
 
564
- List<EventAnimationDriver> driversForKey = mEventDrivers.get(event.getViewTag() + eventName);
565
- if (driversForKey != null) {
566
- for (EventAnimationDriver driver : driversForKey) {
544
+ boolean foundAtLeastOneDriver = false;
545
+ Event.EventAnimationDriverMatchSpec matchSpec = event.getEventAnimationDriverMatchSpec();
546
+ for (EventAnimationDriver driver : mEventDrivers) {
547
+ if (matchSpec.match(driver.mViewTag, driver.mEventName)) {
548
+ foundAtLeastOneDriver = true;
567
549
  stopAnimationsForNode(driver.mValueNode);
568
550
  event.dispatch(driver);
569
551
  mRunUpdateNodeList.add(driver.mValueNode);
570
552
  }
553
+ }
554
+
555
+ if (foundAtLeastOneDriver) {
571
556
  updateNodes(mRunUpdateNodeList);
572
557
  mRunUpdateNodeList.clear();
573
558
  }
@@ -782,4 +767,14 @@ import java.util.Queue;
782
767
  mWarnedAboutGraphTraversal = false;
783
768
  }
784
769
  }
770
+
771
+ private String normalizeEventName(String eventHandlerName) {
772
+ // Fabric UIManager also makes this assumption
773
+ String eventName = eventHandlerName;
774
+ if (eventHandlerName.startsWith("on")) {
775
+ eventName = "top" + eventHandlerName.substring(2);
776
+ }
777
+
778
+ return eventName;
779
+ }
785
780
  }
@@ -63,6 +63,18 @@ public class ReactAndroidHWInputDeviceHelper {
63
63
  .put(KeyEvent.KEYCODE_CHANNEL_UP, "channelUp")
64
64
  .build();
65
65
 
66
+ private static final Map<Integer, String> KEY_EVENTS_LONG_PRESS_ACTIONS =
67
+ MapBuilder.<Integer, String>builder()
68
+ .put(KeyEvent.KEYCODE_DPAD_CENTER, "longSelect")
69
+ .put(KeyEvent.KEYCODE_ENTER, "longSelect")
70
+ .put(KeyEvent.KEYCODE_NUMPAD_ENTER, "longSelect")
71
+ .put(KeyEvent.KEYCODE_BUTTON_SELECT, "longSelect")
72
+ .put(KeyEvent.KEYCODE_DPAD_UP, "longUp")
73
+ .put(KeyEvent.KEYCODE_DPAD_RIGHT, "longRight")
74
+ .put(KeyEvent.KEYCODE_DPAD_DOWN, "longDown")
75
+ .put(KeyEvent.KEYCODE_DPAD_LEFT, "longLeft")
76
+ .build();
77
+
66
78
  /**
67
79
  * We keep a reference to the last focused view id so that we can send it as a target for key
68
80
  * events and be able to send a blur event when focus changes.
@@ -81,21 +93,33 @@ public class ReactAndroidHWInputDeviceHelper {
81
93
  eventKeyCode == KeyEvent.KEYCODE_ENTER;
82
94
  }
83
95
 
96
+ /** Only the up/right/down/left arrows. The dpad center button is not included */
97
+ private boolean isDPadEvent(int eventKeyCode) {
98
+ return eventKeyCode == KeyEvent.KEYCODE_DPAD_UP ||
99
+ eventKeyCode == KeyEvent.KEYCODE_DPAD_RIGHT ||
100
+ eventKeyCode == KeyEvent.KEYCODE_DPAD_DOWN ||
101
+ eventKeyCode == KeyEvent.KEYCODE_DPAD_LEFT;
102
+ }
103
+
84
104
  /** Called from {@link com.facebook.react.ReactRootView}. This is the main place the key events are handled. */
85
105
  public void handleKeyEvent(KeyEvent ev, ReactContext context) {
86
106
  int eventKeyCode = ev.getKeyCode();
87
107
  int eventKeyAction = ev.getAction();
88
108
  long time = SystemClock.uptimeMillis();
109
+ boolean isSelectOrDPadEvent = isDPadEvent(eventKeyCode) || isSelectEvent(eventKeyCode);
89
110
 
90
111
  // Simple implementation of long press detection
91
112
  if ((eventKeyAction == KeyEvent.ACTION_DOWN)
92
- && isSelectEvent(eventKeyCode) && mLastKeyDownTime == 0) {
113
+ && isSelectOrDPadEvent && mLastKeyDownTime == 0) {
93
114
  mLastKeyDownTime = time;
94
115
  }
116
+
95
117
  if (shouldDispatchEvent(eventKeyCode, eventKeyAction)) {
96
118
  long delta = time - mLastKeyDownTime;
97
- if (isSelectEvent(eventKeyCode) && (delta > mPressedDelta)) {
98
- dispatchEvent("longSelect", mLastFocusedViewId, eventKeyAction, context);
119
+ boolean isLongPress = delta > mPressedDelta;
120
+
121
+ if(isLongPress && isSelectOrDPadEvent){
122
+ dispatchEvent(KEY_EVENTS_LONG_PRESS_ACTIONS.get(eventKeyCode), mLastFocusedViewId, eventKeyAction, context);
99
123
  } else {
100
124
  dispatchEvent(KEY_EVENTS_ACTIONS.get(eventKeyCode), mLastFocusedViewId, eventKeyAction, context);
101
125
  }
@@ -18,5 +18,5 @@ public class ReactNativeVersion {
18
18
  "major", 0,
19
19
  "minor", 69,
20
20
  "patch", 6,
21
- "prerelease", "1");
21
+ "prerelease", "3");
22
22
  }
@@ -39,6 +39,7 @@ public abstract class Event<T extends Event> {
39
39
  private int mViewTag;
40
40
  private long mTimestampMs;
41
41
  private int mUniqueID = sUniqueID++;
42
+ private @Nullable EventAnimationDriverMatchSpec mEventAnimationDriverMatchSpec;
42
43
 
43
44
  protected Event() {}
44
45
 
@@ -156,6 +157,19 @@ public abstract class Event<T extends Event> {
156
157
  /** @return the name of this event as registered in JS */
157
158
  public abstract String getEventName();
158
159
 
160
+ public EventAnimationDriverMatchSpec getEventAnimationDriverMatchSpec() {
161
+ if (mEventAnimationDriverMatchSpec == null) {
162
+ mEventAnimationDriverMatchSpec =
163
+ new EventAnimationDriverMatchSpec() {
164
+ @Override
165
+ public boolean match(int viewTag, String eventName) {
166
+ return viewTag == getViewTag() && eventName.equals(getEventName());
167
+ };
168
+ };
169
+ }
170
+ return mEventAnimationDriverMatchSpec;
171
+ }
172
+
159
173
  /**
160
174
  * Dispatch this event to JS using the given event emitter. Compatible with old and new renderer.
161
175
  * Instead of using this or dispatchModern, it is recommended that you simply override
@@ -216,4 +230,8 @@ public abstract class Event<T extends Event> {
216
230
  }
217
231
  dispatch(rctEventEmitter);
218
232
  }
233
+
234
+ public interface EventAnimationDriverMatchSpec {
235
+ boolean match(int viewTag, String eventName);
236
+ }
219
237
  }