react-native-navigation 7.23.1 → 7.24.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 (263) hide show
  1. package/.buildkite/pipeline.yml +51 -11
  2. package/.nvmrc +1 -0
  3. package/Mock.d.ts +1 -0
  4. package/Mock.js +4 -0
  5. package/Mock.ts +1 -1
  6. package/README.md +0 -1
  7. package/jest.config.js +40 -0
  8. package/lib/{src/Mock → Mock}/Application.tsx +0 -0
  9. package/lib/{src/Mock → Mock}/ComponentProps.tsx +0 -0
  10. package/lib/{src/Mock → Mock}/Components/BottomTabs.tsx +0 -0
  11. package/lib/{src/Mock → Mock}/Components/ComponentScreen.tsx +13 -2
  12. package/lib/{src/Mock → Mock}/Components/LayoutComponent.tsx +0 -0
  13. package/lib/{src/Mock → Mock}/Components/Modals.tsx +0 -0
  14. package/lib/{src/Mock → Mock}/Components/NavigationButton.tsx +1 -1
  15. package/lib/{src/Mock → Mock}/Components/Overlays.tsx +0 -0
  16. package/lib/{src/Mock → Mock}/Components/Stack.tsx +0 -0
  17. package/lib/{src/Mock → Mock}/Components/TopBar.tsx +2 -2
  18. package/lib/{src/Mock → Mock}/Layouts/BottomTabsNode.ts +1 -1
  19. package/lib/{src/Mock → Mock}/Layouts/ComponentNode.ts +1 -1
  20. package/lib/{src/Mock → Mock}/Layouts/LayoutNodeFactory.ts +0 -0
  21. package/lib/{src/Mock → Mock}/Layouts/Node.ts +1 -1
  22. package/lib/{src/Mock → Mock}/Layouts/ParentNode.ts +2 -2
  23. package/lib/{src/Mock → Mock}/Layouts/StackNode.ts +0 -0
  24. package/lib/{src/Mock → Mock}/Stores/EventsStore.ts +10 -2
  25. package/lib/{src/Mock → Mock}/Stores/LayoutStore.ts +3 -2
  26. package/lib/{src/Mock → Mock}/connect.ts +0 -0
  27. package/lib/Mock/constants.d.ts +2 -0
  28. package/lib/Mock/constants.js +5 -0
  29. package/lib/{src/Mock → Mock}/constants.ts +0 -0
  30. package/lib/Mock/index.d.ts +3 -0
  31. package/lib/Mock/index.js +14 -0
  32. package/lib/{src/Mock → Mock}/index.ts +0 -0
  33. package/lib/{src/Mock → Mock}/mocks/AppRegistryService.ts +0 -0
  34. package/lib/{src/Mock → Mock}/mocks/NativeCommandsSender.tsx +1 -1
  35. package/lib/{src/Mock → Mock}/mocks/NativeEventsReceiver.ts +7 -4
  36. package/lib/android/app/build.gradle +23 -21
  37. package/lib/android/app/src/main/java/com/reactnativenavigation/options/FontOptions.kt +2 -2
  38. package/lib/android/app/src/main/java/com/reactnativenavigation/options/HardwareBackButtonOptions.kt +35 -2
  39. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +32 -17
  40. package/lib/android/app/src/main/java/com/reactnativenavigation/options/Options.java +1 -1
  41. package/lib/android/app/src/main/java/com/reactnativenavigation/options/parsers/TypefaceLoader.kt +16 -10
  42. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +5 -2
  43. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalFrameLayout.kt +3 -3
  44. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalViewManager.kt +11 -8
  45. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/SystemUiUtils.kt +168 -0
  46. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +5 -2
  47. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +42 -2
  48. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +12 -16
  49. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +19 -11
  50. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/externalcomponent/ExternalComponentViewController.java +2 -2
  51. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenter.java +6 -4
  52. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManager.kt +8 -3
  53. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +15 -7
  54. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +127 -138
  55. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +183 -22
  56. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonController.kt +25 -4
  57. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +9 -1
  58. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonSpan.kt +1 -1
  59. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/Presenter.java +52 -71
  60. package/lib/android/app/src/main/java/com/reactnativenavigation/views/component/ComponentLayout.java +2 -0
  61. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageMatrixAnimator.kt +2 -3
  62. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/TopBar.java +1 -2
  63. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/ButtonBar.kt +7 -12
  64. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleAndButtonsContainer.kt +0 -2
  65. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleSubTitleLayout.kt +0 -7
  66. package/lib/android/app/src/reactNative51/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +2 -1
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +7 -6
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/TestActivity.java +5 -0
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/ImageLoaderMock.kt +5 -4
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/Mocks.kt +3 -2
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TypefaceLoaderMock.kt +5 -1
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TransitionAnimationOptionsTest.kt +2 -3
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/PresenterTest.java +25 -10
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/LayoutFactoryTest.java +25 -2
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/MotionEventTest.kt +1 -1
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/{TitleAndButtonsMeasurer.kt → TitleAndButtonsMeasurerTest.kt} +2 -2
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiThreadTest.java +2 -2
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/utils/UiUtilsTest.java +1 -1
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +572 -0
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsPresenterTest.kt +1 -1
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +2 -1
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewControllerTest.java +5 -5
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/fakes/FakeParentController.kt +1 -1
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalAnimatorTest.kt +1 -1
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +7 -3
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +17 -4
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +2 -2
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +5 -5
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/overlay/OverlayManagerTest.java +1 -0
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +4 -0
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +6 -2
  92. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +1 -1
  93. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +13 -8
  94. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +58 -51
  95. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +219 -41
  96. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewControllerTest.java +4 -1
  97. package/lib/android/app/src/test/java/com/reactnativenavigation/views/TitleAndButtonsContainerTest.kt +2 -2
  98. package/lib/android/app/src/test/java/com/reactnativenavigation/views/animations/BaseViewAnimatorTest.kt +4 -4
  99. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainerTest.kt +1 -1
  100. package/lib/android/app/src/test/java/com/reactnativenavigation/views/bottomtabs/BottomTabsTest.kt +4 -4
  101. package/lib/dist/Mock/Application.js +2 -2
  102. package/lib/dist/Mock/Components/BottomTabs.js +2 -2
  103. package/lib/dist/Mock/Components/ComponentScreen.js +15 -5
  104. package/lib/dist/Mock/Components/LayoutComponent.js +3 -2
  105. package/lib/dist/Mock/Components/Modals.js +2 -2
  106. package/lib/dist/Mock/Components/NavigationButton.d.ts +1 -1
  107. package/lib/dist/Mock/Components/NavigationButton.js +8 -10
  108. package/lib/dist/Mock/Components/Overlays.js +2 -2
  109. package/lib/dist/Mock/Components/Stack.js +2 -2
  110. package/lib/dist/Mock/Components/TopBar.d.ts +2 -2
  111. package/lib/dist/Mock/Components/TopBar.js +7 -6
  112. package/lib/dist/Mock/Layouts/BottomTabsNode.d.ts +1 -1
  113. package/lib/dist/Mock/Layouts/BottomTabsNode.js +3 -3
  114. package/lib/dist/Mock/Layouts/ComponentNode.d.ts +1 -1
  115. package/lib/dist/Mock/Layouts/ComponentNode.js +4 -4
  116. package/lib/dist/Mock/Layouts/LayoutNodeFactory.js +3 -3
  117. package/lib/dist/Mock/Layouts/Node.d.ts +1 -1
  118. package/lib/dist/Mock/Layouts/Node.js +5 -0
  119. package/lib/dist/Mock/Layouts/ParentNode.d.ts +2 -2
  120. package/lib/dist/Mock/Layouts/ParentNode.js +4 -3
  121. package/lib/dist/Mock/Layouts/StackNode.js +1 -1
  122. package/lib/dist/Mock/Stores/EventsStore.d.ts +5 -2
  123. package/lib/dist/Mock/Stores/EventsStore.js +7 -0
  124. package/lib/dist/Mock/Stores/LayoutStore.js +6 -3
  125. package/lib/dist/Mock/connect.js +1 -1
  126. package/lib/dist/Mock/index.js +1 -1
  127. package/lib/dist/Mock/mocks/NativeCommandsSender.d.ts +1 -1
  128. package/lib/dist/Mock/mocks/NativeCommandsSender.js +2 -2
  129. package/lib/dist/Mock/mocks/NativeEventsReceiver.d.ts +3 -3
  130. package/lib/dist/Mock/mocks/NativeEventsReceiver.js +6 -3
  131. package/lib/dist/{Navigation.d.ts → src/Navigation.d.ts} +0 -0
  132. package/lib/dist/{Navigation.js → src/Navigation.js} +19 -3
  133. package/lib/dist/{NavigationDelegate.d.ts → src/NavigationDelegate.d.ts} +0 -0
  134. package/lib/dist/{NavigationDelegate.js → src/NavigationDelegate.js} +1 -0
  135. package/lib/dist/{adapters → src/adapters}/AppRegistryService.d.ts +0 -0
  136. package/lib/dist/{adapters → src/adapters}/AppRegistryService.js +0 -0
  137. package/lib/dist/{adapters → src/adapters}/AssetResolver.d.ts +0 -0
  138. package/lib/dist/{adapters → src/adapters}/AssetResolver.js +0 -0
  139. package/lib/dist/src/adapters/ColorService.d.ts +3 -0
  140. package/lib/dist/{adapters → src/adapters}/ColorService.js +1 -1
  141. package/lib/dist/{adapters → src/adapters}/Constants.d.ts +0 -0
  142. package/lib/dist/{adapters → src/adapters}/Constants.js +10 -6
  143. package/lib/dist/{adapters → src/adapters}/NativeCommandsSender.d.ts +0 -0
  144. package/lib/dist/{adapters → src/adapters}/NativeCommandsSender.js +1 -0
  145. package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.d.ts +0 -0
  146. package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.js +1 -0
  147. package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.mock.d.ts +0 -0
  148. package/lib/dist/{adapters → src/adapters}/NativeEventsReceiver.mock.js +0 -0
  149. package/lib/dist/{adapters → src/adapters}/TouchablePreview.d.ts +0 -0
  150. package/lib/dist/src/adapters/TouchablePreview.js +89 -0
  151. package/lib/dist/{adapters → src/adapters}/UniqueIdProvider.d.ts +0 -0
  152. package/lib/dist/{adapters → src/adapters}/UniqueIdProvider.js +2 -2
  153. package/lib/dist/{commands → src/commands}/Commands.d.ts +0 -0
  154. package/lib/dist/{commands → src/commands}/Commands.js +24 -10
  155. package/lib/dist/{commands → src/commands}/Deprecations.d.ts +0 -0
  156. package/lib/dist/src/commands/Deprecations.js +80 -0
  157. package/lib/dist/{commands → src/commands}/LayoutTreeCrawler.d.ts +0 -0
  158. package/lib/dist/{commands → src/commands}/LayoutTreeCrawler.js +4 -2
  159. package/lib/dist/{commands → src/commands}/LayoutTreeParser.d.ts +0 -0
  160. package/lib/dist/{commands → src/commands}/LayoutTreeParser.js +1 -0
  161. package/lib/dist/{commands → src/commands}/LayoutType.d.ts +0 -0
  162. package/lib/dist/{commands → src/commands}/LayoutType.js +0 -0
  163. package/lib/dist/{commands → src/commands}/OptionsCrawler.d.ts +0 -0
  164. package/lib/dist/{commands → src/commands}/OptionsCrawler.js +6 -4
  165. package/lib/dist/{commands → src/commands}/OptionsProcessor.d.ts +1 -1
  166. package/lib/dist/{commands → src/commands}/OptionsProcessor.js +50 -42
  167. package/lib/dist/{components → src/components}/ComponentRegistry.d.ts +0 -0
  168. package/lib/dist/{components → src/components}/ComponentRegistry.js +4 -0
  169. package/lib/dist/{components → src/components}/ComponentWrapper.d.ts +0 -0
  170. package/lib/dist/{components → src/components}/ComponentWrapper.js +17 -17
  171. package/lib/dist/{components → src/components}/Modal.d.ts +0 -0
  172. package/lib/dist/{components → src/components}/Modal.js +8 -8
  173. package/lib/dist/{components → src/components}/Store.d.ts +2 -0
  174. package/lib/dist/{components → src/components}/Store.js +13 -6
  175. package/lib/dist/{events → src/events}/CommandsObserver.d.ts +0 -0
  176. package/lib/dist/{events → src/events}/CommandsObserver.js +2 -1
  177. package/lib/dist/{events → src/events}/ComponentEventsObserver.d.ts +4 -2
  178. package/lib/dist/{events → src/events}/ComponentEventsObserver.js +16 -14
  179. package/lib/dist/{events → src/events}/EventsRegistry.d.ts +2 -2
  180. package/lib/dist/{events → src/events}/EventsRegistry.js +3 -0
  181. package/lib/dist/{index.d.ts → src/index.d.ts} +0 -0
  182. package/lib/dist/src/index.js +22 -0
  183. package/lib/dist/{interfaces → src/interfaces}/CommandName.d.ts +0 -0
  184. package/lib/dist/{interfaces → src/interfaces}/CommandName.js +0 -0
  185. package/lib/dist/{interfaces → src/interfaces}/ComponentEvents.d.ts +0 -0
  186. package/lib/dist/{interfaces → src/interfaces}/ComponentEvents.js +0 -0
  187. package/lib/dist/{interfaces → src/interfaces}/EventSubscription.d.ts +0 -0
  188. package/lib/dist/{interfaces → src/interfaces}/EventSubscription.js +0 -0
  189. package/lib/dist/{interfaces → src/interfaces}/Events.d.ts +0 -0
  190. package/lib/dist/{interfaces → src/interfaces}/Events.js +0 -0
  191. package/lib/dist/{interfaces → src/interfaces}/Layout.d.ts +0 -0
  192. package/lib/dist/{interfaces → src/interfaces}/Layout.js +0 -0
  193. package/lib/dist/{interfaces → src/interfaces}/NavigationComponent.d.ts +0 -0
  194. package/lib/dist/{interfaces → src/interfaces}/NavigationComponent.js +8 -1
  195. package/lib/dist/{interfaces → src/interfaces}/NavigationComponentListener.d.ts +0 -0
  196. package/lib/dist/{interfaces → src/interfaces}/NavigationComponentListener.js +0 -0
  197. package/lib/dist/{interfaces → src/interfaces}/NavigationComponentProps.d.ts +0 -0
  198. package/lib/dist/{interfaces → src/interfaces}/NavigationComponentProps.js +0 -0
  199. package/lib/dist/{interfaces → src/interfaces}/NavigationFunctionComponent.d.ts +0 -0
  200. package/lib/dist/{interfaces → src/interfaces}/NavigationFunctionComponent.js +0 -0
  201. package/lib/dist/{interfaces → src/interfaces}/Options.d.ts +9 -0
  202. package/lib/dist/{interfaces → src/interfaces}/Options.js +0 -0
  203. package/lib/dist/{interfaces → src/interfaces}/ProcessorSubscription.d.ts +0 -0
  204. package/lib/dist/{interfaces → src/interfaces}/ProcessorSubscription.js +0 -0
  205. package/lib/dist/{interfaces → src/interfaces}/Processors.d.ts +0 -0
  206. package/lib/dist/{interfaces → src/interfaces}/Processors.js +0 -0
  207. package/lib/dist/{processors → src/processors}/LayoutProcessor.d.ts +0 -0
  208. package/lib/dist/{processors → src/processors}/LayoutProcessor.js +1 -0
  209. package/lib/dist/{processors → src/processors}/LayoutProcessorsStore.d.ts +0 -0
  210. package/lib/dist/{processors → src/processors}/LayoutProcessorsStore.js +1 -3
  211. package/lib/dist/{processors → src/processors}/OptionProcessorsStore.d.ts +0 -0
  212. package/lib/dist/{processors → src/processors}/OptionProcessorsStore.js +1 -3
  213. package/lib/dist/{types.d.ts → src/types.d.ts} +0 -0
  214. package/lib/dist/{types.js → src/types.js} +0 -0
  215. package/lib/ios/AnimationObserver.h +17 -0
  216. package/lib/ios/AnimationObserver.m +41 -0
  217. package/lib/ios/BottomTabPresenter.h +0 -3
  218. package/lib/ios/BottomTabPresenter.m +0 -8
  219. package/lib/ios/RNNAssert.h +2 -2
  220. package/lib/ios/RNNBasePresenter.h +0 -4
  221. package/lib/ios/RNNBasePresenter.m +0 -12
  222. package/lib/ios/RNNBottomTabOptions.m +2 -1
  223. package/lib/ios/RNNBottomTabsController.m +8 -8
  224. package/lib/ios/RNNBridgeManager.mm +0 -1
  225. package/lib/ios/RNNButtonBuilder.m +2 -0
  226. package/lib/ios/RNNButtonOptions.h +1 -0
  227. package/lib/ios/RNNButtonOptions.m +4 -0
  228. package/lib/ios/RNNCommandsHandler.m +15 -8
  229. package/lib/ios/RNNComponentPresenter.m +0 -4
  230. package/lib/ios/RNNComponentViewController.m +2 -4
  231. package/lib/ios/RNNDotIndicatorPresenter.m +2 -1
  232. package/lib/ios/RNNExternalViewController.m +2 -4
  233. package/lib/ios/RNNModalManager.h +2 -1
  234. package/lib/ios/RNNModalManager.m +12 -21
  235. package/lib/ios/RNNSegmentedControl.h +1 -1
  236. package/lib/ios/RNNSideMenuChildVC.m +0 -4
  237. package/lib/ios/RNNSideMenuController.m +0 -4
  238. package/lib/ios/RNNSplitViewController.m +0 -4
  239. package/lib/ios/RNNStackController.m +0 -4
  240. package/lib/ios/RNNStackPresenter.m +3 -0
  241. package/lib/ios/RNNSwizzles.m +20 -0
  242. package/lib/ios/RNNTabBarItemCreator.m +3 -2
  243. package/lib/ios/RNNUIBarButtonItem.h +2 -0
  244. package/lib/ios/RNNUIBarButtonItem.m +17 -0
  245. package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -0
  246. package/lib/ios/TopBarPresenter.m +8 -4
  247. package/lib/ios/UIViewController+RNNOptions.m +1 -1
  248. package/lib/src/commands/Commands.ts +6 -1
  249. package/lib/src/commands/LayoutTreeCrawler.ts +2 -2
  250. package/lib/src/commands/OptionsCrawler.ts +2 -1
  251. package/lib/src/commands/OptionsProcessor.ts +15 -13
  252. package/lib/src/components/Store.ts +9 -0
  253. package/lib/src/events/ComponentEventsObserver.ts +5 -1
  254. package/lib/src/events/EventsRegistry.ts +2 -1
  255. package/lib/src/interfaces/Options.ts +10 -0
  256. package/package.json +19 -60
  257. package/tsconfig.mocks.json +7 -0
  258. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java +0 -41
  259. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.java +0 -511
  260. package/lib/dist/adapters/ColorService.d.ts +0 -3
  261. package/lib/dist/adapters/TouchablePreview.js +0 -91
  262. package/lib/dist/commands/Deprecations.js +0 -82
  263. package/lib/dist/index.js +0 -22
