react-native-screens 4.12.0 → 4.13.0

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 (235) hide show
  1. package/RNScreens.podspec +29 -2
  2. package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +4 -0
  3. package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +9 -1
  4. package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +0 -1
  5. package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +4 -4
  6. package/android/src/main/java/com/swmansion/rnscreens/ScreensModule.kt +1 -1
  7. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingView.kt +4 -4
  8. package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingViewManager.kt +8 -2
  9. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenAnimationDelegate.kt +1 -2
  10. package/android/src/main/java/com/swmansion/rnscreens/events/ScreenEventEmitter.kt +16 -13
  11. package/android/src/main/java/com/swmansion/rnscreens/gamma/common/BaseEventEmitter.kt +22 -0
  12. package/android/src/main/java/com/swmansion/rnscreens/gamma/common/FragmentProviding.kt +11 -0
  13. package/android/src/main/java/com/swmansion/rnscreens/gamma/common/NamingAwareEventType.kt +13 -0
  14. package/android/src/main/java/com/swmansion/rnscreens/gamma/helpers/EventHelpers.kt +6 -0
  15. package/android/src/main/java/com/swmansion/rnscreens/gamma/helpers/FragmentManagerHelper.kt +76 -0
  16. package/android/src/main/java/com/swmansion/rnscreens/gamma/helpers/SystemDrawable.kt +33 -0
  17. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreen.kt +101 -0
  18. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreenDelegate.kt +17 -0
  19. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreenEventEmitter.kt +46 -0
  20. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreenFragment.kt +37 -0
  21. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabScreenViewManager.kt +178 -0
  22. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabsHost.kt +433 -0
  23. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabsHostEventEmitter.kt +14 -0
  24. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabsHostViewManager.kt +177 -0
  25. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/event/TabScreenDidAppearEvent.kt +30 -0
  26. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/event/TabScreenDidDisappearEvent.kt +30 -0
  27. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/event/TabScreenWillAppearEvent.kt +30 -0
  28. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/event/TabScreenWillDisappearEvent.kt +30 -0
  29. package/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/event/TabsHostNativeFocusChangeEvent.kt +36 -0
  30. package/android/src/main/java/com/swmansion/rnscreens/stack/views/ChildDrawingOrderStrategyImpl.kt +0 -1
  31. package/android/src/main/java/com/swmansion/rnscreens/transition/ExternalBoundaryValuesEvaluator.kt +9 -2
  32. package/android/src/main/java/com/swmansion/rnscreens/utils/FragmentTransactionKt.kt +4 -1
  33. package/android/src/main/jni/rnscreens.h +1 -0
  34. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsManagerDelegate.java +76 -0
  35. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsManagerInterface.java +33 -0
  36. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerDelegate.java +97 -0
  37. package/android/src/paper/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerInterface.java +40 -0
  38. package/android/src/paper/java/com/swmansion/rnscreens/FabricEnabledHeaderConfigViewGroup.kt +2 -2
  39. package/android/src/versioned/backgroundcolor/76/ViewBackgroundUtils.kt +0 -1
  40. package/android/src/versioned/backgroundcolor/latest/ViewBackgroundUtils.kt +0 -3
  41. package/android/src/versioned/pointerevents/77/com/swmansion/rnscreens/PointerEventsBoxNoneImpl.kt +1 -1
  42. package/android/src/versioned/pointerevents/latest/com/swmansion/rnscreens/PointerEventsBoxNoneImpl.kt +1 -1
  43. package/common/cpp/react/renderer/components/rnscreens/RNSBottomTabsComponentDescriptor.h +31 -0
  44. package/common/cpp/react/renderer/components/rnscreens/RNSBottomTabsShadowNode.cpp +20 -0
  45. package/common/cpp/react/renderer/components/rnscreens/RNSBottomTabsShadowNode.h +32 -0
  46. package/common/cpp/react/renderer/components/rnscreens/RNSBottomTabsState.cpp +22 -0
  47. package/common/cpp/react/renderer/components/rnscreens/RNSBottomTabsState.h +44 -0
  48. package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +8 -0
  49. package/common/cpp/react/renderer/components/rnscreens/RNSSplitViewScreenComponentDescriptor.h +40 -0
  50. package/common/cpp/react/renderer/components/rnscreens/RNSSplitViewScreenShadowNode.cpp +13 -0
  51. package/common/cpp/react/renderer/components/rnscreens/RNSSplitViewScreenShadowNode.h +36 -0
  52. package/common/cpp/react/renderer/components/rnscreens/RNSSplitViewScreenState.h +32 -0
  53. package/cpp/RNScreensTurboModule.h +5 -0
  54. package/ios/RNSEnums.h +6 -0
  55. package/ios/RNSScreen.h +2 -1
  56. package/ios/RNSScreen.mm +48 -1
  57. package/ios/RNSScreenContainer.mm +6 -0
  58. package/ios/RNSScreenStack.h +3 -1
  59. package/ios/RNSScreenStack.mm +39 -2
  60. package/ios/RNSScreenStackHeaderConfig.mm +1 -1
  61. package/ios/RNSScrollViewBehaviorOverriding.h +24 -0
  62. package/ios/RNSScrollViewFinder.h +13 -0
  63. package/ios/RNSScrollViewFinder.mm +22 -0
  64. package/ios/RNSScrollViewHelper.h +10 -0
  65. package/ios/RNSScrollViewHelper.mm +15 -0
  66. package/ios/RNScreens-Bridging-Header.h +4 -0
  67. package/ios/UIScrollView+RNScreens.h +14 -0
  68. package/ios/UIScrollView+RNScreens.mm +15 -0
  69. package/ios/bottom-tabs/RCTConvert+RNSBottomTabs.h +18 -0
  70. package/ios/bottom-tabs/RCTConvert+RNSBottomTabs.mm +25 -0
  71. package/ios/bottom-tabs/RNSBottomTabsHostComponentView.h +80 -0
  72. package/ios/bottom-tabs/RNSBottomTabsHostComponentView.mm +486 -0
  73. package/ios/bottom-tabs/RNSBottomTabsHostComponentViewManager.h +11 -0
  74. package/ios/bottom-tabs/RNSBottomTabsHostComponentViewManager.mm +48 -0
  75. package/ios/bottom-tabs/RNSBottomTabsHostEventEmitter.h +53 -0
  76. package/ios/bottom-tabs/RNSBottomTabsHostEventEmitter.mm +57 -0
  77. package/ios/bottom-tabs/RNSBottomTabsScreenComponentView.h +95 -0
  78. package/ios/bottom-tabs/RNSBottomTabsScreenComponentView.mm +492 -0
  79. package/ios/bottom-tabs/RNSBottomTabsScreenComponentViewManager.h +9 -0
  80. package/ios/bottom-tabs/RNSBottomTabsScreenComponentViewManager.mm +55 -0
  81. package/ios/bottom-tabs/RNSBottomTabsScreenEventEmitter.h +53 -0
  82. package/ios/bottom-tabs/RNSBottomTabsScreenEventEmitter.mm +106 -0
  83. package/ios/bottom-tabs/RNSBottomTabsSpecialEffectsSupporting.h +17 -0
  84. package/ios/bottom-tabs/RNSTabBarAppearanceCoordinator.h +34 -0
  85. package/ios/bottom-tabs/RNSTabBarAppearanceCoordinator.mm +243 -0
  86. package/ios/bottom-tabs/RNSTabBarAppearanceProvider.h +23 -0
  87. package/ios/bottom-tabs/RNSTabBarController.h +132 -0
  88. package/ios/bottom-tabs/RNSTabBarController.mm +206 -0
  89. package/ios/bottom-tabs/RNSTabBarControllerDelegate.h +9 -0
  90. package/ios/bottom-tabs/RNSTabBarControllerDelegate.mm +63 -0
  91. package/ios/bottom-tabs/RNSTabsScreenViewController.h +42 -0
  92. package/ios/bottom-tabs/RNSTabsScreenViewController.mm +105 -0
  93. package/ios/bottom-tabs/extensions/RNSBottomTabsHostComponentView+RNSImageLoader.h +21 -0
  94. package/ios/bottom-tabs/extensions/RNSBottomTabsHostComponentView+RNSImageLoader.mm +22 -0
  95. package/ios/bridging/RNSReactBaseView.h +31 -0
  96. package/ios/bridging/RNSReactBaseView.mm +5 -0
  97. package/ios/bridging/Swift-Bridging.h +7 -0
  98. package/ios/conversion/RNSConversions-BottomTabs.mm +216 -0
  99. package/ios/conversion/RNSConversions-SplitView.mm +63 -0
  100. package/ios/conversion/RNSConversions.h +53 -0
  101. package/ios/gamma/ReactMountingTransactionObserving.swift +7 -0
  102. package/ios/gamma/split-view/RNSSplitViewHostComponentView.h +29 -0
  103. package/ios/gamma/split-view/RNSSplitViewHostComponentView.mm +209 -0
  104. package/ios/gamma/split-view/RNSSplitViewHostComponentViewManager.h +11 -0
  105. package/ios/gamma/split-view/RNSSplitViewHostComponentViewManager.mm +7 -0
  106. package/ios/gamma/split-view/RNSSplitViewHostController.swift +98 -0
  107. package/ios/gamma/split-view/RNSSplitViewNavigationController.swift +31 -0
  108. package/ios/gamma/split-view/RNSSplitViewScreenComponentView.h +24 -0
  109. package/ios/gamma/split-view/RNSSplitViewScreenComponentView.mm +106 -0
  110. package/ios/gamma/split-view/RNSSplitViewScreenComponentViewManager.h +11 -0
  111. package/ios/gamma/split-view/RNSSplitViewScreenComponentViewManager.mm +7 -0
  112. package/ios/gamma/split-view/RNSSplitViewScreenController.swift +86 -0
  113. package/ios/gamma/split-view/RNSSplitViewScreenShadowStateProxy.h +35 -0
  114. package/ios/gamma/split-view/RNSSplitViewScreenShadowStateProxy.mm +56 -0
  115. package/ios/gamma/stack/RNSScreenStackHostComponentView.h +16 -0
  116. package/ios/gamma/stack/RNSScreenStackHostComponentView.mm +143 -0
  117. package/ios/gamma/stack/RNSScreenStackHostComponentViewManager.h +11 -0
  118. package/ios/gamma/stack/RNSScreenStackHostComponentViewManager.mm +7 -0
  119. package/ios/gamma/stack/RNSStackController.swift +65 -0
  120. package/ios/gamma/stack/RNSStackScreenComponentEventEmitter.h +37 -0
  121. package/ios/gamma/stack/RNSStackScreenComponentEventEmitter.mm +60 -0
  122. package/ios/gamma/stack/RNSStackScreenComponentView.h +36 -0
  123. package/ios/gamma/stack/RNSStackScreenComponentView.mm +124 -0
  124. package/ios/gamma/stack/RNSStackScreenComponentViewManager.h +11 -0
  125. package/ios/gamma/stack/RNSStackScreenComponentViewManager.mm +7 -0
  126. package/ios/gamma/stack/RNSStackScreenController.swift +56 -0
  127. package/ios/utils/NSString+RNSUtility.h +17 -0
  128. package/ios/utils/NSString+RNSUtility.mm +37 -0
  129. package/lib/commonjs/components/BottomTabs.js +54 -0
  130. package/lib/commonjs/components/BottomTabs.js.map +1 -0
  131. package/lib/commonjs/components/BottomTabsScreen.js +149 -0
  132. package/lib/commonjs/components/BottomTabsScreen.js.map +1 -0
  133. package/lib/commonjs/components/gamma/ScreenStackHost.js +27 -0
  134. package/lib/commonjs/components/gamma/ScreenStackHost.js.map +1 -0
  135. package/lib/commonjs/components/gamma/SplitViewHost.js +57 -0
  136. package/lib/commonjs/components/gamma/SplitViewHost.js.map +1 -0
  137. package/lib/commonjs/components/gamma/SplitViewScreen.js +22 -0
  138. package/lib/commonjs/components/gamma/SplitViewScreen.js.map +1 -0
  139. package/lib/commonjs/components/gamma/StackScreen.js +51 -0
  140. package/lib/commonjs/components/gamma/StackScreen.js.map +1 -0
  141. package/lib/commonjs/fabric/BottomTabsNativeComponent.js +19 -0
  142. package/lib/commonjs/fabric/BottomTabsNativeComponent.js.map +1 -0
  143. package/lib/commonjs/fabric/BottomTabsScreenNativeComponent.js +14 -0
  144. package/lib/commonjs/fabric/BottomTabsScreenNativeComponent.js.map +1 -0
  145. package/lib/commonjs/fabric/gamma/ScreenStackHostNativeComponent.js +11 -0
  146. package/lib/commonjs/fabric/gamma/ScreenStackHostNativeComponent.js.map +1 -0
  147. package/lib/commonjs/fabric/gamma/SplitViewHostNativeComponent.js +11 -0
  148. package/lib/commonjs/fabric/gamma/SplitViewHostNativeComponent.js.map +1 -0
  149. package/lib/commonjs/fabric/gamma/SplitViewScreenNativeComponent.js +13 -0
  150. package/lib/commonjs/fabric/gamma/SplitViewScreenNativeComponent.js.map +1 -0
  151. package/lib/commonjs/fabric/gamma/StackScreenNativeComponent.js +12 -0
  152. package/lib/commonjs/fabric/gamma/StackScreenNativeComponent.js.map +1 -0
  153. package/lib/commonjs/flags.js +70 -0
  154. package/lib/commonjs/flags.js.map +1 -0
  155. package/lib/commonjs/index.js +66 -3
  156. package/lib/commonjs/index.js.map +1 -1
  157. package/lib/commonjs/utils.js +0 -28
  158. package/lib/commonjs/utils.js.map +1 -1
  159. package/lib/module/components/BottomTabs.js +48 -0
  160. package/lib/module/components/BottomTabs.js.map +1 -0
  161. package/lib/module/components/BottomTabsScreen.js +144 -0
  162. package/lib/module/components/BottomTabsScreen.js.map +1 -0
  163. package/lib/module/components/gamma/ScreenStackHost.js +20 -0
  164. package/lib/module/components/gamma/ScreenStackHost.js.map +1 -0
  165. package/lib/module/components/gamma/SplitViewHost.js +50 -0
  166. package/lib/module/components/gamma/SplitViewHost.js.map +1 -0
  167. package/lib/module/components/gamma/SplitViewScreen.js +15 -0
  168. package/lib/module/components/gamma/SplitViewScreen.js.map +1 -0
  169. package/lib/module/components/gamma/StackScreen.js +44 -0
  170. package/lib/module/components/gamma/StackScreen.js.map +1 -0
  171. package/lib/module/fabric/BottomTabsNativeComponent.js +15 -0
  172. package/lib/module/fabric/BottomTabsNativeComponent.js.map +1 -0
  173. package/lib/module/fabric/BottomTabsScreenNativeComponent.js +12 -0
  174. package/lib/module/fabric/BottomTabsScreenNativeComponent.js.map +1 -0
  175. package/lib/module/fabric/gamma/ScreenStackHostNativeComponent.js +5 -0
  176. package/lib/module/fabric/gamma/ScreenStackHostNativeComponent.js.map +1 -0
  177. package/lib/module/fabric/gamma/SplitViewHostNativeComponent.js +5 -0
  178. package/lib/module/fabric/gamma/SplitViewHostNativeComponent.js.map +1 -0
  179. package/lib/module/fabric/gamma/SplitViewScreenNativeComponent.js +7 -0
  180. package/lib/module/fabric/gamma/SplitViewScreenNativeComponent.js.map +1 -0
  181. package/lib/module/fabric/gamma/StackScreenNativeComponent.js +8 -0
  182. package/lib/module/fabric/gamma/StackScreenNativeComponent.js.map +1 -0
  183. package/lib/module/flags.js +64 -0
  184. package/lib/module/flags.js.map +1 -0
  185. package/lib/module/index.js +16 -1
  186. package/lib/module/index.js.map +1 -1
  187. package/lib/module/utils.js +0 -27
  188. package/lib/module/utils.js.map +1 -1
  189. package/lib/typescript/components/BottomTabs.d.ts +30 -0
  190. package/lib/typescript/components/BottomTabs.d.ts.map +1 -0
  191. package/lib/typescript/components/BottomTabsScreen.d.ts +56 -0
  192. package/lib/typescript/components/BottomTabsScreen.d.ts.map +1 -0
  193. package/lib/typescript/components/gamma/ScreenStackHost.d.ts +13 -0
  194. package/lib/typescript/components/gamma/ScreenStackHost.d.ts.map +1 -0
  195. package/lib/typescript/components/gamma/SplitViewHost.d.ts +13 -0
  196. package/lib/typescript/components/gamma/SplitViewHost.d.ts.map +1 -0
  197. package/lib/typescript/components/gamma/SplitViewScreen.d.ts +13 -0
  198. package/lib/typescript/components/gamma/SplitViewScreen.d.ts.map +1 -0
  199. package/lib/typescript/components/gamma/StackScreen.d.ts +21 -0
  200. package/lib/typescript/components/gamma/StackScreen.d.ts.map +1 -0
  201. package/lib/typescript/fabric/BottomTabsNativeComponent.d.ts +31 -0
  202. package/lib/typescript/fabric/BottomTabsNativeComponent.d.ts.map +1 -0
  203. package/lib/typescript/fabric/BottomTabsScreenNativeComponent.d.ts +51 -0
  204. package/lib/typescript/fabric/BottomTabsScreenNativeComponent.d.ts.map +1 -0
  205. package/lib/typescript/fabric/gamma/ScreenStackHostNativeComponent.d.ts +7 -0
  206. package/lib/typescript/fabric/gamma/ScreenStackHostNativeComponent.d.ts.map +1 -0
  207. package/lib/typescript/fabric/gamma/SplitViewHostNativeComponent.d.ts +16 -0
  208. package/lib/typescript/fabric/gamma/SplitViewHostNativeComponent.d.ts.map +1 -0
  209. package/lib/typescript/fabric/gamma/SplitViewScreenNativeComponent.d.ts +7 -0
  210. package/lib/typescript/fabric/gamma/SplitViewScreenNativeComponent.d.ts.map +1 -0
  211. package/lib/typescript/fabric/gamma/StackScreenNativeComponent.d.ts +15 -0
  212. package/lib/typescript/fabric/gamma/StackScreenNativeComponent.d.ts.map +1 -0
  213. package/lib/typescript/flags.d.ts +45 -0
  214. package/lib/typescript/flags.d.ts.map +1 -0
  215. package/lib/typescript/index.d.ts +14 -1
  216. package/lib/typescript/index.d.ts.map +1 -1
  217. package/lib/typescript/utils.d.ts +0 -26
  218. package/lib/typescript/utils.d.ts.map +1 -1
  219. package/package.json +34 -6
  220. package/react-native.config.js +2 -1
  221. package/src/components/BottomTabs.tsx +115 -0
  222. package/src/components/BottomTabsScreen.tsx +291 -0
  223. package/src/components/gamma/ScreenStackHost.tsx +32 -0
  224. package/src/components/gamma/SplitViewHost.tsx +84 -0
  225. package/src/components/gamma/SplitViewScreen.tsx +26 -0
  226. package/src/components/gamma/StackScreen.tsx +64 -0
  227. package/src/fabric/BottomTabsNativeComponent.ts +82 -0
  228. package/src/fabric/BottomTabsScreenNativeComponent.ts +107 -0
  229. package/src/fabric/gamma/ScreenStackHostNativeComponent.ts +8 -0
  230. package/src/fabric/gamma/SplitViewHostNativeComponent.ts +39 -0
  231. package/src/fabric/gamma/SplitViewScreenNativeComponent.ts +10 -0
  232. package/src/fabric/gamma/StackScreenNativeComponent.ts +25 -0
  233. package/src/flags.ts +72 -0
  234. package/src/index.tsx +18 -1
  235. package/src/utils.ts +0 -28
