react-native-navigation 7.22.0 → 7.22.2

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 (86) hide show
  1. package/lib/android/app/src/main/java/com/reactnativenavigation/options/ElementTransitionOptions.kt +0 -1
  2. package/lib/android/app/src/main/java/com/reactnativenavigation/options/HardwareBackButtonOptions.kt +2 -5
  3. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +120 -120
  4. package/lib/android/app/src/main/java/com/reactnativenavigation/options/ValueAnimationOptions.kt +3 -3
  5. package/lib/android/app/src/main/java/com/reactnativenavigation/options/interpolators/SpringInterpolator.kt +16 -16
  6. package/lib/android/app/src/main/java/com/reactnativenavigation/options/parsers/TypefaceLoader.kt +0 -1
  7. package/lib/android/app/src/main/java/com/reactnativenavigation/react/CommandListenerAdapter.java +0 -2
  8. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +7 -6
  9. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationPackage.kt +1 -2
  10. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +5 -5
  11. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalLayoutController.kt +7 -7
  12. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalViewManager.kt +25 -9
  13. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/CoordinatorLayoutUtils.java +1 -1
  14. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/OutlineProvider.kt +0 -1
  15. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReflectionUtils.java +1 -1
  16. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/RenderChecker.java +1 -1
  17. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java +0 -2
  18. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/UiUtils.java +5 -6
  19. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ViewParent.kt +0 -3
  20. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ViewUtils.java +4 -5
  21. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +6 -8
  22. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAnimator.kt +0 -1
  23. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +3 -3
  24. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/BottomTabsAttacher.java +1 -1
  25. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachMode.java +3 -3
  26. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTab.java +2 -2
  27. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +1 -1
  28. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistry.java +5 -5
  29. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentPresenterBase.java +0 -1
  30. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +1 -1
  31. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenter.java +6 -6
  32. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java +18 -18
  33. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/navigator/Navigator.java +12 -12
  34. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/parent/ParentController.java +22 -22
  35. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuController.java +16 -16
  36. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuPresenter.java +4 -4
  37. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/FabPresenter.java +8 -8
  38. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/IdStack.java +14 -14
  39. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +29 -29
  40. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerBuilder.java +3 -3
  41. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +29 -28
  42. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarAnimator.kt +1 -0
  43. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarBackgroundViewController.java +0 -1
  44. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +1 -1
  45. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/BackButtonHelper.java +2 -2
  46. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +1 -1
  47. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonSpan.kt +0 -1
  48. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/IconResolver.java +0 -1
  49. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsAdapter.java +5 -4
  50. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsController.java +8 -8
  51. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainer.kt +1 -4
  52. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsLayout.java +0 -1
  53. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/PropertyAnimatorCreator.kt +2 -0
  54. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageBoundsAnimator.kt +0 -1
  55. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageMatrixAnimator.kt +2 -2
  56. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactViewRotationAnimator.kt +0 -5
  57. package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +1 -22
  58. package/lib/android/app/src/main/java/com/reactnativenavigation/views/toptabs/TopTabsLayoutCreator.java +2 -2
  59. package/lib/android/app/src/main/java/com/reactnativenavigation/views/toptabs/TopTabsViewPager.java +6 -6
  60. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -1
  61. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +23 -28
  62. package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +4 -2
  63. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +3 -1
  64. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -3
  65. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +6 -6
  66. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +3 -4
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +1 -1
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.java +13 -15
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +5 -5
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +2 -2
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +2 -2
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +4 -4
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +10 -10
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +25 -26
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +2 -2
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +15 -15
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +11 -11
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +2 -2
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -4
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +15 -15
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +17 -17
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +3 -3
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +9 -9
  84. package/lib/dist/components/Modal.js +1 -2
  85. package/lib/src/components/Modal.tsx +1 -2
  86. package/package.json +1 -1
@@ -50,6 +50,7 @@ import java.util.HashMap;
50
50
  import java.util.LinkedHashMap;
51
51
  import java.util.List;
52
52
  import java.util.Map;
53
+ import java.util.Objects;
53
54
 
54
55
  import static com.reactnativenavigation.utils.CollectionUtils.difference;
55
56
  import static com.reactnativenavigation.utils.CollectionUtils.filter;
@@ -124,7 +125,7 @@ public class StackPresenter {
124
125
  }
125
126
 
