@react-native-oh/react-native-harmony 0.72.82 → 0.77.18-1

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 (1069) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE-Meta +21 -0
  3. package/Libraries/ActionSheetIOS/ActionSheetIOS.d.ts +87 -0
  4. package/Libraries/ActionSheetIOS/ActionSheetIOS.js +175 -0
  5. package/Libraries/ActionSheetIOS/NativeActionSheetManager.js +13 -0
  6. package/Libraries/ActionSheetIOS/React-RCTActionSheet.podspec +34 -0
  7. package/Libraries/Alert/Alert.d.ts +91 -0
  8. package/Libraries/Alert/Alert.js +181 -0
  9. package/Libraries/Alert/NativeAlertManager.js +13 -0
  10. package/Libraries/Alert/RCTAlertManager.android.js +27 -0
  11. package/Libraries/Alert/RCTAlertManager.ios.js +25 -0
  12. package/Libraries/Alert/RCTAlertManager.js.flow +18 -0
  13. package/Libraries/Alert/delegates/AlertDelegate.harmony.ts +84 -0
  14. package/Libraries/Alert/delegates/AlertDelegate.ts +33 -0
  15. package/Libraries/Alert/{AlertManager.ts → delegates/AlertManager.harmony.ts} +10 -4
  16. package/Libraries/Alert/delegates/BaseAlertDelegate.ts +37 -0
  17. package/Libraries/Animated/Animated.d.ts +626 -0
  18. package/Libraries/Animated/Animated.js +48 -0
  19. package/Libraries/Animated/AnimatedEvent.js +256 -0
  20. package/Libraries/Animated/AnimatedImplementation.js +754 -0
  21. package/Libraries/Animated/AnimatedMock.js +195 -0
  22. package/Libraries/Animated/AnimatedPlatformConfig.js +13 -0
  23. package/Libraries/Animated/AnimatedWeb.js +26 -0
  24. package/Libraries/Animated/Easing.d.ts +37 -0
  25. package/Libraries/Animated/Easing.js +250 -0
  26. package/Libraries/Animated/NativeAnimatedAllowlist.js +122 -0
  27. package/Libraries/Animated/NativeAnimatedModule.js +13 -0
  28. package/Libraries/Animated/NativeAnimatedTurboModule.js +13 -0
  29. package/Libraries/Animated/SpringConfig.js +98 -0
  30. package/Libraries/Animated/animations/Animation.js +171 -0
  31. package/Libraries/Animated/animations/DecayAnimation.js +121 -0
  32. package/Libraries/Animated/animations/SpringAnimation.js +372 -0
  33. package/Libraries/Animated/animations/TimingAnimation.js +173 -0
  34. package/Libraries/Animated/bezier.js +164 -0
  35. package/Libraries/Animated/components/AnimatedFlatList.js +20 -0
  36. package/Libraries/Animated/components/AnimatedImage.js +22 -0
  37. package/Libraries/Animated/components/AnimatedScrollView.js +137 -0
  38. package/Libraries/Animated/components/AnimatedSectionList.js +22 -0
  39. package/Libraries/Animated/components/AnimatedText.js +22 -0
  40. package/Libraries/Animated/components/AnimatedView.js +20 -0
  41. package/Libraries/Animated/createAnimatedComponent.js +101 -0
  42. package/Libraries/Animated/nodes/AnimatedAddition.js +64 -0
  43. package/Libraries/Animated/nodes/AnimatedColor.js +320 -0
  44. package/Libraries/Animated/nodes/AnimatedDiffClamp.js +72 -0
  45. package/Libraries/Animated/nodes/AnimatedDivision.js +80 -0
  46. package/Libraries/Animated/nodes/AnimatedInterpolation.js +416 -0
  47. package/Libraries/Animated/nodes/AnimatedModulo.js +63 -0
  48. package/Libraries/Animated/nodes/AnimatedMultiplication.js +63 -0
  49. package/Libraries/Animated/nodes/AnimatedNode.js +200 -0
  50. package/Libraries/Animated/nodes/AnimatedObject.js +162 -0
  51. package/Libraries/Animated/nodes/AnimatedProps.js +281 -0
  52. package/Libraries/Animated/nodes/AnimatedStyle.js +251 -0
  53. package/Libraries/Animated/nodes/AnimatedSubtraction.js +64 -0
  54. package/Libraries/Animated/nodes/AnimatedTracking.js +100 -0
  55. package/Libraries/Animated/nodes/AnimatedTransform.js +198 -0
  56. package/Libraries/Animated/nodes/AnimatedValue.js +303 -0
  57. package/Libraries/Animated/nodes/AnimatedValueXY.js +236 -0
  58. package/Libraries/Animated/nodes/AnimatedWithChildren.js +85 -0
  59. package/Libraries/Animated/shouldUseTurboAnimatedModule.harmony.ts +10 -0
  60. package/Libraries/Animated/shouldUseTurboAnimatedModule.js +17 -0
  61. package/Libraries/Animated/useAnimatedProps.js +389 -0
  62. package/Libraries/Animated/useAnimatedValue.d.ts +15 -0
  63. package/Libraries/Animated/useAnimatedValue.js +25 -0
  64. package/Libraries/AppDelegate/RCTAppDelegate+Protected.h +16 -0
  65. package/Libraries/AppDelegate/RCTAppDelegate.h +122 -0
  66. package/Libraries/AppDelegate/RCTAppDelegate.mm +330 -0
  67. package/Libraries/AppDelegate/RCTAppSetupUtils.h +59 -0
  68. package/Libraries/AppDelegate/RCTAppSetupUtils.mm +167 -0
  69. package/Libraries/AppDelegate/RCTArchConfiguratorProtocol.h +32 -0
  70. package/Libraries/AppDelegate/RCTDependencyProvider.h +26 -0
  71. package/Libraries/AppDelegate/RCTRootViewFactory.h +198 -0
  72. package/Libraries/AppDelegate/RCTRootViewFactory.mm +310 -0
  73. package/Libraries/AppDelegate/RCTUIConfiguratorProtocol.h +56 -0
  74. package/Libraries/AppDelegate/React-RCTAppDelegate.podspec +99 -0
  75. package/Libraries/AppState/AppState.d.ts +58 -0
  76. package/Libraries/AppState/AppState.js +128 -0
  77. package/Libraries/AppState/NativeAppState.js +13 -0
  78. package/Libraries/BatchedBridge/BatchedBridge.js +28 -0
  79. package/Libraries/BatchedBridge/MessageQueue.js +492 -0
  80. package/Libraries/BatchedBridge/NativeModules.d.ts +25 -0
  81. package/Libraries/BatchedBridge/NativeModules.js +212 -0
  82. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestConfig.js +38 -0
  83. package/Libraries/BatchedBridge/__mocks__/MessageQueueTestModule.js +22 -0
  84. package/Libraries/Blob/Blob.js +158 -0
  85. package/Libraries/Blob/BlobManager.js +179 -0
  86. package/Libraries/Blob/BlobRegistry.js +43 -0
  87. package/Libraries/Blob/BlobTypes.js +30 -0
  88. package/Libraries/Blob/File.js +55 -0
  89. package/Libraries/Blob/FileReader.js +186 -0
  90. package/Libraries/Blob/NativeBlobModule.js +13 -0
  91. package/Libraries/Blob/NativeFileReaderModule.js +13 -0
  92. package/Libraries/Blob/RCTBlobCollector.h +26 -0
  93. package/Libraries/Blob/RCTBlobCollector.mm +57 -0
  94. package/Libraries/Blob/RCTBlobManager.h +35 -0
  95. package/Libraries/Blob/RCTBlobManager.mm +358 -0
  96. package/Libraries/Blob/RCTBlobPlugins.h +41 -0
  97. package/Libraries/Blob/RCTBlobPlugins.mm +34 -0
  98. package/Libraries/Blob/RCTFileReaderModule.h +12 -0
  99. package/Libraries/Blob/RCTFileReaderModule.mm +96 -0
  100. package/Libraries/Blob/React-RCTBlob.podspec +68 -0
  101. package/Libraries/Blob/URL.js +173 -0
  102. package/Libraries/Blob/URLSearchParams.js +71 -0
  103. package/Libraries/Blob/URLSearchParams.js.flow +23 -0
  104. package/Libraries/Blob/__mocks__/BlobModule.js +16 -0
  105. package/Libraries/Blob/__mocks__/FileReaderModule.js +20 -0
  106. package/Libraries/BugReporting/BugReporting.js +140 -0
  107. package/Libraries/BugReporting/NativeBugReporting.js +13 -0
  108. package/Libraries/BugReporting/dumpReactTree.js +151 -0
  109. package/Libraries/BugReporting/getReactData.js +187 -0
  110. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.d.ts +173 -0
  111. package/Libraries/Components/AccessibilityInfo/{AccessibilityInfo.harmony.js → AccessibilityInfo.js} +142 -69
  112. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityInfo.js +13 -0
  113. package/Libraries/Components/AccessibilityInfo/NativeAccessibilityManager.js +13 -0
  114. package/Libraries/Components/AccessibilityInfo/delegates/AccessibilityInfoDelegate.harmony.ts +44 -0
  115. package/Libraries/Components/AccessibilityInfo/delegates/AccessibilityInfoDelegate.ts +28 -0
  116. package/Libraries/Components/AccessibilityInfo/delegates/BaseAccessibilityInfoDelegate.ts +69 -0
  117. package/Libraries/Components/AccessibilityInfo/{NativeAccessibilityInfoHarmony.ts → delegates/NativeAccessibilityInfoHarmony.harmony.ts} +9 -2
  118. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.android.js +36 -0
  119. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.ios.js +26 -0
  120. package/Libraries/Components/AccessibilityInfo/legacySendAccessibilityEvent.js.flow +20 -0
  121. package/Libraries/Components/ActivityIndicator/ActivityIndicator.d.ts +86 -0
  122. package/Libraries/Components/ActivityIndicator/ActivityIndicator.js +177 -0
  123. package/Libraries/Components/ActivityIndicator/ActivityIndicatorViewNativeComponent.js +13 -0
  124. package/Libraries/Components/Button.d.ts +42 -0
  125. package/Libraries/Components/{Button/Button.harmony.js → Button.js} +132 -133
  126. package/Libraries/Components/Clipboard/Clipboard.d.ts +28 -0
  127. package/Libraries/Components/Clipboard/Clipboard.js +40 -0
  128. package/Libraries/Components/Clipboard/NativeClipboard.js +13 -0
  129. package/Libraries/Components/DrawerAndroid/AndroidDrawerLayoutNativeComponent.js +13 -0
  130. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +394 -0
  131. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.d.ts +141 -0
  132. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.js +14 -0
  133. package/Libraries/Components/Keyboard/Keyboard.d.ts +109 -0
  134. package/Libraries/Components/Keyboard/Keyboard.js +205 -0
  135. package/Libraries/Components/Keyboard/KeyboardAvoidingView.d.ts +46 -0
  136. package/Libraries/Components/Keyboard/{KeyboardAvoidingView.harmony.js → KeyboardAvoidingView.js} +72 -23
  137. package/Libraries/Components/Keyboard/NativeKeyboardObserver.js +13 -0
  138. package/Libraries/Components/Keyboard/delegates/BaseKeyboardAvoidingViewDelegate.ts +28 -0
  139. package/Libraries/Components/Keyboard/delegates/KeyboardAvoidingViewDelegate.harmony.ts +42 -0
  140. package/Libraries/Components/Keyboard/delegates/KeyboardAvoidingViewDelegate.ts +6 -0
  141. package/Libraries/Components/Pressable/Pressable.d.ts +167 -0
  142. package/Libraries/Components/Pressable/Pressable.js +369 -0
  143. package/Libraries/Components/Pressable/useAndroidRippleForView.js +109 -0
  144. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js +113 -0
  145. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.d.ts +83 -0
  146. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js +20 -0
  147. package/Libraries/Components/ProgressBarAndroid/ProgressBarAndroidNativeComponent.js +13 -0
  148. package/Libraries/Components/RefreshControl/AndroidSwipeRefreshLayoutNativeComponent.js +13 -0
  149. package/Libraries/Components/RefreshControl/PullToRefreshViewNativeComponent.js +13 -0
  150. package/Libraries/Components/RefreshControl/RefreshControl.d.ts +87 -0
  151. package/Libraries/Components/RefreshControl/{RefreshControl.harmony.js → RefreshControl.js} +62 -53
  152. package/Libraries/Components/RefreshControl/__mocks__/RefreshControlMock.js +31 -0
  153. package/Libraries/Components/RefreshControl/delegates/BaseRefreshControlDelegate.ts +31 -0
  154. package/Libraries/Components/RefreshControl/delegates/RefreshControlDelegate.harmony.tsx +29 -0
  155. package/Libraries/Components/RefreshControl/delegates/RefreshControlDelegate.ts +21 -0
  156. package/Libraries/Components/SafeAreaView/RCTSafeAreaViewNativeComponent.js +13 -0
  157. package/Libraries/Components/SafeAreaView/SafeAreaView.d.ts +24 -0
  158. package/Libraries/Components/SafeAreaView/SafeAreaView.harmony.tsx +93 -31
  159. package/Libraries/Components/SafeAreaView/SafeAreaView.js +34 -0
  160. package/Libraries/Components/ScrollView/AndroidHorizontalScrollContentViewNativeComponent.js +13 -0
  161. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +73 -0
  162. package/Libraries/Components/ScrollView/ScrollContentViewNativeComponent.js +32 -0
  163. package/Libraries/Components/ScrollView/ScrollView.d.ts +910 -0
  164. package/Libraries/Components/ScrollView/{ScrollView.harmony.js → ScrollView.js} +342 -357
  165. package/Libraries/Components/ScrollView/ScrollViewCommands.js +52 -0
  166. package/Libraries/Components/ScrollView/ScrollViewContext.js +24 -0
  167. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +31 -0
  168. package/Libraries/Components/ScrollView/ScrollViewNativeComponentType.js +81 -0
  169. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +310 -0
  170. package/Libraries/Components/ScrollView/delegates/BaseScrollViewDelegate.ts +36 -0
  171. package/Libraries/Components/ScrollView/delegates/BaseScrollViewNativeComponentDelegate.ts +12 -0
  172. package/Libraries/Components/ScrollView/delegates/ScrollViewDelegate.harmony.tsx +41 -0
  173. package/Libraries/Components/ScrollView/delegates/ScrollViewDelegate.ts +23 -0
  174. package/Libraries/Components/ScrollView/delegates/ScrollViewNativeComponentDelegate.harmony.ts +89 -0
  175. package/Libraries/Components/ScrollView/delegates/ScrollViewNativeComponentDelegate.ts +14 -0
  176. package/Libraries/Components/ScrollView/delegates/types.ts +1 -0
  177. package/Libraries/Components/ScrollView/processDecelerationRate.harmony.ts +19 -0
  178. package/Libraries/Components/ScrollView/{processDecelerationRate.harmony.js → processDecelerationRate.js} +12 -6
  179. package/Libraries/Components/Sound/NativeSoundManager.js +13 -0
  180. package/Libraries/Components/Sound/SoundManager.js +21 -0
  181. package/Libraries/Components/StaticRenderer.js +37 -0
  182. package/Libraries/Components/StatusBar/NativeStatusBarManagerAndroid.js +13 -0
  183. package/Libraries/Components/StatusBar/NativeStatusBarManagerIOS.js +13 -0
  184. package/Libraries/Components/StatusBar/StatusBar.d.ts +138 -0
  185. package/Libraries/Components/StatusBar/{StatusBar.harmony.js → StatusBar.js} +124 -91
  186. package/Libraries/Components/StatusBar/delegates/BaseStatusBarDelegate.ts +25 -0
  187. package/Libraries/Components/StatusBar/delegates/NativeStatusBarManagerHarmony.harmony.ts +53 -0
  188. package/Libraries/Components/StatusBar/delegates/StatusBarDelegate.harmony.ts +83 -0
  189. package/Libraries/Components/StatusBar/delegates/StatusBarDelegate.ts +44 -0
  190. package/Libraries/Components/Switch/AndroidSwitchNativeComponent.js +13 -0
  191. package/Libraries/Components/Switch/Switch.d.ts +115 -0
  192. package/Libraries/Components/Switch/Switch.js +257 -0
  193. package/Libraries/Components/Switch/SwitchNativeComponent.js +13 -0
  194. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +751 -0
  195. package/Libraries/Components/TextInput/InputAccessoryView.d.ts +34 -0
  196. package/Libraries/Components/TextInput/InputAccessoryView.js +123 -0
  197. package/Libraries/Components/TextInput/RCTInputAccessoryViewNativeComponent.js +13 -0
  198. package/Libraries/Components/TextInput/RCTMultilineTextInputNativeComponent.js +45 -0
  199. package/Libraries/Components/TextInput/RCTSingelineTextInputNativeComponent.js +43 -0
  200. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +168 -0
  201. package/Libraries/Components/TextInput/TextInput.d.ts +1007 -0
  202. package/Libraries/Components/TextInput/TextInput.flow.js +1109 -0
  203. package/Libraries/Components/TextInput/{TextInput.harmony.js → TextInput.js} +568 -336
  204. package/Libraries/Components/TextInput/TextInputNativeCommands.js +29 -0
  205. package/Libraries/Components/TextInput/TextInputState.js +216 -0
  206. package/Libraries/Components/TextInput/delegates/BaseTextInputDelegate.ts +39 -0
  207. package/Libraries/Components/TextInput/delegates/BaseTextInputStateDelegate.ts +12 -0
  208. package/Libraries/Components/TextInput/delegates/TextInputDelegate.harmony.tsx +98 -0
  209. package/Libraries/Components/TextInput/delegates/TextInputDelegate.ts +40 -0
  210. package/Libraries/Components/TextInput/delegates/TextInputStateDelegate.harmony.tsx +20 -0
  211. package/Libraries/Components/TextInput/delegates/TextInputStateDelegate.ts +15 -0
  212. package/Libraries/Components/ToastAndroid/NativeToastAndroid.js +13 -0
  213. package/Libraries/Components/ToastAndroid/ToastAndroid.android.js +74 -0
  214. package/Libraries/Components/ToastAndroid/ToastAndroid.d.ts +47 -0
  215. package/Libraries/Components/ToastAndroid/ToastAndroid.js +45 -0
  216. package/Libraries/Components/Touchable/BoundingDimensions.js +53 -0
  217. package/Libraries/Components/Touchable/PooledClass.js +133 -0
  218. package/Libraries/Components/Touchable/Position.js +40 -0
  219. package/Libraries/Components/Touchable/Touchable.d.ts +90 -0
  220. package/Libraries/Components/Touchable/Touchable.js +973 -0
  221. package/Libraries/Components/Touchable/TouchableBounce.js +222 -0
  222. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +62 -0
  223. package/Libraries/Components/Touchable/{TouchableHighlight.harmony.js → TouchableHighlight.js} +49 -47
  224. package/Libraries/Components/Touchable/TouchableNativeFeedback.d.ts +114 -0
  225. package/Libraries/Components/Touchable/{TouchableNativeFeedback.harmony.js → TouchableNativeFeedback.js} +79 -73
  226. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +81 -0
  227. package/Libraries/Components/Touchable/TouchableOpacity.js +339 -0
  228. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +151 -0
  229. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +238 -0
  230. package/Libraries/Components/Touchable/delegates/BaseTouchableHighlightDelegate.ts +13 -0
  231. package/Libraries/Components/Touchable/delegates/BaseTouchableNativeFeedbackDelegate.ts +13 -0
  232. package/Libraries/Components/Touchable/delegates/BaseTouchableWithoutFeedbackDelegate.ts +13 -0
  233. package/Libraries/Components/Touchable/delegates/TouchableHighlightDelegate.harmony.ts +14 -0
  234. package/Libraries/Components/Touchable/delegates/TouchableHighlightDelegate.ts +6 -0
  235. package/Libraries/Components/Touchable/delegates/TouchableNativeFeedbackDelegate.harmony.ts +14 -0
  236. package/Libraries/Components/Touchable/delegates/TouchableNativeFeedbackDelegate.ts +6 -0
  237. package/Libraries/Components/Touchable/delegates/TouchableWithoutFeedbackDelegate.harmony.ts +14 -0
  238. package/Libraries/Components/Touchable/delegates/TouchableWithoutFeedbackDelegate.ts +6 -0
  239. package/Libraries/Components/UnimplementedViews/UnimplementedNativeViewNativeComponent.js +13 -0
  240. package/Libraries/Components/UnimplementedViews/UnimplementedView.js +41 -0
  241. package/Libraries/Components/View/ReactNativeStyleAttributes.js +218 -0
  242. package/Libraries/Components/View/ReactNativeViewAttributes.js +60 -0
  243. package/Libraries/Components/View/View.d.ts +29 -0
  244. package/Libraries/Components/View/{View.harmony.js → View.js} +37 -53
  245. package/Libraries/Components/View/ViewAccessibility.d.ts +404 -0
  246. package/Libraries/Components/View/ViewAccessibility.js +167 -0
  247. package/Libraries/Components/View/ViewNativeComponent.js +36 -0
  248. package/Libraries/Components/View/ViewPropTypes.d.ts +221 -0
  249. package/Libraries/Components/View/ViewPropTypes.js +656 -0
  250. package/Libraries/Components/delegates/BaseButtonDelegate.ts +15 -0
  251. package/Libraries/Components/delegates/ButtonDelegate.harmony.ts +41 -0
  252. package/Libraries/Components/delegates/ButtonDelegate.ts +27 -0
  253. package/Libraries/Core/Devtools/getDevServer.js +43 -0
  254. package/Libraries/Core/Devtools/loadBundleFromServer.js +152 -0
  255. package/Libraries/Core/Devtools/openFileInEditor.js +26 -0
  256. package/Libraries/Core/Devtools/openURLInBrowser.js +23 -0
  257. package/Libraries/Core/Devtools/parseErrorStack.js +59 -0
  258. package/Libraries/Core/Devtools/parseHermesStack.js +147 -0
  259. package/Libraries/Core/Devtools/symbolicateStackTrace.js +50 -0
  260. package/Libraries/Core/ExceptionsManager.js +282 -0
  261. package/Libraries/Core/ExtendedError.js +33 -0
  262. package/Libraries/Core/InitializeCore.js +60 -0
  263. package/Libraries/Core/NativeExceptionsManager.js +13 -0
  264. package/Libraries/Core/RawEventEmitter.js +39 -0
  265. package/Libraries/Core/ReactFiberErrorDialog.js +65 -0
  266. package/Libraries/Core/ReactNativeVersion.js +23 -0
  267. package/Libraries/Core/ReactNativeVersionCheck.js +52 -0
  268. package/Libraries/Core/SegmentFetcher/NativeSegmentFetcher.js +13 -0
  269. package/Libraries/Core/Timers/JSTimers.js +487 -0
  270. package/Libraries/Core/Timers/NativeTiming.js +13 -0
  271. package/Libraries/Core/Timers/immediateShim.js +68 -0
  272. package/Libraries/Core/Timers/queueMicrotask.js +41 -0
  273. package/Libraries/Core/__mocks__/ErrorUtils.js +33 -0
  274. package/Libraries/Core/__mocks__/NativeExceptionsManager.js +19 -0
  275. package/Libraries/Core/checkNativeVersion.js +18 -0
  276. package/Libraries/Core/polyfillPromise.js +38 -0
  277. package/Libraries/Core/registerCallableModule.d.ts +16 -0
  278. package/Libraries/Core/registerCallableModule.js +42 -0
  279. package/Libraries/Core/setUpAlert.js +23 -0
  280. package/Libraries/Core/setUpBatchedBridge.js +50 -0
  281. package/Libraries/Core/setUpDeveloperTools.js +82 -0
  282. package/Libraries/Core/setUpErrorHandling.js +35 -0
  283. package/Libraries/Core/setUpGlobals.js +36 -0
  284. package/Libraries/Core/setUpNavigator.js +22 -0
  285. package/Libraries/Core/setUpPerformance.js +31 -0
  286. package/Libraries/Core/setUpPlatform.harmony.js +30 -0
  287. package/Libraries/Core/setUpPlatform.js +1 -0
  288. package/Libraries/Core/setUpReactDevTools.js +252 -0
  289. package/Libraries/Core/setUpReactRefresh.js +47 -0
  290. package/Libraries/Core/setUpRegeneratorRuntime.js +46 -0
  291. package/Libraries/Core/setUpSegmentFetcher.js +53 -0
  292. package/Libraries/Core/setUpTimers.js +125 -0
  293. package/Libraries/Core/setUpXHR.js +41 -0
  294. package/Libraries/Debugging/DebuggingOverlay.js +110 -0
  295. package/Libraries/Debugging/DebuggingOverlayNativeComponent.js +13 -0
  296. package/Libraries/Debugging/DebuggingOverlayRegistry.js +513 -0
  297. package/Libraries/Debugging/useSubscribeToDebuggingOverlayRegistry.js +32 -0
  298. package/Libraries/EventEmitter/NativeEventEmitter.d.ts +63 -0
  299. package/Libraries/EventEmitter/NativeEventEmitter.js +122 -0
  300. package/Libraries/EventEmitter/RCTDeviceEventEmitter.d.ts +29 -0
  301. package/Libraries/EventEmitter/RCTDeviceEventEmitter.js +43 -0
  302. package/Libraries/EventEmitter/RCTEventEmitter.js +25 -0
  303. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.d.ts +32 -0
  304. package/Libraries/EventEmitter/RCTNativeAppEventEmitter.js +18 -0
  305. package/Libraries/EventEmitter/__mocks__/NativeEventEmitter.js +48 -0
  306. package/Libraries/Events/CustomEvent.js +32 -0
  307. package/Libraries/Events/EventPolyfill.js +239 -0
  308. package/Libraries/FBLazyVector/FBLazyVector/FBLazyIterator.h +127 -0
  309. package/Libraries/FBLazyVector/FBLazyVector/FBLazyVector.h +102 -0
  310. package/Libraries/FBLazyVector/FBLazyVector.podspec +31 -0
  311. package/Libraries/HeapCapture/HeapCapture.js +29 -0
  312. package/Libraries/HeapCapture/NativeJSCHeapCapture.js +13 -0
  313. package/Libraries/Image/AssetRegistry.js +13 -0
  314. package/Libraries/Image/AssetSourceResolver.harmony.ts +75 -29
  315. package/Libraries/Image/AssetSourceResolver.js +202 -0
  316. package/Libraries/Image/AssetUtils.js +47 -0
  317. package/Libraries/Image/Image.android.js +322 -0
  318. package/Libraries/Image/Image.d.ts +373 -0
  319. package/Libraries/Image/Image.harmony.ts +17 -0
  320. package/Libraries/Image/Image.ios.js +252 -0
  321. package/Libraries/Image/Image.js.flow +13 -0
  322. package/Libraries/Image/ImageAnalyticsTagContext.js +22 -0
  323. package/Libraries/Image/ImageBackground.js +106 -0
  324. package/Libraries/Image/ImageInjection.js +87 -0
  325. package/Libraries/Image/ImageProps.js +296 -0
  326. package/Libraries/Image/ImageResizeMode.d.ts +56 -0
  327. package/Libraries/Image/ImageResizeMode.js +39 -0
  328. package/Libraries/Image/ImageSource.d.ts +74 -0
  329. package/Libraries/Image/ImageSource.js +135 -0
  330. package/Libraries/Image/ImageSourceUtils.js +80 -0
  331. package/Libraries/Image/ImageTypes.flow.js +78 -0
  332. package/Libraries/Image/ImageUtils.js +25 -0
  333. package/Libraries/Image/ImageViewNativeComponent.js +175 -0
  334. package/Libraries/Image/NativeImageEditor.js +13 -0
  335. package/Libraries/Image/NativeImageLoaderAndroid.js +13 -0
  336. package/Libraries/Image/NativeImageLoaderIOS.js +13 -0
  337. package/Libraries/Image/NativeImageStoreAndroid.js +13 -0
  338. package/Libraries/Image/NativeImageStoreIOS.js +13 -0
  339. package/Libraries/Image/RCTAnimatedImage.h +21 -0
  340. package/Libraries/Image/RCTAnimatedImage.mm +175 -0
  341. package/Libraries/Image/RCTBundleAssetImageLoader.h +12 -0
  342. package/Libraries/Image/RCTBundleAssetImageLoader.mm +83 -0
  343. package/Libraries/Image/RCTDisplayWeakRefreshable.h +23 -0
  344. package/Libraries/Image/RCTDisplayWeakRefreshable.mm +31 -0
  345. package/Libraries/Image/RCTGIFImageDecoder.h +12 -0
  346. package/Libraries/Image/RCTGIFImageDecoder.mm +63 -0
  347. package/Libraries/Image/RCTImageBlurUtils.h +13 -0
  348. package/Libraries/Image/RCTImageBlurUtils.mm +100 -0
  349. package/Libraries/Image/RCTImageCache.h +45 -0
  350. package/Libraries/Image/RCTImageCache.mm +164 -0
  351. package/Libraries/Image/RCTImageDataDecoder.h +53 -0
  352. package/Libraries/Image/RCTImageEditingManager.h +12 -0
  353. package/Libraries/Image/RCTImageEditingManager.mm +113 -0
  354. package/Libraries/Image/RCTImageLoader.h +43 -0
  355. package/Libraries/Image/RCTImageLoader.mm +1302 -0
  356. package/Libraries/Image/RCTImageLoaderLoggable.h +32 -0
  357. package/Libraries/Image/RCTImageLoaderProtocol.h +135 -0
  358. package/Libraries/Image/RCTImageLoaderWithAttributionProtocol.h +48 -0
  359. package/Libraries/Image/RCTImagePlugins.h +44 -0
  360. package/Libraries/Image/RCTImagePlugins.mm +37 -0
  361. package/Libraries/Image/RCTImageShadowView.h +12 -0
  362. package/Libraries/Image/RCTImageShadowView.mm +24 -0
  363. package/Libraries/Image/RCTImageStoreManager.h +55 -0
  364. package/Libraries/Image/RCTImageStoreManager.mm +296 -0
  365. package/Libraries/Image/RCTImageURLLoader.h +83 -0
  366. package/Libraries/Image/RCTImageURLLoaderWithAttribution.h +78 -0
  367. package/Libraries/Image/RCTImageURLLoaderWithAttribution.mm +32 -0
  368. package/Libraries/Image/RCTImageUtils.h +94 -0
  369. package/Libraries/Image/RCTImageUtils.mm +389 -0
  370. package/Libraries/Image/RCTImageView.h +27 -0
  371. package/Libraries/Image/RCTImageView.mm +504 -0
  372. package/Libraries/Image/RCTImageViewManager.h +12 -0
  373. package/Libraries/Image/RCTImageViewManager.mm +116 -0
  374. package/Libraries/Image/RCTLocalAssetImageLoader.h +13 -0
  375. package/Libraries/Image/RCTLocalAssetImageLoader.mm +83 -0
  376. package/Libraries/Image/RCTResizeMode.h +53 -0
  377. package/Libraries/Image/RCTResizeMode.mm +25 -0
  378. package/Libraries/Image/RCTUIImageViewAnimated.h +13 -0
  379. package/Libraries/Image/RCTUIImageViewAnimated.mm +346 -0
  380. package/Libraries/Image/React-RCTImage.podspec +60 -0
  381. package/Libraries/Image/RelativeImageStub.js +28 -0
  382. package/Libraries/Image/TextInlineImageNativeComponent.js +51 -0
  383. package/Libraries/Image/nativeImageSource.js +64 -0
  384. package/Libraries/Image/resolveAssetSource.js +143 -0
  385. package/Libraries/Inspector/BorderBox.js +32 -0
  386. package/Libraries/Inspector/BoxInspector.js +109 -0
  387. package/Libraries/Inspector/ElementBox.js +143 -0
  388. package/Libraries/Inspector/ElementProperties.js +120 -0
  389. package/Libraries/Inspector/Inspector.js +206 -0
  390. package/Libraries/Inspector/InspectorOverlay.js +65 -0
  391. package/Libraries/Inspector/InspectorPanel.js +164 -0
  392. package/Libraries/Inspector/NetworkOverlay.js +611 -0
  393. package/Libraries/Inspector/PerformanceOverlay.js +63 -0
  394. package/Libraries/Inspector/ReactDevToolsOverlay.js +165 -0
  395. package/Libraries/Inspector/StyleInspector.js +70 -0
  396. package/Libraries/Inspector/getInspectorDataForViewAtPoint.js +81 -0
  397. package/Libraries/Inspector/resolveBoxStyle.js +114 -0
  398. package/Libraries/Interaction/FrameRateLogger.js +72 -0
  399. package/Libraries/Interaction/InteractionManager.d.ts +74 -0
  400. package/Libraries/Interaction/InteractionManager.js +216 -0
  401. package/Libraries/Interaction/InteractionManagerStub.js +176 -0
  402. package/Libraries/Interaction/JSEventLoopWatchdog.js +88 -0
  403. package/Libraries/Interaction/NativeFrameRateLogger.js +13 -0
  404. package/Libraries/Interaction/PanResponder.d.ts +202 -0
  405. package/Libraries/Interaction/PanResponder.js +579 -0
  406. package/Libraries/Interaction/TaskQueue.js +183 -0
  407. package/Libraries/Interaction/TouchHistoryMath.js +156 -0
  408. package/Libraries/JSInspector/InspectorAgent.js +27 -0
  409. package/Libraries/JSInspector/JSInspector.js +33 -0
  410. package/Libraries/JSInspector/NetworkAgent.js +295 -0
  411. package/Libraries/LayoutAnimation/LayoutAnimation.d.ts +84 -0
  412. package/Libraries/LayoutAnimation/LayoutAnimation.js +200 -0
  413. package/Libraries/Linking/Linking.d.ts +61 -0
  414. package/Libraries/Linking/Linking.js +133 -0
  415. package/Libraries/Linking/NativeIntentAndroid.js +13 -0
  416. package/Libraries/Linking/NativeLinkingManager.js +13 -0
  417. package/Libraries/LinkingIOS/RCTLinkingManager.h +27 -0
  418. package/Libraries/LinkingIOS/RCTLinkingManager.mm +204 -0
  419. package/Libraries/LinkingIOS/RCTLinkingPlugins.h +40 -0
  420. package/Libraries/LinkingIOS/RCTLinkingPlugins.mm +33 -0
  421. package/Libraries/LinkingIOS/React-RCTLinking.podspec +56 -0
  422. package/Libraries/Lists/FillRateHelper.js +19 -0
  423. package/Libraries/Lists/FlatList.d.ts +244 -0
  424. package/Libraries/Lists/FlatList.js +717 -0
  425. package/Libraries/Lists/SectionList.d.ts +267 -0
  426. package/Libraries/Lists/SectionList.js +269 -0
  427. package/Libraries/Lists/SectionListModern.js +249 -0
  428. package/Libraries/Lists/ViewabilityHelper.js +24 -0
  429. package/Libraries/Lists/VirtualizeUtils.js +18 -0
  430. package/Libraries/Lists/VirtualizedList.js +23 -0
  431. package/Libraries/Lists/VirtualizedListContext.js +18 -0
  432. package/Libraries/Lists/VirtualizedSectionList.js +22 -0
  433. package/Libraries/Lists/__flowtests__/FlatList-flowtest.js +118 -0
  434. package/Libraries/Lists/__flowtests__/SectionList-flowtest.js +134 -0
  435. package/Libraries/LogBox/Data/LogBoxData.js +511 -0
  436. package/Libraries/LogBox/Data/LogBoxLog.js +257 -0
  437. package/Libraries/LogBox/Data/LogBoxSymbolication.js +65 -0
  438. package/Libraries/LogBox/Data/parseLogBoxLog.js +514 -0
  439. package/Libraries/LogBox/LogBox.d.ts +28 -0
  440. package/Libraries/LogBox/LogBox.js +291 -0
  441. package/Libraries/LogBox/LogBoxInspectorContainer.js +68 -0
  442. package/Libraries/LogBox/LogBoxNotificationContainer.js +105 -0
  443. package/Libraries/LogBox/UI/AnsiHighlight.js +121 -0
  444. package/Libraries/LogBox/UI/LogBoxButton.js +70 -0
  445. package/Libraries/LogBox/UI/LogBoxImages/alert-triangle.png +0 -0
  446. package/Libraries/LogBox/UI/LogBoxImages/chevron-left.png +0 -0
  447. package/Libraries/LogBox/UI/LogBoxImages/chevron-right.png +0 -0
  448. package/Libraries/LogBox/UI/LogBoxImages/close.png +0 -0
  449. package/Libraries/LogBox/UI/LogBoxImages/loader.png +0 -0
  450. package/Libraries/LogBox/UI/LogBoxInspector.js +89 -0
  451. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  452. package/Libraries/LogBox/UI/LogBoxInspectorCodeFrame.js +164 -0
  453. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +70 -0
  454. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  455. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +108 -0
  456. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  457. package/Libraries/LogBox/UI/LogBoxInspectorMessageHeader.js +125 -0
  458. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +188 -0
  459. package/Libraries/LogBox/UI/LogBoxInspectorSection.js +58 -0
  460. package/Libraries/LogBox/UI/LogBoxInspectorSourceMapStatus.js +133 -0
  461. package/Libraries/LogBox/UI/LogBoxInspectorStackFrame.js +114 -0
  462. package/Libraries/LogBox/UI/LogBoxInspectorStackFrames.js +221 -0
  463. package/Libraries/LogBox/UI/LogBoxMessage.js +169 -0
  464. package/Libraries/LogBox/UI/LogBoxNotification.js +83 -0
  465. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  466. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  467. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  468. package/Libraries/LogBox/UI/LogBoxStyle.js +65 -0
  469. package/Libraries/Modal/Modal.d.ts +116 -0
  470. package/Libraries/Modal/Modal.js +365 -0
  471. package/Libraries/Modal/ModalInjection.js +15 -0
  472. package/Libraries/Modal/NativeModalManager.js +13 -0
  473. package/Libraries/Modal/RCTModalHostViewNativeComponent.js +13 -0
  474. package/Libraries/NativeAnimation/Drivers/RCTAnimationDriver.h +38 -0
  475. package/Libraries/NativeAnimation/Drivers/RCTDecayAnimation.h +12 -0
  476. package/Libraries/NativeAnimation/Drivers/RCTDecayAnimation.mm +125 -0
  477. package/Libraries/NativeAnimation/Drivers/RCTEventAnimation.h +20 -0
  478. package/Libraries/NativeAnimation/Drivers/RCTEventAnimation.mm +36 -0
  479. package/Libraries/NativeAnimation/Drivers/RCTFrameAnimation.h +12 -0
  480. package/Libraries/NativeAnimation/Drivers/RCTFrameAnimation.mm +151 -0
  481. package/Libraries/NativeAnimation/Drivers/RCTSpringAnimation.h +12 -0
  482. package/Libraries/NativeAnimation/Drivers/RCTSpringAnimation.mm +200 -0
  483. package/Libraries/NativeAnimation/Nodes/RCTAdditionAnimatedNode.h +12 -0
  484. package/Libraries/NativeAnimation/Nodes/RCTAdditionAnimatedNode.mm +25 -0
  485. package/Libraries/NativeAnimation/Nodes/RCTAnimatedNode.h +50 -0
  486. package/Libraries/NativeAnimation/Nodes/RCTAnimatedNode.mm +126 -0
  487. package/Libraries/NativeAnimation/Nodes/RCTColorAnimatedNode.h +14 -0
  488. package/Libraries/NativeAnimation/Nodes/RCTColorAnimatedNode.mm +29 -0
  489. package/Libraries/NativeAnimation/Nodes/RCTDiffClampAnimatedNode.h +12 -0
  490. package/Libraries/NativeAnimation/Nodes/RCTDiffClampAnimatedNode.mm +64 -0
  491. package/Libraries/NativeAnimation/Nodes/RCTDivisionAnimatedNode.h +12 -0
  492. package/Libraries/NativeAnimation/Nodes/RCTDivisionAnimatedNode.mm +32 -0
  493. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.h +26 -0
  494. package/Libraries/NativeAnimation/Nodes/RCTInterpolationAnimatedNode.mm +169 -0
  495. package/Libraries/NativeAnimation/Nodes/RCTModuloAnimatedNode.h +12 -0
  496. package/Libraries/NativeAnimation/Nodes/RCTModuloAnimatedNode.mm +22 -0
  497. package/Libraries/NativeAnimation/Nodes/RCTMultiplicationAnimatedNode.h +12 -0
  498. package/Libraries/NativeAnimation/Nodes/RCTMultiplicationAnimatedNode.mm +26 -0
  499. package/Libraries/NativeAnimation/Nodes/RCTObjectAnimatedNode.h +14 -0
  500. package/Libraries/NativeAnimation/Nodes/RCTObjectAnimatedNode.mm +66 -0
  501. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.h +26 -0
  502. package/Libraries/NativeAnimation/Nodes/RCTPropsAnimatedNode.mm +146 -0
  503. package/Libraries/NativeAnimation/Nodes/RCTStyleAnimatedNode.h +14 -0
  504. package/Libraries/NativeAnimation/Nodes/RCTStyleAnimatedNode.mm +62 -0
  505. package/Libraries/NativeAnimation/Nodes/RCTSubtractionAnimatedNode.h +12 -0
  506. package/Libraries/NativeAnimation/Nodes/RCTSubtractionAnimatedNode.mm +25 -0
  507. package/Libraries/NativeAnimation/Nodes/RCTTrackingAnimatedNode.h +12 -0
  508. package/Libraries/NativeAnimation/Nodes/RCTTrackingAnimatedNode.mm +47 -0
  509. package/Libraries/NativeAnimation/Nodes/RCTTransformAnimatedNode.h +14 -0
  510. package/Libraries/NativeAnimation/Nodes/RCTTransformAnimatedNode.mm +55 -0
  511. package/Libraries/NativeAnimation/Nodes/RCTValueAnimatedNode.h +30 -0
  512. package/Libraries/NativeAnimation/Nodes/RCTValueAnimatedNode.mm +60 -0
  513. package/Libraries/NativeAnimation/RCTAnimationPlugins.h +41 -0
  514. package/Libraries/NativeAnimation/RCTAnimationPlugins.mm +34 -0
  515. package/Libraries/NativeAnimation/RCTAnimationUtils.h +46 -0
  516. package/Libraries/NativeAnimation/RCTAnimationUtils.mm +129 -0
  517. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.h +28 -0
  518. package/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +395 -0
  519. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.h +94 -0
  520. package/Libraries/NativeAnimation/RCTNativeAnimatedNodesManager.mm +511 -0
  521. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.h +25 -0
  522. package/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +411 -0
  523. package/Libraries/NativeAnimation/React-RCTAnimation.podspec +56 -0
  524. package/Libraries/NativeComponent/BaseViewConfig.android.js +423 -0
  525. package/Libraries/NativeComponent/BaseViewConfig.harmony.js +12 -326
  526. package/Libraries/NativeComponent/BaseViewConfig.ios.js +423 -0
  527. package/Libraries/NativeComponent/BaseViewConfig.js.flow +14 -0
  528. package/Libraries/NativeComponent/NativeComponentRegistry.js +164 -0
  529. package/Libraries/NativeComponent/NativeComponentRegistryUnstable.js +30 -0
  530. package/Libraries/NativeComponent/PlatformBaseViewConfig.js +25 -0
  531. package/Libraries/NativeComponent/StaticViewConfigValidator.js +144 -0
  532. package/Libraries/NativeComponent/ViewConfig.js +52 -0
  533. package/Libraries/NativeComponent/ViewConfigIgnore.js +55 -0
  534. package/Libraries/NativeComponent/delegates/BaseViewConfigIgnoreDelegate.ts +10 -0
  535. package/Libraries/NativeComponent/delegates/ViewConfigIgnoreDelegate.harmony.ts +13 -0
  536. package/Libraries/NativeComponent/delegates/ViewConfigIgnoreDelegate.ts +10 -0
  537. package/Libraries/NativeModules/specs/NativeDevMenu.js +13 -0
  538. package/Libraries/NativeModules/specs/NativeDevSettings.js +13 -0
  539. package/Libraries/NativeModules/specs/NativeDeviceEventManager.js +13 -0
  540. package/Libraries/NativeModules/specs/NativeDialogManagerAndroid.js +13 -0
  541. package/Libraries/NativeModules/specs/NativeLogBox.js +13 -0
  542. package/Libraries/NativeModules/specs/NativeRedBox.js +13 -0
  543. package/Libraries/NativeModules/specs/NativeSourceCode.js +13 -0
  544. package/Libraries/Network/FormData.js +108 -0
  545. package/Libraries/Network/NativeNetworkingAndroid.js +13 -0
  546. package/Libraries/Network/NativeNetworkingIOS.js +13 -0
  547. package/Libraries/Network/RCTDataRequestHandler.h +16 -0
  548. package/Libraries/Network/RCTDataRequestHandler.mm +86 -0
  549. package/Libraries/Network/RCTFileRequestHandler.h +16 -0
  550. package/Libraries/Network/RCTFileRequestHandler.mm +100 -0
  551. package/Libraries/Network/RCTHTTPRequestHandler.h +22 -0
  552. package/Libraries/Network/RCTHTTPRequestHandler.mm +195 -0
  553. package/Libraries/Network/RCTNetworkPlugins.h +43 -0
  554. package/Libraries/Network/RCTNetworkPlugins.mm +36 -0
  555. package/Libraries/Network/RCTNetworkTask.h +47 -0
  556. package/Libraries/Network/RCTNetworkTask.mm +228 -0
  557. package/Libraries/Network/RCTNetworking.android.js +95 -0
  558. package/Libraries/Network/RCTNetworking.h +86 -0
  559. package/Libraries/Network/RCTNetworking.ios.js +112 -0
  560. package/Libraries/Network/RCTNetworking.js.flow +89 -0
  561. package/Libraries/Network/RCTNetworking.mm +823 -0
  562. package/Libraries/Network/React-RCTNetwork.podspec +56 -0
  563. package/Libraries/Network/XHRInterceptor.js +214 -0
  564. package/Libraries/Network/XMLHttpRequest.js +698 -0
  565. package/Libraries/Network/convertRequestBody.js +43 -0
  566. package/Libraries/Network/fetch.js +19 -0
  567. package/Libraries/NewAppScreen/components/Colors.js +19 -0
  568. package/Libraries/NewAppScreen/components/DebugInstructions.js +41 -0
  569. package/Libraries/NewAppScreen/components/Header.js +77 -0
  570. package/Libraries/NewAppScreen/components/HermesBadge.js +53 -0
  571. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +148 -0
  572. package/Libraries/NewAppScreen/components/ReloadInstructions.js +39 -0
  573. package/Libraries/NewAppScreen/components/logo.png +0 -0
  574. package/Libraries/NewAppScreen/index.js +25 -0
  575. package/Libraries/Performance/NativeJSCSamplingProfiler.js +13 -0
  576. package/Libraries/Performance/SamplingProfiler.js +39 -0
  577. package/Libraries/Performance/Systrace.d.ts +66 -0
  578. package/Libraries/Performance/Systrace.js +139 -0
  579. package/Libraries/PermissionsAndroid/NativePermissionsAndroid.js +13 -0
  580. package/Libraries/PermissionsAndroid/PermissionsAndroid.d.ts +163 -0
  581. package/Libraries/PermissionsAndroid/PermissionsAndroid.js +299 -0
  582. package/Libraries/Pressability/HoverState.js +58 -0
  583. package/Libraries/Pressability/Pressability.js +954 -0
  584. package/Libraries/Pressability/PressabilityDebug.js +85 -0
  585. package/Libraries/Pressability/PressabilityPerformanceEventEmitter.js +49 -0
  586. package/Libraries/Pressability/PressabilityTypes.js +18 -0
  587. package/Libraries/Pressability/usePressability.js +60 -0
  588. package/Libraries/Promise.js +23 -0
  589. package/Libraries/PushNotificationIOS/NativePushNotificationManagerIOS.js +13 -0
  590. package/Libraries/PushNotificationIOS/PushNotificationIOS.d.ts +295 -0
  591. package/Libraries/PushNotificationIOS/PushNotificationIOS.js +569 -0
  592. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.h +48 -0
  593. package/Libraries/PushNotificationIOS/RCTPushNotificationManager.mm +590 -0
  594. package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.h +40 -0
  595. package/Libraries/PushNotificationIOS/RCTPushNotificationPlugins.mm +33 -0
  596. package/Libraries/PushNotificationIOS/React-RCTPushNotification.podspec +56 -0
  597. package/Libraries/ReactNative/AppContainer-dev.js +208 -0
  598. package/Libraries/ReactNative/AppContainer-prod.js +50 -0
  599. package/Libraries/ReactNative/AppContainer.js +31 -0
  600. package/Libraries/ReactNative/AppRegistry.d.ts +121 -0
  601. package/Libraries/ReactNative/AppRegistry.js +360 -0
  602. package/Libraries/ReactNative/BridgelessUIManager.js +430 -0
  603. package/Libraries/ReactNative/DisplayMode.js +32 -0
  604. package/Libraries/ReactNative/FabricUIManager.js +145 -0
  605. package/Libraries/ReactNative/HeadlessJsTaskError.js +11 -0
  606. package/Libraries/ReactNative/I18nManager.d.ts +25 -0
  607. package/Libraries/ReactNative/{I18nManager.harmony.js → I18nManager.js} +11 -25
  608. package/Libraries/ReactNative/NativeHeadlessJsTaskSupport.js +13 -0
  609. package/Libraries/ReactNative/NativeI18nManager.js +13 -0
  610. package/Libraries/ReactNative/NativeUIManager.js +13 -0
  611. package/Libraries/ReactNative/PaperUIManager.js +191 -0
  612. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricHostComponent.js +150 -0
  613. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstance.js +100 -0
  614. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactFabricPublicInstanceUtils.js +38 -0
  615. package/Libraries/ReactNative/ReactFabricPublicInstance/ReactNativeAttributePayload.js +492 -0
  616. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +33 -0
  617. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +31 -0
  618. package/Libraries/ReactNative/ReactNativeRuntimeDiagnostics.js +68 -0
  619. package/Libraries/ReactNative/RendererImplementation.js +164 -0
  620. package/Libraries/ReactNative/RendererProxy.d.ts +20 -0
  621. package/Libraries/ReactNative/RendererProxy.js +26 -0
  622. package/Libraries/ReactNative/RootTag.d.ts +13 -0
  623. package/Libraries/ReactNative/RootTag.js +27 -0
  624. package/Libraries/ReactNative/UIManager.d.ts +113 -0
  625. package/Libraries/ReactNative/{UIManager.harmony.js → UIManager.js} +16 -33
  626. package/Libraries/ReactNative/UIManagerProperties.js +61 -0
  627. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +334 -0
  628. package/Libraries/ReactNative/delegates/BaseBridgelessUIManagerDelegate.ts +14 -0
  629. package/Libraries/ReactNative/delegates/BaseI18nManagerDelegate.ts +18 -0
  630. package/Libraries/ReactNative/delegates/BridgelessUIManagerDelegate.harmony.ts +14 -0
  631. package/Libraries/ReactNative/delegates/BridgelessUIManagerDelegate.ts +11 -0
  632. package/Libraries/ReactNative/delegates/I18nManagerDelegate.harmony.ts +22 -0
  633. package/Libraries/ReactNative/delegates/I18nManagerDelegate.ts +24 -0
  634. package/Libraries/ReactNative/getCachedComponentWithDebugName.js +33 -0
  635. package/Libraries/ReactNative/getNativeComponentAttributes.js +212 -0
  636. package/Libraries/ReactNative/renderApplication.js +108 -0
  637. package/Libraries/ReactNative/requireNativeComponent.d.ts +23 -0
  638. package/Libraries/ReactNative/requireNativeComponent.js +35 -0
  639. package/Libraries/ReactPrivate/README +1 -0
  640. package/Libraries/ReactPrivate/ReactNativePrivateInitializeCore.js +11 -0
  641. package/Libraries/ReactPrivate/ReactNativePrivateInterface.js +116 -0
  642. package/Libraries/Renderer/README.md +22 -0
  643. package/Libraries/Renderer/implementations/ReactFabric-dev.js +27376 -0
  644. package/Libraries/Renderer/implementations/ReactFabric-prod.js +9152 -0
  645. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +9642 -0
  646. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +27830 -0
  647. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +9379 -0
  648. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +9896 -0
  649. package/Libraries/Renderer/shims/ReactFabric.js +33 -0
  650. package/Libraries/Renderer/shims/ReactFeatureFlags.js +19 -0
  651. package/Libraries/Renderer/shims/ReactNative.js +24 -0
  652. package/Libraries/Renderer/shims/ReactNativeTypes.js +320 -0
  653. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +123 -0
  654. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +35 -0
  655. package/Libraries/Required/RCTRequired.h +90 -0
  656. package/Libraries/Required/RCTRequired.podspec +30 -0
  657. package/Libraries/Settings/NativeSettingsManager.js +13 -0
  658. package/Libraries/Settings/RCTSettingsManager.h +16 -0
  659. package/Libraries/Settings/RCTSettingsManager.mm +123 -0
  660. package/Libraries/Settings/RCTSettingsPlugins.h +40 -0
  661. package/Libraries/Settings/RCTSettingsPlugins.mm +33 -0
  662. package/Libraries/Settings/React-RCTSettings.podspec +56 -0
  663. package/Libraries/Settings/Settings.d.ts +18 -0
  664. package/Libraries/Settings/Settings.harmony.ts +20 -0
  665. package/Libraries/Settings/Settings.ios.js +81 -0
  666. package/Libraries/Settings/Settings.js +33 -0
  667. package/Libraries/Share/NativeShareModule.js +13 -0
  668. package/Libraries/Share/Share.d.ts +80 -0
  669. package/Libraries/Share/{Share.harmony.js → Share.js} +32 -30
  670. package/Libraries/Share/delegates/BaseShareDelegate.ts +21 -0
  671. package/Libraries/Share/delegates/ShareDelegate.harmony.ts +42 -0
  672. package/Libraries/Share/delegates/ShareDelegate.ts +20 -0
  673. package/Libraries/StyleSheet/EdgeInsetsPropType.js +18 -0
  674. package/Libraries/StyleSheet/NativePlatformColor.harmony.ts +15 -0
  675. package/Libraries/StyleSheet/PlatformColorValueTypes.android.js +40 -0
  676. package/Libraries/StyleSheet/PlatformColorValueTypes.d.ts +18 -0
  677. package/Libraries/StyleSheet/PlatformColorValueTypes.harmony.ts +8 -1
  678. package/Libraries/StyleSheet/PlatformColorValueTypes.ios.js +113 -0
  679. package/Libraries/StyleSheet/PlatformColorValueTypes.js.flow +22 -0
  680. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.d.ts +25 -0
  681. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.ios.js +29 -0
  682. package/Libraries/StyleSheet/PlatformColorValueTypesIOS.js +22 -0
  683. package/Libraries/StyleSheet/PointPropType.js +17 -0
  684. package/Libraries/StyleSheet/Rect.js +26 -0
  685. package/Libraries/StyleSheet/StyleSheet.d.ts +150 -0
  686. package/Libraries/StyleSheet/StyleSheet.js +356 -0
  687. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +573 -0
  688. package/Libraries/StyleSheet/StyleSheetTypes.js +1004 -0
  689. package/Libraries/StyleSheet/__flowtests__/StyleSheet-flowtest.js +58 -0
  690. package/Libraries/StyleSheet/flattenStyle.js +46 -0
  691. package/Libraries/StyleSheet/normalizeColor.js +34 -0
  692. package/Libraries/StyleSheet/private/_StyleSheetTypesOverrides.js +15 -0
  693. package/Libraries/StyleSheet/private/_TransformStyle.js +69 -0
  694. package/Libraries/StyleSheet/processAspectRatio.js +63 -0
  695. package/Libraries/StyleSheet/processBackgroundImage.js +361 -0
  696. package/Libraries/StyleSheet/processBoxShadow.js +209 -0
  697. package/Libraries/StyleSheet/processColor.d.ts +16 -0
  698. package/Libraries/StyleSheet/processColor.js +59 -0
  699. package/Libraries/StyleSheet/processColorArray.js +35 -0
  700. package/Libraries/StyleSheet/processFilter.js +321 -0
  701. package/Libraries/StyleSheet/processFontVariant.js +30 -0
  702. package/Libraries/StyleSheet/processTransform.js +263 -0
  703. package/Libraries/StyleSheet/processTransformOrigin.js +136 -0
  704. package/Libraries/StyleSheet/setNormalizedColorAlpha.js +31 -0
  705. package/Libraries/StyleSheet/splitLayoutProps.js +72 -0
  706. package/Libraries/Text/BaseText/RCTBaseTextShadowView.h +29 -0
  707. package/Libraries/Text/BaseText/RCTBaseTextShadowView.mm +158 -0
  708. package/Libraries/Text/BaseText/RCTBaseTextViewManager.h +16 -0
  709. package/Libraries/Text/BaseText/RCTBaseTextViewManager.mm +60 -0
  710. package/Libraries/Text/RCTConvert+Text.h +23 -0
  711. package/Libraries/Text/RCTConvert+Text.mm +44 -0
  712. package/Libraries/Text/RCTTextAttributes.h +100 -0
  713. package/Libraries/Text/RCTTextAttributes.mm +354 -0
  714. package/Libraries/Text/RCTTextTransform.h +16 -0
  715. package/Libraries/Text/RawText/RCTRawTextShadowView.h +18 -0
  716. package/Libraries/Text/RawText/RCTRawTextShadowView.mm +34 -0
  717. package/Libraries/Text/RawText/RCTRawTextViewManager.h +16 -0
  718. package/Libraries/Text/RawText/RCTRawTextViewManager.mm +28 -0
  719. package/Libraries/Text/React-RCTText.podspec +37 -0
  720. package/Libraries/Text/Text/NSTextStorage+FontScaling.h +20 -0
  721. package/Libraries/Text/Text/NSTextStorage+FontScaling.m +122 -0
  722. package/Libraries/Text/Text/RCTDynamicTypeRamp.h +37 -0
  723. package/Libraries/Text/Text/RCTDynamicTypeRamp.mm +82 -0
  724. package/Libraries/Text/Text/RCTTextShadowView.h +28 -0
  725. package/Libraries/Text/Text/RCTTextShadowView.mm +466 -0
  726. package/Libraries/Text/Text/RCTTextView.h +29 -0
  727. package/Libraries/Text/Text/RCTTextView.mm +294 -0
  728. package/Libraries/Text/Text/RCTTextViewManager.h +14 -0
  729. package/Libraries/Text/Text/RCTTextViewManager.mm +93 -0
  730. package/Libraries/Text/Text.d.ts +219 -0
  731. package/Libraries/Text/Text.js +537 -0
  732. package/Libraries/Text/TextAncestor.js +23 -0
  733. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.h +16 -0
  734. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm +63 -0
  735. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.h +16 -0
  736. package/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputViewManager.mm +24 -0
  737. package/Libraries/Text/TextInput/Multiline/RCTUITextView.h +44 -0
  738. package/Libraries/Text/TextInput/Multiline/RCTUITextView.mm +338 -0
  739. package/Libraries/Text/TextInput/RCTBackedTextInputDelegate.h +46 -0
  740. package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.h +36 -0
  741. package/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm +307 -0
  742. package/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h +57 -0
  743. package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.h +25 -0
  744. package/Libraries/Text/TextInput/RCTBaseTextInputShadowView.mm +364 -0
  745. package/Libraries/Text/TextInput/RCTBaseTextInputView.h +63 -0
  746. package/Libraries/Text/TextInput/RCTBaseTextInputView.mm +817 -0
  747. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.h +12 -0
  748. package/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm +178 -0
  749. package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.h +12 -0
  750. package/Libraries/Text/TextInput/RCTInputAccessoryShadowView.mm +20 -0
  751. package/Libraries/Text/TextInput/RCTInputAccessoryView.h +17 -0
  752. package/Libraries/Text/TextInput/RCTInputAccessoryView.mm +78 -0
  753. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.h +12 -0
  754. package/Libraries/Text/TextInput/RCTInputAccessoryViewContent.mm +74 -0
  755. package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.h +12 -0
  756. package/Libraries/Text/TextInput/RCTInputAccessoryViewManager.mm +29 -0
  757. package/Libraries/Text/TextInput/RCTTextSelection.h +26 -0
  758. package/Libraries/Text/TextInput/RCTTextSelection.mm +36 -0
  759. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.h +16 -0
  760. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputView.mm +39 -0
  761. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.h +16 -0
  762. package/Libraries/Text/TextInput/Singleline/RCTSinglelineTextInputViewManager.mm +31 -0
  763. package/Libraries/Text/TextInput/Singleline/RCTUITextField.h +40 -0
  764. package/Libraries/Text/TextInput/Singleline/RCTUITextField.mm +255 -0
  765. package/Libraries/Text/TextNativeComponent.js +82 -0
  766. package/Libraries/Text/TextProps.js +268 -0
  767. package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.h +12 -0
  768. package/Libraries/Text/VirtualText/RCTVirtualTextShadowView.mm +38 -0
  769. package/Libraries/Text/VirtualText/RCTVirtualTextView.h +23 -0
  770. package/Libraries/Text/VirtualText/RCTVirtualTextView.mm +12 -0
  771. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.h +12 -0
  772. package/Libraries/Text/VirtualText/RCTVirtualTextViewManager.mm +26 -0
  773. package/Libraries/TurboModule/RCTExport.d.ts +12 -0
  774. package/Libraries/TurboModule/RCTExport.js +38 -0
  775. package/Libraries/TurboModule/TurboModuleRegistry.d.ts +13 -0
  776. package/Libraries/TurboModule/TurboModuleRegistry.js +53 -0
  777. package/Libraries/TurboModule/samples/NativeSampleTurboModule.js +13 -0
  778. package/Libraries/TypeSafety/RCTConvertHelpers.h +83 -0
  779. package/Libraries/TypeSafety/RCTConvertHelpers.mm +51 -0
  780. package/Libraries/TypeSafety/RCTTypeSafety.podspec +39 -0
  781. package/Libraries/TypeSafety/RCTTypedModuleConstants.h +47 -0
  782. package/Libraries/TypeSafety/RCTTypedModuleConstants.mm +50 -0
  783. package/Libraries/Types/CodegenTypes.js +47 -0
  784. package/Libraries/Types/CoreEventTypes.d.ts +259 -0
  785. package/Libraries/Types/CoreEventTypes.js +291 -0
  786. package/Libraries/Types/ReactDevToolsTypes.js +58 -0
  787. package/Libraries/Types/RootTagTypes.js +11 -0
  788. package/Libraries/Types/UIManagerJSInterface.js +16 -0
  789. package/Libraries/UTFSequence.js +56 -0
  790. package/Libraries/Utilities/Appearance.d.ts +53 -0
  791. package/Libraries/Utilities/Appearance.js +133 -0
  792. package/Libraries/Utilities/{BackHandler.harmony.js → BackHandler.android.js} +8 -22
  793. package/Libraries/Utilities/BackHandler.d.ts +34 -0
  794. package/Libraries/Utilities/BackHandler.harmony.ts +10 -0
  795. package/Libraries/Utilities/BackHandler.ios.js +34 -0
  796. package/Libraries/Utilities/BackHandler.js.flow +23 -0
  797. package/Libraries/Utilities/DebugEnvironment.js +16 -0
  798. package/Libraries/Utilities/DevLoadingView.js +64 -0
  799. package/Libraries/Utilities/DevSettings.d.ts +32 -0
  800. package/Libraries/Utilities/DevSettings.js +72 -0
  801. package/Libraries/Utilities/DeviceInfo.js +13 -0
  802. package/Libraries/Utilities/Dimensions.d.ts +79 -0
  803. package/Libraries/Utilities/Dimensions.js +123 -0
  804. package/Libraries/Utilities/FeatureDetection.js +31 -0
  805. package/Libraries/Utilities/GlobalPerformanceLogger.js +24 -0
  806. package/Libraries/Utilities/HMRClient.js +362 -0
  807. package/Libraries/Utilities/HMRClientProdShim.js +30 -0
  808. package/Libraries/Utilities/IPerformanceLogger.d.ts +48 -0
  809. package/Libraries/Utilities/IPerformanceLogger.js +49 -0
  810. package/Libraries/Utilities/NativeAppearance.js +13 -0
  811. package/Libraries/Utilities/NativeDevLoadingView.js +13 -0
  812. package/Libraries/Utilities/NativeDeviceInfo.js +13 -0
  813. package/Libraries/Utilities/NativePlatformConstantsAndroid.js +13 -0
  814. package/Libraries/Utilities/NativePlatformConstantsHarmony.harmony.ts +17 -0
  815. package/Libraries/Utilities/NativePlatformConstantsIOS.js +13 -0
  816. package/Libraries/Utilities/PerformanceLoggerContext.js +33 -0
  817. package/Libraries/Utilities/PixelRatio.d.ts +64 -0
  818. package/Libraries/Utilities/PixelRatio.js +127 -0
  819. package/Libraries/Utilities/Platform.android.js +87 -0
  820. package/Libraries/Utilities/Platform.d.ts +21 -11
  821. package/Libraries/Utilities/Platform.flow.js +91 -0
  822. package/Libraries/Utilities/Platform.harmony.ts +38 -13
  823. package/Libraries/Utilities/Platform.ios.js +88 -0
  824. package/Libraries/Utilities/Platform.js.flow +13 -0
  825. package/Libraries/Utilities/PolyfillFunctions.js +56 -0
  826. package/Libraries/Utilities/RCTLog.js +56 -0
  827. package/Libraries/Utilities/ReactNativeTestTools.js +225 -0
  828. package/Libraries/Utilities/SceneTracker.js +42 -0
  829. package/Libraries/Utilities/__mocks__/BackHandler.js +45 -0
  830. package/Libraries/Utilities/__mocks__/GlobalPerformanceLogger.js +16 -0
  831. package/Libraries/Utilities/__mocks__/PixelRatio.js +25 -0
  832. package/Libraries/Utilities/binaryToBase64.js +31 -0
  833. package/Libraries/Utilities/codegenNativeCommands.js +31 -0
  834. package/Libraries/Utilities/codegenNativeComponent.js +73 -0
  835. package/Libraries/Utilities/{createPerformanceLogger.harmony.js → createPerformanceLogger.js} +12 -50
  836. package/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js +90 -0
  837. package/Libraries/Utilities/defineLazyObjectProperty.js +66 -0
  838. package/Libraries/Utilities/differ/deepDiffer.js +101 -0
  839. package/Libraries/Utilities/differ/insetsDiffer.js +40 -0
  840. package/Libraries/Utilities/differ/matricesDiffer.js +51 -0
  841. package/Libraries/Utilities/differ/pointsDiffer.js +27 -0
  842. package/Libraries/Utilities/differ/sizesDiffer.js +26 -0
  843. package/Libraries/Utilities/dismissKeyboard.js +21 -0
  844. package/Libraries/Utilities/infoLog.js +20 -0
  845. package/Libraries/Utilities/logError.js +27 -0
  846. package/Libraries/Utilities/mapWithSeparator.js +28 -0
  847. package/Libraries/Utilities/stringifySafe.js +121 -0
  848. package/Libraries/Utilities/stringifyViewConfig.js +22 -0
  849. package/Libraries/Utilities/useColorScheme.js +25 -0
  850. package/Libraries/Utilities/useMergeRefs.js +59 -0
  851. package/Libraries/Utilities/useRefEffect.js +45 -0
  852. package/Libraries/Utilities/useWindowDimensions.js +47 -0
  853. package/Libraries/Utilities/warnOnce.js +32 -0
  854. package/Libraries/Vibration/NativeVibration.js +13 -0
  855. package/Libraries/Vibration/RCTVibration.h +12 -0
  856. package/Libraries/Vibration/RCTVibration.mm +54 -0
  857. package/Libraries/Vibration/RCTVibrationPlugins.h +40 -0
  858. package/Libraries/Vibration/RCTVibrationPlugins.mm +33 -0
  859. package/Libraries/Vibration/React-RCTVibration.podspec +56 -0
  860. package/Libraries/Vibration/Vibration.d.ts +43 -0
  861. package/Libraries/Vibration/Vibration.js +115 -0
  862. package/Libraries/Vibration/delegates/BaseVibrationDelegate.ts +11 -0
  863. package/Libraries/Vibration/delegates/VibrationDelegate.harmony.ts +14 -0
  864. package/Libraries/Vibration/delegates/VibrationDelegate.ts +11 -0
  865. package/Libraries/WebSocket/NativeWebSocketModule.js +13 -0
  866. package/Libraries/WebSocket/RCTReconnectingWebSocket.h +37 -0
  867. package/Libraries/WebSocket/RCTReconnectingWebSocket.m +109 -0
  868. package/Libraries/WebSocket/WebSocket.js +297 -0
  869. package/Libraries/WebSocket/WebSocketEvent.js +30 -0
  870. package/Libraries/WebSocket/WebSocketInterceptor.js +247 -0
  871. package/Libraries/WebSocket/__mocks__/event-target-shim.js +27 -0
  872. package/Libraries/Wrapper/Example/RCTWrapperExampleView.h +16 -0
  873. package/Libraries/Wrapper/Example/RCTWrapperExampleView.m +53 -0
  874. package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.h +16 -0
  875. package/Libraries/Wrapper/Example/RCTWrapperExampleViewController.m +23 -0
  876. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.h +20 -0
  877. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewController.m +46 -0
  878. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.h +18 -0
  879. package/Libraries/Wrapper/Example/RCTWrapperReactRootViewManager.m +31 -0
  880. package/Libraries/Wrapper/RCTWrapper.h +68 -0
  881. package/Libraries/Wrapper/RCTWrapperShadowView.h +22 -0
  882. package/Libraries/Wrapper/RCTWrapperShadowView.m +134 -0
  883. package/Libraries/Wrapper/RCTWrapperView.h +36 -0
  884. package/Libraries/Wrapper/RCTWrapperView.m +95 -0
  885. package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.h +25 -0
  886. package/Libraries/Wrapper/RCTWrapperViewControllerHostingView.m +133 -0
  887. package/Libraries/Wrapper/RCTWrapperViewManager.h +20 -0
  888. package/Libraries/Wrapper/RCTWrapperViewManager.m +27 -0
  889. package/Libraries/YellowBox/YellowBoxDeprecated.d.ts +19 -0
  890. package/Libraries/YellowBox/YellowBoxDeprecated.js +75 -0
  891. package/Libraries/__flowtests__/ReactNativeTypes-flowtest.js +32 -0
  892. package/Libraries/promiseRejectionTrackingOptions.js +72 -0
  893. package/Libraries/vendor/core/ErrorUtils.d.ts +15 -0
  894. package/Libraries/vendor/core/ErrorUtils.js +25 -0
  895. package/Libraries/vendor/emitter/EventEmitter.d.ts +164 -0
  896. package/Libraries/vendor/emitter/EventEmitter.js +158 -0
  897. package/Libraries/vendor/emitter/__flowtests__/EventEmitter-flowtest.js +81 -0
  898. package/NOTICE.md +846 -0
  899. package/README.md +2 -2
  900. package/delegates/DelegateError.ts +10 -0
  901. package/index.js +53 -63
  902. package/jest.config.js +0 -7
  903. package/metro.config.d.ts +17 -0
  904. package/metro.config.js +398 -115
  905. package/package.json +58 -37
  906. package/react-native.config.js +57 -9
  907. package/react_native_openharmony.har +0 -0
  908. package/src/private/animated/NativeAnimatedHelper.js +440 -0
  909. package/src/private/animated/NativeAnimatedValidation.js +64 -0
  910. package/src/private/animated/useAnimatedPropsMemo.js +356 -0
  911. package/src/private/components/HScrollViewNativeComponents.js +30 -0
  912. package/src/private/components/SafeAreaView_INTERNAL_DO_NOT_USE.js +32 -0
  913. package/src/private/components/VScrollViewNativeComponents.js +25 -0
  914. package/src/private/debugging/FuseboxSessionObserver.js +42 -0
  915. package/src/private/debugging/ReactDevToolsSettingsManager.android.js +20 -0
  916. package/src/private/debugging/ReactDevToolsSettingsManager.ios.js +30 -0
  917. package/src/private/debugging/ReactDevToolsSettingsManager.js.flow +16 -0
  918. package/src/private/debugging/setUpFuseboxReactDevToolsDispatcher.js +114 -0
  919. package/src/private/devmenu/DevMenu.d.ts +20 -0
  920. package/src/private/devmenu/DevMenu.js +31 -0
  921. package/src/private/featureflags/ReactNativeFeatureFlags.js +369 -0
  922. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +109 -0
  923. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +78 -0
  924. package/src/private/fusebox/specs/NativeReactDevToolsRuntimeSettingsModule.js +34 -0
  925. package/src/private/renderer/errorhandling/ErrorHandlers.js +126 -0
  926. package/src/private/setup/setUpDOM.js +36 -0
  927. package/src/private/setup/setUpIntersectionObserver.js +27 -0
  928. package/src/private/setup/setUpMutationObserver.js +31 -0
  929. package/src/private/setup/setUpPerformanceObserver.js +64 -0
  930. package/src/private/specs/components/ActivityIndicatorViewNativeComponent.js +53 -0
  931. package/src/private/specs/components/AndroidDrawerLayoutNativeComponent.js +124 -0
  932. package/src/private/specs/components/AndroidHorizontalScrollContentViewNativeComponent.js +27 -0
  933. package/src/private/specs/components/AndroidSwipeRefreshLayoutNativeComponent.js +74 -0
  934. package/src/private/specs/components/AndroidSwitchNativeComponent.js +62 -0
  935. package/src/private/specs/components/DebuggingOverlayNativeComponent.js +61 -0
  936. package/src/private/specs/components/ProgressBarAndroidNativeComponent.js +36 -0
  937. package/src/private/specs/components/PullToRefreshViewNativeComponent.js +71 -0
  938. package/src/private/specs/components/RCTInputAccessoryViewNativeComponent.js +26 -0
  939. package/src/private/specs/components/RCTModalHostViewNativeComponent.js +147 -0
  940. package/src/private/specs/components/RCTSafeAreaViewNativeComponent.js +25 -0
  941. package/src/private/specs/components/SwitchNativeComponent.js +61 -0
  942. package/src/private/specs/components/UnimplementedNativeViewNativeComponent.js +26 -0
  943. package/src/private/specs/modules/NativeAccessibilityInfo.js +42 -0
  944. package/src/private/specs/modules/NativeAccessibilityManager.js +70 -0
  945. package/src/private/specs/modules/NativeActionSheetManager.js +56 -0
  946. package/src/private/specs/modules/NativeAlertManager.js +35 -0
  947. package/src/private/specs/modules/NativeAnimatedModule.js +77 -0
  948. package/src/private/specs/modules/NativeAnimatedTurboModule.js +78 -0
  949. package/src/private/specs/modules/NativeAppState.js +33 -0
  950. package/src/private/specs/modules/NativeAppearance.js +30 -0
  951. package/src/private/specs/modules/NativeBlobModule.js +61 -0
  952. package/src/private/specs/modules/NativeBugReporting.js +20 -0
  953. package/src/private/specs/modules/NativeClipboard.js +21 -0
  954. package/src/private/specs/modules/NativeDevLoadingView.js +24 -0
  955. package/src/private/specs/modules/NativeDevMenu.js +23 -0
  956. package/src/private/specs/modules/NativeDevSettings.js +34 -0
  957. package/src/private/specs/modules/NativeDeviceEventManager.js +19 -0
  958. package/src/private/specs/modules/NativeDeviceInfo.js +58 -0
  959. package/src/private/specs/modules/NativeDialogManagerAndroid.js +48 -0
  960. package/src/private/specs/modules/NativeExceptionsManager.js +91 -0
  961. package/src/private/specs/modules/NativeFileReaderModule.js +22 -0
  962. package/src/private/specs/modules/NativeFrameRateLogger.js +22 -0
  963. package/src/private/specs/modules/NativeHeadlessJsTaskSupport.js +20 -0
  964. package/src/private/specs/modules/NativeI18nManager.js +28 -0
  965. package/src/private/specs/modules/NativeImageEditor.js +52 -0
  966. package/src/private/specs/modules/NativeImageLoaderAndroid.js +30 -0
  967. package/{Libraries/Components/Image/NativeImageLoaderHarmony.js → src/private/specs/modules/NativeImageLoaderIOS.js} +4 -5
  968. package/src/private/specs/modules/NativeImageStoreAndroid.js +26 -0
  969. package/src/private/specs/modules/NativeImageStoreIOS.js +33 -0
  970. package/src/private/specs/modules/NativeIntentAndroid.js +30 -0
  971. package/src/private/specs/modules/NativeJSCHeapCapture.js +19 -0
  972. package/src/private/specs/modules/NativeJSCSamplingProfiler.js +19 -0
  973. package/src/private/specs/modules/NativeKeyboardObserver.js +20 -0
  974. package/src/private/specs/modules/NativeLinkingManager.js +27 -0
  975. package/src/private/specs/modules/NativeLogBox.js +20 -0
  976. package/src/private/specs/modules/NativeModalManager.js +21 -0
  977. package/src/private/specs/modules/NativeNetworkingAndroid.js +37 -0
  978. package/src/private/specs/modules/NativeNetworkingIOS.js +37 -0
  979. package/src/private/specs/modules/NativePermissionsAndroid.js +77 -0
  980. package/src/private/specs/modules/NativePlatformConstantsAndroid.js +44 -0
  981. package/src/private/specs/modules/NativePlatformConstantsIOS.js +37 -0
  982. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +103 -0
  983. package/src/private/specs/modules/NativeReactDevToolsSettingsManager.js +22 -0
  984. package/src/private/specs/modules/NativeRedBox.js +20 -0
  985. package/src/private/specs/modules/NativeSampleTurboModule.js +66 -0
  986. package/src/private/specs/modules/NativeSegmentFetcher.js +28 -0
  987. package/src/private/specs/modules/NativeSettingsManager.js +25 -0
  988. package/src/private/specs/modules/NativeShareModule.js +23 -0
  989. package/src/private/specs/modules/NativeSoundManager.js +22 -0
  990. package/src/private/specs/modules/NativeSourceCode.js +36 -0
  991. package/{Libraries/Components/StatusBar/NativeStatusBarManagerHarmony.js → src/private/specs/modules/NativeStatusBarManagerAndroid.js} +10 -13
  992. package/src/private/specs/modules/NativeStatusBarManagerIOS.js +89 -0
  993. package/src/private/specs/modules/NativeTiming.js +26 -0
  994. package/src/private/specs/modules/NativeToastAndroid.js +38 -0
  995. package/src/private/specs/modules/NativeUIManager.js +111 -0
  996. package/src/private/specs/modules/NativeVibration.js +24 -0
  997. package/src/private/specs/modules/NativeWebSocketModule.js +34 -0
  998. package/src/private/styles/composeStyles.js +27 -0
  999. package/src/private/webapis/dom/geometry/DOMRect.js +82 -0
  1000. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +188 -0
  1001. package/src/private/webapis/dom/nodes/ReactNativeElement.js +188 -0
  1002. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +71 -0
  1003. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +247 -0
  1004. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +359 -0
  1005. package/src/private/webapis/dom/nodes/ReadOnlyText.js +30 -0
  1006. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  1007. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  1008. package/src/private/webapis/dom/nodes/utilities/Traversal.js +54 -0
  1009. package/src/private/webapis/dom/oldstylecollections/ArrayLikeUtils.js +46 -0
  1010. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +76 -0
  1011. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js.flow +27 -0
  1012. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +82 -0
  1013. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js.flow +27 -0
  1014. package/src/private/webapis/dom/oldstylecollections/NodeList.js +104 -0
  1015. package/src/private/webapis/dom/oldstylecollections/NodeList.js.flow +31 -0
  1016. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  1017. package/src/private/webapis/intersectionobserver/IntersectionObserver.js +345 -0
  1018. package/src/private/webapis/intersectionobserver/IntersectionObserverEntry.js +167 -0
  1019. package/src/private/webapis/intersectionobserver/IntersectionObserverManager.js +277 -0
  1020. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +42 -0
  1021. package/src/private/webapis/intersectionobserver/specs/__mocks__/NativeIntersectionObserver.js +181 -0
  1022. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  1023. package/src/private/webapis/mutationobserver/MutationObserver.js +186 -0
  1024. package/src/private/webapis/mutationobserver/MutationObserverManager.js +227 -0
  1025. package/src/private/webapis/mutationobserver/MutationRecord.js +82 -0
  1026. package/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js +58 -0
  1027. package/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js +327 -0
  1028. package/src/private/webapis/performance/EventTiming.js +145 -0
  1029. package/src/private/webapis/performance/LongTasks.js +39 -0
  1030. package/src/private/webapis/performance/MemoryInfo.js +54 -0
  1031. package/src/private/webapis/performance/Performance.js +299 -0
  1032. package/src/private/webapis/performance/PerformanceEntry.js +68 -0
  1033. package/src/private/webapis/performance/PerformanceObserver.js +232 -0
  1034. package/src/private/webapis/performance/RawPerformanceEntry.js +105 -0
  1035. package/src/private/webapis/performance/ReactNativeStartupTiming.js +91 -0
  1036. package/src/private/webapis/performance/UserTiming.js +72 -0
  1037. package/src/private/webapis/performance/Utilities.js +18 -0
  1038. package/src/private/webapis/performance/specs/NativePerformance.js +103 -0
  1039. package/src/private/webapis/performance/specs/__mocks__/NativePerformanceMock.js +267 -0
  1040. package/tsconfig.json +10 -4
  1041. package/types/index.d.ts +204 -97
  1042. package/types/index.harmony.d.ts +99 -0
  1043. package/types/modules/BatchedBridge.d.ts +32 -0
  1044. package/types/modules/Codegen.d.ts +80 -0
  1045. package/types/modules/Devtools.d.ts +32 -0
  1046. package/types/modules/LaunchScreen.d.ts +18 -0
  1047. package/types/modules/globals.d.ts +599 -0
  1048. package/types/private/TimerMixin.d.ts +19 -0
  1049. package/types/private/Utilities.d.ts +10 -0
  1050. package/types/public/DeprecatedPropertiesAlias.d.ts +185 -0
  1051. package/types/public/Insets.d.ts +15 -0
  1052. package/types/public/ReactNativeRenderer.d.ts +144 -0
  1053. package/types/public/ReactNativeTypes.d.ts +139 -0
  1054. package/types/tsconfig.json +15 -0
  1055. package/types/tslint.json +24 -0
  1056. package/Libraries/Alert/Alert.harmony.js +0 -77
  1057. package/Libraries/Animated/NativeAnimatedHelper.harmony.js +0 -601
  1058. package/Libraries/Components/Image/Image.flow.harmony.js +0 -53
  1059. package/Libraries/Components/Image/Image.harmony.js +0 -317
  1060. package/Libraries/Components/TextInput/TextInputState.harmony.js +0 -220
  1061. package/Libraries/Components/Touchable/TouchableWithoutFeedback.harmony.js +0 -227
  1062. package/Libraries/Core/setUpReactDevTools.harmony.js +0 -93
  1063. package/Libraries/Settings/Settings.harmony.js +0 -15
  1064. package/Libraries/StyleSheet/NativePlatformColor.ts +0 -8
  1065. package/Libraries/Utilities/NativePlatformConstants.harmony.ts +0 -8
  1066. package/Libraries/Vibration/Vibration.harmony.js +0 -88
  1067. package/harmony/.keep +0 -0
  1068. package/harmony/rnoh-hvigor-plugin-0.2.0.tgz +0 -0
  1069. package/react_native_openharmony_release.har +0 -0
