react-native-navigation 7.21.0 → 7.22.0-snapshot.1649

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 (143) hide show
  1. package/ReactNativeNavigation.podspec +1 -0
  2. package/lib/android/app/src/main/java/com/reactnativenavigation/NavigationActivity.java +1 -2
  3. package/lib/android/app/src/main/java/com/reactnativenavigation/options/BackButton.java +5 -4
  4. package/lib/android/app/src/main/java/com/reactnativenavigation/options/ElementTransitionOptions.kt +0 -1
  5. package/lib/android/app/src/main/java/com/reactnativenavigation/options/HardwareBackButtonOptions.kt +2 -5
  6. package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +120 -120
  7. package/lib/android/app/src/main/java/com/reactnativenavigation/options/ValueAnimationOptions.kt +3 -3
  8. package/lib/android/app/src/main/java/com/reactnativenavigation/options/interpolators/SpringInterpolator.kt +16 -16
  9. package/lib/android/app/src/main/java/com/reactnativenavigation/options/parsers/TypefaceLoader.kt +0 -1
  10. package/lib/android/app/src/main/java/com/reactnativenavigation/react/CommandListenerAdapter.java +0 -2
  11. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +7 -6
  12. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationPackage.kt +27 -0
  13. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationReactInitializer.java +50 -50
  14. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/Events.kt +34 -0
  15. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +81 -0
  16. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalFrameLayout.kt +19 -0
  17. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalHostLayout.kt +78 -0
  18. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalLayoutController.kt +51 -0
  19. package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalViewManager.kt +131 -0
  20. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/CoordinatorLayoutUtils.java +1 -1
  21. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/OutlineProvider.kt +0 -1
  22. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReflectionUtils.java +1 -1
  23. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/RenderChecker.java +1 -1
  24. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java +0 -2
  25. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/UiUtils.java +5 -6
  26. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ViewParent.kt +0 -3
  27. package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ViewUtils.java +4 -5
  28. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +6 -8
  29. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAnimator.kt +0 -1
  30. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +3 -3
  31. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/BottomTabsAttacher.java +1 -1
  32. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachMode.java +3 -3
  33. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTab.java +2 -2
  34. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +1 -1
  35. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistry.java +5 -5
  36. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentPresenterBase.java +3 -0
  37. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +1 -1
  38. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenter.java +6 -6
  39. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java +18 -18
  40. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/navigator/Navigator.java +12 -12
  41. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/parent/ParentController.java +22 -22
  42. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuController.java +16 -16
  43. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuPresenter.java +4 -4
  44. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/FabPresenter.java +8 -8
  45. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/IdStack.java +14 -14
  46. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +29 -29
  47. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerBuilder.java +3 -3
  48. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +29 -28
  49. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarAnimator.kt +1 -0
  50. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarBackgroundViewController.java +0 -1
  51. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +1 -1
  52. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/BackButtonHelper.java +2 -2
  53. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +1 -1
  54. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonSpan.kt +0 -1
  55. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/IconResolver.java +0 -1
  56. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsAdapter.java +5 -4
  57. package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsController.java +8 -8
  58. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainer.kt +1 -4
  59. package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsLayout.java +0 -1
  60. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/PropertyAnimatorCreator.kt +2 -0
  61. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageBoundsAnimator.kt +0 -1
  62. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageMatrixAnimator.kt +2 -2
  63. package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactViewRotationAnimator.kt +0 -5
  64. package/lib/android/app/src/main/java/com/reactnativenavigation/views/toptabs/TopTabsLayoutCreator.java +2 -2
  65. package/lib/android/app/src/main/java/com/reactnativenavigation/views/toptabs/TopTabsViewPager.java +6 -6
  66. package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -1
  67. package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +23 -28
  68. package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +4 -2
  69. package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +3 -1
  70. package/lib/android/app/src/test/java/com/reactnativenavigation/options/OptionsTest.java +9 -1
  71. package/lib/android/app/src/test/java/com/reactnativenavigation/options/TopBarButtonsTest.kt +70 -0
  72. package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -3
  73. package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +6 -6
  74. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +3 -4
  75. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +1 -1
  76. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.java +13 -15
  77. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +5 -5
  78. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +2 -2
  79. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +2 -2
  80. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +4 -4
  81. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +10 -10
  82. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +25 -26
  83. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +2 -2
  84. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +15 -15
  85. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +11 -11
  86. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +2 -2
  87. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -4
  88. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +15 -15
  89. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +17 -17
  90. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +3 -3
  91. package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +9 -9
  92. package/lib/dist/Navigation.d.ts +1 -1
  93. package/lib/dist/Navigation.js +2 -2
  94. package/lib/dist/NavigationDelegate.d.ts +1 -1
  95. package/lib/dist/NavigationDelegate.js +2 -2
  96. package/lib/dist/adapters/TouchablePreview.js +1 -0
  97. package/lib/dist/commands/Commands.d.ts +1 -1
  98. package/lib/dist/commands/Commands.js +2 -2
  99. package/lib/dist/commands/OptionsProcessor.js +12 -6
  100. package/lib/dist/components/ComponentWrapper.d.ts +1 -1
  101. package/lib/dist/components/ComponentWrapper.js +2 -2
  102. package/lib/dist/components/Modal.d.ts +20 -0
  103. package/lib/dist/components/Modal.js +93 -0
  104. package/lib/dist/components/Store.d.ts +1 -1
  105. package/lib/dist/components/Store.js +2 -2
  106. package/lib/dist/index.d.ts +1 -0
  107. package/lib/dist/index.js +1 -0
  108. package/lib/dist/interfaces/Options.d.ts +15 -0
  109. package/lib/ios/BottomTabPresenter.h +4 -1
  110. package/lib/ios/BottomTabPresenter.m +11 -3
  111. package/lib/ios/BottomTabPresenterCreator.m +11 -4
  112. package/lib/ios/BottomTabsAppearancePresenter.m +29 -4
  113. package/lib/ios/RNNBackButtonOptions.h +1 -0
  114. package/lib/ios/RNNBackButtonOptions.m +4 -1
  115. package/lib/ios/RNNBottomTabOptions.h +2 -0
  116. package/lib/ios/RNNBottomTabOptions.m +7 -1
  117. package/lib/ios/RNNBottomTabsController.m +5 -0
  118. package/lib/ios/RNNDotIndicatorPresenter.m +12 -6
  119. package/lib/ios/RNNSegmentedControl.h +1 -1
  120. package/lib/ios/RNNTabBarItemCreator.h +4 -4
  121. package/lib/ios/RNNTabBarItemCreator.m +17 -7
  122. package/lib/ios/ReactNativeNavigation.xcodeproj/project.pbxproj +8 -24
  123. package/lib/ios/TabBarItemAppearanceCreator.m +3 -3
  124. package/lib/ios/TabBarItemIOS15Creator.h +6 -0
  125. package/lib/ios/TabBarItemIOS15Creator.m +37 -0
  126. package/lib/ios/TopBarPresenter.m +13 -3
  127. package/lib/ios/UIViewController+RNNOptions.m +7 -0
  128. package/lib/src/Navigation.ts +2 -2
  129. package/lib/src/NavigationDelegate.ts +2 -2
  130. package/lib/src/adapters/TouchablePreview.tsx +1 -1
  131. package/lib/src/commands/Commands.ts +2 -2
  132. package/lib/src/commands/OptionsProcessor.ts +12 -7
  133. package/lib/src/components/ComponentWrapper.tsx +11 -8
  134. package/lib/src/components/Modal.tsx +109 -0
  135. package/lib/src/components/Store.ts +2 -2
  136. package/lib/src/index.ts +1 -1
  137. package/lib/src/interfaces/Options.ts +15 -0
  138. package/package.json +1 -1
  139. package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationPackage.java +0 -41
  140. package/lib/ios/BottomTabAppearancePresenter.h +0 -6
  141. package/lib/ios/BottomTabAppearancePresenter.m +0 -12
  142. package/lib/ios/HMSegmentedControl.h +0 -287
  143. package/lib/ios/HMSegmentedControl.m +0 -1063