@@ -0,0 +1,144 @@
1
+ 'use client';
2
+
3
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
4
+ import React from 'react';
5
+ import BottomTabsScreenNativeComponent from '../fabric/BottomTabsScreenNativeComponent';
6
+ import { StyleSheet, findNodeHandle } from 'react-native';
7
+ import { Freeze } from 'react-freeze';
8
+ import { freezeEnabled } from '../core';
9
+ import { featureFlags } from '../flags';
10
+
11
+ // iOS-specific: SFSymbol usage
12
+
13
+ // iOS-specific: image as a template usage
14
+
15
+ // iOS-specific: SFSymbol, image as a template usage
16
+
17
+ /**
18
+ * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
19
+ */
20
+ function BottomTabsScreen(props) {
21
+ const componentNodeRef = React.useRef(null);
22
+ const componentNodeHandle = React.useRef(-1);
23
+ React.useEffect(() => {
24
+ if (componentNodeRef.current != null) {
25
+ componentNodeHandle.current = findNodeHandle(componentNodeRef.current) ?? -1;
26
+ } else {
27
+ componentNodeHandle.current = -1;
28
+ }
29
+ }, []);
30
+ const [nativeViewIsVisible, setNativeViewIsVisible] = React.useState(false);
31
+ const {
32
+ onWillAppear,
33
+ onDidAppear,
34
+ onWillDisappear,
35
+ onDidDisappear,
36
+ isFocused = false,
37
+ icon,
38
+ selectedIcon,
39
+ ...rest
40
+ } = props;
41
+ let shouldFreeze = freezeEnabled();
42
+ if (featureFlags.experiment.controlledBottomTabs) {
43
+ // If the tabs are JS controlled, we want to freeze only when given view is not focused && it is not currently visible
44
+ shouldFreeze = shouldFreeze && !nativeViewIsVisible && !isFocused;
45
+ } else {
46
+ shouldFreeze = shouldFreeze && !nativeViewIsVisible;
47
+ }
48
+ const onWillAppearCallback = React.useCallback(event => {
49
+ console.log(`TabsScreen [${componentNodeHandle.current}] onWillAppear received`);
50
+ setNativeViewIsVisible(true);
51
+ onWillAppear?.(event);
52
+ }, [onWillAppear]);
53
+ const onDidAppearCallback = React.useCallback(event => {
54
+ console.log(`TabsScreen [${componentNodeHandle.current}] onDidAppear received`);
55
+ onDidAppear?.(event);
56
+ }, [onDidAppear]);
57
+ const onWillDisappearCallback = React.useCallback(event => {
58
+ console.log(`TabsScreen [${componentNodeHandle.current}] onWillDisappear received`);
59
+ onWillDisappear?.(event);
60
+ }, [onWillDisappear]);
61
+ const onDidDisappearCallback = React.useCallback(event => {
62
+ console.log(`TabsScreen [${componentNodeHandle.current}] onDidDisappear received`);
63
+ setNativeViewIsVisible(false);
64
+ onDidDisappear?.(event);
65
+ }, [onDidDisappear]);
66
+ console.info(`TabsScreen [${componentNodeHandle.current ?? -1}] render; tabKey: ${rest.tabKey} shouldFreeze: ${shouldFreeze}, isFocused: ${isFocused} nativeViewIsVisible: ${nativeViewIsVisible}`);
67
+ const iconProps = parseIconsToNativeProps(icon, selectedIcon);
68
+ return /*#__PURE__*/React.createElement(BottomTabsScreenNativeComponent, _extends({
69
+ collapsable: false,
70
+ style: styles.fillParent,
71
+ onWillAppear: onWillAppearCallback,
72
+ onDidAppear: onDidAppearCallback,
73
+ onWillDisappear: onWillDisappearCallback,
74
+ onDidDisappear: onDidDisappearCallback,
75
+ isFocused: isFocused
76
+ }, iconProps, {
77
+ // @ts-ignore - This is debug only anyway
78
+ ref: componentNodeRef
79
+ }, rest), /*#__PURE__*/React.createElement(Freeze, {
80
+ freeze: shouldFreeze,
81
+ placeholder: rest.placeholder
82
+ }, rest.children));
83
+ }
84
+ function parseIconToNativeProps(icon) {
85
+ if (!icon) {
86
+ return {};
87
+ }
88
+ if ('sfSymbolName' in icon) {
89
+ // iOS-specific: SFSymbol usage
90
+ return {
91
+ iconType: 'sfSymbol',
92
+ iconSfSymbolName: icon.sfSymbolName
93
+ };
94
+ } else if ('imageSource' in icon) {
95
+ return {
96
+ iconType: 'image',
97
+ iconImageSource: icon.imageSource
98
+ };
99
+ } else if ('templateSource' in icon) {
100
+ // iOS-specifig: image as a template usage
101
+ return {
102
+ iconType: 'template',
103
+ iconImageSource: icon.templateSource
104
+ };
105
+ } else {
106
+ // iOS-specific: SFSymbol, image as a template usage
107
+ throw new Error('[RNScreens] Incorrect icon format. You must provide sfSymbolName, imageSource or templateSource.');
108
+ }
109
+ }
110
+ function parseIconsToNativeProps(icon, selectedIcon) {
111
+ const {
112
+ iconImageSource,
113
+ iconSfSymbolName,
114
+ iconType
115
+ } = parseIconToNativeProps(icon);
116
+ const {
117
+ iconImageSource: selectedIconImageSource,
118
+ iconSfSymbolName: selectedIconSfSymbolName,
119
+ iconType: selectedIconType
120
+ } = parseIconToNativeProps(selectedIcon);
121
+ if (iconType !== undefined && selectedIconType !== undefined && iconType !== selectedIconType) {
122
+ throw new Error('[RNScreens] icon and selectedIcon must be same type.');
123
+ } else if (iconType === undefined && selectedIconType !== undefined) {
124
+ // iOS-specific: UIKit requirement
125
+ throw new Error('[RNScreens] To use selectedIcon prop, the icon prop must also be provided.');
126
+ }
127
+ return {
128
+ iconType,
129
+ iconImageSource,
130
+ iconSfSymbolName,
131
+ selectedIconImageSource,
132
+ selectedIconSfSymbolName
133
+ };
134
+ }
135
+ export default BottomTabsScreen;
136
+ const styles = StyleSheet.create({
137
+ fillParent: {
138
+ position: 'absolute',
139
+ flex: 1,
140
+ width: '100%',
141
+ height: '100%'
142
+ }
143
+ });
144
+ //# sourceMappingURL=BottomTabsScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","React","BottomTabsScreenNativeComponent","StyleSheet","findNodeHandle","Freeze","freezeEnabled","featureFlags","BottomTabsScreen","props","componentNodeRef","useRef","componentNodeHandle","useEffect","current","nativeViewIsVisible","setNativeViewIsVisible","useState","onWillAppear","onDidAppear","onWillDisappear","onDidDisappear","isFocused","icon","selectedIcon","rest","shouldFreeze","experiment","controlledBottomTabs","onWillAppearCallback","useCallback","event","console","log","onDidAppearCallback","onWillDisappearCallback","onDidDisappearCallback","info","tabKey","iconProps","parseIconsToNativeProps","createElement","collapsable","style","styles","fillParent","ref","freeze","placeholder","children","parseIconToNativeProps","iconType","iconSfSymbolName","sfSymbolName","iconImageSource","imageSource","templateSource","Error","selectedIconImageSource","selectedIconSfSymbolName","selectedIconType","undefined","create","position","flex","width","height"],"sourceRoot":"../../../src","sources":["components/BottomTabsScreen.tsx"],"mappings":"AAAA,YAAY;;AAAC,SAAAA,SAAA,WAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,CAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,CAAA,IAAAD,CAAA,OAAAE,cAAA,CAAAC,IAAA,CAAAH,CAAA,EAAAC,CAAA,MAAAL,CAAA,CAAAK,CAAA,IAAAD,CAAA,CAAAC,CAAA,aAAAL,CAAA,KAAAJ,QAAA,CAAAY,KAAA,OAAAN,SAAA;AAEb,OAAOO,KAAK,MAAM,OAAO;AACzB,OAAOC,+BAA+B,MAI/B,2CAA2C;AAClD,SAIEC,UAAU,EAGVC,cAAc,QACT,cAAc;AACrB,SAASC,MAAM,QAAQ,cAAc;AACrC,SAASC,aAAa,QAAQ,SAAS;AACvC,SAASC,YAAY,QAAQ,UAAU;;AAOvC;;AASA;;AAKA;;AA2DA;AACA;AACA;AACA,SAASC,gBAAgBA,CAACC,KAA4B,EAAE;EACtD,MAAMC,gBAAgB,GAAGT,KAAK,CAACU,MAAM,CAA+B,IAAI,CAAC;EACzE,MAAMC,mBAAmB,GAAGX,KAAK,CAACU,MAAM,CAAS,CAAC,CAAC,CAAC;EAEpDV,KAAK,CAACY,SAAS,CAAC,MAAM;IACpB,IAAIH,gBAAgB,CAACI,OAAO,IAAI,IAAI,EAAE;MACpCF,mBAAmB,CAACE,OAAO,GACzBV,cAAc,CAACM,gBAAgB,CAACI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,MAAM;MACLF,mBAAmB,CAACE,OAAO,GAAG,CAAC,CAAC;IAClC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM,CAACC,mBAAmB,EAAEC,sBAAsB,CAAC,GAAGf,KAAK,CAACgB,QAAQ,CAAC,KAAK,CAAC;EAE3E,MAAM;IACJC,YAAY;IACZC,WAAW;IACXC,eAAe;IACfC,cAAc;IACdC,SAAS,GAAG,KAAK;IACjBC,IAAI;IACJC,YAAY;IACZ,GAAGC;EACL,CAAC,GAAGhB,KAAK;EAET,IAAIiB,YAAY,GAAGpB,aAAa,CAAC,CAAC;EAElC,IAAIC,YAAY,CAACoB,UAAU,CAACC,oBAAoB,EAAE;IAChD;IACAF,YAAY,GAAGA,YAAY,IAAI,CAACX,mBAAmB,IAAI,CAACO,SAAS;EACnE,CAAC,MAAM;IACLI,YAAY,GAAGA,YAAY,IAAI,CAACX,mBAAmB;EACrD;EAEA,MAAMc,oBAAoB,GAAG5B,KAAK,CAAC6B,WAAW,CAC3CC,KAAwC,IAAK;IAC5CC,OAAO,CAACC,GAAG,CACT,eAAerB,mBAAmB,CAACE,OAAO,yBAC5C,CAAC;IACDE,sBAAsB,CAAC,IAAI,CAAC;IAC5BE,YAAY,GAAGa,KAAK,CAAC;EACvB,CAAC,EACD,CAACb,YAAY,CACf,CAAC;EAED,MAAMgB,mBAAmB,GAAGjC,KAAK,CAAC6B,WAAW,CAC1CC,KAAwC,IAAK;IAC5CC,OAAO,CAACC,GAAG,CACT,eAAerB,mBAAmB,CAACE,OAAO,wBAC5C,CAAC;IACDK,WAAW,GAAGY,KAAK,CAAC;EACtB,CAAC,EACD,CAACZ,WAAW,CACd,CAAC;EAED,MAAMgB,uBAAuB,GAAGlC,KAAK,CAAC6B,WAAW,CAC9CC,KAAwC,IAAK;IAC5CC,OAAO,CAACC,GAAG,CACT,eAAerB,mBAAmB,CAACE,OAAO,4BAC5C,CAAC;IACDM,eAAe,GAAGW,KAAK,CAAC;EAC1B,CAAC,EACD,CAACX,eAAe,CAClB,CAAC;EAED,MAAMgB,sBAAsB,GAAGnC,KAAK,CAAC6B,WAAW,CAC7CC,KAAwC,IAAK;IAC5CC,OAAO,CAACC,GAAG,CACT,eAAerB,mBAAmB,CAACE,OAAO,2BAC5C,CAAC;IACDE,sBAAsB,CAAC,KAAK,CAAC;IAC7BK,cAAc,GAAGU,KAAK,CAAC;EACzB,CAAC,EACD,CAACV,cAAc,CACjB,CAAC;EAEDW,OAAO,CAACK,IAAI,CACV,eAAezB,mBAAmB,CAACE,OAAO,IAAI,CAAC,CAAC,qBAC9CW,IAAI,CAACa,MAAM,kBACKZ,YAAY,gBAAgBJ,SAAS,yBAAyBP,mBAAmB,EACrG,CAAC;EAED,MAAMwB,SAAS,GAAGC,uBAAuB,CAACjB,IAAI,EAAEC,YAAY,CAAC;EAE7D,oBACEvB,KAAA,CAAAwC,aAAA,CAACvC,+BAA+B,EAAAd,QAAA;IAC9BsD,WAAW,EAAE,KAAM;IACnBC,KAAK,EAAEC,MAAM,CAACC,UAAW;IACzB3B,YAAY,EAAEW,oBAAqB;IACnCV,WAAW,EAAEe,mBAAoB;IACjCd,eAAe,EAAEe,uBAAwB;IACzCd,cAAc,EAAEe,sBAAuB;IACvCd,SAAS,EAAEA;EAAU,GACjBiB,SAAS;IACb;IACAO,GAAG,EAAEpC;EAAiB,GAClBe,IAAI,gBACRxB,KAAA,CAAAwC,aAAA,CAACpC,MAAM;IAAC0C,MAAM,EAAErB,YAAa;IAACsB,WAAW,EAAEvB,IAAI,CAACuB;EAAY,GACzDvB,IAAI,CAACwB,QACA,CACuB,CAAC;AAEtC;AAEA,SAASC,sBAAsBA,CAAC3B,IAAsB,EAIpD;EACA,IAAI,CAACA,IAAI,EAAE;IACT,OAAO,CAAC,CAAC;EACX;EAEA,IAAI,cAAc,IAAIA,IAAI,EAAE;IAC1B;IACA,OAAO;MACL4B,QAAQ,EAAE,UAAU;MACpBC,gBAAgB,EAAE7B,IAAI,CAAC8B;IACzB,CAAC;EACH,CAAC,MAAM,IAAI,aAAa,IAAI9B,IAAI,EAAE;IAChC,OAAO;MACL4B,QAAQ,EAAE,OAAO;MACjBG,eAAe,EAAE/B,IAAI,CAACgC;IACxB,CAAC;EACH,CAAC,MAAM,IAAI,gBAAgB,IAAIhC,IAAI,EAAE;IACnC;IACA,OAAO;MACL4B,QAAQ,EAAE,UAAU;MACpBG,eAAe,EAAE/B,IAAI,CAACiC;IACxB,CAAC;EACH,CAAC,MAAM;IACL;IACA,MAAM,IAAIC,KAAK,CACb,kGACF,CAAC;EACH;AACF;AAEA,SAASjB,uBAAuBA,CAC9BjB,IAAsB,EACtBC,YAA8B,EAO9B;EACA,MAAM;IAAE8B,eAAe;IAAEF,gBAAgB;IAAED;EAAS,CAAC,GACnDD,sBAAsB,CAAC3B,IAAI,CAAC;EAC9B,MAAM;IACJ+B,eAAe,EAAEI,uBAAuB;IACxCN,gBAAgB,EAAEO,wBAAwB;IAC1CR,QAAQ,EAAES;EACZ,CAAC,GAAGV,sBAAsB,CAAC1B,YAAY,CAAC;EAExC,IACE2B,QAAQ,KAAKU,SAAS,IACtBD,gBAAgB,KAAKC,SAAS,IAC9BV,QAAQ,KAAKS,gBAAgB,EAC7B;IACA,MAAM,IAAIH,KAAK,CAAC,sDAAsD,CAAC;EACzE,CAAC,MAAM,IAAIN,QAAQ,KAAKU,SAAS,IAAID,gBAAgB,KAAKC,SAAS,EAAE;IACnE;IACA,MAAM,IAAIJ,KAAK,CACb,4EACF,CAAC;EACH;EAEA,OAAO;IACLN,QAAQ;IACRG,eAAe;IACfF,gBAAgB;IAChBM,uBAAuB;IACvBC;EACF,CAAC;AACH;AAEA,eAAenD,gBAAgB;AAE/B,MAAMoC,MAAM,GAAGzC,UAAU,CAAC2D,MAAM,CAAC;EAC/BjB,UAAU,EAAE;IACVkB,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import ScreenStackHostNativeComponent from '../../fabric/gamma/ScreenStackHostNativeComponent';
4
+ /**
5
+ * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
6
+ */
7
+ function ScreenStackHost({
8
+ children
9
+ }) {
10
+ return /*#__PURE__*/React.createElement(ScreenStackHostNativeComponent, {
11
+ style: styles.container
12
+ }, children);
13
+ }
14
+ const styles = StyleSheet.create({
15
+ container: {
16
+ flex: 1
17
+ }
18
+ });
19
+ export default ScreenStackHost;
20
+ //# sourceMappingURL=ScreenStackHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","ScreenStackHostNativeComponent","ScreenStackHost","children","createElement","style","styles","container","create","flex"],"sourceRoot":"../../../../src","sources":["components/gamma/ScreenStackHost.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AAGzC,OAAOC,8BAA8B,MAAM,mDAAmD;AAU9F;AACA;AACA;AACA,SAASC,eAAeA,CAAC;EAAEC;AAA+B,CAAC,EAAE;EAC3D,oBACEJ,KAAA,CAAAK,aAAA,CAACH,8BAA8B;IAACI,KAAK,EAAEC,MAAM,CAACC;EAAU,GACrDJ,QAC6B,CAAC;AAErC;AAEA,MAAMG,MAAM,GAAGN,UAAU,CAACQ,MAAM,CAAC;EAC/BD,SAAS,EAAE;IACTE,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAEF,eAAeP,eAAe","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import React from 'react';
3
+ import { StyleSheet } from 'react-native';
4
+ import SplitViewHostNativeComponent from '../../fabric/gamma/SplitViewHostNativeComponent';
5
+ // According to the UIKit documentation: https://developer.apple.com/documentation/uikit/uisplitviewcontroller/displaymode-swift.enum
6
+ // Only specific pairs for displayMode - splitBehavior are valid and others may lead to unexpected results.
7
+ // Therefore, we're adding check on the JS side to return a feedback to the client when that pairing isn't valid.
8
+ // However, we're not blocking these props to be set on the native side, because it doesn't crash, just the result or transitions may not work as expected.
9
+ const displayModeForSplitViewCompatibilityMap = {
10
+ tile: ['secondaryOnly', 'oneBesideSecondary', 'twoBesideSecondary'],
11
+ overlay: ['secondaryOnly', 'oneOverSecondary', 'twoOverSecondary'],
12
+ displace: ['secondaryOnly', 'oneBesideSecondary', 'twoDisplaceSecondary'],
13
+ automatic: [] // placeholder for satisfying types; we'll handle it specially in logic
14
+ };
15
+ const isValidDisplayModeForSplitBehavior = (displayMode, splitBehavior) => {
16
+ if (splitBehavior === 'automatic') {
17
+ // for automatic we cannot easily verify the compatibility, because it depends on the system preference for display mode, therefore we're assuming that 'automatic' has only valid combinations
18
+ return true;
19
+ }
20
+ return displayModeForSplitViewCompatibilityMap[splitBehavior].includes(displayMode);
21
+ };
22
+
23
+ /**
24
+ * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
25
+ */
26
+ function SplitViewHost(props) {
27
+ const {
28
+ displayMode,
29
+ splitBehavior
30
+ } = props;
31
+ React.useEffect(() => {
32
+ if (displayMode && splitBehavior) {
33
+ const isValid = isValidDisplayModeForSplitBehavior(displayMode, splitBehavior);
34
+ if (!isValid) {
35
+ const validDisplayModes = displayModeForSplitViewCompatibilityMap[splitBehavior];
36
+ console.warn(`Invalid display mode "${displayMode}" for split behavior "${splitBehavior}".` + `\nValid modes for "${splitBehavior}" are: ${validDisplayModes.join(', ')}.`);
37
+ }
38
+ }
39
+ }, [displayMode, splitBehavior]);
40
+ return /*#__PURE__*/React.createElement(SplitViewHostNativeComponent, _extends({}, props, {
41
+ style: styles.container
42
+ }), props.children);
43
+ }
44
+ const styles = StyleSheet.create({
45
+ container: {
46
+ flex: 1
47
+ }
48
+ });
49
+ export default SplitViewHost;
50
+ //# sourceMappingURL=SplitViewHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","SplitViewHostNativeComponent","displayModeForSplitViewCompatibilityMap","tile","overlay","displace","automatic","isValidDisplayModeForSplitBehavior","displayMode","splitBehavior","includes","SplitViewHost","props","useEffect","isValid","validDisplayModes","console","warn","join","createElement","_extends","style","styles","container","children","create","flex"],"sourceRoot":"../../../../src","sources":["components/gamma/SplitViewHost.tsx"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAOC,4BAA4B,MAAM,iDAAiD;AAe1F;AACA;AACA;AACA;AACA,MAAMC,uCAGL,GAAG;EACFC,IAAI,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;EACnEC,OAAO,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;EAClEC,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,sBAAsB,CAAC;EACzEC,SAAS,EAAE,EAAE,CAAE;AACjB,CAAC;AAED,MAAMC,kCAAkC,GAAGA,CACzCC,WAAiC,EACjCC,aAAqC,KAClC;EACH,IAAIA,aAAa,KAAK,WAAW,EAAE;IACjC;IACA,OAAO,IAAI;EACb;EACA,OAAOP,uCAAuC,CAACO,aAAa,CAAC,CAACC,QAAQ,CACpEF,WACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA,SAASG,aAAaA,CAACC,KAAyB,EAAE;EAChD,MAAM;IAAEJ,WAAW;IAAEC;EAAc,CAAC,GAAGG,KAAK;EAE5Cb,KAAK,CAACc,SAAS,CAAC,MAAM;IACpB,IAAIL,WAAW,IAAIC,aAAa,EAAE;MAChC,MAAMK,OAAO,GAAGP,kCAAkC,CAChDC,WAAW,EACXC,aACF,CAAC;MACD,IAAI,CAACK,OAAO,EAAE;QACZ,MAAMC,iBAAiB,GACrBb,uCAAuC,CAACO,aAAa,CAAC;QACxDO,OAAO,CAACC,IAAI,CACV,yBAAyBT,WAAW,yBAAyBC,aAAa,IAAI,GAC5E,sBAAsBA,aAAa,UAAUM,iBAAiB,CAACG,IAAI,CACjE,IACF,CAAC,GACL,CAAC;MACH;IACF;EACF,CAAC,EAAE,CAACV,WAAW,EAAEC,aAAa,CAAC,CAAC;EAEhC,oBACEV,KAAA,CAAAoB,aAAA,CAAClB,4BAA4B,EAAAmB,QAAA,KAAKR,KAAK;IAAES,KAAK,EAAEC,MAAM,CAACC;EAAU,IAC9DX,KAAK,CAACY,QACqB,CAAC;AAEnC;AAEA,MAAMF,MAAM,GAAGtB,UAAU,CAACyB,MAAM,CAAC;EAC/BF,SAAS,EAAE;IACTG,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAEF,eAAef,aAAa","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import SplitViewScreenNativeComponent from '../../fabric/gamma/SplitViewScreenNativeComponent';
4
+ /**
5
+ * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
6
+ */
7
+ function SplitViewScreen({
8
+ children
9
+ }) {
10
+ return /*#__PURE__*/React.createElement(SplitViewScreenNativeComponent, {
11
+ style: StyleSheet.absoluteFill
12
+ }, children);
13
+ }
14
+ export default SplitViewScreen;
15
+ //# sourceMappingURL=SplitViewScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","SplitViewScreenNativeComponent","SplitViewScreen","children","createElement","style","absoluteFill"],"sourceRoot":"../../../../src","sources":["components/gamma/SplitViewScreen.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAOC,8BAA8B,MAAM,mDAAmD;AAW9F;AACA;AACA;AACA,SAASC,eAAeA,CAAC;EAAEC;AAA+B,CAAC,EAAE;EAC3D,oBACEJ,KAAA,CAAAK,aAAA,CAACH,8BAA8B;IAACI,KAAK,EAAEL,UAAU,CAACM;EAAa,GAC5DH,QAC6B,CAAC;AAErC;AAEA,eAAeD,eAAe","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import StackScreenNativeComponent from '../../fabric/gamma/StackScreenNativeComponent';
4
+ export const StackScreenLifecycleState = {
5
+ INITIAL: 0,
6
+ DETACHED: 1,
7
+ ATTACHED: 2
8
+ };
9
+ /**
10
+ * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
11
+ */
12
+ function StackScreen({
13
+ children,
14
+ // Control
15
+ maxLifecycleState,
16
+ screenKey,
17
+ // Events
18
+ onWillAppear,
19
+ onWillDisappear,
20
+ onDidAppear,
21
+ onDidDisappear,
22
+ // Custom events
23
+ onPop
24
+ }) {
25
+ const handleOnDidDisappear = React.useCallback(e => {
26
+ onDidDisappear?.(e);
27
+ onPop?.(screenKey);
28
+ }, [onDidDisappear, onPop, screenKey]);
29
+ return /*#__PURE__*/React.createElement(StackScreenNativeComponent, {
30
+ style: StyleSheet.absoluteFill
31
+ // Control
32
+ ,
33
+ maxLifecycleState: maxLifecycleState,
34
+ screenKey: screenKey
35
+ // Events
36
+ ,
37
+ onWillAppear: onWillAppear,
38
+ onDidAppear: onDidAppear,
39
+ onWillDisappear: onWillDisappear,
40
+ onDidDisappear: handleOnDidDisappear
41
+ }, children);
42
+ }
43
+ export default StackScreen;
44
+ //# sourceMappingURL=StackScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","StyleSheet","StackScreenNativeComponent","StackScreenLifecycleState","INITIAL","DETACHED","ATTACHED","StackScreen","children","maxLifecycleState","screenKey","onWillAppear","onWillDisappear","onDidAppear","onDidDisappear","onPop","handleOnDidDisappear","useCallback","e","createElement","style","absoluteFill"],"sourceRoot":"../../../../src","sources":["components/gamma/StackScreen.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,0BAA0B,MAAM,+CAA+C;AAItF,OAAO,MAAMC,yBAAyB,GAAG;EACvCC,OAAO,EAAE,CAAC;EACVC,QAAQ,EAAE,CAAC;EACXC,QAAQ,EAAE;AACZ,CAAU;AAaV;AACA;AACA;AACA,SAASC,WAAWA,CAAC;EACnBC,QAAQ;EACR;EACAC,iBAAiB;EACjBC,SAAS;EACT;EACAC,YAAY;EACZC,eAAe;EACfC,WAAW;EACXC,cAAc;EACd;EACAC;AACgB,CAAC,EAAE;EACnB,MAAMC,oBAAoB,GAAGhB,KAAK,CAACiB,WAAW,CAC3CC,CAA8C,IAAK;IAClDJ,cAAc,GAAGI,CAAC,CAAC;IACnBH,KAAK,GAAGL,SAAS,CAAC;EACpB,CAAC,EACD,CAACI,cAAc,EAAEC,KAAK,EAAEL,SAAS,CACnC,CAAC;EAED,oBACEV,KAAA,CAAAmB,aAAA,CAACjB,0BAA0B;IACzBkB,KAAK,EAAEnB,UAAU,CAACoB;IAClB;IAAA;IACAZ,iBAAiB,EAAEA,iBAAkB;IACrCC,SAAS,EAAEA;IACX;IAAA;IACAC,YAAY,EAAEA,YAAa;IAC3BE,WAAW,EAAEA,WAAY;IACzBD,eAAe,EAAEA,eAAgB;IACjCE,cAAc,EAAEE;EAAqB,GACpCR,QACyB,CAAC;AAEjC;AAEA,eAAeD,WAAW","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+
5
+ // TODO: Report issue on RN repo, that nesting color value inside a struct does not work.
6
+ // Generated code is ok, but the value is not passed down correctly - whatever color is set
7
+ // host component receives RGBA(0, 0, 0, 0) anyway.
8
+ // type TabBarAppearance = {
9
+ // backgroundColor?: ColorValue;
10
+ // };
11
+
12
+ export default codegenNativeComponent('RNSBottomTabs', {
13
+ interfaceOnly: true
14
+ });
15
+ //# sourceMappingURL=BottomTabsNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent","interfaceOnly"],"sourceRoot":"../../../src","sources":["fabric/BottomTabsNativeComponent.ts"],"mappings":"AAAA,YAAY;;AAEZ,OAAOA,sBAAsB,MAAM,yDAAyD;;AAQ5F;AACA;AACA;AACA;AACA;AACA;;AAgEA,eAAeA,sBAAsB,CAAc,eAAe,EAAE;EAClEC,aAAa,EAAE;AACjB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+
5
+ // @ts-ignore: ImageSource type has been recently added: https://github.com/facebook/react-native/pull/51969
6
+
7
+ // iOS-specific: SFSymbol, image as a template usage
8
+
9
+ // eslint-disable-next-line @typescript-eslint/ban-types
10
+
11
+ export default codegenNativeComponent('RNSBottomTabsScreen', {});
12
+ //# sourceMappingURL=BottomTabsScreenNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../../src","sources":["fabric/BottomTabsScreenNativeComponent.ts"],"mappings":"AAAA,YAAY;;AAEZ,OAAOA,sBAAsB,MAAM,yDAAyD;;AAS5F;;AAGA;;AAGA;;AAyFA,eAAeA,sBAAsB,CAAc,qBAAqB,EAAE,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+ export default codegenNativeComponent('RNSScreenStackHost', {});
5
+ //# sourceMappingURL=ScreenStackHostNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../../../src","sources":["fabric/gamma/ScreenStackHostNativeComponent.ts"],"mappings":"AAAA,YAAY;;AAGZ,OAAOA,sBAAsB,MAAM,yDAAyD;AAI5F,eAAeA,sBAAsB,CAAc,oBAAoB,EAAE,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ 'use client';
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+ export default codegenNativeComponent('RNSSplitViewHost', {});
5
+ //# sourceMappingURL=SplitViewHostNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../../../src","sources":["fabric/gamma/SplitViewHostNativeComponent.ts"],"mappings":"AAAA,YAAY;;AAGZ,OAAOA,sBAAsB,MAAM,yDAAyD;AAmC5F,eAAeA,sBAAsB,CAAc,kBAAkB,EAAE,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ 'use client';
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+ export default codegenNativeComponent('RNSSplitViewScreen', {
5
+ interfaceOnly: true
6
+ });
7
+ //# sourceMappingURL=SplitViewScreenNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent","interfaceOnly"],"sourceRoot":"../../../../src","sources":["fabric/gamma/SplitViewScreenNativeComponent.ts"],"mappings":"AAAA,YAAY;;AAGZ,OAAOA,sBAAsB,MAAM,yDAAyD;AAI5F,eAAeA,sBAAsB,CAAc,oBAAoB,EAAE;EACvEC,aAAa,EAAE;AACjB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ 'use client';
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+
5
+ // eslint-disable-next-line @typescript-eslint/ban-types
6
+
7
+ export default codegenNativeComponent('RNSStackScreen', {});
8
+ //# sourceMappingURL=StackScreenNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../../../src","sources":["fabric/gamma/StackScreenNativeComponent.ts"],"mappings":"AAAA,YAAY;;AAOZ,OAAOA,sBAAsB,MAAM,yDAAyD;;AAE5F;;AAeA,eAAeA,sBAAsB,CAAc,gBAAgB,EAAE,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ const RNS_CONTROLLED_BOTTOM_TABS_DEFAULT = true;
2
+
3
+ // TODO: Migrate freeze here
4
+
5
+ /**
6
+ * Exposes information useful for downstream navigation library implementers,
7
+ * so they can keep reasonable backward compatibility, if desired.
8
+ *
9
+ * We don't mean for this object to only grow in number of fields, however at the same time
10
+ * we won't be very hasty to reduce it. Expect gradual changes.
11
+ */
12
+ export const compatibilityFlags = {
13
+ /**
14
+ * Because of a bug introduced in https://github.com/software-mansion/react-native-screens/pull/1646
15
+ * react-native-screens v3.21 changed how header's backTitle handles whitespace strings in https://github.com/software-mansion/react-native-screens/pull/1726
16
+ * To allow for backwards compatibility in @react-navigation/native-stack we need a way to check if this version or newer is used.
17
+ * See https://github.com/react-navigation/react-navigation/pull/11423 for more context.
18
+ */
19
+ isNewBackTitleImplementation: true,
20
+ /**
21
+ * With version 4.0.0 the header implementation has been changed. To allow for backward compat
22
+ * with native-stack@v6 we want to expose a way to check whether the new implementation
23
+ * is in use or not.
24
+ *
25
+ * See:
26
+ * * https://github.com/software-mansion/react-native-screens/pull/2325
27
+ * * https://github.com/react-navigation/react-navigation/pull/12125
28
+ */
29
+ usesHeaderFlexboxImplementation: true
30
+ };
31
+ const _featureFlags = {
32
+ experiment: {
33
+ controlledBottomTabs: RNS_CONTROLLED_BOTTOM_TABS_DEFAULT
34
+ },
35
+ stable: {}
36
+ };
37
+
38
+ /**
39
+ * Exposes configurable global behaviour of the library.
40
+ *
41
+ * Most of these can be overridden on particular component level, these are global switches.
42
+ */
43
+ export const featureFlags = {
44
+ /**
45
+ * Flags to enable experimental features. These might be removed w/o notice or moved to stable.
46
+ */
47
+ experiment: {
48
+ get controlledBottomTabs() {
49
+ return _featureFlags.experiment.controlledBottomTabs;
50
+ },
51
+ set controlledBottomTabs(value) {
52
+ if (value !== _featureFlags.experiment.controlledBottomTabs && _featureFlags.experiment.controlledBottomTabs !== RNS_CONTROLLED_BOTTOM_TABS_DEFAULT) {
53
+ console.error(`[RNScreens] controlledBottomTabs feature flag modified for a second time; this might lead to unexpected effects`);
54
+ }
55
+ _featureFlags.experiment.controlledBottomTabs = value;
56
+ }
57
+ },
58
+ /**
59
+ * Section for stable flags, which can be used to configure library behaviour.
60
+ */
61
+ stable: {}
62
+ };
63
+ export default featureFlags;
64
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RNS_CONTROLLED_BOTTOM_TABS_DEFAULT","compatibilityFlags","isNewBackTitleImplementation","usesHeaderFlexboxImplementation","_featureFlags","experiment","controlledBottomTabs","stable","featureFlags","value","console","error"],"sourceRoot":"../../src","sources":["flags.ts"],"mappings":"AAAA,MAAMA,kCAAkC,GAAG,IAAI;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAG;EAChC;AACF;AACA;AACA;AACA;AACA;EACEC,4BAA4B,EAAE,IAAI;EAElC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,+BAA+B,EAAE;AACnC,CAAU;AAEV,MAAMC,aAAa,GAAG;EACpBC,UAAU,EAAE;IACVC,oBAAoB,EAAEN;EACxB,CAAC;EACDO,MAAM,EAAE,CAAC;AACX,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAG;EAC1B;AACF;AACA;EACEH,UAAU,EAAE;IACV,IAAIC,oBAAoBA,CAAA,EAAG;MACzB,OAAOF,aAAa,CAACC,UAAU,CAACC,oBAAoB;IACtD,CAAC;IACD,IAAIA,oBAAoBA,CAACG,KAAc,EAAE;MACvC,IACEA,KAAK,KAAKL,aAAa,CAACC,UAAU,CAACC,oBAAoB,IACvDF,aAAa,CAACC,UAAU,CAACC,oBAAoB,KAC3CN,kCAAkC,EACpC;QACAU,OAAO,CAACC,KAAK,CACX,iHACF,CAAC;MACH;MACAP,aAAa,CAACC,UAAU,CAACC,oBAAoB,GAAGG,KAAK;IACvD;EACF,CAAC;EACD;AACF;AACA;EACEF,MAAM,EAAE,CAAC;AACX,CAAC;AAED,eAAeC,YAAY","ignoreList":[]}
@@ -24,10 +24,25 @@ export { default as ScreenContentWrapper } from './components/ScreenContentWrapp
24
24
  /**
25
25
  * Utils
26
26
  */