@@ -4,17 +4,15 @@ import android.content.Context
4
4
  import android.graphics.PorterDuff
5
5
  import android.graphics.PorterDuffColorFilter
6
6
  import android.text.SpannableString
7
- import android.transition.AutoTransition
8
- import android.transition.TransitionManager
9
7
  import android.view.MenuItem
10
8
  import android.view.View
11
9
  import android.view.ViewGroup
12
10
  import androidx.appcompat.widget.ActionMenuView
13
11
  import androidx.appcompat.widget.Toolbar
12
+ import androidx.core.view.children
14
13
  import com.reactnativenavigation.utils.ObjectUtils
15
14
  import com.reactnativenavigation.utils.ViewUtils
16
15
  import com.reactnativenavigation.viewcontrollers.stack.topbar.button.ButtonController
17
-
18
16
  open class ButtonBar internal constructor(context: Context) : Toolbar(context) {
19
17
  var shouldAnimate: Boolean=false
20
18
 
@@ -43,23 +41,17 @@ open class ButtonBar internal constructor(context: Context) : Toolbar(context) {
43
41
  get() = menu.size()
44
42
 
45
43
  fun addButton(menuItem: Int, intId: Int, order: Int, styledText: SpannableString): MenuItem? {
46
- if(shouldAnimate)
47
- TransitionManager.beginDelayedTransition(this,AutoTransition())
48
44
  return this.menu?.add(menuItem,
49
- intId,
50
- order,
51
- styledText)
45
+ intId,
46
+ order,
47
+ styledText)
52
48
  }
53
49
 
54
50
  fun removeButton(buttonId: Int) {
55
- if(shouldAnimate)
56
- TransitionManager.beginDelayedTransition(this,AutoTransition())
57
51
  menu.removeItem(buttonId)
58
52
  }
59
53
 
60
54
  open fun clearButtons() {
61
- if(shouldAnimate)
62
- TransitionManager.beginDelayedTransition(this,AutoTransition())
63
55
  clearBackButton()
64
56
  if (menu.size() > 0) menu.clear()
65
57
  }
@@ -68,6 +60,9 @@ open class ButtonBar internal constructor(context: Context) : Toolbar(context) {
68
60
  return menu.getItem(index)
69
61
  }
70
62
 
63
+ fun getButtonById(id: Int): MenuItem? {
64
+ return menu.children.firstOrNull { it.itemId == id }
65
+ }
71
66
  fun containsButton(menuItem: MenuItem?, order: Int): Boolean {
72
67
  return menuItem != null && menu.findItem(menuItem.itemId) != null && menuItem.order == order
73
68
  }
@@ -76,8 +76,6 @@ class TitleAndButtonsContainer(context: Context) : ViewGroup(context) {
76
76
 
77
77
  fun setSubTitleTextAlignment(alignment: Alignment) = titleSubTitleBar.setSubTitleAlignment(alignment)
78
78
 
79
- fun setTitleTextAlignment(alignment: Alignment) = titleSubTitleBar.setTitleAlignment(alignment)
80
-
81
79
  fun setBackgroundColor(color: ThemeColour) = if (color.hasValue()) setBackgroundColor(color.get()) else Unit
82
80
 
83
81
  fun setTitleFontSize(size: Float) = titleSubTitleBar.setTitleFontSize(size)
@@ -38,13 +38,6 @@ class TitleSubTitleLayout(context: Context) : LinearLayout(context) {
38
38
  }
39
39
  }
40
40
 
41
- fun setTitleAlignment(alignment: Alignment) {
42
- if (alignment == Alignment.Center) {
43
- (this.titleTextView.layoutParams as LayoutParams).gravity = Gravity.CENTER
44
- } else {
45
- (this.titleTextView.layoutParams as LayoutParams).gravity = Gravity.START or Gravity.CENTER_VERTICAL
46
- }
47
- }
48
41
 
49
42
  fun setTitleFontSize(size: Float) = titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, size)