126
127
  public boolean isRendered(View component) {
127
- ArrayList<ViewController> controllers = new ArrayList<>();
128
+ ArrayList<ViewController<?>> controllers = new ArrayList<>();
128
129
  controllers.addAll(perform(componentRightButtons.get(component), new ArrayList<>(), Map::values));
129
130
  controllers.addAll(perform(componentLeftButtons.get(component), new ArrayList<>(), Map::values));
130
131
  controllers.add(backgroundControllers.get(component));
@@ -132,7 +133,7 @@ public class StackPresenter {
132
133
  return renderChecker.areRendered(filter(controllers, ObjectUtils::notNull));
133
134
  }
134
135
 
135
- public void mergeOptions(Options options, StackController stack, ViewController currentChild) {
136
+ public void mergeOptions(Options options, StackController stack, ViewController<?> currentChild) {
136
137
  TopBarOptions resolvedTopBarOptions = options.topBar.copy().mergeWithDefault(stack.resolveChildOptions(currentChild).topBar).mergeWithDefault(defaultOptions.topBar);
137
138
  mergeOrientation(options.layout.orientation);
138
139
  // mergeButtons(topBar, withDefault.topBar.buttons, child);
@@ -165,7 +166,7 @@ public class StackPresenter {
165
166
  applyTopBarVisibility(withDefault.topBar);
166
167
  }
167
168
 
168
- public void applyChildOptions(Options currentChildOptions, StackController stack, ViewController child) {
169
+ public void applyChildOptions(Options currentChildOptions, StackController stack, ViewController<?> child) {
169
170
  Options finalChildOptions = currentChildOptions.copy().withDefaultOptions(defaultOptions);
170
171
  applyOrientation(finalChildOptions.layout.orientation);
171
172
  applyButtons(finalChildOptions.topBar, child);
@@ -179,7 +180,7 @@ public class StackPresenter {
179
180
  ((Activity) topBar.getContext()).setRequestedOrientation(withDefaultOptions.getValue());
180
181
  }
181
182
 
182
- public void onChildDestroyed(ViewController child) {
183
+ public void onChildDestroyed(ViewController<?> child) {
183
184
  perform(titleControllers.remove(child.getView()), TitleBarReactViewController::destroy);
184
185
  perform(backgroundControllers.remove(child.getView()), TopBarBackgroundViewController::destroy);
185
186
  destroyButtons(componentRightButtons.get(child.getView()));
@@ -192,7 +193,7 @@ public class StackPresenter {
192
193
  if (buttons != null) forEach(buttons.values(), ViewController::destroy);
193
194
  }
194
195
 
195
- private void applyTopBarOptions(Options options, StackController stack, ViewController child) {
196
+ private void applyTopBarOptions(Options options, StackController stack, ViewController<?> child) {
196
197
  final View component = child.getView();
197
198
  TopBarOptions topBarOptions = options.topBar;
198
199
 
@@ -211,7 +212,7 @@ public class StackPresenter {
211
212
 
212
213
  if (topBarOptions.title.component.hasValue()) {
213
214
  if (titleControllers.containsKey(component)) {
214
- topBarController.setTitleComponent(titleControllers.get(component));
215
+ topBarController.setTitleComponent(Objects.requireNonNull(titleControllers.get(component)));
215
216
  } else {
216
217
  TitleBarReactViewController controller = new TitleBarReactViewController(activity, titleViewCreator, topBarOptions.title.component);
217
218
  controller.setWaitForRender(topBarOptions.title.component.waitForRender);
@@ -267,15 +268,15 @@ public class StackPresenter {
267
268
  }
268
269
 
269
270
  private void mergeStatusBarDrawBehindOptions(TopBarOptions topBarOptions, Options toMerge) {
270
- if(toMerge.statusBar.drawBehind.hasValue()){
271
- if(toMerge.statusBar.visible.isTrueOrUndefined() && toMerge.statusBar.drawBehind.isTrue()){
272
- topBar.setTopPadding(StatusBarUtils.getStatusBarHeight(activity));
273
- topBar.setHeight(topBarOptions.height.get(UiUtils.getTopBarHeightDp(activity)) + StatusBarUtils.getStatusBarHeightDp(activity));
274
- } else {
275
- topBar.setTopPadding(0);
276
- topBar.setHeight(topBarOptions.height.get(UiUtils.getTopBarHeightDp(activity)));
277
- }
278
- }
271
+ if(toMerge.statusBar.drawBehind.hasValue()){
272
+ if(toMerge.statusBar.visible.isTrueOrUndefined() && toMerge.statusBar.drawBehind.isTrue()){
273
+ topBar.setTopPadding(StatusBarUtils.getStatusBarHeight(activity));
274
+ topBar.setHeight(topBarOptions.height.get(UiUtils.getTopBarHeightDp(activity)) + StatusBarUtils.getStatusBarHeightDp(activity));
275
+ } else {
276
+ topBar.setTopPadding(0);
277
+ topBar.setHeight(topBarOptions.height.get(UiUtils.getTopBarHeightDp(activity)));
278
+ }
279
+ }
279
280
  }
280
281
 
281
282
  @Nullable
@@ -289,7 +290,7 @@ public class StackPresenter {
289
290
  return null;
290
291
  }
291
292
 
292
- private void applyTopBarVisibilityIfChildIsNotBeingAnimated(TopBarOptions options, StackController stack, ViewController child) {
293
+ private void applyTopBarVisibilityIfChildIsNotBeingAnimated(TopBarOptions options, StackController stack, ViewController<?> child) {
293
294
  if (!stack.isChildInTransition(child) || options.animate.isFalse()) applyTopBarVisibility(options);
294
295
  }
295
296
 
@@ -302,7 +303,7 @@ public class StackPresenter {
302
303
  }
303
304
  }
304
305
 
305
- private void applyButtons(TopBarOptions options, ViewController child) {
306
+ private void applyButtons(TopBarOptions options, ViewController<?> child) {
306
307
  if (options.buttons.right != null) {
307
308
  List<ButtonOptions> rightButtons = mergeButtonsWithColor(options.buttons.right,
308
309
  options.rightButtonColor
@@ -351,7 +352,7 @@ public class StackPresenter {
351
352
  }
352
353
 
353
354
  private List<ButtonController> getOrCreateButtonControllers(@Nullable Map<String, ButtonController> currentButtons, @NonNull List<ButtonOptions> buttons) {
354
- ArrayList result = new ArrayList<ButtonController>();
355
+ ArrayList<ButtonController> result = new ArrayList<>();
355
356
  for (ButtonOptions b : buttons) {
356
357
  result.add(take(first(perform(currentButtons, null, Map::values), button -> button.getButton().equals(b)), createButtonController(b)));
357
358
  }
@@ -383,7 +384,7 @@ public class StackPresenter {
383
384
  }
384
385
  }
385
386
 
386
- public List<Animator> getAdditionalPushAnimations(StackController stack, ViewController appearing, Options appearingOptions) {
387
+ public List<Animator> getAdditionalPushAnimations(StackController stack, ViewController<?> appearing, Options appearingOptions) {
387
388
  return CollectionUtils.asList(
388
389
  topBarController.getPushAnimation(appearingOptions, getTopBarTranslationAnimationDelta(stack, appearing)),
389
390
  perform(bottomTabsController, null, btc -> btc.getPushAnimation(appearingOptions))
@@ -397,14 +398,14 @@ public class StackPresenter {
397
398
  );
398
399
  }
399
400
 
400
- public List<Animator> getAdditionalSetRootAnimations(StackController stack, ViewController appearing, Options appearingOptions) {
401
+ public List<Animator> getAdditionalSetRootAnimations(StackController stack, ViewController<?> appearing, Options appearingOptions) {
401
402
  return CollectionUtils.asList(
402
403
  topBarController.getSetStackRootAnimation(appearingOptions, getTopBarTranslationAnimationDelta(stack, appearing)),
403
404
  perform(bottomTabsController, null, btc -> btc.getSetStackRootAnimation(appearingOptions))
404
405
  );
405
406
  }
406
407
 
407
- public void mergeChildOptions(Options toMerge, Options resolvedOptions, StackController stack, ViewController child) {
408
+ public void mergeChildOptions(Options toMerge, Options resolvedOptions, StackController stack, ViewController<?> child) {
408
409
  TopBarOptions topBar = toMerge.copy().topBar.mergeWithDefault(resolvedOptions.topBar).mergeWithDefault(defaultOptions.topBar);
409
410
  mergeOrientation(toMerge.layout.orientation);
410
411
  mergeButtons(topBar, toMerge.topBar, child.getView(), stack);
@@ -507,7 +508,7 @@ public class StackPresenter {
507
508
  return result;
508
509
  }
509
510
 
510
- private void mergeTopBarOptions(TopBarOptions resolveOptions, Options options, StackController stack, ViewController child) {
511
+ private void mergeTopBarOptions(TopBarOptions resolveOptions, Options options, StackController stack, ViewController<?> child) {
511
512
  TopBarOptions topBarOptions = options.topBar;
512
513
  final View component = child.getView();
513
514
  if (options.layout.direction.hasValue()) topBar.setLayoutDirection(options.layout.direction);
@@ -560,7 +561,7 @@ public class StackPresenter {
560
561
 
561
562
  if (topBarOptions.background.component.hasValue()) {
562
563
  if (backgroundControllers.containsKey(component)) {
563
- topBar.setBackgroundComponent(backgroundControllers.get(component).getView());
564
+ topBar.setBackgroundComponent(Objects.requireNonNull(backgroundControllers.get(component)).getView());
564
565
  } else {
565
566
  TopBarBackgroundViewController controller = new TopBarBackgroundViewController(activity, topBarBackgroundViewCreator);
566
567
  backgroundControllers.put(component, controller);
@@ -619,7 +620,7 @@ public class StackPresenter {
619
620
  }
620
621
  }
621
622
 
622
- public boolean shouldPopOnHardwareButtonPress(ViewController viewController) {
623
+ public boolean shouldPopOnHardwareButtonPress(ViewController<?> viewController) {
623
624
  return viewController.resolveCurrentOptions().hardwareBack.popStackOnPress.get(true);
624
625
  }
625
626
 
@@ -650,7 +651,7 @@ public class StackPresenter {
650
651
  }
651
652
 
652
653
 
653
- public void applyTopInsets(StackController stack, ViewController child) {
654
+ public void applyTopInsets(StackController stack, ViewController<?> child) {
654
655
  if (stack.isCurrentChild(child)) applyStatusBarInsets(stack, child);
655
656
  child.applyTopInset();
656
657
  }
@@ -663,18 +664,18 @@ public class StackPresenter {
663
664
  return componentLeftButtons.containsKey(child) ? new ArrayList<>(componentLeftButtons.get(child).values()) : null;
664
665
  }
665
666
 
666
- private void applyStatusBarInsets(StackController stack, ViewController child) {
667
+ private void applyStatusBarInsets(StackController stack, ViewController<?> child) {
667
668
  MarginLayoutParams lp = (MarginLayoutParams) topBar.getLayoutParams();
668
669
  lp.topMargin = getTopBarTopMargin(stack, child);
669
670
  topBar.requestLayout();
670
671
  }
671
672
 
672
- private int getTopBarTranslationAnimationDelta(StackController stack, ViewController child) {
673
+ private int getTopBarTranslationAnimationDelta(StackController stack, ViewController<?> child) {
673
674
  Options options = stack.resolveChildOptions(child).withDefaultOptions(defaultOptions);
674
675
  return options.statusBar.hasTransparency() ? getTopBarTopMargin(stack, child) : 0;
675
676
  }
676
677
 
677
- private int getTopBarTopMargin(StackController stack, ViewController child) {
678
+ private int getTopBarTopMargin(StackController stack, ViewController<?> child) {
678
679
  Options withDefault = stack.resolveChildOptions(child).withDefaultOptions(defaultOptions);
679
680
  int topMargin = UiUtils.dpToPx(activity, withDefault.topBar.topMargin.get(0));
680
681
  int statusBarInset = withDefault.statusBar.visible.isTrueOrUndefined() && !withDefault.statusBar.drawBehind.isTrue() ? StatusBarUtils.getStatusBarHeight(child.getActivity()) : 0;
@@ -4,6 +4,7 @@ import com.reactnativenavigation.views.animations.BaseViewAnimator
4
4
  import com.reactnativenavigation.views.stack.topbar.TopBar
5
5
 
6
6
  class TopBarAnimator @JvmOverloads constructor(view: TopBar? = null) : BaseViewAnimator<TopBar>(HideDirection.Up, view) {
7
+ @Suppress("UNUSED_PARAMETER")
7
8
  fun hideOnScroll(translationStart: Float, translationEndDy: Float) {
8
9
  // NOOP for now - this entire mechanism needs to be reimplemented as it relies on bridge events which are obsolete in TurboModules config
9
10
  }
@@ -5,7 +5,6 @@ import android.app.Activity;
5
5
  import com.reactnativenavigation.options.ComponentOptions;
6
6
  import com.reactnativenavigation.options.Options;
7
7
  import com.reactnativenavigation.react.events.ComponentType;
8
- import com.reactnativenavigation.react.events.EventEmitter;
9
8
  import com.reactnativenavigation.utils.CompatUtils;
10
9
  import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
11
10
  import com.reactnativenavigation.viewcontrollers.viewcontroller.YellowBoxDelegate;
@@ -122,7 +122,7 @@ open class TopBarController(private val animator: TopBarAnimator = TopBarAnimato
122
122
  }
123
123
 
124
124
  open fun mergeLeftButtons(toAdd: List<ButtonController>, toRemove: List<ButtonController>) {
125
- view.clearBackButton();
125
+ view.clearBackButton()
126
126
  toRemove.forEach { view.removeLeftButton(it) }
127
127
  forEachIndexed(toAdd) { b: ButtonController, i: Int -> b.addToMenu(leftButtonBar, i * 10) }
128
128
  }
@@ -5,13 +5,13 @@ import com.reactnativenavigation.options.params.Bool;
5
5
  import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
6
6
 
7
7
  public class BackButtonHelper {
8
- public void clear(ViewController child) {
8
+ public void clear(ViewController<?> child) {
9
9
  if (!child.options.topBar.buttons.back.hasValue()) {
10
10
  child.options.topBar.buttons.back.visible = new Bool(false);
11
11
  }
12
12
  }
13
13
 
14
- public void addToPushedChild(ViewController child) {
14
+ public void addToPushedChild(ViewController<?> child) {
15
15
  if (child.options.topBar.buttons.left != null || child.options.topBar.buttons.back.visible.isFalse()) return;
16
16
  Options options = new Options();
17
17
  options.topBar.buttons.back.setVisible();
@@ -88,7 +88,7 @@ open class ButtonPresenter(private val context: Context, private val button: But
88
88
  menuItem.isEnabled = button.enabled.isTrueOrUndefined
89
89
  }
90
90
 
91
- private fun applyIconBackgroundDrawable(srcDrawable: Drawable): Drawable? {
91
+ private fun applyIconBackgroundDrawable(srcDrawable: Drawable): Drawable {
92
92
  return if (button.iconBackground.hasValue()) {
93
93
  val width = button.iconBackground.width.get(srcDrawable.intrinsicWidth).let { max(it, srcDrawable.intrinsicWidth) }
94
94
  val height = button.iconBackground.height.get(srcDrawable.intrinsicHeight).let { max(it, srcDrawable.intrinsicHeight) }
@@ -1,7 +1,6 @@
1
1
  package com.reactnativenavigation.viewcontrollers.stack.topbar.button
2
2
 
3
3
  import android.content.Context
4
- import android.graphics.Color
5
4
  import android.graphics.Paint
6
5
  import android.graphics.Typeface
7
6
  import android.text.TextPaint
@@ -5,7 +5,6 @@ import android.graphics.drawable.Drawable;
5
5
  import android.util.Log;
6
6
 
7
7
  import com.reactnativenavigation.options.ButtonOptions;
8
- import com.reactnativenavigation.react.Constants;
9
8
  import com.reactnativenavigation.utils.Functions.Func1;
10
9
  import com.reactnativenavigation.utils.ImageLoader;
11
10
  import com.reactnativenavigation.utils.ImageLoadingListenerAdapter;
@@ -1,5 +1,6 @@
1
1
  package com.reactnativenavigation.viewcontrollers.toptabs;
2
2
 
3
+ import androidx.annotation.NonNull;
3
4
  import androidx.viewpager.widget.PagerAdapter;
4
5
  import androidx.viewpager.widget.ViewPager;
5
6
  import android.view.View;
@@ -11,10 +12,10 @@ import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
11
12
  import java.util.List;
12
13
 
13
14
  public class TopTabsAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener {
14
- private List<ViewController> tabs;
15
+ private List<ViewController<?>> tabs;
15
16
  private int currentPage = 0;
16
17
 
17
- public TopTabsAdapter(List<ViewController> tabs) {
18
+ public TopTabsAdapter(List<ViewController<?>> tabs) {
18
19
  this.tabs = tabs;
19
20
  }
20
21
 
@@ -29,12 +30,12 @@ public class TopTabsAdapter extends PagerAdapter implements ViewPager.OnPageChan
29
30
  }
30
31
 
31
32
  @Override
32
- public boolean isViewFromObject(View view, Object object) {
33
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
33
34
  return view == object;
34
35
  }
35
36
 
36
37
  @Override
37
- public Object instantiateItem(ViewGroup component, int position) {
38
+ public Object instantiateItem(@NonNull ViewGroup component, int position) {
38
39
  return tabs.get(position).getView();
39
40
  }
40
41
 
@@ -21,14 +21,14 @@ import androidx.annotation.NonNull;
21
21
 
22
22
  public class TopTabsController extends ParentController<TopTabsViewPager> {
23
23
 
24
- private List<ViewController> tabs;
24
+ private List<ViewController<?>> tabs;
25
25
  private TopTabsLayoutCreator viewCreator;
26
26
 
27
- public TopTabsController(Activity activity, ChildControllersRegistry childRegistry, String id, List<ViewController> tabs, TopTabsLayoutCreator viewCreator, Options options, Presenter presenter) {
27
+ public TopTabsController(Activity activity, ChildControllersRegistry childRegistry, String id, List<ViewController<?>> tabs, TopTabsLayoutCreator viewCreator, Options options, Presenter presenter) {
28
28
  super(activity, childRegistry, id, presenter, options);
29
29
  this.viewCreator = viewCreator;
30
30
  this.tabs = tabs;
31
- for (ViewController tab : tabs) {
31
+ for (ViewController<?> tab : tabs) {
32
32
  tab.setParentController(this);
33
33
  tab.setViewVisibilityListener(new ViewVisibilityListenerAdapter() {
34
34
  @Override
@@ -40,7 +40,7 @@ public class TopTabsController extends ParentController<TopTabsViewPager> {
40
40
  }
41
41
 
42
42
  @Override
43
- public ViewController getCurrentChild() {
43
+ public ViewController<?> getCurrentChild() {
44
44
  return tabs.get(getView().getCurrentItem());
45
45
  }
46
46
 
@@ -53,7 +53,7 @@ public class TopTabsController extends ParentController<TopTabsViewPager> {
53
53
 
54
54
  @NonNull
55
55
  @Override
56
- public Collection<? extends ViewController> getChildControllers() {
56
+ public Collection<? extends ViewController<?>> getChildControllers() {
57
57
  return tabs;
58
58
  }
59
59
 
@@ -88,13 +88,13 @@ public class TopTabsController extends ParentController<TopTabsViewPager> {
88
88
  }
89
89
 
90
90
  @Override
91
- public void applyChildOptions(Options options, ViewController child) {
91
+ public void applyChildOptions(Options options, ViewController<?> child) {
92
92
  super.applyChildOptions(options, child);
93
93
  performOnParentController(parentController -> parentController.applyChildOptions(this.options.copy(), child));
94
94
  }
95
95
 
96
96
  @CallSuper
97
- public void mergeChildOptions(Options options, ViewController child) {
97
+ public void mergeChildOptions(Options options, ViewController<?> child) {
98
98
  super.mergeChildOptions(options, child);
99
99
  performOnParentController(parentController -> parentController.applyChildOptions(options.copy(), child));
100
100
  }
@@ -104,7 +104,7 @@ public class TopTabsController extends ParentController<TopTabsViewPager> {
104
104
  getCurrentChild().onViewDidAppear();
105
105
  }
106
106
 
107
- private void performOnCurrentTab(Func1<ViewController> task) {
107
+ private void performOnCurrentTab(Func1<ViewController<?>> task) {
108
108
  task.run(tabs.get(getView().getCurrentItem()));
109
109
  }
110
110
  }
@@ -1,11 +1,9 @@
1
1
  package com.reactnativenavigation.views.bottomtabs
2
2
 
3
- import android.R.attr.factor
4
3
  import android.annotation.SuppressLint
5
4
  import android.content.Context
6
5
  import android.graphics.Color
7
6
  import android.view.View
8
- import android.widget.FrameLayout
9
7
  import android.widget.LinearLayout
10
8
  import androidx.annotation.RestrictTo
11
9
  import androidx.core.graphics.ColorUtils
@@ -14,7 +12,6 @@ import kotlin.math.roundToInt
14
12
 
15
13
  internal const val DEFAULT_SHADOW_COLOR = Color.BLACK
16
14
  internal const val DEFAULT_SHADOW_RADIUS = 10
17
- internal const val SHADOW_HEIGHT_DP = 20
18
15
  internal const val DEFAULT_SHADOW_DISTANCE = 15f
19
16
  internal const val DEFAULT_SHADOW_ANGLE = 270f
20
17
 
@@ -50,7 +47,7 @@ class BottomTabsContainer(context: Context, val bottomTabs: BottomTabs) : Shadow
50
47
  setTopOutLineColor(DEFAULT_TOP_OUTLINE_COLOR)
51
48
  this.topOutLineView.visibility = View.GONE
52
49
 
53
- this.addView(linearLayout, FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)
50
+ this.addView(linearLayout, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
54
51
  }
55
52
 
56
53
  override var shadowRadius: Float
@@ -21,7 +21,6 @@ public class BottomTabsLayout extends CoordinatorLayout {
21
21
  @Override
22
22
  public void addView(View child, int index, ViewGroup.LayoutParams params) {
23
23
  if (bottomTabsContainer != null && child != bottomTabsContainer) {
24
- int indexOfChild = this.indexOfChild(bottomTabsContainer);
25
24
  super.addView(child, getChildCount() - 1, params);
26
25
  } else {
27
26
  super.addView(child, 0, params);
@@ -7,6 +7,7 @@ import com.reactnativenavigation.options.SharedElementTransitionOptions
7
7
  import java.lang.reflect.ParameterizedType
8
8
 
9
9
  abstract class PropertyAnimatorCreator<T : View> internal constructor(protected val from: View, protected val to: View) {
10
+ @Suppress("UNCHECKED_CAST")
10
11
  @CallSuper
11
12
  fun shouldAnimateProperty(): Boolean {
12
13
  val type = childClass
@@ -21,6 +22,7 @@ abstract class PropertyAnimatorCreator<T : View> internal constructor(protected
21
22
  protected open fun excludedViews() = emptyList<Class<*>>()
22
23
 
23
24
  abstract fun create(options: SharedElementTransitionOptions): Animator
25
+ @Suppress("UNCHECKED_CAST")
24
26
  private val childClass: Class<T>
25
27
  get() = (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<T>
26
28
 
@@ -4,7 +4,6 @@ import android.animation.Animator
4
4
  import android.animation.ObjectAnimator
5
5
  import android.graphics.Rect
6
6
  import android.view.View
7
- import android.widget.ImageView
8
7
  import com.facebook.react.views.image.ReactImageView
9
8
  import com.reactnativenavigation.options.SharedElementTransitionOptions
10
9
  import com.reactnativenavigation.utils.ViewUtils
@@ -2,7 +2,6 @@ package com.reactnativenavigation.views.element.animators
2
2
 
3
3
  import android.animation.Animator
4
4
  import android.animation.ObjectAnimator
5
- import android.animation.TypeEvaluator
6
5
  import android.graphics.PointF
7
6
  import android.graphics.Rect
8
7
  import android.view.View
@@ -14,6 +13,7 @@ import com.reactnativenavigation.options.SharedElementTransitionOptions
14
13
  import com.reactnativenavigation.utils.ViewUtils
15
14
  import kotlin.math.max
16
15
  import kotlin.math.roundToInt
16
+ import android.animation.TypeEvaluator
17
17
 
18
18
  class ReactImageMatrixAnimator(from: View, to: View) : PropertyAnimatorCreator<ReactImageView>(from, to) {
19
19
  override fun shouldAnimateProperty(fromChild: ReactImageView, toChild: ReactImageView): Boolean {
@@ -53,7 +53,7 @@ class ReactImageMatrixAnimator(from: View, to: View) : PropertyAnimatorCreator<R
53
53
 
54
54
  private fun getScaleType(child: View): ScalingUtils.ScaleType {
55
55
  return getScaleType(
56
- child as ReactImageView, child.hierarchy.actualImageScaleType ?: ImageResizeMode.defaultValue()
56
+ child as ReactImageView, child.hierarchy.actualImageScaleType ?: ImageResizeMode.defaultValue()
57
57
  )
58
58
  }
59
59
 
@@ -2,14 +2,9 @@ package com.reactnativenavigation.views.element.animators
2
2
 
3
3
  import android.animation.Animator
4
4
  import android.animation.ObjectAnimator
5
- import android.graphics.Rect
6
5
  import android.view.View
7
- import androidx.core.animation.doOnEnd
8
6
  import com.facebook.react.views.view.ReactViewGroup
9
7
  import com.reactnativenavigation.options.SharedElementTransitionOptions
10
- import com.reactnativenavigation.utils.areDimensionsWithInheritedScaleEqual
11
- import com.reactnativenavigation.utils.computeInheritedScale
12
- import kotlin.math.roundToInt
13
8
 
14
9
  class ReactViewRotationAnimator(from: View, to: View) : PropertyAnimatorCreator<ReactViewGroup>(from, to) {
15
10
  private val fromRotation = from.rotation
@@ -2,30 +2,9 @@ package com.reactnativenavigation.views.stack.topbar.titlebar
2
2
 
3
3
  import android.annotation.SuppressLint
4
4
  import android.content.Context
5
- import androidx.core.view.children
6
5
  import com.facebook.react.ReactInstanceManager
7
6
  import com.reactnativenavigation.react.ReactView
8
7
 
9
8
  @SuppressLint("ViewConstructor")
10
9
  class TitleBarReactView(context: Context?, reactInstanceManager: ReactInstanceManager?, componentId: String?,
11
- componentName: String?) : ReactView(context, reactInstanceManager, componentId, componentName) {
12
- override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
13
- super.onMeasure(interceptReactRootViewMeasureSpec(widthMeasureSpec), heightMeasureSpec)
14
- }
15
-
16
- private fun interceptReactRootViewMeasureSpec(widthMeasureSpec: Int): Int {
17
- // This is a HACK.
18
- // ReactRootView has problematic behavior when setting width to WRAP_CONTENT,
19
- // It's causing infinite measurements, that hung up the UI.
20
- // Intercepting largest child by width, and use its width as (parent) ReactRootView width fixed that.
21
- // See for more details https://github.com/wix/react-native-navigation/pull/7096
22
- var measuredWidth = 0;
23
- this.children.forEach {
24
- if (it.measuredWidth > measuredWidth) {
25
- measuredWidth = it.measuredWidth
26
- }
27
- }
28
- return if (measuredWidth > 0) MeasureSpec.makeMeasureSpec(measuredWidth, MeasureSpec.EXACTLY) else
29
- widthMeasureSpec
30
- }
31
- }
10
+ componentName: String?) : ReactView(context, reactInstanceManager, componentId, componentName)
@@ -9,9 +9,9 @@ import java.util.List;
9
9
 
10
10
  public class TopTabsLayoutCreator {
11
11
  private Context context;
12
- private List<ViewController> tabs;
12
+ private List<ViewController<?>> tabs;
13
13
 
14
- public TopTabsLayoutCreator(Context context, List<ViewController> tabs) {
14
+ public TopTabsLayoutCreator(Context context, List<ViewController<?>> tabs) {
15
15
  this.context = context;
16
16
  this.tabs = tabs;
17
17
  }
@@ -22,9 +22,9 @@ import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
22
22
  public class TopTabsViewPager extends ViewPager implements Component, ButtonController.OnClickListener {
23
23
 
24
24
  private static final int OFFSCREEN_PAGE_LIMIT = 99;
25
- private List<ViewController> tabs;
25
+ private List<ViewController<?>> tabs;
26
26
 
27
- public TopTabsViewPager(Context context, List<ViewController> tabs, TopTabsAdapter adapter) {
27
+ public TopTabsViewPager(Context context, List<ViewController<?>> tabs, TopTabsAdapter adapter) {
28
28
  super(context);
29
29
  this.tabs = tabs;
30
30
  initTabs(adapter);
@@ -32,7 +32,7 @@ public class TopTabsViewPager extends ViewPager implements Component, ButtonCont
32
32
 
33
33
  private void initTabs(TopTabsAdapter adapter) {
34
34
  setOffscreenPageLimit(OFFSCREEN_PAGE_LIMIT);
35
- for (ViewController tab : tabs) {
35
+ for (ViewController<?> tab : tabs) {
36
36
  addView(tab.getView(), new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));
37
37
  }
38
38
  setAdapter(adapter);
@@ -45,7 +45,7 @@ public class TopTabsViewPager extends ViewPager implements Component, ButtonCont
45
45
  }
46
46
 
47
47
  private boolean areAllTabsRendered() {
48
- for (ViewController tab : tabs) {
48
+ for (ViewController<?> tab : tabs) {
49
49
  if (!tab.isRendered()) return false;
50
50
  }
51
51
  return true;
@@ -61,13 +61,13 @@ public class TopTabsViewPager extends ViewPager implements Component, ButtonCont
61
61
  }
62
62
 
63
63
  public void destroy() {
64
- for (ViewController tab : tabs) {
64
+ for (ViewController<?> tab : tabs) {
65
65
  tab.destroy();
66
66
  }
67
67
  }
68
68
 
69
69
  public boolean isCurrentView(View view) {
70
- for (ViewController tab : tabs) {
70
+ for (ViewController<?> tab : tabs) {
71
71
  if (tab.getView() == view) {
72
72
  return true;
73
73
  }
@@ -8,7 +8,6 @@ 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.reactnativenavigation.react.DevBundleDownloadListenerAdapter;
12
11
 
13
12
  import androidx.annotation.NonNull;
14
13
  import androidx.annotation.Nullable;