27
- export { isSearchBarAvailableForCurrentPlatform, compatibilityFlags, executeNativeBackPress } from './utils';
27
+ export { isSearchBarAvailableForCurrentPlatform, executeNativeBackPress } from './utils';
28
+
29
+ /**
30
+ * Flags
31
+ */
32
+ export { compatibilityFlags, featureFlags } from './flags';
28
33
 
29
34
  /**
30
35
  * Hooks
31
36
  */
32
37
  export { default as useTransitionProgress } from './useTransitionProgress';
38
+
39
+ /**
40
+ * EXPERIMENTAL API BELOW. MIGHT CHANGE W/O ANY NOTICE
41
+ */
42
+ export { default as BottomTabs } from './components/BottomTabs';
43
+ export { default as BottomTabsScreen } from './components/BottomTabsScreen';
44
+ export { default as ScreenStackHost } from './components/gamma/ScreenStackHost';
45
+ export { default as StackScreen, StackScreenLifecycleState } from './components/gamma/StackScreen';
46
+ export { default as SplitViewHost } from './components/gamma/SplitViewHost';
47
+ export { default as SplitViewScreen } from './components/gamma/SplitViewScreen';
33
48
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["enableScreens","enableFreeze","screensEnabled","freezeEnabled","default","Screen","InnerScreen","ScreenContext","ScreenStackHeaderConfig","ScreenStackHeaderSubview","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderRightView","ScreenStackHeaderBackButtonImage","ScreenStackHeaderSearchBarView","SearchBar","ScreenContainer","ScreenStack","ScreenStackItem","FullWindowOverlay","ScreenFooter","ScreenContentWrapper","isSearchBarAvailableForCurrentPlatform","compatibilityFlags","executeNativeBackPress","useTransitionProgress"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA;AACA;AACA,OAAO,8BAA8B;AAErC,cAAc,SAAS;;AAEvB;AACA;AACA;AACA,SACEA,aAAa,EACbC,YAAY,EACZC,cAAc,EACdC,aAAa,QACR,QAAQ;;AAEf;AACA;AACA;AACA,SACEC,OAAO,IAAIC,MAAM,EACjBC,WAAW,EACXC,aAAa,QACR,qBAAqB;AAE5B,SACEC,uBAAuB,EACvBC,wBAAwB,EACxBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,0BAA0B,EAC1BC,gCAAgC,EAChCC,8BAA8B,QACzB,sCAAsC;AAE7C,SAASV,OAAO,IAAIW,SAAS,QAAQ,wBAAwB;AAC7D,SAASX,OAAO,IAAIY,eAAe,QAAQ,8BAA8B;AACzE,SAASZ,OAAO,IAAIa,WAAW,QAAQ,0BAA0B;AACjE,SAASb,OAAO,IAAIc,eAAe,QAAQ,8BAA8B;AACzE,SAASd,OAAO,IAAIe,iBAAiB,QAAQ,gCAAgC;AAC7E,SAASf,OAAO,IAAIgB,YAAY,QAAQ,2BAA2B;AACnE,SAAShB,OAAO,IAAIiB,oBAAoB,QAAQ,mCAAmC;;AAEnF;AACA;AACA;AACA,SACEC,sCAAsC,EACtCC,kBAAkB,EAClBC,sBAAsB,QACjB,SAAS;;AAEhB;AACA;AACA;AACA,SAASpB,OAAO,IAAIqB,qBAAqB,QAAQ,yBAAyB","ignoreList":[]}
1
+ {"version":3,"names":["enableScreens","enableFreeze","screensEnabled","freezeEnabled","default","Screen","InnerScreen","ScreenContext","ScreenStackHeaderConfig","ScreenStackHeaderSubview","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderRightView","ScreenStackHeaderBackButtonImage","ScreenStackHeaderSearchBarView","SearchBar","ScreenContainer","ScreenStack","ScreenStackItem","FullWindowOverlay","ScreenFooter","ScreenContentWrapper","isSearchBarAvailableForCurrentPlatform","executeNativeBackPress","compatibilityFlags","featureFlags","useTransitionProgress","BottomTabs","BottomTabsScreen","ScreenStackHost","StackScreen","StackScreenLifecycleState","SplitViewHost","SplitViewScreen"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA;AACA;AACA,OAAO,8BAA8B;AAErC,cAAc,SAAS;;AAEvB;AACA;AACA;AACA,SACEA,aAAa,EACbC,YAAY,EACZC,cAAc,EACdC,aAAa,QACR,QAAQ;;AAEf;AACA;AACA;AACA,SACEC,OAAO,IAAIC,MAAM,EACjBC,WAAW,EACXC,aAAa,QACR,qBAAqB;AAE5B,SACEC,uBAAuB,EACvBC,wBAAwB,EACxBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,0BAA0B,EAC1BC,gCAAgC,EAChCC,8BAA8B,QACzB,sCAAsC;AAE7C,SAASV,OAAO,IAAIW,SAAS,QAAQ,wBAAwB;AAC7D,SAASX,OAAO,IAAIY,eAAe,QAAQ,8BAA8B;AACzE,SAASZ,OAAO,IAAIa,WAAW,QAAQ,0BAA0B;AACjE,SAASb,OAAO,IAAIc,eAAe,QAAQ,8BAA8B;AACzE,SAASd,OAAO,IAAIe,iBAAiB,QAAQ,gCAAgC;AAC7E,SAASf,OAAO,IAAIgB,YAAY,QAAQ,2BAA2B;AACnE,SAAShB,OAAO,IAAIiB,oBAAoB,QAAQ,mCAAmC;;AAEnF;AACA;AACA;AACA,SACEC,sCAAsC,EACtCC,sBAAsB,QACjB,SAAS;;AAEhB;AACA;AACA;AACA,SAASC,kBAAkB,EAAEC,YAAY,QAAQ,SAAS;;AAE1D;AACA;AACA;AACA,SAASrB,OAAO,IAAIsB,qBAAqB,QAAQ,yBAAyB;;AAE1E;AACA;AACA;AACA,SAAStB,OAAO,IAAIuB,UAAU,QAAQ,yBAAyB;AAC/D,SAASvB,OAAO,IAAIwB,gBAAgB,QAAQ,+BAA+B;AAC3E,SAASxB,OAAO,IAAIyB,eAAe,QAAQ,oCAAoC;AAC/E,SACEzB,OAAO,IAAI0B,WAAW,EACtBC,yBAAyB,QACpB,gCAAgC;AACvC,SAAS3B,OAAO,IAAI4B,aAAa,QAAQ,kCAAkC;AAC3E,SAAS5B,OAAO,IAAI6B,eAAe,QAAQ,oCAAoC","ignoreList":[]}
@@ -5,31 +5,4 @@ export function executeNativeBackPress() {
5
5
  BackHandler.exitApp();
6
6
  return true;
7
7
  }
8
-
9
- /**
10
- * Exposes information useful for downstream navigation library implementers,
11
- * so they can keep reasonable backward compatibility, if desired.
12
- *
13
- * We don't mean for this object to only grow in number of fields, however at the same time
14
- * we won't be very hasty to reduce it. Expect gradual changes.
15
- */
16
- export const compatibilityFlags = {
17
- /**
18
- * Because of a bug introduced in https://github.com/software-mansion/react-native-screens/pull/1646
19
- * react-native-screens v3.21 changed how header's backTitle handles whitespace strings in https://github.com/software-mansion/react-native-screens/pull/1726
20
- * To allow for backwards compatibility in @react-navigation/native-stack we need a way to check if this version or newer is used.
21
- * See https://github.com/react-navigation/react-navigation/pull/11423 for more context.
22
- */
23
- isNewBackTitleImplementation: true,
24
- /**
25
- * With version 4.0.0 the header implementation has been changed. To allow for backward compat
26
- * with native-stack@v6 we want to expose a way to check whether the new implementation
27
- * is in use or not.
28
- *
29
- * See:
30
- * * https://github.com/software-mansion/react-native-screens/pull/2325
31
- * * https://github.com/react-navigation/react-navigation/pull/12125
32
- */
33
- usesHeaderFlexboxImplementation: true
34
- };
35
8
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BackHandler","Platform","isSearchBarAvailableForCurrentPlatform","includes","OS","executeNativeBackPress","exitApp","compatibilityFlags","isNewBackTitleImplementation","usesHeaderFlexboxImplementation"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"AAAA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,cAAc;AAEpD,OAAO,MAAMC,sCAAsC,GAAG,CACpD,KAAK,EACL,SAAS,CACV,CAACC,QAAQ,CAACF,QAAQ,CAACG,EAAE,CAAC;AAEvB,OAAO,SAASC,sBAAsBA,CAAA,EAAG;EACvC;EACAL,WAAW,CAACM,OAAO,CAAC,CAAC;EACrB,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kBAAkB,GAAG;EAChC;AACF;AACA;AACA;AACA;AACA;EACEC,4BAA4B,EAAE,IAAI;EAElC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,+BAA+B,EAAE;AACnC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["BackHandler","Platform","isSearchBarAvailableForCurrentPlatform","includes","OS","executeNativeBackPress","exitApp"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"AAAA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,cAAc;AAEpD,OAAO,MAAMC,sCAAsC,GAAG,CACpD,KAAK,EACL,SAAS,CACV,CAACC,QAAQ,CAACF,QAAQ,CAACG,EAAE,CAAC;AAEvB,OAAO,SAASC,sBAAsBA,CAAA,EAAG;EACvC;EACAL,WAAW,CAACM,OAAO,CAAC,CAAC;EACrB,OAAO,IAAI;AACb","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { BlurEffect, NativeFocusChangeEvent } from '../fabric/BottomTabsNativeComponent';
3
+ import { type ColorValue, type NativeSyntheticEvent, TextStyle, type ViewProps } from 'react-native';
4
+ export interface BottomTabsProps extends ViewProps {
5
+ onNativeFocusChange?: (event: NativeSyntheticEvent<NativeFocusChangeEvent>) => void;
6
+ tabBarBackgroundColor?: ColorValue;
7
+ tabBarBlurEffect?: BlurEffect;
8
+ tabBarTintColor?: ColorValue;
9
+ tabBarItemTitleFontFamily?: TextStyle['fontFamily'];
10
+ tabBarItemTitleFontSize?: TextStyle['fontSize'];
11
+ tabBarItemTitleFontWeight?: TextStyle['fontWeight'];
12
+ tabBarItemTitleFontStyle?: TextStyle['fontStyle'];
13
+ tabBarItemTitleFontColor?: TextStyle['color'];
14
+ tabBarItemTitlePositionAdjustment?: {
15
+ horizontal?: number;
16
+ vertical?: number;
17
+ };
18
+ tabBarItemIconColor?: ColorValue;
19
+ tabBarItemBadgeBackgroundColor?: ColorValue;
20
+ tabBarItemTitleFontSizeActive?: TextStyle['fontSize'];
21
+ tabBarItemTitleFontColorActive?: TextStyle['color'];
22
+ tabBarItemIconColorActive?: ColorValue;
23
+ experimentalControlNavigationStateInJS?: boolean;
24
+ }
25
+ /**
26
+ * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
27
+ */
28
+ declare function BottomTabs(props: BottomTabsProps): React.JSX.Element;
29
+ export default BottomTabs;
30
+ //# sourceMappingURL=BottomTabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BottomTabs.d.ts","sourceRoot":"","sources":["../../../src/components/BottomTabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAkC,EAChC,UAAU,EACV,sBAAsB,EAEvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,oBAAoB,EAEzB,SAAS,EACT,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAEhD,mBAAmB,CAAC,EAAE,CACpB,KAAK,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,KAChD,IAAI,CAAC;IAIV,qBAAqB,CAAC,EAAE,UAAU,CAAC;IACnC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,eAAe,CAAC,EAAE,UAAU,CAAC;IAE7B,yBAAyB,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACpD,uBAAuB,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChD,yBAAyB,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACpD,wBAAwB,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClD,wBAAwB,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9C,iCAAiC,CAAC,EAAE;QAClC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,mBAAmB,CAAC,EAAE,UAAU,CAAC;IAEjC,8BAA8B,CAAC,EAAE,UAAU,CAAC;IAG5C,6BAA6B,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACtD,8BAA8B,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACpD,yBAAyB,CAAC,EAAE,UAAU,CAAC;IAKvC,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD;AAED;;GAEG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,qBA8CzC;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { BlurEffect } from '../fabric/BottomTabsScreenNativeComponent';
3
+ import { type ColorValue, type ImageSourcePropType, type NativeSyntheticEvent, TextStyle, type ViewProps } from 'react-native';
4
+ export type EmptyObject = Record<string, never>;
5
+ export type BottomTabsScreenEventHandler<T> = (event: NativeSyntheticEvent<T>) => void;
6
+ export interface SFIcon {
7
+ sfSymbolName: string;
8
+ }
9
+ export interface ImageIcon {
10
+ imageSource: ImageSourcePropType;
11
+ }
12
+ export interface TemplateIcon {
13
+ templateSource: ImageSourcePropType;
14
+ }
15
+ export type Icon = SFIcon | ImageIcon | TemplateIcon;
16
+ export interface BottomTabsScreenProps {
17
+ children?: ViewProps['children'];
18
+ placeholder?: React.ReactNode | undefined;
19
+ isFocused?: boolean;
20
+ tabKey: string;
21
+ tabBarBackgroundColor?: ColorValue;
22
+ tabBarBlurEffect?: BlurEffect;
23
+ tabBarItemTitleFontFamily?: TextStyle['fontFamily'];
24
+ tabBarItemTitleFontSize?: TextStyle['fontSize'];
25
+ tabBarItemTitleFontWeight?: TextStyle['fontWeight'];
26
+ tabBarItemTitleFontStyle?: TextStyle['fontStyle'];
27
+ tabBarItemTitleFontColor?: TextStyle['color'];
28
+ tabBarItemTitlePositionAdjustment?: {
29
+ horizontal?: number;
30
+ vertical?: number;
31
+ };
32
+ tabBarItemIconColor?: ColorValue;
33
+ tabBarItemBadgeBackgroundColor?: ColorValue;
34
+ title?: string;
35
+ iconResourceName?: string;
36
+ icon?: Icon;
37
+ selectedIcon?: Icon;
38
+ badgeValue?: string;
39
+ specialEffects?: {
40
+ repeatedTabSelection?: {
41
+ popToRoot?: boolean;
42
+ scrollToTop?: boolean;
43
+ };
44
+ };
45
+ overrideScrollViewContentInsetAdjustmentBehavior?: boolean;
46
+ onWillAppear?: BottomTabsScreenEventHandler<EmptyObject>;
47
+ onDidAppear?: BottomTabsScreenEventHandler<EmptyObject>;
48
+ onWillDisappear?: BottomTabsScreenEventHandler<EmptyObject>;
49
+ onDidDisappear?: BottomTabsScreenEventHandler<EmptyObject>;
50
+ }
51
+ /**
52
+ * EXPERIMENTAL API, MIGHT CHANGE W/O ANY NOTICE
53
+ */
54
+ declare function BottomTabsScreen(props: BottomTabsScreenProps): React.JSX.Element;
55
+ export default BottomTabsScreen;
56
+ //# sourceMappingURL=BottomTabsScreen.d.ts.map