50
43
 
@@ -8,6 +8,7 @@ import com.facebook.react.ReactPackage;
8
8
  import com.facebook.react.common.LifecycleState;
9
9
  import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener;
10
10
  import com.reactnativenavigation.NavigationApplication;
11
+ import com.facebook.hermes.reactexecutor.HermesExecutorFactory;
11
12
 
12
13
  import androidx.annotation.NonNull;
13
14
  import androidx.annotation.Nullable;
@@ -44,7 +45,7 @@ public abstract class NavigationReactNativeHost extends ReactNativeHost implemen
44
45
  .setJSMainModulePath(getJSMainModuleName())
45
46
  .setUseDeveloperSupport(getUseDeveloperSupport())
46
47
  .setRedBoxHandler(getRedBoxHandler())
47
- .setJavaScriptExecutorFactory(getJavaScriptExecutorFactory())
48
+ .setJavaScriptExecutorFactory(new HermesExecutorFactory())
48
49
  .setUIImplementationProvider(getUIImplementationProvider())
49
50
  .setInitialLifecycleState(LifecycleState.BEFORE_CREATE)
50
51
  .setDevBundleDownloadListener(getDevBundleDownloadListener());
@@ -21,7 +21,7 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout;
21
21
 
22
22
  import com.reactnativenavigation.options.params.Bool;
