react-native-screens 4.0.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/cpp/jni-adapter.cpp +3 -0
- package/android/src/main/java/com/swmansion/rnscreens/InsetsObserverProxy.kt +5 -6
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +8 -6
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFooter.kt +16 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +0 -1
- package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +0 -24
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenComponentDescriptor.h +1 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenShadowNode.cpp +1 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigComponentDescriptor.h +5 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.cpp +14 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.h +8 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.cpp +12 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigState.h +9 -2
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewComponentDescriptor.h +1 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.cpp +1 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.h +0 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.cpp +1 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewState.h +1 -2
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.cpp +1 -1
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +2 -2
- package/ios/RNSConvert.h +0 -2
- package/ios/RNSConvert.mm +82 -68
- package/ios/RNSFullWindowOverlay.mm +4 -0
- package/ios/RNSScreen.mm +5 -0
- package/ios/RNSScreenContainer.mm +5 -0
- package/ios/RNSScreenFooter.mm +24 -25
- package/ios/RNSScreenStack.mm +9 -11
- package/ios/RNSScreenStackHeaderConfig.h +9 -6
- package/ios/RNSScreenStackHeaderConfig.mm +70 -29
- package/ios/RNSScreenStackHeaderSubview.h +0 -7
- package/ios/RNSScreenStackHeaderSubview.mm +6 -24
- package/ios/events/RNSHeaderHeightChangeEvent.h +0 -1
- package/ios/events/RNSScreenViewEvent.h +0 -1
- package/ios/utils/RNSDefines.h +7 -0
- package/lib/commonjs/components/ScreenFooter.js +9 -0
- package/lib/commonjs/components/ScreenFooter.js.map +1 -1
- package/lib/commonjs/components/ScreenStackItem.js +4 -1
- package/lib/commonjs/components/ScreenStackItem.js.map +1 -1
- package/lib/module/components/ScreenFooter.js +8 -0
- package/lib/module/components/ScreenFooter.js.map +1 -1
- package/lib/module/components/ScreenStackItem.js +4 -1
- package/lib/module/components/ScreenStackItem.js.map +1 -1
- package/lib/typescript/components/ScreenFooter.d.ts +4 -0
- package/lib/typescript/components/ScreenFooter.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStackItem.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/ScreenFooter.tsx +8 -0
- package/src/components/ScreenStackItem.tsx +7 -0
|
@@ -23,10 +23,7 @@ object InsetsObserverProxy : OnApplyWindowInsetsListener {
|
|
|
23
23
|
): WindowInsetsCompat {
|
|
24
24
|
var rollingInsets =
|
|
25
25
|
if (shouldForwardInsetsToView) {
|
|
26
|
-
|
|
27
|
-
v.onApplyWindowInsets(insets.toWindowInsets()),
|
|
28
|
-
v,
|
|
29
|
-
)
|
|
26
|
+
ViewCompat.onApplyWindowInsets(v, insets)
|
|
30
27
|
} else {
|
|
31
28
|
insets
|
|
32
29
|
}
|
|
@@ -57,8 +54,10 @@ object InsetsObserverProxy : OnApplyWindowInsetsListener {
|
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
|
|
60
|
-
fun
|
|
61
|
-
|
|
57
|
+
fun unregister() {
|
|
58
|
+
getObservedView()?.takeIf { hasBeenRegistered }?.let {
|
|
59
|
+
ViewCompat.setOnApplyWindowInsetsListener(it, null)
|
|
60
|
+
}
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
private fun getObservedView(): View? = eventSourceView.get()
|
|
@@ -20,13 +20,14 @@ import com.facebook.react.uimanager.PixelUtil
|
|
|
20
20
|
import com.facebook.react.uimanager.UIManagerHelper
|
|
21
21
|
import com.facebook.react.uimanager.UIManagerModule
|
|
22
22
|
import com.facebook.react.uimanager.events.EventDispatcher
|
|
23
|
+
import com.facebook.react.views.scroll.ReactHorizontalScrollView
|
|
24
|
+
import com.facebook.react.views.scroll.ReactScrollView
|
|
23
25
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
|
24
26
|
import com.google.android.material.shape.CornerFamily
|
|
25
27
|
import com.google.android.material.shape.MaterialShapeDrawable
|
|
26
28
|
import com.google.android.material.shape.ShapeAppearanceModel
|
|
27
29
|
import com.swmansion.rnscreens.events.HeaderHeightChangeEvent
|
|
28
30
|
import com.swmansion.rnscreens.events.SheetDetentChangedEvent
|
|
29
|
-
import com.swmansion.rnscreens.ext.isInsideScrollViewWithRemoveClippedSubviews
|
|
30
31
|
import java.lang.ref.WeakReference
|
|
31
32
|
|
|
32
33
|
@SuppressLint("ViewConstructor") // Only we construct this view, it is never inflated.
|
|
@@ -399,11 +400,12 @@ class Screen(
|
|
|
399
400
|
startTransitionRecursive(child.toolbar)
|
|
400
401
|
}
|
|
401
402
|
if (child is ViewGroup) {
|
|
402
|
-
// The children are miscounted when there's
|
|
403
|
-
//
|
|
404
|
-
//
|
|
405
|
-
//
|
|
406
|
-
|
|
403
|
+
// The children are miscounted when there's removeClippedSubviews prop
|
|
404
|
+
// set to true (which is the default for FlatLists).
|
|
405
|
+
// Unless the child is a ScrollView it's safe to assume that it's true
|
|
406
|
+
// and add a simple view for each possibly clipped item to make it work as expected.
|
|
407
|
+
// See https://github.com/software-mansion/react-native-screens/pull/2495
|
|
408
|
+
if (child !is ReactScrollView && child !is ReactHorizontalScrollView) {
|
|
407
409
|
for (j in 0 until child.childCount) {
|
|
408
410
|
child.addView(View(context))
|
|
409
411
|
}
|
|
@@ -35,6 +35,7 @@ class ScreenFooter(
|
|
|
35
35
|
private val sheetBehavior
|
|
36
36
|
get() = requireScreenParent().sheetBehavior
|
|
37
37
|
|
|
38
|
+
private val hasReceivedInitialLayoutFromParent get() = lastContainerHeight > 0
|
|
38
39
|
|
|
39
40
|
// Due to Android restrictions on layout flow, particularly
|
|
40
41
|
// the fact that onMeasure must set `measuredHeight` & `measuredWidth` React calls `measure` on every
|
|
@@ -92,9 +93,10 @@ class ScreenFooter(
|
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
init {
|
|
95
|
-
val rootView =
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
val rootView =
|
|
97
|
+
checkNotNull(reactContext.currentActivity) {
|
|
98
|
+
"[RNScreens] Context detached from activity while creating ScreenFooter"
|
|
99
|
+
}.window.decorView
|
|
98
100
|
|
|
99
101
|
// Note that we do override insets animation on given view. I can see it interfering e.g.
|
|
100
102
|
// with reanimated keyboard or even other places in our code. Need to test this.
|
|
@@ -115,6 +117,9 @@ class ScreenFooter(
|
|
|
115
117
|
bottom: Int,
|
|
116
118
|
) {
|
|
117
119
|
super.onLayout(changed, left, top, right, bottom)
|
|
120
|
+
if (!hasReceivedInitialLayoutFromParent) {
|
|
121
|
+
return
|
|
122
|
+
}
|
|
118
123
|
layoutFooterOnYAxis(
|
|
119
124
|
lastContainerHeight,
|
|
120
125
|
bottom - top,
|
|
@@ -219,11 +224,18 @@ class ScreenFooter(
|
|
|
219
224
|
*
|
|
220
225
|
* This method should not be used for sheet in stable state.
|
|
221
226
|
*
|
|
227
|
+
* Currently the implementation assumes that the Screen's (sheet's) container starts at y: 0
|
|
228
|
+
* in global coordinates. Then we can use simply sheet's top. If that is for some reason
|
|
229
|
+
* unavailable, then we fallback to interpolation basing on values provided by sheet behaviour.
|
|
230
|
+
*
|
|
231
|
+
* We don't want to primarily rely on interpolation, because due to division rounding errors the footer
|
|
232
|
+
* will "flicker" (jump up / down a single pixel).
|
|
233
|
+
*
|
|
222
234
|
* @param slideOffset sheet offset as reported by [BottomSheetCallback.onSlide]
|
|
223
235
|
* @return position of sheet's top **relative to container**
|
|
224
236
|
*/
|
|
225
237
|
private fun sheetTopWhileDragging(slideOffset: Float): Int =
|
|
226
|
-
MathUtils
|
|
238
|
+
screenParent?.top ?: MathUtils
|
|
227
239
|
.lerp(
|
|
228
240
|
sheetTopInStableState(STATE_COLLAPSED).toFloat(),
|
|
229
241
|
sheetTopInStableState(
|
|
@@ -163,7 +163,6 @@ object ScreenWindowTraits {
|
|
|
163
163
|
InsetsObserverProxy.registerOnView(decorView)
|
|
164
164
|
InsetsObserverProxy.addOnApplyWindowInsetsListener(windowInsetsListener)
|
|
165
165
|
} else {
|
|
166
|
-
InsetsObserverProxy.unregisterOnView(decorView)
|
|
167
166
|
InsetsObserverProxy.removeOnApplyWindowInsetsListener(windowInsetsListener)
|
|
168
167
|
}
|
|
169
168
|
ViewCompat.requestApplyInsets(decorView)
|
|
@@ -3,9 +3,6 @@ package com.swmansion.rnscreens.ext
|
|
|
3
3
|
import android.graphics.drawable.ColorDrawable
|
|
4
4
|
import android.view.View
|
|
5
5
|
import android.view.ViewGroup
|
|
6
|
-
import com.facebook.react.views.scroll.ReactHorizontalScrollView
|
|
7
|
-
import com.facebook.react.views.scroll.ReactScrollView
|
|
8
|
-
import com.swmansion.rnscreens.ScreenStack
|
|
9
6
|
|
|
10
7
|
internal fun View.parentAsView() = this.parent as? View
|
|
11
8
|
|
|
@@ -33,24 +30,3 @@ internal fun View.maybeBgColor(): Int? {
|
|
|
33
30
|
}
|
|
34
31
|
return null
|
|
35
32
|
}
|
|
36
|
-
|
|
37
|
-
internal fun View.isInsideScrollViewWithRemoveClippedSubviews(): Boolean {
|
|
38
|
-
if (this is ReactHorizontalScrollView || this is ReactScrollView) {
|
|
39
|
-
return false
|
|
40
|
-
}
|
|
41
|
-
var parentView = this.parent
|
|
42
|
-
while (parentView is ViewGroup && parentView !is ScreenStack) {
|
|
43
|
-
when (parentView) {
|
|
44
|
-
is ReactHorizontalScrollView -> {
|
|
45
|
-
return parentView.removeClippedSubviews
|
|
46
|
-
}
|
|
47
|
-
is ReactScrollView -> {
|
|
48
|
-
return parentView.removeClippedSubviews
|
|
49
|
-
}
|
|
50
|
-
else -> {
|
|
51
|
-
parentView = parentView.parent
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return false
|
|
56
|
-
}
|
|
@@ -26,10 +26,10 @@ findHeaderConfigChild(const YogaLayoutableShadowNode &screenShadowNode) {
|
|
|
26
26
|
return {};
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
#ifdef ANDROID
|
|
29
30
|
static constexpr const char *kScreenDummyLayoutHelperClass =
|
|
30
31
|
"com/swmansion/rnscreens/utils/ScreenDummyLayoutHelper";
|
|
31
32
|
|
|
32
|
-
#ifdef ANDROID
|
|
33
33
|
std::optional<float> findHeaderHeight(
|
|
34
34
|
const int fontSize,
|
|
35
35
|
const bool isTitleEmpty) {
|
|
@@ -38,6 +38,11 @@ class RNSScreenStackHeaderConfigComponentDescriptor final
|
|
|
38
38
|
{stateData.getPaddingStart(), 0, stateData.getPaddingEnd(), 0});
|
|
39
39
|
|
|
40
40
|
ConcreteComponentDescriptor::adopt(shadowNode);
|
|
41
|
+
#if !defined(ANDROID) && !defined(NDEBUG)
|
|
42
|
+
std::weak_ptr<void> imageLoader =
|
|
43
|
+
contextContainer_->at<std::shared_ptr<void>>("RCTImageLoader");
|
|
44
|
+
configShadowNode.setImageLoader(imageLoader);
|
|
45
|
+
#endif // !ANDROID && !NDEBUG
|
|
41
46
|
}
|
|
42
47
|
};
|
|
43
48
|
|
package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.cpp
CHANGED
|
@@ -5,4 +5,18 @@ namespace facebook::react {
|
|
|
5
5
|
extern const char RNSScreenStackHeaderConfigComponentName[] =
|
|
6
6
|
"RNSScreenStackHeaderConfig";
|
|
7
7
|
|
|
8
|
+
#if !defined(ANDROID) && !defined(NDEBUG)
|
|
9
|
+
void RNSScreenStackHeaderConfigShadowNode::setImageLoader(
|
|
10
|
+
std::weak_ptr<void> imageLoader) {
|
|
11
|
+
getStateDataMutable().setImageLoader(imageLoader);
|
|
8
12
|
}
|
|
13
|
+
RNSScreenStackHeaderConfigShadowNode::StateData &
|
|
14
|
+
RNSScreenStackHeaderConfigShadowNode::getStateDataMutable() {
|
|
15
|
+
// We assume that this method is called to mutate the data, so we ensure
|
|
16
|
+
// we're unsealed.
|
|
17
|
+
ensureUnsealed();
|
|
18
|
+
return const_cast<RNSScreenStackHeaderConfigShadowNode::StateData &>(
|
|
19
|
+
getStateData());
|
|
20
|
+
}
|
|
21
|
+
#endif // !ANDROID && !NDEBUG
|
|
22
|
+
} // namespace facebook::react
|
package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderConfigShadowNode.h
CHANGED
|
@@ -27,6 +27,14 @@ class JSI_EXPORT RNSScreenStackHeaderConfigShadowNode final
|
|
|
27
27
|
#pragma mark - ShadowNode overrides
|
|
28
28
|
|
|
29
29
|
#pragma mark - Custom interface
|
|
30
|
+
#if !defined(ANDROID) && !defined(NDEBUG)
|
|
31
|
+
void setImageLoader(std::weak_ptr<void> imageLoader);
|
|
32
|
+
#endif // !ANDROID && !NDEBUG
|
|
33
|
+
|
|
34
|
+
private:
|
|
35
|
+
#if !defined(ANDROID) && !defined(NDEBUG)
|
|
36
|
+
StateData &getStateDataMutable();
|
|
37
|
+
#endif // !ANDROID && !NDEBUG
|
|
30
38
|
};
|
|
31
39
|
|
|
32
40
|
} // namespace facebook::react
|
|
@@ -8,8 +8,19 @@ folly::dynamic RNSScreenStackHeaderConfigState::getDynamic() const {
|
|
|
8
8
|
return folly::dynamic::object("paddingStart", paddingStart_)(
|
|
9
9
|
"paddingEnd_", paddingEnd_);
|
|
10
10
|
}
|
|
11
|
+
#else // ANDROID
|
|
12
|
+
#ifndef NDEBUG
|
|
13
|
+
void RNSScreenStackHeaderConfigState::setImageLoader(
|
|
14
|
+
std::weak_ptr<void> imageLoader) {
|
|
15
|
+
imageLoader_ = imageLoader;
|
|
16
|
+
}
|
|
11
17
|
|
|
12
|
-
|
|
18
|
+
std::weak_ptr<void> RNSScreenStackHeaderConfigState::getImageLoader()
|
|
19
|
+
const noexcept {
|
|
20
|
+
return imageLoader_;
|
|
21
|
+
}
|
|
22
|
+
#endif // !NDEBUG
|
|
23
|
+
#endif // ANDROID
|
|
13
24
|
|
|
14
25
|
Float RNSScreenStackHeaderConfigState::getPaddingStart() const noexcept {
|
|
15
26
|
return paddingStart_;
|
|
@@ -33,8 +33,12 @@ class JSI_EXPORT RNSScreenStackHeaderConfigState final {
|
|
|
33
33
|
MapBuffer getMapBuffer() const {
|
|
34
34
|
return MapBufferBuilder::EMPTY();
|
|
35
35
|
};
|
|
36
|
-
|
|
37
|
-
#
|
|
36
|
+
#else // ANDROID
|
|
37
|
+
#ifndef NDEBUG
|
|
38
|
+
void setImageLoader(std::weak_ptr<void> imageLoader);
|
|
39
|
+
std::weak_ptr<void> getImageLoader() const noexcept;
|
|
40
|
+
#endif // !NDEBUG
|
|
41
|
+
#endif // ANDROID
|
|
38
42
|
|
|
39
43
|
#pragma mark - Getters
|
|
40
44
|
|
|
@@ -45,6 +49,9 @@ class JSI_EXPORT RNSScreenStackHeaderConfigState final {
|
|
|
45
49
|
private:
|
|
46
50
|
Float paddingStart_{0.f};
|
|
47
51
|
Float paddingEnd_{0.f};
|
|
52
|
+
#if !defined(ANDROID) && !defined(NDEBUG)
|
|
53
|
+
std::weak_ptr<void> imageLoader_;
|
|
54
|
+
#endif // !ANDROID && !NDEBUG
|
|
48
55
|
};
|
|
49
56
|
|
|
50
57
|
} // namespace facebook::react
|
package/common/cpp/react/renderer/components/rnscreens/RNSScreenStackHeaderSubviewShadowNode.h
CHANGED
|
@@ -23,7 +23,6 @@ class JSI_EXPORT RNSScreenStackHeaderSubviewShadowNode final
|
|
|
23
23
|
public:
|
|
24
24
|
using ConcreteViewShadowNode::ConcreteViewShadowNode;
|
|
25
25
|
using StateData = ConcreteViewShadowNode::ConcreteStateData;
|
|
26
|
-
|
|
27
26
|
#pragma mark - ShadowNode overrides
|
|
28
27
|
|
|
29
28
|
#pragma mark - Custom interface
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
#include <folly/dynamic.h>
|
|
8
8
|
#include <react/renderer/mapbuffer/MapBuffer.h>
|
|
9
9
|
#include <react/renderer/mapbuffer/MapBufferBuilder.h>
|
|
10
|
-
#endif
|
|
10
|
+
#endif // ANDROID
|
|
11
11
|
|
|
12
12
|
#include "FrameCorrectionModes.h"
|
|
13
13
|
|
|
@@ -53,7 +53,7 @@ class JSI_EXPORT RNSScreenState final {
|
|
|
53
53
|
|
|
54
54
|
const FrameCorrectionModes &getHeaderCorrectionModes() const noexcept;
|
|
55
55
|
|
|
56
|
-
#endif
|
|
56
|
+
#endif // ANDROID
|
|
57
57
|
|
|
58
58
|
private:
|
|
59
59
|
#ifdef ANDROID
|
package/ios/RNSConvert.h
CHANGED
|
@@ -43,8 +43,6 @@ namespace react = facebook::react;
|
|
|
43
43
|
|
|
44
44
|
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement;
|
|
45
45
|
|
|
46
|
-
+ (NSMutableArray<NSNumber *> *)NSNumberMutableArrayFromFloatVector:(const std::vector<CGFloat> &)vector;
|
|
47
|
-
|
|
48
46
|
+ (NSMutableArray<NSNumber *> *)arrayFromVector:(const std::vector<CGFloat> &)vector;
|
|
49
47
|
|
|
50
48
|
+ (RNSBlurEffectStyle)RNSBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect;
|
package/ios/RNSConvert.mm
CHANGED
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
(react::RNSScreenStackHeaderConfigDirection)direction
|
|
12
12
|
{
|
|
13
13
|
switch (direction) {
|
|
14
|
-
|
|
14
|
+
using enum react::RNSScreenStackHeaderConfigDirection;
|
|
15
|
+
|
|
16
|
+
case Rtl:
|
|
15
17
|
return UISemanticContentAttributeForceRightToLeft;
|
|
16
|
-
case
|
|
18
|
+
case Ltr:
|
|
17
19
|
return UISemanticContentAttributeForceLeftToRight;
|
|
18
20
|
}
|
|
19
21
|
}
|
|
@@ -22,11 +24,13 @@
|
|
|
22
24
|
(react::RNSScreenStackHeaderConfigBackButtonDisplayMode)backButtonDisplayMode
|
|
23
25
|
{
|
|
24
26
|
switch (backButtonDisplayMode) {
|
|
25
|
-
|
|
27
|
+
using enum react::RNSScreenStackHeaderConfigBackButtonDisplayMode;
|
|
28
|
+
|
|
29
|
+
case Default:
|
|
26
30
|
return UINavigationItemBackButtonDisplayModeDefault;
|
|
27
|
-
case
|
|
31
|
+
case Generic:
|
|
28
32
|
return UINavigationItemBackButtonDisplayModeGeneric;
|
|
29
|
-
case
|
|
33
|
+
case Minimal:
|
|
30
34
|
return UINavigationItemBackButtonDisplayModeMinimal;
|
|
31
35
|
}
|
|
32
36
|
}
|
|
@@ -35,19 +39,21 @@
|
|
|
35
39
|
(react::RNSScreenStackPresentation)stackPresentation
|
|
36
40
|
{
|
|
37
41
|
switch (stackPresentation) {
|
|
38
|
-
|
|
42
|
+
using enum react::RNSScreenStackPresentation;
|
|
43
|
+
|
|
44
|
+
case Push:
|
|
39
45
|
return RNSScreenStackPresentationPush;
|
|
40
|
-
case
|
|
46
|
+
case Modal:
|
|
41
47
|
return RNSScreenStackPresentationModal;
|
|
42
|
-
case
|
|
48
|
+
case FullScreenModal:
|
|
43
49
|
return RNSScreenStackPresentationFullScreenModal;
|
|
44
|
-
case
|
|
50
|
+
case FormSheet:
|
|
45
51
|
return RNSScreenStackPresentationFormSheet;
|
|
46
|
-
case
|
|
52
|
+
case ContainedModal:
|
|
47
53
|
return RNSScreenStackPresentationContainedModal;
|
|
48
|
-
case
|
|
54
|
+
case TransparentModal:
|
|
49
55
|
return RNSScreenStackPresentationTransparentModal;
|
|
50
|
-
case
|
|
56
|
+
case ContainedTransparentModal:
|
|
51
57
|
return RNSScreenStackPresentationContainedTransparentModal;
|
|
52
58
|
}
|
|
53
59
|
}
|
|
@@ -55,26 +61,27 @@
|
|
|
55
61
|
+ (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:(react::RNSScreenStackAnimation)stackAnimation
|
|
56
62
|
{
|
|
57
63
|
switch (stackAnimation) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
case
|
|
61
|
-
case
|
|
64
|
+
using enum react::RNSScreenStackAnimation;
|
|
65
|
+
// these three are intentionally grouped
|
|
66
|
+
case Slide_from_right:
|
|
67
|
+
case Ios_from_right:
|
|
68
|
+
case Default:
|
|
62
69
|
return RNSScreenStackAnimationDefault;
|
|
63
70
|
// these two are intentionally grouped
|
|
64
|
-
case
|
|
65
|
-
case
|
|
71
|
+
case Slide_from_left:
|
|
72
|
+
case Ios_from_left:
|
|
66
73
|
return RNSScreenStackAnimationSlideFromLeft;
|
|
67
|
-
case
|
|
74
|
+
case Flip:
|
|
68
75
|
return RNSScreenStackAnimationFlip;
|
|
69
|
-
case
|
|
76
|
+
case Simple_push:
|
|
70
77
|
return RNSScreenStackAnimationSimplePush;
|
|
71
|
-
case
|
|
78
|
+
case None:
|
|
72
79
|
return RNSScreenStackAnimationNone;
|
|
73
|
-
case
|
|
80
|
+
case Fade:
|
|
74
81
|
return RNSScreenStackAnimationFade;
|
|
75
|
-
case
|
|
82
|
+
case Slide_from_bottom:
|
|
76
83
|
return RNSScreenStackAnimationSlideFromBottom;
|
|
77
|
-
case
|
|
84
|
+
case Fade_from_bottom:
|
|
78
85
|
return RNSScreenStackAnimationFadeFromBottom;
|
|
79
86
|
}
|
|
80
87
|
}
|
|
@@ -83,17 +90,19 @@
|
|
|
83
90
|
(react::RNSScreenStackHeaderSubviewType)subviewType
|
|
84
91
|
{
|
|
85
92
|
switch (subviewType) {
|
|
86
|
-
|
|
93
|
+
using enum react::RNSScreenStackHeaderSubviewType;
|
|
94
|
+
|
|
95
|
+
case Left:
|
|
87
96
|
return RNSScreenStackHeaderSubviewTypeLeft;
|
|
88
|
-
case
|
|
97
|
+
case Right:
|
|
89
98
|
return RNSScreenStackHeaderSubviewTypeRight;
|
|
90
|
-
case
|
|
99
|
+
case Title:
|
|
91
100
|
return RNSScreenStackHeaderSubviewTypeTitle;
|
|
92
|
-
case
|
|
101
|
+
case Center:
|
|
93
102
|
return RNSScreenStackHeaderSubviewTypeCenter;
|
|
94
|
-
case
|
|
103
|
+
case SearchBar:
|
|
95
104
|
return RNSScreenStackHeaderSubviewTypeSearchBar;
|
|
96
|
-
case
|
|
105
|
+
case Back:
|
|
97
106
|
return RNSScreenStackHeaderSubviewTypeBackButton;
|
|
98
107
|
}
|
|
99
108
|
}
|
|
@@ -102,9 +111,10 @@
|
|
|
102
111
|
(react::RNSScreenReplaceAnimation)replaceAnimation
|
|
103
112
|
{
|
|
104
113
|
switch (replaceAnimation) {
|
|
105
|
-
|
|
114
|
+
using enum react::RNSScreenReplaceAnimation;
|
|
115
|
+
case Pop:
|
|
106
116
|
return RNSScreenReplaceAnimationPop;
|
|
107
|
-
case
|
|
117
|
+
case Push:
|
|
108
118
|
return RNSScreenReplaceAnimationPush;
|
|
109
119
|
}
|
|
110
120
|
}
|
|
@@ -112,9 +122,10 @@
|
|
|
112
122
|
+ (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:(react::RNSScreenSwipeDirection)swipeDirection
|
|
113
123
|
{
|
|
114
124
|
switch (swipeDirection) {
|
|
115
|
-
|
|
125
|
+
using enum react::RNSScreenSwipeDirection;
|
|
126
|
+
case Horizontal:
|
|
116
127
|
return RNSScreenSwipeDirectionHorizontal;
|
|
117
|
-
case
|
|
128
|
+
case Vertical:
|
|
118
129
|
return RNSScreenSwipeDirectionVertical;
|
|
119
130
|
}
|
|
120
131
|
}
|
|
@@ -144,13 +155,14 @@
|
|
|
144
155
|
(react::RNSSearchBarAutoCapitalize)autoCapitalize
|
|
145
156
|
{
|
|
146
157
|
switch (autoCapitalize) {
|
|
147
|
-
|
|
158
|
+
using enum react::RNSSearchBarAutoCapitalize;
|
|
159
|
+
case Words:
|
|
148
160
|
return UITextAutocapitalizationTypeWords;
|
|
149
|
-
case
|
|
161
|
+
case Sentences:
|
|
150
162
|
return UITextAutocapitalizationTypeSentences;
|
|
151
|
-
case
|
|
163
|
+
case Characters:
|
|
152
164
|
return UITextAutocapitalizationTypeAllCharacters;
|
|
153
|
-
case
|
|
165
|
+
case None:
|
|
154
166
|
return UITextAutocapitalizationTypeNone;
|
|
155
167
|
}
|
|
156
168
|
}
|
|
@@ -159,11 +171,12 @@
|
|
|
159
171
|
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement
|
|
160
172
|
{
|
|
161
173
|
switch (placement) {
|
|
162
|
-
|
|
174
|
+
using enum react::RNSSearchBarPlacement;
|
|
175
|
+
case Stacked:
|
|
163
176
|
return RNSSearchBarPlacementStacked;
|
|
164
|
-
case
|
|
177
|
+
case Automatic:
|
|
165
178
|
return RNSSearchBarPlacementAutomatic;
|
|
166
|
-
case
|
|
179
|
+
case Inline:
|
|
167
180
|
return RNSSearchBarPlacementInline;
|
|
168
181
|
}
|
|
169
182
|
}
|
|
@@ -179,68 +192,69 @@
|
|
|
179
192
|
|
|
180
193
|
+ (RNSBlurEffectStyle)RNSBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect
|
|
181
194
|
{
|
|
195
|
+
using enum react::RNSScreenStackHeaderConfigBlurEffect;
|
|
182
196
|
#if !TARGET_OS_TV && defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
|
|
183
197
|
__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_13_0
|
|
184
198
|
if (@available(iOS 13.0, *)) {
|
|
185
199
|
switch (blurEffect) {
|
|
186
|
-
case
|
|
200
|
+
case None:
|
|
187
201
|
return RNSBlurEffectStyleNone;
|
|
188
|
-
case
|
|
202
|
+
case ExtraLight:
|
|
189
203
|
return RNSBlurEffectStyleExtraLight;
|
|
190
|
-
case
|
|
204
|
+
case Light:
|
|
191
205
|
return RNSBlurEffectStyleLight;
|
|
192
|
-
case
|
|
206
|
+
case Dark:
|
|
193
207
|
return RNSBlurEffectStyleDark;
|
|
194
|
-
case
|
|
208
|
+
case Regular:
|
|
195
209
|
return RNSBlurEffectStyleRegular;
|
|
196
|
-
case
|
|
210
|
+
case Prominent:
|
|
197
211
|
return RNSBlurEffectStyleProminent;
|
|
198
|
-
case
|
|
212
|
+
case SystemUltraThinMaterial:
|
|
199
213
|
return RNSBlurEffectStyleSystemUltraThinMaterial;
|
|
200
|
-
case
|
|
214
|
+
case SystemThinMaterial:
|
|
201
215
|
return RNSBlurEffectStyleSystemThinMaterial;
|
|
202
|
-
case
|
|
216
|
+
case SystemMaterial:
|
|
203
217
|
return RNSBlurEffectStyleSystemMaterial;
|
|
204
|
-
case
|
|
218
|
+
case SystemThickMaterial:
|
|
205
219
|
return RNSBlurEffectStyleSystemThickMaterial;
|
|
206
|
-
case
|
|
220
|
+
case SystemChromeMaterial:
|
|
207
221
|
return RNSBlurEffectStyleSystemChromeMaterial;
|
|
208
|
-
case
|
|
222
|
+
case SystemUltraThinMaterialLight:
|
|
209
223
|
return RNSBlurEffectStyleSystemUltraThinMaterialLight;
|
|
210
|
-
case
|
|
224
|
+
case SystemThinMaterialLight:
|
|
211
225
|
return RNSBlurEffectStyleSystemThinMaterialLight;
|
|
212
|
-
case
|
|
226
|
+
case SystemMaterialLight:
|
|
213
227
|
return RNSBlurEffectStyleSystemMaterialLight;
|
|
214
|
-
case
|
|
228
|
+
case SystemThickMaterialLight:
|
|
215
229
|
return RNSBlurEffectStyleSystemThickMaterialLight;
|
|
216
|
-
case
|
|
230
|
+
case SystemChromeMaterialLight:
|
|
217
231
|
return RNSBlurEffectStyleSystemChromeMaterialLight;
|
|
218
|
-
case
|
|
232
|
+
case SystemUltraThinMaterialDark:
|
|
219
233
|
return RNSBlurEffectStyleSystemUltraThinMaterialDark;
|
|
220
|
-
case
|
|
234
|
+
case SystemThinMaterialDark:
|
|
221
235
|
return RNSBlurEffectStyleSystemThinMaterialDark;
|
|
222
|
-
case
|
|
236
|
+
case SystemMaterialDark:
|
|
223
237
|
return RNSBlurEffectStyleSystemMaterialDark;
|
|
224
|
-
case
|
|
238
|
+
case SystemThickMaterialDark:
|
|
225
239
|
return RNSBlurEffectStyleSystemThickMaterialDark;
|
|
226
|
-
case
|
|
240
|
+
case SystemChromeMaterialDark:
|
|
227
241
|
return RNSBlurEffectStyleSystemChromeMaterialDark;
|
|
228
242
|
}
|
|
229
243
|
}
|
|
230
244
|
#endif
|
|
231
245
|
|
|
232
246
|
switch (blurEffect) {
|
|
233
|
-
case
|
|
247
|
+
case None:
|
|
234
248
|
return RNSBlurEffectStyleNone;
|
|
235
|
-
case
|
|
249
|
+
case Light:
|
|
236
250
|
return RNSBlurEffectStyleLight;
|
|
237
|
-
case
|
|
251
|
+
case Dark:
|
|
238
252
|
return RNSBlurEffectStyleDark;
|
|
239
|
-
case
|
|
253
|
+
case Regular:
|
|
240
254
|
return RNSBlurEffectStyleRegular;
|
|
241
|
-
case
|
|
255
|
+
case Prominent:
|
|
242
256
|
return RNSBlurEffectStyleProminent;
|
|
243
|
-
case
|
|
257
|
+
case ExtraLight:
|
|
244
258
|
default:
|
|
245
259
|
return RNSBlurEffectStyleNone;
|
|
246
260
|
}
|