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.
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/ElementTransitionOptions.kt +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/HardwareBackButtonOptions.kt +2 -5
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/LayoutFactory.java +120 -120
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/ValueAnimationOptions.kt +3 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/interpolators/SpringInterpolator.kt +16 -16
- package/lib/android/app/src/main/java/com/reactnativenavigation/options/parsers/TypefaceLoader.kt +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/CommandListenerAdapter.java +0 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +7 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationPackage.kt +1 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalContentLayout.kt +5 -5
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalLayoutController.kt +7 -7
- package/lib/android/app/src/main/java/com/reactnativenavigation/react/modal/ModalViewManager.kt +25 -9
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/CoordinatorLayoutUtils.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/OutlineProvider.kt +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ReflectionUtils.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/RenderChecker.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java +0 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/UiUtils.java +5 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ViewParent.kt +0 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/utils/ViewUtils.java +4 -5
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenter.java +6 -8
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAnimator.kt +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +3 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/BottomTabsAttacher.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachMode.java +3 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/OnSwitchToTab.java +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildController.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistry.java +5 -5
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentPresenterBase.java +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenter.java +6 -6
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/modal/ModalStack.java +18 -18
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/navigator/Navigator.java +12 -12
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/parent/ParentController.java +22 -22
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuController.java +16 -16
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuPresenter.java +4 -4
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/FabPresenter.java +8 -8
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/IdStack.java +14 -14
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackController.java +29 -29
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerBuilder.java +3 -3
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenter.java +29 -28
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarAnimator.kt +1 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarBackgroundViewController.java +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/TopBarController.kt +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/BackButtonHelper.java +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonPresenter.kt +1 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/ButtonSpan.kt +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/topbar/button/IconResolver.java +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsAdapter.java +5 -4
- package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsController.java +8 -8
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsContainer.kt +1 -4
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabsLayout.java +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/PropertyAnimatorCreator.kt +2 -0
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageBoundsAnimator.kt +0 -1
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactImageMatrixAnimator.kt +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/element/animators/ReactViewRotationAnimator.kt +0 -5
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/stack/topbar/titlebar/TitleBarReactView.kt +1 -22
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/toptabs/TopTabsLayoutCreator.java +2 -2
- package/lib/android/app/src/main/java/com/reactnativenavigation/views/toptabs/TopTabsViewPager.java +6 -6
- package/lib/android/app/src/reactNative63/java/com/reactnativenavigation/react/NavigationReactNativeHost.java +0 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/BaseTest.java +23 -28
- package/lib/android/app/src/test/java/com/reactnativenavigation/TestUtils.java +4 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/mocks/TestComponentLayout.java +3 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/options/parsers/ColorParseTest.java +0 -3
- package/lib/android/app/src/test/java/com/reactnativenavigation/presentation/RenderCheckerTest.java +6 -6
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabPresenterTest.java +3 -4
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsAttacherTest.java +1 -1
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.java +13 -15
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/attacher/modes/AttachModeTest.java +5 -5
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllerTest.java +2 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/child/ChildControllersRegistryTest.java +2 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalPresenterTest.java +4 -4
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/modal/ModalStackTest.java +10 -10
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/NavigatorTest.java +25 -26
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/navigator/RootPresenterTest.kt +2 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/parent/ParentControllerTest.java +15 -15
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java +11 -11
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/BackButtonHelperTest.java +2 -2
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackAnimatorTest.kt +0 -4
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackControllerTest.kt +15 -15
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/StackPresenterTest.kt +17 -17
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/stack/TopBarControllerTest.kt +3 -3
- package/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/toptabs/TopTabsViewControllerTest.java +9 -9
- package/lib/dist/components/Modal.js +1 -2
- package/lib/src/components/Modal.tsx +1 -2
- package/package.json +1 -1
|
@@ -29,9 +29,9 @@ import static com.reactnativenavigation.utils.ObjectUtils.perform;
|
|
|
29
29
|
|
|
30
30
|
public class SideMenuController extends ParentController<SideMenuRoot> implements DrawerLayout.DrawerListener {
|
|
31
31
|
|
|
32
|
-
private ViewController center;
|
|
33
|
-
private ViewController left;
|
|
34
|
-
private ViewController right;
|
|
32
|
+
private ViewController<?> center;
|
|
33
|
+
private ViewController<?> left;
|
|
34
|
+
private ViewController<?> right;
|
|
35
35
|
private SideMenuPresenter presenter;
|
|
36
36
|
private float prevLeftSlideOffset = 0;
|
|
37
37
|
private float prevRightSlideOffset = 0;
|
|
@@ -42,7 +42,7 @@ public class SideMenuController extends ParentController<SideMenuRoot> implement
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
@Override
|
|
45
|
-
public ViewController getCurrentChild() {
|
|
45
|
+
public ViewController<?> getCurrentChild() {
|
|
46
46
|
if (!isDestroyed()) {
|
|
47
47
|
if (getView().isDrawerOpen(Gravity.LEFT)) {
|
|
48
48
|
return left;
|
|
@@ -72,8 +72,8 @@ public class SideMenuController extends ParentController<SideMenuRoot> implement
|
|
|
72
72
|
|
|
73
73
|
@NonNull
|
|
74
74
|
@Override
|
|
75
|
-
public Collection<ViewController
|
|
76
|
-
ArrayList<ViewController
|
|
75
|
+
public Collection<ViewController<?>> getChildControllers() {
|
|
76
|
+
ArrayList<ViewController<?>> children = new ArrayList<>();
|
|
77
77
|
if (center != null) children.add(center);
|
|
78
78
|
if (left != null) children.add(left);
|
|
79
79
|
if (right != null) children.add(right);
|
|
@@ -87,14 +87,14 @@ public class SideMenuController extends ParentController<SideMenuRoot> implement
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
@Override
|
|
90
|
-
public void applyChildOptions(Options options, ViewController child) {
|
|
90
|
+
public void applyChildOptions(Options options, ViewController<?> child) {
|
|
91
91
|
super.applyChildOptions(options, child);
|
|
92
92
|
presenter.applyChildOptions(resolveCurrentOptions());
|
|
93
93
|
performOnParentController(parent -> parent.applyChildOptions(this.options, child));
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
@Override
|
|
97
|
-
public void mergeChildOptions(Options options, ViewController child) {
|
|
97
|
+
public void mergeChildOptions(Options options, ViewController<?> child) {
|
|
98
98
|
super.mergeChildOptions(options, child);
|
|
99
99
|
presenter.mergeOptions(options.sideMenuRootOptions);
|
|
100
100
|
mergeLockMode(this.initialOptions, options.sideMenuRootOptions);
|
|
@@ -129,13 +129,13 @@ public class SideMenuController extends ParentController<SideMenuRoot> implement
|
|
|
129
129
|
|
|
130
130
|
@Override
|
|
131
131
|
public void onDrawerOpened(@NonNull View drawerView) {
|
|
132
|
-
ViewController view = this.getMatchingView(drawerView);
|
|
132
|
+
ViewController<?> view = this.getMatchingView(drawerView);
|
|
133
133
|
view.mergeOptions(this.getOptionsWithVisibility(isLeftMenu(drawerView), true));
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
@Override
|
|
137
137
|
public void onDrawerClosed(@NonNull View drawerView) {
|
|
138
|
-
ViewController view = this.getMatchingView(drawerView);
|
|
138
|
+
ViewController<?> view = this.getMatchingView(drawerView);
|
|
139
139
|
view.mergeOptions(this.getOptionsWithVisibility(isLeftMenu(drawerView), false));
|
|
140
140
|
}
|
|
141
141
|
|
|
@@ -163,28 +163,28 @@ public class SideMenuController extends ParentController<SideMenuRoot> implement
|
|
|
163
163
|
|
|
164
164
|
@Nullable
|
|
165
165
|
@Override
|
|
166
|
-
public ViewController findController(View child) {
|
|
166
|
+
public ViewController<?> findController(View child) {
|
|
167
167
|
return getView().isSideMenu(child) ? this : super.findController(child);
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
public void setCenterController(ViewController centerController) {
|
|
170
|
+
public void setCenterController(ViewController<?> centerController) {
|
|
171
171
|
center = centerController;
|
|
172
172
|
getView().setCenter(center);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
public void setLeftController(ViewController controller) {
|
|
175
|
+
public void setLeftController(ViewController<?> controller) {
|
|
176
176
|
left = controller;
|
|
177
177
|
getView().setLeft(left, options);
|
|
178
178
|
presenter.bindLeft(left);
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
public void setRightController(ViewController controller) {
|
|
181
|
+
public void setRightController(ViewController<?> controller) {
|
|
182
182
|
right = controller;
|
|
183
183
|
getView().setRight(right, options);
|
|
184
184
|
presenter.bindRight(right);
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
private ViewController getMatchingView(View drawerView) {
|
|
187
|
+
private ViewController<?> getMatchingView(View drawerView) {
|
|
188
188
|
return this.isLeftMenu(drawerView) ? left : right;
|
|
189
189
|
}
|
|
190
190
|
|
|
@@ -206,7 +206,7 @@ public class SideMenuController extends ParentController<SideMenuRoot> implement
|
|
|
206
206
|
return options;
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
private void dispatchSideMenuVisibilityEvents(ViewController drawer, float prevOffset, float offset) {
|
|
209
|
+
private void dispatchSideMenuVisibilityEvents(ViewController<?> drawer, float prevOffset, float offset) {
|
|
210
210
|
if (prevOffset < 1 && offset == 1) {
|
|
211
211
|
drawer.onViewDidAppear();
|
|
212
212
|
} else if (prevOffset == 0 && offset > 0) {
|
|
@@ -15,18 +15,18 @@ import androidx.drawerlayout.widget.DrawerLayout;
|
|
|
15
15
|
public class SideMenuPresenter {
|
|
16
16
|
|
|
17
17
|
private SideMenu sideMenu;
|
|
18
|
-
private ViewController left;
|
|
19
|
-
private ViewController right;
|
|
18
|
+
private ViewController<?> left;
|
|
19
|
+
private ViewController<?> right;
|
|
20
20
|
|
|
21
21
|
public void bindView(SideMenu sideMenu) {
|
|
22
22
|
this.sideMenu = sideMenu;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
public void bindLeft(ViewController left) {
|
|
25
|
+
public void bindLeft(ViewController<?> left) {
|
|
26
26
|
this.left = left;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
public void bindRight(ViewController right) {
|
|
29
|
+
public void bindRight(ViewController<?> right) {
|
|
30
30
|
this.right = right;
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -32,7 +32,7 @@ public class FabPresenter {
|
|
|
32
32
|
private Fab fab;
|
|
33
33
|
private FabMenu fabMenu;
|
|
34
34
|
|
|
35
|
-
public void applyOptions(FabOptions options, @NonNull ViewController component, @NonNull ViewGroup viewGroup) {
|
|
35
|
+
public void applyOptions(FabOptions options, @NonNull ViewController<?> component, @NonNull ViewGroup viewGroup) {
|
|
36
36
|
this.viewGroup = viewGroup;
|
|
37
37
|
|
|
38
38
|
if (options.id.hasValue()) {
|
|
@@ -54,7 +54,7 @@ public class FabPresenter {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
public void mergeOptions(FabOptions options, @NonNull ViewController component, @NonNull ViewGroup viewGroup) {
|
|
57
|
+
public void mergeOptions(FabOptions options, @NonNull ViewController<?> component, @NonNull ViewGroup viewGroup) {
|
|
58
58
|
this.viewGroup = viewGroup;
|
|
59
59
|
if (options.id.hasValue()) {
|
|
60
60
|
if (fabMenu != null && fabMenu.getFabId().equals(options.id.get())) {
|
|
@@ -72,7 +72,7 @@ public class FabPresenter {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
private void createFab(ViewController component, FabOptions options) {
|
|
75
|
+
private void createFab(ViewController<?> component, FabOptions options) {
|
|
76
76
|
ViewExtensionsKt.removeFromParent(fabMenu);
|
|
77
77
|
ViewExtensionsKt.removeFromParent(fab);
|
|
78
78
|
if (options.actionsArray.size() > 0) {
|
|
@@ -123,7 +123,7 @@ public class FabPresenter {
|
|
|
123
123
|
});
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
private void setParams(ViewController component, View fab, FabOptions options) {
|
|
126
|
+
private void setParams(ViewController<?> component, View fab, FabOptions options) {
|
|
127
127
|
CoordinatorLayout.LayoutParams lp = new CoordinatorLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
|
|
128
128
|
lp.rightMargin = (int) viewGroup.getContext().getResources().getDimension(R.dimen.margin);
|
|
129
129
|
lp.leftMargin = (int) viewGroup.getContext().getResources().getDimension(R.dimen.margin);
|
|
@@ -164,7 +164,7 @@ public class FabPresenter {
|
|
|
164
164
|
fab.setLayoutParams(lp);
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
private void applyFabOptions(ViewController component, Fab fab, FabOptions options) {
|
|
167
|
+
private void applyFabOptions(ViewController<?> component, Fab fab, FabOptions options) {
|
|
168
168
|
if (options.visible.isTrueOrUndefined()) {
|
|
169
169
|
fab.setScaleX(0.6f);
|
|
170
170
|
fab.setScaleY(0.6f);
|
|
@@ -204,7 +204,7 @@ public class FabPresenter {
|
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
|
|
207
|
-
private void mergeFabOptions(ViewController component, Fab fab, FabOptions options) {
|
|
207
|
+
private void mergeFabOptions(ViewController<?> component, Fab fab, FabOptions options) {
|
|
208
208
|
if (options.visible.isTrue()) {
|
|
209
209
|
fab.show(true);
|
|
210
210
|
}
|
|
@@ -234,7 +234,7 @@ public class FabPresenter {
|
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
private void applyFabMenuOptions(ViewController component, FabMenu fabMenu, FabOptions options) {
|
|
237
|
+
private void applyFabMenuOptions(ViewController<?> component, FabMenu fabMenu, FabOptions options) {
|
|
238
238
|
if (options.visible.isTrueOrUndefined()) {
|
|
239
239
|
fabMenu.showMenuButton(true);
|
|
240
240
|
}
|
|
@@ -271,7 +271,7 @@ public class FabPresenter {
|
|
|
271
271
|
}
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
-
private void mergeFabMenuOptions(ViewController component, FabMenu fabMenu, FabOptions options) {
|
|
274
|
+
private void mergeFabMenuOptions(ViewController<?> component, FabMenu fabMenu, FabOptions options) {
|
|
275
275
|
if (options.visible.isTrue()) {
|
|
276
276
|
fabMenu.showMenuButton(true);
|
|
277
277
|
}
|
package/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/stack/IdStack.java
CHANGED
|
@@ -14,7 +14,7 @@ import static com.reactnativenavigation.utils.CollectionUtils.*;
|
|
|
14
14
|
|
|
15
15
|
public class IdStack<E> implements Iterable<String> {
|
|
16
16
|
|
|
17
|
-
private final ArrayList<String> deque = new ArrayList();
|
|
17
|
+
private final ArrayList<String> deque = new ArrayList<>();
|
|
18
18
|
private final Map<String, E> map = new HashMap<>();
|
|
19
19
|
|
|
20
20
|
public void push(String id, E item) {
|
|
@@ -22,17 +22,17 @@ public class IdStack<E> implements Iterable<String> {
|
|
|
22
22
|
map.put(id, item);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
public void set(String id, E item, int index) {
|
|
26
|
+
deque.add(index, id);
|
|
27
|
+
map.put(id, item);
|
|
28
|
+
}
|
|
29
29
|
|
|
30
30
|
public E peek() {
|
|
31
|
-
|
|
31
|
+
return isEmpty() ? null : map.get(last(deque));
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
public E pop() {
|
|
35
|
-
|
|
35
|
+
return isEmpty() ? null : map.remove(removeLast(deque));
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
public boolean isEmpty() {
|
|
@@ -57,8 +57,8 @@ public class IdStack<E> implements Iterable<String> {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
public E get(final int index) {
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
return map.get(deque.get(index));
|
|
61
|
+
}
|
|
62
62
|
|
|
63
63
|
public boolean containsId(final String id) {
|
|
64
64
|
return deque.contains(id);
|
|
@@ -77,7 +77,7 @@ public class IdStack<E> implements Iterable<String> {
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
@NonNull
|
|
80
|
-
|
|
80
|
+
@Override
|
|
81
81
|
public Iterator<String> iterator() {
|
|
82
82
|
return deque.iterator();
|
|
83
83
|
}
|
|
@@ -87,8 +87,8 @@ public class IdStack<E> implements Iterable<String> {
|
|
|
87
87
|
return map(deque, map::get);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
90
|
+
public void remove(Iterator<String> iterator, String id) {
|
|
91
|
+
iterator.remove();
|
|
92
|
+
map.remove(id);
|
|
93
|
+
}
|
|
94
94
|
}
|
|
@@ -45,7 +45,7 @@ import static com.reactnativenavigation.utils.ObjectUtils.perform;
|
|
|
45
45
|
|
|
46
46
|
public class StackController extends ParentController<StackLayout> {
|
|
47
47
|
|
|
48
|
-
private IdStack<ViewController
|
|
48
|
+
private IdStack<ViewController<?>> stack = new IdStack<>();
|
|
49
49
|
private final StackAnimator animator;
|
|
50
50
|
private final EventEmitter eventEmitter;
|
|
51
51
|
private final TopBarController topBarController;
|
|
@@ -53,7 +53,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
53
53
|
private final StackPresenter presenter;
|
|
54
54
|
private final FabPresenter fabPresenter;
|
|
55
55
|
|
|
56
|
-
public StackController(Activity activity, List<ViewController
|
|
56
|
+
public StackController(Activity activity, List<ViewController<?>> children, ChildControllersRegistry childRegistry, EventEmitter eventEmitter, TopBarController topBarController, StackAnimator animator, String id, Options initialOptions, BackButtonHelper backButtonHelper, StackPresenter stackPresenter, Presenter presenter, FabPresenter fabPresenter) {
|
|
57
57
|
super(activity, childRegistry, id, presenter, initialOptions);
|
|
58
58
|
this.eventEmitter = eventEmitter;
|
|
59
59
|
this.topBarController = topBarController;
|
|
@@ -108,7 +108,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
@Override
|
|
111
|
-
public void applyChildOptions(Options options, ViewController child) {
|
|
111
|
+
public void applyChildOptions(Options options, ViewController<?> child) {
|
|
112
112
|
super.applyChildOptions(options, child);
|
|
113
113
|
presenter.applyChildOptions(resolveCurrentOptions(), this, child);
|
|
114
114
|
fabPresenter.applyOptions(this.options.fabOptions, child, getView());
|
|
@@ -126,7 +126,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
@Override
|
|
129
|
-
public void mergeChildOptions(Options options, ViewController child) {
|
|
129
|
+
public void mergeChildOptions(Options options, ViewController<?> child) {
|
|
130
130
|
super.mergeChildOptions(options, child);
|
|
131
131
|
if (child.isViewShown() && peek() == child) {
|
|
132
132
|
presenter.mergeChildOptions(options, resolveCurrentOptions(), this, child);
|
|
@@ -148,17 +148,17 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
@Override
|
|
151
|
-
public void onChildDestroyed(ViewController child) {
|
|
151
|
+
public void onChildDestroyed(ViewController<?> child) {
|
|
152
152
|
super.onChildDestroyed(child);
|
|
153
153
|
presenter.onChildDestroyed(child);
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
public void push(ViewController child, CommandListener listener) {
|
|
156
|
+
public void push(ViewController<?> child, CommandListener listener) {
|
|
157
157
|
if (findController(child.getId()) != null) {
|
|
158
158
|
listener.onError("A stack can't contain two children with the same id: " + child.getId());
|
|
159
159
|
return;
|
|
160
160
|
}
|
|
161
|
-
final ViewController toRemove = stack.peek();
|
|
161
|
+
final ViewController<?> toRemove = stack.peek();
|
|
162
162
|
if (size() > 0) backButtonHelper.addToPushedChild(child);
|
|
163
163
|
child.setParentController(this);
|
|
164
164
|
stack.push(child.getId(), child);
|
|
@@ -190,30 +190,30 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
190
190
|
animator.cancelAllAnimations();
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
-
private void onPushAnimationComplete(ViewController toAdd, ViewController toRemove, CommandListener listener) {
|
|
193
|
+
private void onPushAnimationComplete(ViewController<?> toAdd, ViewController<?> toRemove, CommandListener listener) {
|
|
194
194
|
toAdd.onViewDidAppear();
|
|
195
195
|
if (!peek().equals(toRemove)) getView().removeView(toRemove.getView());
|
|
196
196
|
listener.onSuccess(toAdd.getId());
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
private void addChildToStack(ViewController child, Options resolvedOptions) {
|
|
199
|
+
private void addChildToStack(ViewController<?> child, Options resolvedOptions) {
|
|
200
200
|
child.setWaitForRender(resolvedOptions.animations.push.waitForRender);
|
|
201
201
|
if (size() == 1) presenter.applyInitialChildLayoutOptions(resolvedOptions);
|
|
202
202
|
getView().addView(child.getView(), getView().getChildCount() - 1, matchParentWithBehaviour(new StackBehaviour(this)));
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
public void setRoot(@Size(min = 1) List<ViewController
|
|
205
|
+
public void setRoot(@Size(min = 1) List<ViewController<?>> children, CommandListener listener) {
|
|
206
206
|
if (!isViewCreated()) {
|
|
207
207
|
setChildren(children);
|
|
208
208
|
return;
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
animator.cancelPushAnimations();
|
|
212
|
-
final ViewController toRemove = stack.peek();
|
|
213
|
-
IdStack stackToDestroy = stack;
|
|
212
|
+
final ViewController<?> toRemove = stack.peek();
|
|
213
|
+
IdStack<?> stackToDestroy = stack;
|
|
214
214
|
stack = new IdStack<>();
|
|
215
215
|
|
|
216
|
-
ViewController child = requireLast(children);
|
|
216
|
+
ViewController<?> child = requireLast(children);
|
|
217
217
|
if (children.size() == 1) {
|
|
218
218
|
backButtonHelper.clear(child);
|
|
219
219
|
} else {
|
|
@@ -270,9 +270,9 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
270
270
|
}
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
-
private void setChildren(List<ViewController
|
|
273
|
+
private void setChildren(List<ViewController<?>> children) {
|
|
274
274
|
stack.clear();
|
|
275
|
-
for (ViewController child : children) {
|
|
275
|
+
for (ViewController<?> child : children) {
|
|
276
276
|
if (stack.containsId(child.getId())) {
|
|
277
277
|
throw new IllegalArgumentException("A stack can't contain two children with the same id: " + child.getId());
|
|
278
278
|
}
|
|
@@ -282,10 +282,10 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
private void destroyStack(IdStack stack) {
|
|
285
|
+
private void destroyStack(IdStack<?> stack) {
|
|
286
286
|
animator.cancelAllAnimations();
|
|
287
287
|
for (String s : (Iterable<String>) stack) {
|
|
288
|
-
((ViewController) stack.get(s)).destroy();
|
|
288
|
+
((ViewController<?>) stack.get(s)).destroy();
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
291
|
|
|
@@ -298,9 +298,9 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
298
298
|
peek().mergeOptions(mergeOptions);
|
|
299
299
|
Options disappearingOptions = resolveCurrentOptions(presenter.getDefaultOptions());
|
|
300
300
|
|
|
301
|
-
final ViewController disappearing = stack.pop();
|
|
301
|
+
final ViewController<?> disappearing = stack.pop();
|
|
302
302
|
if (!isViewCreated()) return;
|
|
303
|
-
final ViewController appearing = stack.peek();
|
|
303
|
+
final ViewController<?> appearing = stack.peek();
|
|
304
304
|
|
|
305
305
|
disappearing.onViewWillDisappear();
|
|
306
306
|
|
|
@@ -325,14 +325,14 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
327
|
|
|
328
|
-
private void finishPopping(ViewController appearing, ViewController disappearing, CommandListener listener) {
|
|
328
|
+
private void finishPopping(ViewController<?> appearing, ViewController<?> disappearing, CommandListener listener) {
|
|
329
329
|
appearing.onViewDidAppear();
|
|
330
330
|
disappearing.destroy();
|
|
331
331
|
listener.onSuccess(disappearing.getId());
|
|
332
332
|
eventEmitter.emitScreenPoppedEvent(disappearing.getId());
|
|
333
333
|
}
|
|
334
334
|
|
|
335
|
-
public void popTo(ViewController viewController, Options mergeOptions, CommandListener listener) {
|
|
335
|
+
public void popTo(ViewController<?> viewController, Options mergeOptions, CommandListener listener) {
|
|
336
336
|
if (!stack.containsId(viewController.getId()) || peek().equals(viewController)) {
|
|
337
337
|
listener.onError("Nothing to pop");
|
|
338
338
|
return;
|
|
@@ -346,7 +346,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
346
346
|
break;
|
|
347
347
|
}
|
|
348
348
|
|
|
349
|
-
ViewController controller = stack.get(currentControlId);
|
|
349
|
+
ViewController<?> controller = stack.get(currentControlId);
|
|
350
350
|
stack.remove(controller.getId());
|
|
351
351
|
controller.destroy();
|
|
352
352
|
}
|
|
@@ -364,7 +364,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
364
364
|
Iterator<String> iterator = stack.iterator();
|
|
365
365
|
iterator.next();
|
|
366
366
|
while (stack.size() > 2) {
|
|
367
|
-
ViewController controller = stack.get(iterator.next());
|
|
367
|
+
ViewController<?> controller = stack.get(iterator.next());
|
|
368
368
|
if (!stack.isTop(controller.getId())) {
|
|
369
369
|
stack.remove(iterator, controller.getId());
|
|
370
370
|
controller.destroy();
|
|
@@ -374,7 +374,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
374
374
|
pop(mergeOptions, listener);
|
|
375
375
|
}
|
|
376
376
|
|
|
377
|
-
ViewController peek() {
|
|
377
|
+
ViewController<?> peek() {
|
|
378
378
|
return stack.peek();
|
|
379
379
|
}
|
|
380
380
|
|
|
@@ -386,7 +386,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
386
386
|
return stack.isEmpty();
|
|
387
387
|
}
|
|
388
388
|
|
|
389
|
-
public boolean isChildInTransition(ViewController child) {
|
|
389
|
+
public boolean isChildInTransition(ViewController<?> child) {
|
|
390
390
|
return animator.isChildInTransition(child);
|
|
391
391
|
}
|
|
392
392
|
|
|
@@ -419,7 +419,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
419
419
|
|
|
420
420
|
private void addInitialChild(StackLayout stackLayout) {
|
|
421
421
|
if (isEmpty()) return;
|
|
422
|
-
ViewController childController = peek();
|
|
422
|
+
ViewController<?> childController = peek();
|
|
423
423
|
ViewGroup child = childController.getView();
|
|
424
424
|
child.setId(CompatUtils.generateViewId());
|
|
425
425
|
childController.addOnAppearedListener(this::startChildrenBellowTopChild);
|
|
@@ -428,7 +428,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
428
428
|
}
|
|
429
429
|
|
|
430
430
|
private void startChildrenBellowTopChild() {
|
|
431
|
-
ArrayList<ViewController
|
|
431
|
+
ArrayList<ViewController<?>> children = new ArrayList<>(getChildControllers());
|
|
432
432
|
for (int i = children.size() - 2; i >= 0; i--) {
|
|
433
433
|
children.get(i).start();
|
|
434
434
|
}
|
|
@@ -448,7 +448,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
448
448
|
|
|
449
449
|
@NonNull
|
|
450
450
|
@Override
|
|
451
|
-
public Collection<ViewController
|
|
451
|
+
public Collection<ViewController<?>> getChildControllers() {
|
|
452
452
|
return stack.values();
|
|
453
453
|
}
|
|
454
454
|
|
|
@@ -473,7 +473,7 @@ public class StackController extends ParentController<StackLayout> {
|
|
|
473
473
|
}
|
|
474
474
|
|
|
475
475
|
@Override
|
|
476
|
-
public int getTopInset(ViewController child) {
|
|
476
|
+
public int getTopInset(ViewController<?> child) {
|
|
477
477
|
return presenter.getTopInset(resolveChildOptions(child));
|
|
478
478
|
}
|
|
479
479
|
|
|
@@ -24,7 +24,7 @@ public class StackControllerBuilder {
|
|
|
24
24
|
private BackButtonHelper backButtonHelper = new BackButtonHelper();
|
|
25
25
|
private Presenter presenter;
|
|
26
26
|
private StackPresenter stackPresenter;
|
|
27
|
-
private List<ViewController
|
|
27
|
+
private List<ViewController<?>> children = new ArrayList<>();
|
|
28
28
|
private EventEmitter eventEmitter;
|
|
29
29
|
private FabPresenter fabPresenter = new FabPresenter();
|
|
30
30
|
|
|
@@ -40,11 +40,11 @@ public class StackControllerBuilder {
|
|
|
40
40
|
return this;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
public StackControllerBuilder setChildren(ViewController
|
|
43
|
+
public StackControllerBuilder setChildren(ViewController<?>... children) {
|
|
44
44
|
return setChildren(Arrays.asList(children));
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
public StackControllerBuilder setChildren(List<ViewController
|
|
47
|
+
public StackControllerBuilder setChildren(List<ViewController<?>> children) {
|
|
48
48
|
this.children = children;
|
|
49
49
|
return this;
|
|
50
50
|
}
|