@@ -32,5 +32,6 @@ Pod::Spec.new do |s|
32
32
  s.dependency 'React-Core'
33
33
  s.dependency 'React-RCTImage'
34
34
  s.dependency 'React-RCTText'
35
+ s.dependency 'HMSegmentedControl'
35
36
  s.frameworks = 'UIKit'
36
37
  end
@@ -29,7 +29,7 @@ import androidx.appcompat.app.AppCompatActivity;
29
29
  public class NavigationActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler, PermissionAwareActivity, JsDevReloadHandler.ReloadListener {
30
30
  @Nullable
31
31
  private PermissionListener mPermissionListener;
32
-
32
+
33
33
  protected Navigator navigator;
34
34
 
35
35
  @Override
@@ -146,7 +146,6 @@ public class NavigationActivity extends AppCompatActivity implements DefaultHard
146
146
 
147
147
  protected void addDefaultSplashLayout() {
148
148
  View view = new View(this);
149
- view.setBackgroundColor(Color.WHITE);
150
149
  setContentView(view);
151
150
  }
152
151
 
@@ -13,13 +13,14 @@ import com.reactnativenavigation.react.Constants;
13
13
  import org.json.JSONObject;
14
14
 
15
15
  public class BackButton extends ButtonOptions {
16
+ public static final String DEFAULT_ACCESSIBILITY_LABEL = "Navigate Up";
16
17
  public static BackButton parse(Context context, JSONObject json) {
17
18
  BackButton result = new BackButton();
18
19
  if (json == null || json.toString().equals("{}")) return result;
19
20
 
20
21
  result.hasValue = true;
21
22
  result.visible = BoolParser.parse(json, "visible");
22
- result.accessibilityLabel = TextParser.parse(json, "accessibilityLabel", "Navigate Up");
23
+ result.accessibilityLabel = TextParser.parse(json, "accessibilityLabel", BackButton.DEFAULT_ACCESSIBILITY_LABEL);
23
24
  if (json.has("icon")) result.icon = TextParser.parse(json.optJSONObject("icon"), "uri");
24
25
  result.id = json.optString("id", Constants.BACK_BUTTON_ID);
25
26
  result.enabled = BoolParser.parse(json, "enabled");
@@ -34,7 +35,7 @@ public class BackButton extends ButtonOptions {
34
35
 
35
36
  public BackButton() {
36
37
  id = Constants.BACK_BUTTON_ID;
37
- accessibilityLabel = new Text("Navigate Up");
38
+ accessibilityLabel = new Text(BackButton.DEFAULT_ACCESSIBILITY_LABEL);
38
39
  }
39
40
 
40
41
  public Bool visible = new NullBool();
@@ -46,7 +47,7 @@ public class BackButton extends ButtonOptions {
46
47
 
47
48
  public void mergeWith(BackButton other) {
48
49
  if (!Constants.BACK_BUTTON_ID.equals(other.id)) id = other.id;
49
- if (other.accessibilityLabel.hasValue()) accessibilityLabel = other.accessibilityLabel;
50
+ if (other.accessibilityLabel.hasValue() && !other.accessibilityLabel.equals(new Text(BackButton.DEFAULT_ACCESSIBILITY_LABEL))) accessibilityLabel = other.accessibilityLabel;
50
51
  if (other.icon.hasValue()) icon = other.icon;
51
52
  if (other.visible.hasValue()) visible = other.visible;
52
53
  if (other.color.hasValue()) color = other.color;
@@ -59,7 +60,7 @@ public class BackButton extends ButtonOptions {
59
60
 
60
61
  void mergeWithDefault(final BackButton defaultOptions) {
61
62
  if (Constants.BACK_BUTTON_ID.equals(id)) id = defaultOptions.id;
62
- if (!accessibilityLabel.hasValue()) accessibilityLabel = defaultOptions.accessibilityLabel;
63
+ if (!(accessibilityLabel.hasValue() && !accessibilityLabel.equals(new Text(BackButton.DEFAULT_ACCESSIBILITY_LABEL)))) accessibilityLabel = defaultOptions.accessibilityLabel;
63
64
  if (!icon.hasValue()) icon = defaultOptions.icon;
64
65
  if (!visible.hasValue()) visible = defaultOptions.visible;
65
66
  if (!color.hasValue()) color = defaultOptions.color;
@@ -1,7 +1,6 @@
1
1
  package com.reactnativenavigation.options
2
2
 
3
3
  import android.animation.Animator
4
- import android.animation.AnimatorSet
5
4
  import android.view.View
6
5
  import org.json.JSONObject
7
6
 
@@ -1,11 +1,8 @@
1
1
  package com.reactnativenavigation.options
2
2
 
3
- import android.content.Context
4
- import com.reactnativenavigation.options.animations.ViewAnimationOptions
5
- import com.reactnativenavigation.options.params.*
3
+ import com.reactnativenavigation.options.params.Bool
4
+ import com.reactnativenavigation.options.params.NullBool
6
5
  import com.reactnativenavigation.options.parsers.BoolParser
7
- import com.reactnativenavigation.options.parsers.ColorParser
8
- import com.reactnativenavigation.options.parsers.FractionParser
9
6
  import org.json.JSONObject
10
7
 
11
8
 
@@ -47,37 +47,37 @@ import static com.reactnativenavigation.utils.CollectionUtils.*;
47
47
 
48
48
  public class LayoutFactory {
49
49
  private Activity activity;
50
- private ChildControllersRegistry childRegistry;
50
+ private ChildControllersRegistry childRegistry;
51
51
  private final ReactInstanceManager reactInstanceManager;
52
- private EventEmitter eventEmitter;
53
- private Map<String, ExternalComponentCreator> externalComponentCreators;
54
- private @NonNull Options defaultOptions = new Options();
55
- private TypefaceLoader typefaceManager;
56
-
57
- public void setDefaultOptions(@NonNull Options defaultOptions) {
58
- Assertions.assertNotNull(defaultOptions);
59
- this.defaultOptions = defaultOptions;
60
- }
61
-
62
- public LayoutFactory(final ReactInstanceManager reactInstanceManager) {
63
- this.reactInstanceManager = reactInstanceManager;
64
- }
65
-
66
- public void init(Activity activity, EventEmitter eventEmitter, ChildControllersRegistry childRegistry, Map<String, ExternalComponentCreator> externalComponentCreators) {
67
- this.activity = activity;
68
- this.eventEmitter = eventEmitter;
69
- this.childRegistry = childRegistry;
70
- this.externalComponentCreators = externalComponentCreators;
71
- typefaceManager = new TypefaceLoader(activity);
72
- }
73
-
74
- public ViewController create(final LayoutNode node) {
52
+ private EventEmitter eventEmitter;
53
+ private Map<String, ExternalComponentCreator> externalComponentCreators;
54
+ private @NonNull Options defaultOptions = new Options();
55
+ private TypefaceLoader typefaceManager;
56
+
57
+ public void setDefaultOptions(@NonNull Options defaultOptions) {
58
+ Assertions.assertNotNull(defaultOptions);
59
+ this.defaultOptions = defaultOptions;
60
+ }
61
+
62
+ public LayoutFactory(final ReactInstanceManager reactInstanceManager) {
63
+ this.reactInstanceManager = reactInstanceManager;
64
+ }
65
+
66
+ public void init(Activity activity, EventEmitter eventEmitter, ChildControllersRegistry childRegistry, Map<String, ExternalComponentCreator> externalComponentCreators) {
67
+ this.activity = activity;
68
+ this.eventEmitter = eventEmitter;
69
+ this.childRegistry = childRegistry;
70
+ this.externalComponentCreators = externalComponentCreators;
71
+ typefaceManager = new TypefaceLoader(activity);
72
+ }
73
+
74
+ public ViewController<?> create(final LayoutNode node) {
75
75
  final ReactContext context = reactInstanceManager.getCurrentReactContext();
76
76
  switch (node.type) {
77
77
  case Component:
78
78
  return createComponent(context, node);
79
- case ExternalComponent:
80
- return createExternalComponent(context, node);
79
+ case ExternalComponent:
80
+ return createExternalComponent(context, node);
81
81
  case Stack:
82
82
  return createStack(context, node);
83
83
  case BottomTabs:
@@ -90,22 +90,22 @@ public class LayoutFactory {
90
90
  return createSideMenuLeft(node);
91
91
  case SideMenuRight:
92
92
  return createSideMenuRight(node);
93
- case TopTabs:
94
- return createTopTabs(context, node);
93
+ case TopTabs:
94
+ return createTopTabs(context, node);
95
95
  default:
96
96
  throw new IllegalArgumentException("Invalid node type: " + node.type);
97
97
  }
98
98
  }
99
99
 
100
- private ViewController createSideMenuRoot(ReactContext context, LayoutNode node) {
100
+ private ViewController<?> createSideMenuRoot(ReactContext context, LayoutNode node) {
101
101
  SideMenuController sideMenuController = new SideMenuController(activity,
102
- childRegistry,
103
- node.id,
104
- parse(context, typefaceManager, node.getOptions()),
105
- new SideMenuPresenter(),
106
- new Presenter(activity, defaultOptions)
107
- );
108
- ViewController childControllerCenter = null, childControllerLeft = null, childControllerRight = null;
102
+ childRegistry,
103
+ node.id,
104
+ parse(context, typefaceManager, node.getOptions()),
105
+ new SideMenuPresenter(),
106
+ new Presenter(activity, defaultOptions)
107
+ );
108
+ ViewController<?> childControllerCenter = null, childControllerLeft = null, childControllerRight = null;
109
109
 
110
110
  for (LayoutNode child : node.children) {
111
111
  switch (child.type) {
@@ -141,105 +141,105 @@ public class LayoutFactory {
141
141
  return sideMenuController;
142
142
  }
143
143
 
144
- private ViewController createSideMenuContent(LayoutNode node) {
144
+ private ViewController<?> createSideMenuContent(LayoutNode node) {
145
145
  return create(node.children.get(0));
146
146
  }
147
147
 
148
- private ViewController createSideMenuLeft(LayoutNode node) {
148
+ private ViewController<?> createSideMenuLeft(LayoutNode node) {
149
149
  return create(node.children.get(0));
150
150
  }
151
151
 
152
- private ViewController createSideMenuRight(LayoutNode node) {
152
+ private ViewController<?> createSideMenuRight(LayoutNode node) {
153
153
  return create(node.children.get(0));
154
154
  }
155
155
 
156
- private ViewController createComponent(ReactContext context, LayoutNode node) {
156
+ private ViewController<?> createComponent(ReactContext context, LayoutNode node) {
157
157
  String id = node.id;
158
158
  String name = node.data.optString("name");
159
- return new ComponentViewController(activity,
160
- childRegistry,
161
- id,
162
- name,
163
- new ComponentViewCreator(reactInstanceManager),
164
- parse(context, typefaceManager, node.getOptions()),
165
- new Presenter(activity, defaultOptions),
166
- new ComponentPresenter(defaultOptions)
167
- );
159
+ return new ComponentViewController(activity,
160
+ childRegistry,
161
+ id,
162
+ name,
163
+ new ComponentViewCreator(reactInstanceManager),
164
+ parse(context, typefaceManager, node.getOptions()),
165
+ new Presenter(activity, defaultOptions),
166
+ new ComponentPresenter(defaultOptions)
167
+ );
168
168
  }
169
169
 
170
- private ViewController createExternalComponent(ReactContext context, LayoutNode node) {
171
- final ExternalComponent externalComponent = ExternalComponent.parse(node.data);
172
- return new ExternalComponentViewController(activity,
173
- childRegistry,
174
- node.id,
175
- new Presenter(activity, defaultOptions),
176
- externalComponent,
177
- externalComponentCreators.get(externalComponent.name.get()),
178
- reactInstanceManager,
179
- new EventEmitter(context),
180
- new ExternalComponentPresenter(),
181
- parse(context, typefaceManager, node.getOptions())
182
- );
183
- }
184
-
185
- private ViewController createStack(ReactContext context, LayoutNode node) {
186
- return new StackControllerBuilder(activity, eventEmitter)
187
- .setChildren(createChildren(node.children))
188
- .setChildRegistry(childRegistry)
189
- .setTopBarController(new TopBarController())
190
- .setId(node.id)
191
- .setInitialOptions(parse(context, typefaceManager, node.getOptions()))
192
- .setStackPresenter(new StackPresenter(activity,
193
- new TitleBarReactViewCreator(reactInstanceManager),
194
- new TopBarBackgroundViewCreator(reactInstanceManager),
195
- new TitleBarButtonCreator(reactInstanceManager),
196
- new IconResolver(activity, new ImageLoader()),
197
- new TypefaceLoader(activity),
198
- new RenderChecker(),
199
- defaultOptions
200
- ))
201
- .setPresenter(new Presenter(activity, defaultOptions))
202
- .build();
170
+ private ViewController<?> createExternalComponent(ReactContext context, LayoutNode node) {
171
+ final ExternalComponent externalComponent = ExternalComponent.parse(node.data);
172
+ return new ExternalComponentViewController(activity,
173
+ childRegistry,
174
+ node.id,
175
+ new Presenter(activity, defaultOptions),
176
+ externalComponent,
177
+ externalComponentCreators.get(externalComponent.name.get()),
178
+ reactInstanceManager,
179
+ new EventEmitter(context),
180
+ new ExternalComponentPresenter(),
181
+ parse(context, typefaceManager, node.getOptions())
182
+ );
203
183
  }
204
184
 
205
- private List<ViewController> createChildren(List<LayoutNode> children) {
206
- List<ViewController> result = new ArrayList<>();
207
- for (LayoutNode child : children) {
208
- result.add(create(child));
209
- }
210
- return result;
211
- }
212
-
213
- private ViewController createBottomTabs(ReactContext context, LayoutNode node) {
214
- List<ViewController<?>> tabs = map(node.children, this::create);
215
- BottomTabsPresenter bottomTabsPresenter = new BottomTabsPresenter(tabs, defaultOptions, new BottomTabsAnimator());
216
- return new BottomTabsController(activity,
217
- tabs,
218
- childRegistry,
219
- eventEmitter,
220
- new ImageLoader(),
221
- node.id,
222
- parse(context, typefaceManager, node.getOptions()),
223
- new Presenter(activity, defaultOptions),
224
- new BottomTabsAttacher(tabs, bottomTabsPresenter, defaultOptions),
225
- bottomTabsPresenter,
226
- new BottomTabPresenter(activity, tabs, new ImageLoader(), new TypefaceLoader(activity), defaultOptions));
185
+ private ViewController<?> createStack(ReactContext context, LayoutNode node) {
186
+ return new StackControllerBuilder(activity, eventEmitter)
187
+ .setChildren(createChildren(node.children))
188
+ .setChildRegistry(childRegistry)
189
+ .setTopBarController(new TopBarController())
190
+ .setId(node.id)
191
+ .setInitialOptions(parse(context, typefaceManager, node.getOptions()))
192
+ .setStackPresenter(new StackPresenter(activity,
193
+ new TitleBarReactViewCreator(reactInstanceManager),
194
+ new TopBarBackgroundViewCreator(reactInstanceManager),
195
+ new TitleBarButtonCreator(reactInstanceManager),
196
+ new IconResolver(activity, new ImageLoader()),
197
+ new TypefaceLoader(activity),
198
+ new RenderChecker(),
199
+ defaultOptions
200
+ ))
201
+ .setPresenter(new Presenter(activity, defaultOptions))
202
+ .build();
227
203
  }
228
204
 
229
- private ViewController createTopTabs(ReactContext context, LayoutNode node) {
230
- final List<ViewController> tabs = new ArrayList<>();
231
- for (int i = 0; i < node.children.size(); i++) {
232
- ViewController tabController = create(node.children.get(i));
233
- Options options = parse(context, typefaceManager, node.children.get(i).getOptions());
234
- options.setTopTabIndex(i);
235
- tabs.add(tabController);
236
- }
237
- return new TopTabsController(activity, childRegistry, node.id, tabs, new TopTabsLayoutCreator(activity, tabs), parse(context, typefaceManager, node.getOptions()), new Presenter(activity, defaultOptions));
238
- }
239
-
240
- @NonNull
241
- @RestrictTo(RestrictTo.Scope.TESTS)
242
- public Options getDefaultOptions() {
243
- return defaultOptions;
244
- }
205
+ private List<ViewController<?>> createChildren(List<LayoutNode> children) {
206
+ List<ViewController<?>> result = new ArrayList<>();
207
+ for (LayoutNode child : children) {
208
+ result.add(create(child));
209
+ }
210
+ return result;
211
+ }
212
+
213
+ private ViewController<?> createBottomTabs(ReactContext context, LayoutNode node) {
214
+ List<ViewController<?>> tabs = map(node.children, this::create);
215
+ BottomTabsPresenter bottomTabsPresenter = new BottomTabsPresenter(tabs, defaultOptions, new BottomTabsAnimator());
216
+ return new BottomTabsController(activity,
217
+ tabs,
218
+ childRegistry,
219
+ eventEmitter,
220
+ new ImageLoader(),
221
+ node.id,
222
+ parse(context, typefaceManager, node.getOptions()),
223
+ new Presenter(activity, defaultOptions),
224
+ new BottomTabsAttacher(tabs, bottomTabsPresenter, defaultOptions),
225
+ bottomTabsPresenter,
226
+ new BottomTabPresenter(activity, tabs, new ImageLoader(), new TypefaceLoader(activity), defaultOptions));
227
+ }
228
+
229
+ private ViewController<?> createTopTabs(ReactContext context, LayoutNode node) {
230
+ final List<ViewController<?>> tabs = new ArrayList<>();
231
+ for (int i = 0; i < node.children.size(); i++) {
232
+ ViewController<?> tabController = create(node.children.get(i));
233
+ Options options = parse(context, typefaceManager, node.children.get(i).getOptions());
234
+ options.setTopTabIndex(i);
235
+ tabs.add(tabController);
236
+ }
237
+ return new TopTabsController(activity, childRegistry, node.id, tabs, new TopTabsLayoutCreator(activity, tabs), parse(context, typefaceManager, node.getOptions()), new Presenter(activity, defaultOptions));
238
+ }
239
+
240
+ @NonNull
241
+ @RestrictTo(RestrictTo.Scope.TESTS)
242
+ public Options getDefaultOptions() {
243
+ return defaultOptions;
244
+ }
245
245
  }
@@ -60,9 +60,9 @@ class ValueAnimationOptions {
60
60
  return animator
61
61
  }
62
62
 
63
- override fun equals(o: Any?): Boolean {
64
- if (this === o) return true
65
- return if (o == null || javaClass != o.javaClass) false else animProp == (o as ValueAnimationOptions).animProp
63
+ override fun equals(other: Any?): Boolean {
64
+ if (this === other) return true
65
+ return if (other == null || javaClass != other.javaClass) false else animProp == (other as ValueAnimationOptions).animProp
66
66
  }
67
67
 
68
68
  fun equals(animationProperty: Property<View?, Float?>): Boolean {
@@ -7,35 +7,35 @@ class SpringInterpolator(private val mass: Float = 3f, private val damping: Floa
7
7
  private val velocity: Float = initialVelocity
8
8
 
9
9
  override fun getInterpolation(t: Float): Float {
10
- val b = damping;
11
- val m = mass;
12
- val k = stiffness;
13
- val v0 = velocity;
10
+ val b = damping
11
+ val m = mass
12
+ val k = stiffness
13
+ val v0 = velocity
14
14
 
15
- var beta = b / (2 * m);
16
- val omega0 = sqrt(k / m);
17
- val omega1 = sqrt((omega0 * omega0) - (beta * beta));
18
- val omega2 = sqrt((beta * beta) - (omega0 * omega0));
15
+ var beta = b / (2 * m)
16
+ val omega0 = sqrt(k / m)
17
+ val omega1 = sqrt((omega0 * omega0) - (beta * beta))
18
+ val omega2 = sqrt((beta * beta) - (omega0 * omega0))
19
19
 
20
- val x0 = -1;
20
+ val x0 = -1
21
21
 
22
- if (!this.allowsOverdamping && beta > omega0) beta = omega0;
22
+ if (!this.allowsOverdamping && beta > omega0) beta = omega0
23
23
  if (t == 1f) {
24
24
  return 1f
25
25
  }
26
26
  return when {
27
27
  beta < omega0 -> {
28
28
  // Underdamped
29
- val envelope = exp(-beta * t);
30
- -x0 + envelope * (x0 * cos(omega1 * t) + ((beta * x0 + v0) / omega1) * sin(omega1 * t));
29
+ val envelope = exp(-beta * t)
30
+ -x0 + envelope * (x0 * cos(omega1 * t) + ((beta * x0 + v0) / omega1) * sin(omega1 * t))
31
31
  }
32
32
  beta == omega0 -> {
33
- val envelope = exp(-beta * t);
34
- -x0 + envelope * (x0 + (beta * x0 + v0) * t);
33
+ val envelope = exp(-beta * t)
34
+ -x0 + envelope * (x0 + (beta * x0 + v0) * t)
35
35
  }
36
36
  else -> {
37
- val envelope = exp(-beta * t);
38
- -x0 + envelope * (x0 * cosh(omega2 * t) + ((beta * x0 + v0) / omega2) * sinh(omega2 * t));
37
+ val envelope = exp(-beta * t)
38
+ -x0 + envelope * (x0 * cosh(omega2 * t) + ((beta * x0 + v0) / omega2) * sinh(omega2 * t))
39
39
  }
40
40
  }
41
41
  }
@@ -2,7 +2,6 @@ package com.reactnativenavigation.options.parsers
2
2
 
3
3
  import android.content.Context
4
4
  import android.graphics.Typeface
5
- import android.text.TextUtils
6
5
  import com.reactnativenavigation.utils.ReactTypefaceUtils
7
6
 
8
7
  open class TypefaceLoader(private val context: Context) {
@@ -1,7 +1,5 @@
1
1
  package com.reactnativenavigation.react;
2
2
 
3
- import com.reactnativenavigation.react.CommandListener;
4
-
5
3
  import androidx.annotation.Nullable;
6
4
 
7
5
  public class CommandListenerAdapter implements CommandListener {
@@ -30,6 +30,7 @@ import com.reactnativenavigation.viewcontrollers.navigator.Navigator;
30
30
  import com.reactnativenavigation.viewcontrollers.viewcontroller.ViewController;
31
31
 
32
32
  import java.util.ArrayList;
33
+ import java.util.Objects;
33
34
 
34
35
  import static com.reactnativenavigation.utils.UiUtils.pxToDp;
35
36
 
@@ -107,9 +108,9 @@ public class NavigationModule extends ReactContextBaseJavaModule {
107
108
 
108
109
  @ReactMethod
109
110
  public void setRoot(String commandId, ReadableMap rawLayoutTree, Promise promise) {
110
- final LayoutNode layoutTree = LayoutNodeParser.parse(jsonParser.parse(rawLayoutTree).optJSONObject("root"));
111
+ final LayoutNode layoutTree = LayoutNodeParser.parse(Objects.requireNonNull(jsonParser.parse(rawLayoutTree).optJSONObject("root")));
111
112
  handle(() -> {
112
- final ViewController viewController = layoutFactory.create(layoutTree);
113
+ final ViewController<?> viewController = layoutFactory.create(layoutTree);
113
114
  navigator().setRoot(viewController, new NativeCommandListener("setRoot", commandId, promise, eventEmitter, now), reactInstanceManager);
114
115
  });
115
116
  }
@@ -132,7 +133,7 @@ public class NavigationModule extends ReactContextBaseJavaModule {
132
133
  public void push(String commandId, String onComponentId, ReadableMap rawLayoutTree, Promise promise) {
133
134
  final LayoutNode layoutTree = LayoutNodeParser.parse(jsonParser.parse(rawLayoutTree));
134
135
  handle(() -> {
135
- final ViewController viewController = layoutFactory.create(layoutTree);
136
+ final ViewController<?> viewController = layoutFactory.create(layoutTree);
136
137
  navigator().push(onComponentId, viewController, new NativeCommandListener("push", commandId, promise, eventEmitter, now));
137
138
  });
138
139
  }
@@ -140,7 +141,7 @@ public class NavigationModule extends ReactContextBaseJavaModule {
140
141
  @ReactMethod
141
142
  public void setStackRoot(String commandId, String onComponentId, ReadableArray children, Promise promise) {
142
143
  handle(() -> {
143
- ArrayList<ViewController> _children = new ArrayList<>();
144
+ ArrayList<ViewController<?>> _children = new ArrayList<>();
144
145
  for (int i = 0; i < children.size(); i++) {
145
146
  final LayoutNode layoutTree = LayoutNodeParser.parse(jsonParser.parse(children.getMap(i)));
146
147
  _children.add(layoutFactory.create(layoutTree));
@@ -168,7 +169,7 @@ public class NavigationModule extends ReactContextBaseJavaModule {
168
169
  public void showModal(String commandId, ReadableMap rawLayoutTree, Promise promise) {
169
170
  final LayoutNode layoutTree = LayoutNodeParser.parse(jsonParser.parse(rawLayoutTree));
170
171
  handle(() -> {
171
- final ViewController viewController = layoutFactory.create(layoutTree);
172
+ final ViewController<?> viewController = layoutFactory.create(layoutTree);
172
173
  navigator().showModal(viewController, new NativeCommandListener("showModal", commandId, promise, eventEmitter, now));
173
174
  });
174
175
  }
@@ -190,7 +191,7 @@ public class NavigationModule extends ReactContextBaseJavaModule {
190
191
  public void showOverlay(String commandId, ReadableMap rawLayoutTree, Promise promise) {
191
192
  final LayoutNode layoutTree = LayoutNodeParser.parse(jsonParser.parse(rawLayoutTree));
192
193
  handle(() -> {
193
- final ViewController viewController = layoutFactory.create(layoutTree);
194
+ final ViewController<?> viewController = layoutFactory.create(layoutTree);
194
195
  navigator().showOverlay(viewController, new NativeCommandListener("showOverlay", commandId, promise, eventEmitter, now));
195
196
  });
196
197
  }
@@ -0,0 +1,27 @@
1
+ package com.reactnativenavigation.react
2
+
3
+ import com.facebook.react.ReactNativeHost
4
+ import com.facebook.react.ReactPackage
5
+ import com.facebook.react.bridge.NativeModule
6
+ import com.facebook.react.bridge.ReactApplicationContext
7
+ import com.facebook.react.uimanager.ViewManager
8
+ import com.reactnativenavigation.NavigationActivity
9
+ import com.reactnativenavigation.options.LayoutFactory
10
+ import com.reactnativenavigation.react.modal.ModalViewManager
11
+
12
+ class NavigationPackage(private val reactNativeHost: ReactNativeHost) : ReactPackage {
13
+ override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
14
+ return listOf(
15
+ NavigationModule(
16
+ reactContext,
17
+ reactNativeHost.reactInstanceManager,
18
+ LayoutFactory(reactNativeHost.reactInstanceManager)
19
+ )
20
+ )
21
+ }
22
+
23
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
24
+
25
+ return listOf(ModalViewManager((reactContext.currentActivity as NavigationActivity).navigator))
26
+ }
27
+ }