23
23
  import com.reactnativenavigation.utils.Functions;
24
- import com.reactnativenavigation.utils.StatusBarUtils;
24
+ import com.reactnativenavigation.utils.SystemUiUtils;
25
25
  import com.reactnativenavigation.utils.ViewUtils;
26
26
  import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
27
27
 
@@ -59,15 +59,16 @@ public abstract class BaseTest {
59
59
  when(res.getColor(ArgumentMatchers.anyInt(),any())).thenReturn(0x00000);
60
60
  }
61
61
 
62
- public void mockStatusBarUtils(int statusBarHeight,int statusBarHeightDp, Functions.Func block) {
63
- try (MockedStatic<StatusBarUtils> theMock = Mockito.mockStatic(StatusBarUtils.class)) {
62
+
63
+ public void mockSystemUiUtils(int statusBarHeight, int statusBarHeightDp, Functions.Func1<MockedStatic<SystemUiUtils>> mockedBlock) {
64
+ try (MockedStatic<SystemUiUtils> theMock = Mockito.mockStatic(SystemUiUtils.class)) {
64
65
  theMock.when(() -> {
65
- StatusBarUtils.getStatusBarHeight(any());
66
+ SystemUiUtils.getStatusBarHeight(any());
66
67
  }).thenReturn(statusBarHeight);
67
68
  theMock.when(() -> {
68
- StatusBarUtils.getStatusBarHeightDp(any());
69
+ SystemUiUtils.getStatusBarHeightDp(any());
69
70
  }).thenReturn(statusBarHeightDp);
70
- block.run();
71
+ mockedBlock.run(theMock);
71
72
  }
72
73
  }
73
74
 
@@ -15,4 +15,9 @@ public class TestActivity extends NavigationActivity {
15
15
  public void setNavigator(Navigator navigator) {
16
16
  this.navigator = navigator;
17
17
  }
18
+
19
+ @Override
20
+ public void onBackPressed() {
21
+ super.onBackPressed();
22
+ }
18
23
  }
@@ -3,12 +3,13 @@ package com.reactnativenavigation.mocks
3
3
  import android.graphics.Canvas
4
4
  import android.graphics.ColorFilter
5
5
  import android.graphics.drawable.Drawable
6
- import com.nhaarman.mockitokotlin2.any
7
- import com.nhaarman.mockitokotlin2.doAnswer
8
- import com.nhaarman.mockitokotlin2.mock
9
- import com.nhaarman.mockitokotlin2.whenever
6
+
10
7
  import com.reactnativenavigation.utils.ImageLoader
11
8
  import com.reactnativenavigation.utils.ImageLoader.ImagesLoadingListener
9
+ import org.mockito.Mockito.doAnswer
10
+ import org.mockito.kotlin.any
11
+ import org.mockito.kotlin.mock
12
+ import org.mockito.kotlin.whenever
12
13
  import java.util.*
13
14
 
14
15
  object ImageLoaderMock {
@@ -1,10 +1,11 @@
1
1
  package com.reactnativenavigation.mocks
2
2
 
3
3
  import android.view.ViewGroup
4
- import com.nhaarman.mockitokotlin2.mock
5
- import com.nhaarman.mockitokotlin2.whenever
4
+
6
5
  import com.reactnativenavigation.options.Options
7
6
  import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController
7
+ import org.mockito.kotlin.mock
8
+ import org.mockito.kotlin.whenever
8
9
 
9
10
  object Mocks {
10
11
  fun viewController(): ViewController<*> {
@@ -1,16 +1,20 @@
1
1
  package com.reactnativenavigation.mocks
2
2
 
3
3
  import android.graphics.Typeface
4
- import com.nhaarman.mockitokotlin2.mock
5
4
  import com.reactnativenavigation.options.parsers.TypefaceLoader
5
+ import org.mockito.kotlin.mock
6
6
 
7
7
  class TypefaceLoaderMock() : TypefaceLoader(mock()) {
8
8
  private var mockTypefaces: Map<String, Typeface>? = null
9
9
 
10
10
  constructor(mockTypefaces: Map<String, Typeface>?) : this() {
11
11
  this.mockTypefaces = mockTypefaces
12
+
12
13
  }
13
14
 
15
+ override val defaultTypeFace: Typeface
16
+ get() = Typeface.DEFAULT
17
+
14
18
  override fun getTypeFace(fontFamilyName: String?, fontStyle: String?, fontWeight: String?, defaultTypeFace: Typeface?): Typeface? {
15
19
  return mockTypefaces?.getOrDefault(fontFamilyName, defaultTypeFace) ?: defaultTypeFace
16
20
  }
@@ -1,7 +1,6 @@
1
1
  package com.reactnativenavigation.options
2
-
3
- import com.nhaarman.mockitokotlin2.mock
4
- import com.nhaarman.mockitokotlin2.whenever
2
+ import org.mockito.kotlin.mock
3
+ import org.mockito.kotlin.whenever
5
4
  import com.reactnativenavigation.BaseTest
6
5
  import org.assertj.core.api.Assertions.assertThat
7
6
  import org.json.JSONArray
@@ -1,41 +1,56 @@
1
1
  package com.reactnativenavigation.presentation;
2
2
 
3
3
  import android.app.Activity;
4
+ import android.view.View;
4
5
  import android.view.ViewGroup;
5
6
  import android.widget.FrameLayout;
6
7
 
7
8
  import com.reactnativenavigation.BaseTest;
8
9
  import com.reactnativenavigation.options.Options;
9
10
  import com.reactnativenavigation.options.params.Bool;
11
+ import com.reactnativenavigation.utils.SystemUiUtils;
10
12
  import com.reactnativenavigation.viewcontrollers.viewcontroller.Presenter;
13
+ import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
11
14
 
12
15
  import org.junit.Test;
13
16
  import org.mockito.Mockito;
14
17
 
18
+ import static org.mockito.ArgumentMatchers.any;
19
+ import static org.mockito.ArgumentMatchers.eq;
20
+ import static org.mockito.Mockito.mock;
21
+ import static org.mockito.Mockito.times;
15
22
  import static org.mockito.Mockito.verify;
16
23
 
17
24
  public class PresenterTest extends BaseTest {
18
25
  private Presenter uut;
19
26
  private Activity activity;
27
+ private ViewController<ViewGroup> controller;
20
28
 
21
29
  @Override
22
30
  public void beforeEach() {
23
31
  super.beforeEach();
24
32
  activity = newActivity();
33
+ controller = mock(ViewController.class);
25
34
  uut = new Presenter(activity, Options.EMPTY);
26
35
  }
27
36
 
28
37
  @Test
29
- public void mergeStatusBarVisible_requestLayout() {
30
- ViewGroup spy = Mockito.spy(new FrameLayout(activity));
31
- Options options = new Options();
32
- options.statusBar.visible = new Bool(false);
38
+ public void mergeStatusBarVisible_callsShowHide() {
39
+ mockSystemUiUtils(1,1,(mockedStatic)->{
40
+ ViewGroup spy = Mockito.spy(new FrameLayout(activity));
41
+ Mockito.when(controller.getView()).thenReturn(spy);
42
+ Mockito.when(controller.resolveCurrentOptions()).thenReturn(Options.EMPTY);
43
+ Options options = new Options();
44
+ options.statusBar.visible = new Bool(false);
45
+ uut.mergeOptions(controller, options);
46
+ mockedStatic.verify(
47
+ ()-> SystemUiUtils.hideStatusBar(any(),eq(spy)),times(1));
48
+
49
+ options.statusBar.visible = new Bool(true);
50
+ uut.mergeOptions(controller, options);
51
+ mockedStatic.verify(
52
+ ()-> SystemUiUtils.showStatusBar(any(),eq(spy)),times(1));
53
+ });
33
54
 
34
- uut.mergeOptions(spy, options);
35
- verify(spy).requestLayout();
36
-
37
- // requested only if needed
38
- uut.mergeOptions(spy, options);
39
- verify(spy).requestLayout();
40
55
  }
41
56
  }
@@ -15,14 +15,19 @@ import org.mockito.Mockito;
15
15
  import java.util.HashMap;
16
16
 
17
17
  import static org.assertj.core.api.Java6Assertions.assertThat;
18
+ import static org.assertj.core.api.Java6Assertions.fail;
18
19
  import static org.mockito.Mockito.mock;
20
+ import static org.mockito.Mockito.when;
19
21
 
20
22
  public class LayoutFactoryTest extends BaseTest {
21
23
  private LayoutFactory uut;
24
+ private ReactInstanceManager mockReactInstanceManager;
22
25
 
23
26
  @Override
24
27
  public void beforeEach() {
25
- uut = new LayoutFactory(mock(ReactInstanceManager.class));
28
+ super.beforeEach();
29
+ mockReactInstanceManager = mock(ReactInstanceManager.class);
30
+ uut = new LayoutFactory(mockReactInstanceManager);
26
31
  uut.init(
27
32
  newActivity(),
28
33
  Mockito.mock(EventEmitter.class),
@@ -36,6 +41,16 @@ public class LayoutFactoryTest extends BaseTest {
36
41
  assertThat(uut.create(component())).isNotNull();
37
42
  }
38
43
 
44
+ @Test
45
+ public void shouldParseOptionsWhenReactContextIsNull() {
46
+ when(mockReactInstanceManager.getCurrentReactContext()).thenReturn(null);
47
+ try {
48
+ uut.create(component());
49
+ } catch (Exception e) {
50
+ fail("Create should not fail! when react instance has null context");
51
+ }
52
+ }
53
+
39
54
  @Test
40
55
  public void defaultOptionsAreNotNull() {
41
56
  assertThat(uut.getDefaultOptions()).isNotNull();
@@ -50,6 +65,14 @@ public class LayoutFactoryTest extends BaseTest {
50
65
  }
51
66
 
52
67
  private LayoutNode component() throws JSONException {
53
- return new LayoutNode("Component1", LayoutNode.Type.Component, new JSONObject().put("name", "com.component"), null);
68
+ final JSONObject component = new JSONObject();
69
+ final JSONObject layout = new JSONObject();
70
+ final JSONObject backgroundColor = new JSONObject();
71
+ backgroundColor.put("dark",0);
72
+ backgroundColor.put("light",1);
73
+ layout.put("backgroundColor",backgroundColor );
74
+ component.put("name", "com.component");
75
+ component.put("options",new JSONObject().put("layout", layout));
76
+ return new LayoutNode("Component1", LayoutNode.Type.Component, component, null);
54
77
  }
55
78
  }
@@ -4,7 +4,7 @@ import android.app.Activity
4
4
  import android.view.MotionEvent
5
5
  import android.view.View
6
6
  import android.widget.FrameLayout
7
- import com.nhaarman.mockitokotlin2.mock
7
+ import org.mockito.kotlin.mock
8
8
  import com.reactnativenavigation.BaseTest
9
9
  import org.assertj.core.api.Java6Assertions.assertThat
10
10
  import org.junit.Test
@@ -2,13 +2,13 @@ package com.reactnativenavigation.utils
2
2
 
3
3
  import com.reactnativenavigation.BaseTest
4
4
  import com.reactnativenavigation.views.stack.topbar.titlebar.DEFAULT_LEFT_MARGIN_PX
5
+ import com.reactnativenavigation.views.stack.topbar.titlebar.resolveHorizontalTitleBoundsLimit
5
6
  import com.reactnativenavigation.views.stack.topbar.titlebar.resolveLeftButtonsBounds
6
7
  import com.reactnativenavigation.views.stack.topbar.titlebar.resolveRightButtonsBounds
7
- import com.reactnativenavigation.views.stack.topbar.titlebar.resolveHorizontalTitleBoundsLimit
8
8
  import org.junit.Test
9
9
  import kotlin.test.assertEquals
10
10
 
11
- class TitleAndButtonsMeasurer : BaseTest() {
11
+ class TitleAndButtonsMeasurerTest : BaseTest() {
12
12
  private val parentWidth = 1080
13
13
 
14
14
  @Test
@@ -13,7 +13,7 @@ public class UiThreadTest extends BaseTest {
13
13
  Runnable task = mock(Runnable.class);
14
14
  ShadowLooper.pauseMainLooper();
15
15
  UiThread.post(task);
16
- verifyZeroInteractions(task);
16
+ verifyNoInteractions(task);
17
17
  ShadowLooper.runUiThreadTasks();
18
18
  verify(task, times(1)).run();
19
19
  }
@@ -22,7 +22,7 @@ public class UiThreadTest extends BaseTest {
22
22
  public void postDelayedOnUiThread() throws Exception {
23
23
  Runnable task = mock(Runnable.class);
24
24
  UiThread.postDelayed(task, 1000);
25
- verifyZeroInteractions(task);
25
+ verifyNoInteractions(task);
26
26
  ShadowLooper.runUiThreadTasksIncludingDelayedTasks();
27
27
  verify(task, times(1)).run();
28
28
  }
@@ -13,7 +13,7 @@ public class UiUtilsTest extends BaseTest {
13
13
  public void runOnPreDrawOnce() {
14
14
  View view = new View(newActivity());
15
15
  Runnable task = mock(Runnable.class);
16
- verifyZeroInteractions(task);
16
+ verifyNoInteractions(task);
17
17
 
18
18
  UiUtils.runOnPreDrawOnce(view, task);
19
19
  dispatchPreDraw(view);