@@ -0,0 +1,1302 @@
1
+ /*
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ #import <mach/mach_time.h>
9
+ #import <objc/runtime.h>
10
+ #import <atomic>
11
+
12
+ #import <ImageIO/ImageIO.h>
13
+
14
+ #import <FBReactNativeSpec/FBReactNativeSpec.h>
15
+ #import <React/RCTConvert.h>
16
+ #import <React/RCTDefines.h>
17
+ #import <React/RCTImageCache.h>
18
+ #import <React/RCTImageLoader.h>
19
+ #import <React/RCTImageLoaderWithAttributionProtocol.h>
20
+ #import <React/RCTImageUtils.h>
21
+ #import <React/RCTLog.h>
22
+ #import <React/RCTNetworking.h>
23
+ #import <React/RCTUtils.h>
24
+
25
+ #import "RCTImagePlugins.h"
26
+
27
+ using namespace facebook::react;
28
+
29
+ static NSInteger RCTImageBytesForImage(UIImage *image)
30
+ {
31
+ NSInteger singleImageBytes = (NSInteger)(image.size.width * image.size.height * image.scale * image.scale * 4);
32
+ return image.images ? image.images.count * singleImageBytes : singleImageBytes;
33
+ }
34
+
35
+ static auto currentRequestCount = std::atomic<uint64_t>(0);
36
+
37
+ static NSError *addResponseHeadersToError(NSError *originalError, NSHTTPURLResponse *response)
38
+ {
39
+ NSMutableDictionary<NSString *, id> *_userInfo =
40
+ (NSMutableDictionary<NSString *, id> *)originalError.userInfo.mutableCopy;
41
+ _userInfo[@"httpStatusCode"] = [NSNumber numberWithInt:response.statusCode];
42
+ _userInfo[@"httpResponseHeaders"] = response.allHeaderFields;
43
+ NSError *error = [NSError errorWithDomain:originalError.domain code:originalError.code userInfo:_userInfo];
44
+
45
+ return error;
46
+ }
47
+
48
+ @interface RCTImageLoader () <NativeImageLoaderIOSSpec, RCTImageLoaderWithAttributionProtocol>
49
+
50
+ @end
51
+
52
+ @implementation UIImage (React)
53
+
54
+ - (NSInteger)reactDecodedImageBytes
55
+ {
56
+ NSNumber *imageBytes = objc_getAssociatedObject(self, _cmd);
57
+ if (!imageBytes) {
58
+ imageBytes = @(RCTImageBytesForImage(self));
59
+ }
60
+ return [imageBytes integerValue];
61
+ }
62
+
63
+ - (void)setReactDecodedImageBytes:(NSInteger)bytes
64
+ {
65
+ objc_setAssociatedObject(self, @selector(reactDecodedImageBytes), @(bytes), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
66
+ }
67
+
68
+ @end
69
+
70
+ @implementation RCTImageLoader {
71
+ std::atomic<BOOL> _isLoaderSetup;
72
+ std::mutex _loaderSetupLock;
73
+ NSArray<id<RCTImageURLLoader>> * (^_loadersProvider)(RCTModuleRegistry *);
74
+ NSArray<id<RCTImageDataDecoder>> * (^_decodersProvider)(RCTModuleRegistry *);
75
+ NSArray<id<RCTImageURLLoader>> *_loaders;
76
+ NSArray<id<RCTImageDataDecoder>> *_decoders;
77
+ NSOperationQueue *_imageDecodeQueue;
78
+ dispatch_queue_t _URLRequestQueue;
79
+ id<RCTImageCache> _imageCache;
80
+ NSMutableArray *_pendingTasks;
81
+ NSInteger _activeTasks;
82
+ NSMutableArray *_pendingDecodes;
83
+ NSInteger _scheduledDecodes;
84
+ NSUInteger _activeBytes;
85
+ std::mutex _loadersMutex;
86
+ __weak id<RCTImageRedirectProtocol> _redirectDelegate;
87
+ }
88
+
89
+ @synthesize bridge = _bridge;
90
+ @synthesize moduleRegistry = _moduleRegistry;
91
+ @synthesize maxConcurrentLoadingTasks = _maxConcurrentLoadingTasks;
92
+ @synthesize maxConcurrentDecodingTasks = _maxConcurrentDecodingTasks;
93
+ @synthesize maxConcurrentDecodingBytes = _maxConcurrentDecodingBytes;
94
+
95
+ RCT_EXPORT_MODULE()
96
+
97
+ - (instancetype)init
98
+ {
99
+ return [self initWithRedirectDelegate:nil];
100
+ }
101
+
102
+ + (BOOL)requiresMainQueueSetup
103
+ {
104
+ return NO;
105
+ }
106
+
107
+ - (instancetype)initWithRedirectDelegate:(id<RCTImageRedirectProtocol>)redirectDelegate
108
+ {
109
+ if (self = [super init]) {
110
+ _redirectDelegate = redirectDelegate;
111
+ _isLoaderSetup = NO;
112
+ }
113
+ return self;
114
+ }
115
+
116
+ - (instancetype)initWithRedirectDelegate:(id<RCTImageRedirectProtocol>)redirectDelegate
117
+ loadersProvider:(NSArray<id<RCTImageURLLoader>> * (^)(RCTModuleRegistry *))getLoaders
118
+ decodersProvider:(NSArray<id<RCTImageDataDecoder>> * (^)(RCTModuleRegistry *))getHandlers
119
+ {
120
+ if (self = [self initWithRedirectDelegate:redirectDelegate]) {
121
+ _loadersProvider = getLoaders;
122
+ _decodersProvider = getHandlers;
123
+ }
124
+ return self;
125
+ }
126
+
127
+ - (void)setUp
128
+ {
129
+ std::lock_guard<std::mutex> guard(_loaderSetupLock);
130
+ if (!_isLoaderSetup) {
131
+ // Set defaults
132
+ _maxConcurrentLoadingTasks = _maxConcurrentLoadingTasks ?: 4;
133
+ _maxConcurrentDecodingTasks = _maxConcurrentDecodingTasks ?: 2;
134
+ _maxConcurrentDecodingBytes = _maxConcurrentDecodingBytes ?: 30 * 1024 * 1024; // 30MB
135
+
136
+ _URLRequestQueue = dispatch_queue_create("com.facebook.react.ImageLoaderURLRequestQueue", DISPATCH_QUEUE_SERIAL);
137
+ _isLoaderSetup = YES;
138
+ }
139
+ }
140
+
141
+ - (float)handlerPriority
142
+ {
143
+ return 2;
144
+ }
145
+ #pragma mark - RCTImageLoaderProtocol 1/3
146
+
147
+ - (id<RCTImageCache>)imageCache
148
+ {
149
+ if (!_imageCache) {
150
+ // set up with default cache
151
+ _imageCache = [RCTImageCache new];
152
+ }
153
+ return _imageCache;
154
+ }
155
+
156
+ - (void)setImageCache:(id<RCTImageCache>)cache
157
+ {
158
+ if (_imageCache) {
159
+ RCTLogWarn(@"RCTImageCache was already set and has now been overridden.");
160
+ }
161
+ _imageCache = cache;
162
+ }
163
+
164
+ - (id<RCTImageURLLoader>)imageURLLoaderForURL:(NSURL *)URL
165
+ {
166
+ if (!_isLoaderSetup) {
167
+ [self setUp];
168
+ }
169
+
170
+ if (!_loaders) {
171
+ std::unique_lock<std::mutex> guard(_loadersMutex);
172
+ if (!_loaders) {
173
+ // Get loaders, sorted in reverse priority order (highest priority first)
174
+ if (_loadersProvider) {
175
+ _loaders = _loadersProvider(self.moduleRegistry);
176
+ } else {
177
+ RCTAssert(_bridge, @"Trying to find RCTImageURLLoaders and bridge not set.");
178
+ _loaders = [_bridge modulesConformingToProtocol:@protocol(RCTImageURLLoader)];
179
+ }
180
+
181
+ _loaders =
182
+ [_loaders sortedArrayUsingComparator:^NSComparisonResult(id<RCTImageURLLoader> a, id<RCTImageURLLoader> b) {
183
+ float priorityA = [a respondsToSelector:@selector(loaderPriority)] ? [a loaderPriority] : 0;
184
+ float priorityB = [b respondsToSelector:@selector(loaderPriority)] ? [b loaderPriority] : 0;
185
+ if (priorityA > priorityB) {
186
+ return NSOrderedAscending;
187
+ } else if (priorityA < priorityB) {
188
+ return NSOrderedDescending;
189
+ } else {
190
+ return NSOrderedSame;
191
+ }
192
+ }];
193
+ }
194
+ }
195
+
196
+ if (RCT_DEBUG) {
197
+ // Check for handler conflicts
198
+ float previousPriority = 0;
199
+ id<RCTImageURLLoader> previousLoader = nil;
200
+ for (id<RCTImageURLLoader> loader in _loaders) {
201
+ float priority = [loader respondsToSelector:@selector(loaderPriority)] ? [loader loaderPriority] : 0;
202
+ if (previousLoader && priority < previousPriority) {
203
+ return previousLoader;
204
+ }
205
+ if ([loader canLoadImageURL:URL]) {
206
+ if (previousLoader) {
207
+ if (priority == previousPriority) {
208
+ RCTLogError(
209
+ @"The RCTImageURLLoaders %@ and %@ both reported that"
210
+ " they can load the URL %@, and have equal priority"
211
+ " (%g). This could result in non-deterministic behavior.",
212
+ loader,
213
+ previousLoader,
214
+ URL,
215
+ priority);
216
+ }
217
+ } else {
218
+ previousLoader = loader;
219
+ previousPriority = priority;
220
+ }
221
+ }
222
+ }
223
+ return previousLoader;
224
+ }
225
+
226
+ // Normal code path
227
+ for (id<RCTImageURLLoader> loader in _loaders) {
228
+ if ([loader canLoadImageURL:URL]) {
229
+ return loader;
230
+ }
231
+ }
232
+ return nil;
233
+ }
234
+
235
+ #pragma mark - Private Image Decoding & Resizing
236
+
237
+ - (id<RCTImageDataDecoder>)imageDataDecoderForData:(NSData *)data
238
+ {
239
+ if (!_isLoaderSetup) {
240
+ [self setUp];
241
+ }
242
+
243
+ if (!_decoders) {
244
+ // Get decoders, sorted in reverse priority order (highest priority first)
245
+
246
+ if (_decodersProvider) {
247
+ _decoders = _decodersProvider(self.moduleRegistry);
248
+ } else {
249
+ RCTAssert(_bridge, @"Trying to find RCTImageDataDecoders and bridge not set.");
250
+ _decoders = [_bridge modulesConformingToProtocol:@protocol(RCTImageDataDecoder)];
251
+ }
252
+
253
+ _decoders = [_decoders
254
+ sortedArrayUsingComparator:^NSComparisonResult(id<RCTImageDataDecoder> a, id<RCTImageDataDecoder> b) {
255
+ float priorityA = [a respondsToSelector:@selector(decoderPriority)] ? [a decoderPriority] : 0;
256
+ float priorityB = [b respondsToSelector:@selector(decoderPriority)] ? [b decoderPriority] : 0;
257
+ if (priorityA > priorityB) {
258
+ return NSOrderedAscending;
259
+ } else if (priorityA < priorityB) {
260
+ return NSOrderedDescending;
261
+ } else {
262
+ return NSOrderedSame;
263
+ }
264
+ }];
265
+ }
266
+
267
+ if (RCT_DEBUG) {
268
+ // Check for handler conflicts
269
+ float previousPriority = 0;
270
+ id<RCTImageDataDecoder> previousDecoder = nil;
271
+ for (id<RCTImageDataDecoder> decoder in _decoders) {
272
+ float priority = [decoder respondsToSelector:@selector(decoderPriority)] ? [decoder decoderPriority] : 0;
273
+ if (previousDecoder && priority < previousPriority) {
274
+ return previousDecoder;
275
+ }
276
+ if ([decoder canDecodeImageData:data]) {
277
+ if (previousDecoder) {
278
+ if (priority == previousPriority) {
279
+ RCTLogError(
280
+ @"The RCTImageDataDecoders %@ and %@ both reported that"
281
+ " they can decode the data <NSData %p; %tu bytes>, and"
282
+ " have equal priority (%g). This could result in"
283
+ " non-deterministic behavior.",
284
+ decoder,
285
+ previousDecoder,
286
+ data,
287
+ data.length,
288
+ priority);
289
+ }
290
+ } else {
291
+ previousDecoder = decoder;
292
+ previousPriority = priority;
293
+ }
294
+ }
295
+ }
296
+ return previousDecoder;
297
+ }
298
+
299
+ // Normal code path
300
+ for (id<RCTImageDataDecoder> decoder in _decoders) {
301
+ if ([decoder canDecodeImageData:data]) {
302
+ return decoder;
303
+ }
304
+ }
305
+ return nil;
306
+ }
307
+
308
+ static UIImage *RCTResizeImageIfNeeded(UIImage *image, CGSize size, CGFloat scale, RCTResizeMode resizeMode)
309
+ {
310
+ if (CGSizeEqualToSize(size, CGSizeZero) || CGSizeEqualToSize(image.size, CGSizeZero) ||
311
+ CGSizeEqualToSize(image.size, size)) {
312
+ return image;
313
+ }
314
+ CGRect targetSize = RCTTargetRect(image.size, size, scale, resizeMode);
315
+ CGAffineTransform transform = RCTTransformFromTargetRect(image.size, targetSize);
316
+ image = RCTTransformImage(image, size, scale, transform);
317
+ return image;
318
+ }
319
+
320
+ #pragma mark - RCTImageLoaderProtocol 2/3
321
+
322
+ - (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
323
+ callback:(RCTImageLoaderCompletionBlock)callback
324
+ {
325
+ return [self loadImageWithURLRequest:imageURLRequest priority:RCTImageLoaderPriorityImmediate callback:callback];
326
+ }
327
+
328
+ - (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
329
+ priority:(RCTImageLoaderPriority)priority
330
+ callback:(RCTImageLoaderCompletionBlock)callback
331
+ {
332
+ return [self loadImageWithURLRequest:imageURLRequest
333
+ size:CGSizeZero
334
+ scale:1
335
+ clipped:YES
336
+ resizeMode:RCTResizeModeStretch
337
+ priority:priority
338
+ progressBlock:nil
339
+ partialLoadBlock:nil
340
+ completionBlock:callback];
341
+ }
342
+
343
+ - (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
344
+ size:(CGSize)size
345
+ scale:(CGFloat)scale
346
+ clipped:(BOOL)clipped
347
+ resizeMode:(RCTResizeMode)resizeMode
348
+ progressBlock:(RCTImageLoaderProgressBlock)progressBlock
349
+ partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
350
+ completionBlock:(RCTImageLoaderCompletionBlock)completionBlock
351
+ {
352
+ return [self loadImageWithURLRequest:imageURLRequest
353
+ size:size
354
+ scale:scale
355
+ clipped:clipped
356
+ resizeMode:resizeMode
357
+ priority:RCTImageLoaderPriorityImmediate
358
+ progressBlock:progressBlock
359
+ partialLoadBlock:partialLoadBlock
360
+ completionBlock:completionBlock];
361
+ }
362
+
363
+ - (nullable RCTImageLoaderCancellationBlock)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
364
+ size:(CGSize)size
365
+ scale:(CGFloat)scale
366
+ clipped:(BOOL)clipped
367
+ resizeMode:(RCTResizeMode)resizeMode
368
+ priority:(RCTImageLoaderPriority)priority
369
+ progressBlock:(RCTImageLoaderProgressBlock)progressBlock
370
+ partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
371
+ completionBlock:(RCTImageLoaderCompletionBlock)completionBlock
372
+ {
373
+ RCTImageURLLoaderRequest *request = [self loadImageWithURLRequest:imageURLRequest
374
+ size:size
375
+ scale:scale
376
+ clipped:clipped
377
+ resizeMode:resizeMode
378
+ priority:priority
379
+ attribution:{}
380
+ progressBlock:progressBlock
381
+ partialLoadBlock:partialLoadBlock
382
+ completionBlock:^(NSError *error, UIImage *image, id metadata) {
383
+ completionBlock(error, image);
384
+ }];
385
+ return ^{
386
+ [request cancel];
387
+ };
388
+ }
389
+
390
+ #pragma mark - Private Downloader Methods
391
+
392
+ - (void)dequeueTasks
393
+ {
394
+ dispatch_async(_URLRequestQueue, ^{
395
+ // Remove completed tasks
396
+ NSMutableArray *tasksToRemove = nil;
397
+ for (RCTNetworkTask *task in self->_pendingTasks.reverseObjectEnumerator) {
398
+ switch (task.status) {
399
+ case RCTNetworkTaskFinished:
400
+ if (!tasksToRemove) {
401
+ tasksToRemove = [NSMutableArray new];
402
+ }
403
+ [tasksToRemove addObject:task];
404
+ self->_activeTasks--;
405
+ break;
406
+ case RCTNetworkTaskPending:
407
+ break;
408
+ case RCTNetworkTaskInProgress:
409
+ // Check task isn't "stuck"
410
+ if (task.requestToken == nil) {
411
+ RCTLogWarn(@"Task orphaned for request %@", task.request);
412
+ if (!tasksToRemove) {
413
+ tasksToRemove = [NSMutableArray new];
414
+ }
415
+ [tasksToRemove addObject:task];
416
+ self->_activeTasks--;
417
+ [task cancel];
418
+ }
419
+ break;
420
+ }
421
+ }
422
+
423
+ if (tasksToRemove) {
424
+ [self->_pendingTasks removeObjectsInArray:tasksToRemove];
425
+ }
426
+
427
+ // Start queued decode
428
+ NSInteger activeDecodes = self->_scheduledDecodes - self->_pendingDecodes.count;
429
+ while (activeDecodes == 0 ||
430
+ (self->_activeBytes <= self->_maxConcurrentDecodingBytes &&
431
+ activeDecodes <= self->_maxConcurrentDecodingTasks)) {
432
+ dispatch_block_t decodeBlock = self->_pendingDecodes.firstObject;
433
+ if (decodeBlock) {
434
+ [self->_pendingDecodes removeObjectAtIndex:0];
435
+ decodeBlock();
436
+ } else {
437
+ break;
438
+ }
439
+ }
440
+
441
+ // Start queued tasks
442
+ for (RCTNetworkTask *task in self->_pendingTasks) {
443
+ if (MAX(self->_activeTasks, self->_scheduledDecodes) >= self->_maxConcurrentLoadingTasks) {
444
+ break;
445
+ }
446
+ if (task.status == RCTNetworkTaskPending) {
447
+ [task start];
448
+ self->_activeTasks++;
449
+ }
450
+ }
451
+ });
452
+ }
453
+
454
+ /**
455
+ * This returns either an image, or raw image data, depending on the loading
456
+ * path taken. This is useful if you want to skip decoding, e.g. when preloading
457
+ * the image, or retrieving metadata.
458
+ */
459
+ - (RCTImageURLLoaderRequest *)_loadImageOrDataWithURLRequest:(NSURLRequest *)request
460
+ size:(CGSize)size
461
+ scale:(CGFloat)scale
462
+ resizeMode:(RCTResizeMode)resizeMode
463
+ priority:(RCTImageLoaderPriority)priority
464
+ attribution:(const ImageURLLoaderAttribution &)attribution
465
+ progressBlock:(RCTImageLoaderProgressBlock)progressHandler
466
+ partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadHandler
467
+ completionBlock:(void (^)(
468
+ NSError *error,
469
+ id imageOrData,
470
+ id imageMetadata,
471
+ BOOL cacheResult,
472
+ NSURLResponse *response))completionBlock
473
+ {
474
+ {
475
+ NSMutableURLRequest *mutableRequest = [request mutableCopy];
476
+ [NSURLProtocol setProperty:@"RCTImageLoader" forKey:@"trackingName" inRequest:mutableRequest];
477
+
478
+ // Add missing png extension
479
+ if (request.URL.fileURL && request.URL.pathExtension.length == 0) {
480
+ // Check if there exists a file with that url on disk already
481
+ // This should fix issue https://github.com/facebook/react-native/issues/46870
482
+ if ([[NSFileManager defaultManager] fileExistsAtPath:request.URL.path]) {
483
+ mutableRequest.URL = request.URL;
484
+ } else {
485
+ // This is the default behavior in case there is no file on disk with no extension.
486
+ // We assume that the extension is `png`.
487
+ mutableRequest.URL = [request.URL URLByAppendingPathExtension:@"png"];
488
+ }
489
+ }
490
+ if (_redirectDelegate != nil) {
491
+ mutableRequest.URL = [_redirectDelegate redirectAssetsURL:mutableRequest.URL];
492
+ }
493
+ request = mutableRequest;
494
+ }
495
+
496
+ // Create a copy here so the value is retained when accessed in the blocks below.
497
+ ImageURLLoaderAttribution attributionCopy(attribution);
498
+
499
+ // Find suitable image URL loader
500
+ id<RCTImageURLLoader> loadHandler = [self imageURLLoaderForURL:request.URL];
501
+ BOOL requiresScheduling =
502
+ [loadHandler respondsToSelector:@selector(requiresScheduling)] ? [loadHandler requiresScheduling] : YES;
503
+
504
+ BOOL cacheResult =
505
+ [loadHandler respondsToSelector:@selector(shouldCacheLoadedImages)] ? [loadHandler shouldCacheLoadedImages] : YES;
506
+
507
+ if (request.cachePolicy == NSURLRequestReloadIgnoringLocalCacheData) {
508
+ cacheResult = NO;
509
+ }
510
+
511
+ if (cacheResult && partialLoadHandler) {
512
+ UIImage *image = [[self imageCache] imageForUrl:request.URL.absoluteString
513
+ size:size
514
+ scale:scale
515
+ resizeMode:resizeMode];
516
+ if (image) {
517
+ partialLoadHandler(image);
518
+ }
519
+ }
520
+
521
+ auto cancelled = std::make_shared<std::atomic<int>>(0);
522
+ __block dispatch_block_t cancelLoad = nil;
523
+ __block NSLock *cancelLoadLock = [NSLock new];
524
+ NSString *requestId = [NSString stringWithFormat:@"%@-%llu", [[NSUUID UUID] UUIDString], currentRequestCount++];
525
+
526
+ void (^completionHandler)(NSError *, id, id, NSURLResponse *) =
527
+ ^(NSError *error, id imageOrData, id imageMetadata, NSURLResponse *response) {
528
+ [cancelLoadLock lock];
529
+ cancelLoad = nil;
530
+ [cancelLoadLock unlock];
531
+
532
+ // If we've received an image, we should try to set it synchronously,
533
+ // if it's data, do decoding on a background thread.
534
+ if (RCTIsMainQueue() && ![imageOrData isKindOfClass:[UIImage class]]) {
535
+ // Most loaders do not return on the main thread, so caller is probably not
536
+ // expecting it, and may do expensive post-processing in the callback
537
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
538
+ if (!std::atomic_load(cancelled.get())) {
539
+ completionBlock(error, imageOrData, imageMetadata, cacheResult, response);
540
+ }
541
+ });
542
+ } else if (!std::atomic_load(cancelled.get())) {
543
+ if (response && error && [response isKindOfClass:[NSHTTPURLResponse class]]) {
544
+ NSHTTPURLResponse *_httpResp = (NSHTTPURLResponse *)response;
545
+ error = addResponseHeadersToError(error, _httpResp);
546
+ }
547
+ completionBlock(error, imageOrData, imageMetadata, cacheResult, response);
548
+ }
549
+ };
550
+
551
+ // If the loader doesn't require scheduling we call it directly on
552
+ // the main queue.
553
+ if (loadHandler && !requiresScheduling) {
554
+ if ([loadHandler conformsToProtocol:@protocol(RCTImageURLLoaderWithAttribution)]) {
555
+ return [(id<RCTImageURLLoaderWithAttribution>)loadHandler
556
+ loadImageForURL:request.URL
557
+ size:size
558
+ scale:scale
559
+ resizeMode:resizeMode
560
+ requestId:requestId
561
+ priority:priority
562
+ attribution:attributionCopy
563
+ progressHandler:progressHandler
564
+ partialLoadHandler:partialLoadHandler
565
+ completionHandler:^(NSError *error, UIImage *image, id metadata) {
566
+ completionHandler(error, image, metadata, nil);
567
+ }];
568
+ }
569
+ RCTImageLoaderCancellationBlock cb = [loadHandler loadImageForURL:request.URL
570
+ size:size
571
+ scale:scale
572
+ resizeMode:resizeMode
573
+ progressHandler:progressHandler
574
+ partialLoadHandler:partialLoadHandler
575
+ completionHandler:^(NSError *error, UIImage *image) {
576
+ completionHandler(error, image, nil, nil);
577
+ }];
578
+ return [[RCTImageURLLoaderRequest alloc] initWithRequestId:nil imageURL:request.URL cancellationBlock:cb];
579
+ }
580
+
581
+ // All access to URL cache must be serialized
582
+ if (!_isLoaderSetup) {
583
+ [self setUp];
584
+ }
585
+
586
+ __weak RCTImageLoader *weakSelf = self;
587
+ dispatch_async(_URLRequestQueue, ^{
588
+ __typeof(self) strongSelf = weakSelf;
589
+ if (atomic_load(cancelled.get()) || !strongSelf) {
590
+ return;
591
+ }
592
+
593
+ if (loadHandler) {
594
+ dispatch_block_t cancelLoadLocal;
595
+ if ([loadHandler conformsToProtocol:@protocol(RCTImageURLLoaderWithAttribution)]) {
596
+ RCTImageURLLoaderRequest *loaderRequest = [(id<RCTImageURLLoaderWithAttribution>)loadHandler
597
+ loadImageForURL:request.URL
598
+ size:size
599
+ scale:scale
600
+ resizeMode:resizeMode
601
+ requestId:requestId
602
+ priority:priority
603
+ attribution:attributionCopy
604
+ progressHandler:progressHandler
605
+ partialLoadHandler:partialLoadHandler
606
+ completionHandler:^(NSError *error, UIImage *image, id metadata) {
607
+ completionHandler(error, image, metadata, nil);
608
+ }];
609
+ cancelLoadLocal = loaderRequest.cancellationBlock;
610
+ } else {
611
+ cancelLoadLocal = [loadHandler loadImageForURL:request.URL
612
+ size:size
613
+ scale:scale
614
+ resizeMode:resizeMode
615
+ progressHandler:progressHandler
616
+ partialLoadHandler:partialLoadHandler
617
+ completionHandler:^(NSError *error, UIImage *image) {
618
+ completionHandler(error, image, nil, nil);
619
+ }];
620
+ }
621
+ [cancelLoadLock lock];
622
+ cancelLoad = cancelLoadLocal;
623
+ [cancelLoadLock unlock];
624
+ } else {
625
+ UIImage *image;
626
+ if (cacheResult) {
627
+ image = [[strongSelf imageCache] imageForUrl:request.URL.absoluteString
628
+ size:size
629
+ scale:scale
630
+ resizeMode:resizeMode];
631
+ }
632
+
633
+ if (image) {
634
+ completionHandler(nil, image, nil, nil);
635
+ } else {
636
+ // Use networking module to load image
637
+ dispatch_block_t cancelLoadLocal =
638
+ [strongSelf _loadURLRequest:request
639
+ progressBlock:progressHandler
640
+ completionBlock:^(NSError *error, id imageOrData, NSURLResponse *response) {
641
+ completionHandler(error, imageOrData, nil, response);
642
+ }];
643
+ [cancelLoadLock lock];
644
+ cancelLoad = cancelLoadLocal;
645
+ [cancelLoadLock unlock];
646
+ }
647
+ }
648
+ });
649
+
650
+ return [[RCTImageURLLoaderRequest alloc] initWithRequestId:requestId
651
+ imageURL:request.URL
652
+ cancellationBlock:^{
653
+ BOOL alreadyCancelled = atomic_fetch_or(cancelled.get(), 1) ? YES : NO;
654
+ if (alreadyCancelled) {
655
+ return;
656
+ }
657
+ [cancelLoadLock lock];
658
+ dispatch_block_t cancelLoadLocal = cancelLoad;
659
+ cancelLoad = nil;
660
+ [cancelLoadLock unlock];
661
+ if (cancelLoadLocal) {
662
+ cancelLoadLocal();
663
+ }
664
+ }];
665
+ }
666
+
667
+ - (RCTImageLoaderCancellationBlock)_loadURLRequest:(NSURLRequest *)request
668
+ progressBlock:(RCTImageLoaderProgressBlock)progressHandler
669
+ completionBlock:(void (^)(NSError *error, id imageOrData, NSURLResponse *response))
670
+ completionHandler
671
+ {
672
+ RCTNetworking *networking = [_moduleRegistry moduleForName:"Networking"];
673
+ if (RCT_DEBUG && !networking) {
674
+ RCTLogError(
675
+ @"No suitable image URL loader found for %@. You may need to "
676
+ " import the RCTNetwork library in order to load images.",
677
+ request.URL.absoluteString);
678
+ return NULL;
679
+ }
680
+
681
+ // Check if networking module can load image
682
+ if (RCT_DEBUG && ![networking canHandleRequest:request]) {
683
+ RCTLogError(@"No suitable image URL loader found for %@", request.URL.absoluteString);
684
+ return NULL;
685
+ }
686
+
687
+ // Use networking module to load image
688
+ RCTURLRequestCompletionBlock processResponse = ^(NSURLResponse *response, NSData *data, NSError *error) {
689
+ // Check for system errors
690
+ if (error) {
691
+ completionHandler(error, nil, response);
692
+ return;
693
+ } else if (!response) {
694
+ completionHandler(RCTErrorWithMessage(@"Response metadata error"), nil, response);
695
+ return;
696
+ } else if (!data) {
697
+ completionHandler(RCTErrorWithMessage(@"Unknown image download error"), nil, response);
698
+ return;
699
+ }
700
+
701
+ // Check for http errors
702
+ if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
703
+ NSInteger statusCode = ((NSHTTPURLResponse *)response).statusCode;
704
+ if (statusCode != 200) {
705
+ NSString *errorMessage = [NSString stringWithFormat:@"Failed to load %@", response.URL];
706
+ NSDictionary *userInfo = @{NSLocalizedDescriptionKey : errorMessage};
707
+ completionHandler(
708
+ [[NSError alloc] initWithDomain:NSURLErrorDomain code:statusCode userInfo:userInfo], nil, response);
709
+ return;
710
+ }
711
+ }
712
+
713
+ // Call handler
714
+ completionHandler(nil, data, response);
715
+ };
716
+
717
+ // Download image
718
+ __weak __typeof(self) weakSelf = self;
719
+ __block RCTNetworkTask *task =
720
+ [networking networkTaskWithRequest:request
721
+ completionBlock:^(NSURLResponse *response, NSData *data, NSError *error) {
722
+ __typeof(self) strongSelf = weakSelf;
723
+ if (!strongSelf) {
724
+ return;
725
+ }
726
+
727
+ if (error || !response || !data) {
728
+ NSError *someError = nil;
729
+ if (error) {
730
+ someError = error;
731
+ } else if (!response) {
732
+ someError = RCTErrorWithMessage(@"Response metadata error");
733
+ } else {
734
+ someError = RCTErrorWithMessage(@"Unknown image download error");
735
+ }
736
+ completionHandler(someError, nil, response);
737
+ [strongSelf dequeueTasks];
738
+ return;
739
+ }
740
+
741
+ dispatch_async(strongSelf->_URLRequestQueue, ^{
742
+ // Process image data
743
+ processResponse(response, data, nil);
744
+
745
+ // Prepare for next task
746
+ [strongSelf dequeueTasks];
747
+ });
748
+ }];
749
+
750
+ task.downloadProgressBlock = ^(int64_t progress, int64_t total) {
751
+ if (progressHandler) {
752
+ progressHandler(progress, total);
753
+ }
754
+ };
755
+
756
+ if (task) {
757
+ if (!_pendingTasks) {
758
+ _pendingTasks = [NSMutableArray new];
759
+ }
760
+ [_pendingTasks addObject:task];
761
+ [self dequeueTasks];
762
+ }
763
+
764
+ return ^{
765
+ __typeof(self) strongSelf = weakSelf;
766
+ if (!strongSelf || !task) {
767
+ return;
768
+ }
769
+ dispatch_async(strongSelf->_URLRequestQueue, ^{
770
+ [task cancel];
771
+ task = nil;
772
+ });
773
+ [strongSelf dequeueTasks];
774
+ };
775
+ }
776
+
777
+ #pragma mark - RCTImageLoaderWithAttributionProtocol
778
+
779
+ - (RCTImageURLLoaderRequest *)loadImageWithURLRequest:(NSURLRequest *)imageURLRequest
780
+ size:(CGSize)size
781
+ scale:(CGFloat)scale
782
+ clipped:(BOOL)clipped
783
+ resizeMode:(RCTResizeMode)resizeMode
784
+ priority:(RCTImageLoaderPriority)priority
785
+ attribution:(const ImageURLLoaderAttribution &)attribution
786
+ progressBlock:(RCTImageLoaderProgressBlock)progressBlock
787
+ partialLoadBlock:(RCTImageLoaderPartialLoadBlock)partialLoadBlock
788
+ completionBlock:(RCTImageLoaderCompletionBlockWithMetadata)completionBlock
789
+ {
790
+ auto cancelled = std::make_shared<std::atomic<int>>(0);
791
+ __block dispatch_block_t cancelLoad = nil;
792
+ __block NSLock *cancelLoadLock = [NSLock new];
793
+ dispatch_block_t cancellationBlock = ^{
794
+ BOOL alreadyCancelled = atomic_fetch_or(cancelled.get(), 1) ? YES : NO;
795
+ if (alreadyCancelled) {
796
+ return;
797
+ }
798
+ [cancelLoadLock lock];
799
+ dispatch_block_t cancelLoadLocal = cancelLoad;
800
+ cancelLoad = nil;
801
+ [cancelLoadLock unlock];
802
+ if (cancelLoadLocal) {
803
+ cancelLoadLocal();
804
+ }
805
+ };
806
+
807
+ __weak RCTImageLoader *weakSelf = self;
808
+ void (^completionHandler)(NSError *, id, id, BOOL, NSURLResponse *) =
809
+ ^(NSError *error, id imageOrData, id imageMetadata, BOOL cacheResult, NSURLResponse *response) {
810
+ __typeof(self) strongSelf = weakSelf;
811
+ if (std::atomic_load(cancelled.get()) || !strongSelf) {
812
+ return;
813
+ }
814
+
815
+ if (!imageOrData || [imageOrData isKindOfClass:[UIImage class]]) {
816
+ [cancelLoadLock lock];
817
+ cancelLoad = nil;
818
+ [cancelLoadLock unlock];
819
+ completionBlock(error, imageOrData, imageMetadata);
820
+ return;
821
+ }
822
+
823
+ RCTImageLoaderCompletionBlock decodeCompletionHandler = ^(NSError *error_, UIImage *image) {
824
+ if (cacheResult && image) {
825
+ // Store decoded image in cache
826
+ [[strongSelf imageCache] addImageToCache:image
827
+ URL:imageURLRequest.URL.absoluteString
828
+ size:size
829
+ scale:scale
830
+ resizeMode:resizeMode
831
+ response:response];
832
+ }
833
+ [cancelLoadLock lock];
834
+ cancelLoad = nil;
835
+ [cancelLoadLock unlock];
836
+ completionBlock(error_, image, nil);
837
+ };
838
+ dispatch_block_t cancelLoadLocal = [strongSelf decodeImageData:imageOrData
839
+ size:size
840
+ scale:scale
841
+ clipped:clipped
842
+ resizeMode:resizeMode
843
+ completionBlock:decodeCompletionHandler];
844
+ [cancelLoadLock lock];
845
+ cancelLoad = cancelLoadLocal;
846
+ [cancelLoadLock unlock];
847
+ };
848
+
849
+ RCTImageURLLoaderRequest *loaderRequest = [self _loadImageOrDataWithURLRequest:imageURLRequest
850
+ size:size
851
+ scale:scale
852
+ resizeMode:resizeMode
853
+ priority:priority
854
+ attribution:attribution
855
+ progressBlock:progressBlock
856
+ partialLoadBlock:partialLoadBlock
857
+ completionBlock:completionHandler];
858
+ [cancelLoadLock lock];
859
+ cancelLoad = loaderRequest.cancellationBlock;
860
+ [cancelLoadLock unlock];
861
+ return [[RCTImageURLLoaderRequest alloc] initWithRequestId:loaderRequest.requestId
862
+ imageURL:imageURLRequest.URL
863
+ cancellationBlock:cancellationBlock];
864
+ }
865
+
866
+ - (BOOL)shouldEnablePerfLoggingForRequestUrl:(NSURL *)url
867
+ {
868
+ id<RCTImageURLLoader> loadHandler = [self imageURLLoaderForURL:url];
869
+ if ([loadHandler respondsToSelector:@selector(shouldEnablePerfLogging)]) {
870
+ return [(id<RCTImageURLLoaderWithAttribution>)loadHandler shouldEnablePerfLogging];
871
+ }
872
+ return NO;
873
+ }
874
+
875
+ - (void)trackURLImageVisibilityForRequest:(RCTImageURLLoaderRequest *)loaderRequest imageView:(UIView *)imageView
876
+ {
877
+ if (!loaderRequest || !imageView) {
878
+ return;
879
+ }
880
+
881
+ id<RCTImageURLLoader> loadHandler = [self imageURLLoaderForURL:loaderRequest.imageURL];
882
+ if ([loadHandler respondsToSelector:@selector(trackURLImageVisibilityForRequest:imageView:)]) {
883
+ [(id<RCTImageURLLoaderWithAttribution>)loadHandler trackURLImageVisibilityForRequest:loaderRequest
884
+ imageView:imageView];
885
+ }
886
+ }
887
+
888
+ - (void)trackURLImageRequestDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest
889
+ {
890
+ if (!loaderRequest) {
891
+ return;
892
+ }
893
+
894
+ id<RCTImageURLLoader> loadHandler = [self imageURLLoaderForURL:loaderRequest.imageURL];
895
+ if ([loadHandler respondsToSelector:@selector(trackURLImageRequestDidDestroy:)]) {
896
+ [(id<RCTImageURLLoaderWithAttribution>)loadHandler trackURLImageRequestDidDestroy:loaderRequest];
897
+ }
898
+ }
899
+
900
+ - (void)trackURLImageDidDestroy:(RCTImageURLLoaderRequest *)loaderRequest
901
+ {
902
+ if (!loaderRequest) {
903
+ return;
904
+ }
905
+
906
+ id<RCTImageURLLoader> loadHandler = [self imageURLLoaderForURL:loaderRequest.imageURL];
907
+ if ([loadHandler respondsToSelector:@selector(trackURLImageDidDestroy:)]) {
908
+ [(id<RCTImageURLLoaderWithAttribution>)loadHandler trackURLImageDidDestroy:loaderRequest];
909
+ }
910
+ }
911
+
912
+ #pragma mark - RCTImageLoaderProtocol 3/3
913
+
914
+ - (RCTImageLoaderCancellationBlock)decodeImageData:(NSData *)data
915
+ size:(CGSize)size
916
+ scale:(CGFloat)scale
917
+ clipped:(BOOL)clipped
918
+ resizeMode:(RCTResizeMode)resizeMode
919
+ completionBlock:(RCTImageLoaderCompletionBlock)completionBlock
920
+ {
921
+ if (data.length == 0) {
922
+ completionBlock(RCTErrorWithMessage(@"No image data"), nil);
923
+ return ^{
924
+ };
925
+ }
926
+
927
+ auto cancelled = std::make_shared<std::atomic<int>>(0);
928
+ void (^completionHandler)(NSError *, UIImage *) = ^(NSError *error, UIImage *image) {
929
+ if (RCTIsMainQueue()) {
930
+ // Most loaders do not return on the main thread, so caller is probably not
931
+ // expecting it, and may do expensive post-processing in the callback
932
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
933
+ if (!std::atomic_load(cancelled.get())) {
934
+ completionBlock(error, clipped ? RCTResizeImageIfNeeded(image, size, scale, resizeMode) : image);
935
+ }
936
+ });
937
+ } else if (!std::atomic_load(cancelled.get())) {
938
+ completionBlock(error, clipped ? RCTResizeImageIfNeeded(image, size, scale, resizeMode) : image);
939
+ }
940
+ };
941
+
942
+ id<RCTImageDataDecoder> imageDecoder = [self imageDataDecoderForData:data];
943
+ if (imageDecoder) {
944
+ return [imageDecoder decodeImageData:data
945
+ size:size
946
+ scale:scale
947
+ resizeMode:resizeMode
948
+ completionHandler:completionHandler]
949
+ ?: ^{
950
+ };
951
+ } else {
952
+ dispatch_block_t decodeBlock = ^{
953
+ // Calculate the size, in bytes, that the decompressed image will require
954
+ NSInteger decodedImageBytes = (NSInteger)((size.width * scale) * (size.height * scale) * 4);
955
+
956
+ // Mark these bytes as in-use
957
+ self->_activeBytes += decodedImageBytes;
958
+
959
+ // Do actual decompression on a concurrent background queue
960
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
961
+ if (!std::atomic_load(cancelled.get())) {
962
+ // Decompress the image data (this may be CPU and memory intensive)
963
+ UIImage *image = RCTDecodeImageWithData(data, size, scale, resizeMode);
964
+
965
+ #if RCT_DEV
966
+ CGSize imagePixelSize = RCTSizeInPixels(image.size, image.scale);
967
+ CGSize screenPixelSize = RCTSizeInPixels(RCTScreenSize(), RCTScreenScale());
968
+ if (imagePixelSize.width * imagePixelSize.height > screenPixelSize.width * screenPixelSize.height) {
969
+ RCTLogInfo(
970
+ @"[PERF ASSETS] Loading image at size %@, which is larger "
971
+ "than the screen size %@",
972
+ NSStringFromCGSize(imagePixelSize),
973
+ NSStringFromCGSize(screenPixelSize));
974
+ }
975
+ #endif
976
+
977
+ if (image) {
978
+ completionHandler(nil, image);
979
+ } else {
980
+ NSString *errorMessage =
981
+ [NSString stringWithFormat:@"Error decoding image data <NSData %p; %tu bytes>", data, data.length];
982
+ NSError *finalError = RCTErrorWithMessage(errorMessage);
983
+ completionHandler(finalError, nil);
984
+ }
985
+ }
986
+
987
+ // We're no longer retaining the uncompressed data, so now we'll mark
988
+ // the decoding as complete so that the loading task queue can resume.
989
+ dispatch_async(self->_URLRequestQueue, ^{
990
+ self->_scheduledDecodes--;
991
+ self->_activeBytes -= decodedImageBytes;
992
+ [self dequeueTasks];
993
+ });
994
+ });
995
+ };
996
+
997
+ if (!_isLoaderSetup) {
998
+ [self setUp];
999
+ }
1000
+ dispatch_async(_URLRequestQueue, ^{
1001
+ // The decode operation retains the compressed image data until it's
1002
+ // complete, so we'll mark it as having started, in order to block
1003
+ // further image loads from happening until we're done with the data.
1004
+ self->_scheduledDecodes++;
1005
+
1006
+ if (!self->_pendingDecodes) {
1007
+ self->_pendingDecodes = [NSMutableArray new];
1008
+ }
1009
+ NSInteger activeDecodes = self->_scheduledDecodes - self->_pendingDecodes.count - 1;
1010
+ if (activeDecodes == 0 ||
1011
+ (self->_activeBytes <= self->_maxConcurrentDecodingBytes &&
1012
+ activeDecodes <= self->_maxConcurrentDecodingTasks)) {
1013
+ decodeBlock();
1014
+ } else {
1015
+ [self->_pendingDecodes addObject:decodeBlock];
1016
+ }
1017
+ });
1018
+
1019
+ return ^{
1020
+ std::atomic_store(cancelled.get(), 1);
1021
+ };
1022
+ }
1023
+ }
1024
+
1025
+ - (RCTImageLoaderCancellationBlock)getImageSizeForURLRequest:(NSURLRequest *)imageURLRequest
1026
+ block:(void (^)(NSError *error, CGSize size))callback
1027
+ {
1028
+ void (^completion)(NSError *, id, id, BOOL, NSURLResponse *) =
1029
+ ^(NSError *error, id imageOrData, id imageMetadata, BOOL cacheResult, NSURLResponse *response) {
1030
+ CGSize size;
1031
+ if ([imageOrData isKindOfClass:[NSData class]]) {
1032
+ NSDictionary *meta = RCTGetImageMetadata(imageOrData);
1033
+
1034
+ NSInteger imageOrientation = [meta[(id)kCGImagePropertyOrientation] integerValue];
1035
+ switch (imageOrientation) {
1036
+ case kCGImagePropertyOrientationLeft:
1037
+ case kCGImagePropertyOrientationRight:
1038
+ case kCGImagePropertyOrientationLeftMirrored:
1039
+ case kCGImagePropertyOrientationRightMirrored:
1040
+ // swap width and height
1041
+ size = (CGSize){
1042
+ [meta[(id)kCGImagePropertyPixelHeight] floatValue],
1043
+ [meta[(id)kCGImagePropertyPixelWidth] floatValue],
1044
+ };
1045
+ break;
1046
+ case kCGImagePropertyOrientationUp:
1047
+ case kCGImagePropertyOrientationDown:
1048
+ case kCGImagePropertyOrientationUpMirrored:
1049
+ case kCGImagePropertyOrientationDownMirrored:
1050
+ default:
1051
+ size = (CGSize){
1052
+ [meta[(id)kCGImagePropertyPixelWidth] floatValue],
1053
+ [meta[(id)kCGImagePropertyPixelHeight] floatValue],
1054
+ };
1055
+ break;
1056
+ }
1057
+ } else {
1058
+ UIImage *image = imageOrData;
1059
+ size = (CGSize){
1060
+ image.size.width * image.scale,
1061
+ image.size.height * image.scale,
1062
+ };
1063
+ }
1064
+ callback(error, size);
1065
+ };
1066
+
1067
+ RCTImageURLLoaderRequest *loaderRequest = [self _loadImageOrDataWithURLRequest:imageURLRequest
1068
+ size:CGSizeZero
1069
+ scale:1
1070
+ resizeMode:RCTResizeModeStretch
1071
+ priority:RCTImageLoaderPriorityImmediate
1072
+ attribution:{}
1073
+ progressBlock:NULL
1074
+ partialLoadBlock:NULL
1075
+ completionBlock:completion];
1076
+ return loaderRequest.cancellationBlock;
1077
+ }
1078
+
1079
+ - (NSDictionary *)getImageCacheStatus:(NSArray *)requests
1080
+ {
1081
+ NSMutableDictionary *results = [NSMutableDictionary dictionary];
1082
+ for (id request in requests) {
1083
+ NSURLRequest *urlRequest = [RCTConvert NSURLRequest:request];
1084
+ if (urlRequest) {
1085
+ NSCachedURLResponse *cachedResponse = [NSURLCache.sharedURLCache cachedResponseForRequest:urlRequest];
1086
+ if (cachedResponse) {
1087
+ if (cachedResponse.storagePolicy == NSURLCacheStorageAllowedInMemoryOnly) {
1088
+ results[urlRequest.URL.absoluteString] = @"memory";
1089
+ } else if (NSURLCache.sharedURLCache.currentMemoryUsage == 0) {
1090
+ // We can't check whether the file is cached on disk or memory.
1091
+ // However, if currentMemoryUsage is disabled, it must be read from disk.
1092
+ results[urlRequest.URL.absoluteString] = @"disk";
1093
+ } else {
1094
+ results[urlRequest.URL.absoluteString] = @"disk/memory";
1095
+ }
1096
+ }
1097
+ }
1098
+ }
1099
+ return results;
1100
+ }
1101
+
1102
+ #pragma mark - RCTURLRequestHandler
1103
+
1104
+ - (BOOL)canHandleRequest:(NSURLRequest *)request
1105
+ {
1106
+ NSURL *requestURL = request.URL;
1107
+
1108
+ // If the data being loaded is a video, return NO
1109
+ // Even better may be to implement this on the RCTImageURLLoader that would try to load it,
1110
+ // but we'd have to run the logic both in RCTPhotoLibraryImageLoader and
1111
+ // RCTAssetsLibraryRequestHandler. Once we drop iOS7 though, we'd drop
1112
+ // RCTAssetsLibraryRequestHandler and can move it there.
1113
+ static NSRegularExpression *videoRegex;
1114
+ static dispatch_once_t onceToken;
1115
+ dispatch_once(&onceToken, ^{
1116
+ NSError *error = nil;
1117
+ videoRegex = [NSRegularExpression regularExpressionWithPattern:@"(?:&|^)ext=MOV(?:&|$)"
1118
+ options:NSRegularExpressionCaseInsensitive
1119
+ error:&error];
1120
+ if (error) {
1121
+ RCTLogError(@"%@", error);
1122
+ }
1123
+ });
1124
+
1125
+ NSString *query = requestURL.query;
1126
+ if (query != nil && [videoRegex firstMatchInString:query options:0 range:NSMakeRange(0, query.length)]) {
1127
+ return NO;
1128
+ }
1129
+
1130
+ for (id<RCTImageURLLoader> loader in _loaders) {
1131
+ // Don't use RCTImageURLLoader protocol for modules that already conform to
1132
+ // RCTURLRequestHandler as it's inefficient to decode an image and then
1133
+ // convert it back into data
1134
+ if (![loader conformsToProtocol:@protocol(RCTURLRequestHandler)] && [loader canLoadImageURL:requestURL]) {
1135
+ return YES;
1136
+ }
1137
+ }
1138
+
1139
+ return NO;
1140
+ }
1141
+
1142
+ - (id)sendRequest:(NSURLRequest *)request withDelegate:(id<RCTURLRequestDelegate>)delegate
1143
+ {
1144
+ __block RCTImageLoaderCancellationBlock requestToken;
1145
+ requestToken = [self loadImageWithURLRequest:request
1146
+ callback:^(NSError *error, UIImage *image) {
1147
+ if (error) {
1148
+ [delegate URLRequest:requestToken didCompleteWithError:error];
1149
+ return;
1150
+ }
1151
+
1152
+ NSString *mimeType = nil;
1153
+ NSData *imageData = nil;
1154
+ if (RCTImageHasAlpha(image.CGImage)) {
1155
+ mimeType = @"image/png";
1156
+ imageData = UIImagePNGRepresentation(image);
1157
+ } else {
1158
+ mimeType = @"image/jpeg";
1159
+ imageData = UIImageJPEGRepresentation(image, 1.0);
1160
+ }
1161
+
1162
+ NSURLResponse *response = [[NSURLResponse alloc] initWithURL:request.URL
1163
+ MIMEType:mimeType
1164
+ expectedContentLength:imageData.length
1165
+ textEncodingName:nil];
1166
+
1167
+ [delegate URLRequest:requestToken didReceiveResponse:response];
1168
+ [delegate URLRequest:requestToken didReceiveData:imageData];
1169
+ [delegate URLRequest:requestToken didCompleteWithError:nil];
1170
+ }];
1171
+
1172
+ return requestToken;
1173
+ }
1174
+
1175
+ - (void)cancelRequest:(id)requestToken
1176
+ {
1177
+ if (requestToken) {
1178
+ ((RCTImageLoaderCancellationBlock)requestToken)();
1179
+ }
1180
+ }
1181
+
1182
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
1183
+ (const facebook::react::ObjCTurboModule::InitParams &)params
1184
+ {
1185
+ return std::make_shared<facebook::react::NativeImageLoaderIOSSpecJSI>(params);
1186
+ }
1187
+
1188
+ RCT_EXPORT_METHOD(getSize
1189
+ : (NSString *)uri resolve
1190
+ : (RCTPromiseResolveBlock)resolve reject
1191
+ : (RCTPromiseRejectBlock)reject)
1192
+ {
1193
+ NSURLRequest *request = [RCTConvert NSURLRequest:uri];
1194
+ [self getImageSizeForURLRequest:request
1195
+ block:^(NSError *error, CGSize size) {
1196
+ if (error) {
1197
+ reject(
1198
+ @"E_GET_SIZE_FAILURE",
1199
+ [NSString stringWithFormat:@"Failed to getSize of %@", uri],
1200
+ error);
1201
+ } else {
1202
+ resolve(@[ @(size.width), @(size.height) ]);
1203
+ }
1204
+ }];
1205
+ }
1206
+
1207
+ RCT_EXPORT_METHOD(getSizeWithHeaders
1208
+ : (NSString *)uri headers
1209
+ : (NSDictionary *)headers resolve
1210
+ : (RCTPromiseResolveBlock)resolve reject
1211
+ : (RCTPromiseRejectBlock)reject)
1212
+ {
1213
+ NSURL *URL = [RCTConvert NSURL:uri];
1214
+ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
1215
+ [headers enumerateKeysAndObjectsUsingBlock:^(NSString *key, id value, BOOL *stop) {
1216
+ [request addValue:[RCTConvert NSString:value] forHTTPHeaderField:key];
1217
+ }];
1218
+ [self getImageSizeForURLRequest:request
1219
+ block:^(NSError *error, CGSize size) {
1220
+ if (error) {
1221
+ reject(@"E_GET_SIZE_FAILURE", nil, error);
1222
+ return;
1223
+ }
1224
+ resolve(@{@"width" : @(size.width), @"height" : @(size.height)});
1225
+ }];
1226
+ }
1227
+
1228
+ RCT_EXPORT_METHOD(prefetchImage
1229
+ : (NSString *)uri resolve
1230
+ : (RCTPromiseResolveBlock)resolve reject
1231
+ : (RCTPromiseRejectBlock)reject)
1232
+ {
1233
+ [self prefetchImageWithMetadata:uri queryRootName:nil rootTag:0 resolve:resolve reject:reject];
1234
+ }
1235
+
1236
+ RCT_EXPORT_METHOD(prefetchImageWithMetadata
1237
+ : (NSString *)uri queryRootName
1238
+ : (NSString *)queryRootName rootTag
1239
+ : (double)rootTag resolve
1240
+ : (RCTPromiseResolveBlock)resolve reject
1241
+ : (RCTPromiseRejectBlock)reject)
1242
+ {
1243
+ NSURLRequest *request = [RCTConvert NSURLRequest:uri];
1244
+ [self loadImageWithURLRequest:request
1245
+ size:CGSizeZero
1246
+ scale:1
1247
+ clipped:YES
1248
+ resizeMode:RCTResizeModeStretch
1249
+ priority:RCTImageLoaderPriorityPrefetch
1250
+ attribution:{
1251
+ .queryRootName = queryRootName ? [queryRootName UTF8String] : "",
1252
+ .surfaceId = (int)rootTag,
1253
+ }
1254
+ progressBlock:nil
1255
+ partialLoadBlock:nil
1256
+ completionBlock:^(NSError *error, UIImage *image, id completionMetadata) {
1257
+ if (error) {
1258
+ reject(@"E_PREFETCH_FAILURE", nil, error);
1259
+ return;
1260
+ }
1261
+ resolve(@YES);
1262
+ }];
1263
+ }
1264
+
1265
+ RCT_EXPORT_METHOD(queryCache
1266
+ : (NSArray *)uris resolve
1267
+ : (RCTPromiseResolveBlock)resolve reject
1268
+ : (RCTPromiseRejectBlock)reject)
1269
+ {
1270
+ resolve([self getImageCacheStatus:uris]);
1271
+ }
1272
+ @end
1273
+
1274
+ /**
1275
+ * DEPRECATED!! DO NOT USE
1276
+ * Instead use `[_bridge moduleForClass:[RCTImageLoader class]]`
1277
+ */
1278
+ @implementation RCTBridge (RCTImageLoader)
1279
+
1280
+ - (RCTImageLoader *)imageLoader
1281
+ {
1282
+ RCTLogWarn(
1283
+ @"Calling bridge.imageLoader is deprecated and will not work in newer versions of RN. Please update to the "
1284
+ "moduleForClass API or turboModuleRegistry API.");
1285
+ return [self moduleForClass:[RCTImageLoader class]];
1286
+ }
1287
+
1288
+ @end
1289
+
1290
+ @implementation RCTBridgeProxy (RCTImageLoader)
1291
+
1292
+ - (RCTImageLoader *)imageLoader
1293
+ {
1294
+ return [self moduleForClass:[RCTImageLoader class]];
1295
+ }
1296
+
1297
+ @end
1298
+
1299
+ Class RCTImageLoaderCls(void)
1300
+ {
1301
+ return RCTImageLoader.class;
1302
+ }