react-native-screens 3.35.0-rc.1 → 4.0.0-beta.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/build.gradle +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/InsetsObserverProxy.kt +67 -0
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -0
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +101 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapper.kt +38 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContentWrapperManager.kt +25 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFooter.kt +287 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFooterManager.kt +25 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +11 -19
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragmentWrapper.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenModalFragment.kt +281 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +62 -19
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +403 -41
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragmentWrapper.kt +4 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +2 -2
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +95 -11
- package/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +39 -28
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogRootView.kt +104 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/BottomSheetDialogScreen.kt +26 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingFragment.kt +488 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/DimmingView.kt +66 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/GestureTransparentViewGroup.kt +24 -0
- package/android/src/main/java/com/swmansion/rnscreens/bottomsheet/SheetUtils.kt +127 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/SheetDetentChangedEvent.kt +27 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/NumericExt.kt +12 -0
- package/android/src/main/java/com/swmansion/rnscreens/ext/ViewExt.kt +32 -0
- package/android/src/main/res/base/drawable/rns_rounder_top_corners_shape.xml +8 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerInterface.java +16 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java +16 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +9 -2
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +5 -2
- package/ios/RNSConvert.h +5 -3
- package/ios/RNSConvert.mm +14 -20
- package/ios/RNSScreen.h +3 -2
- package/ios/RNSScreen.mm +433 -49
- package/ios/RNSScreenContentWrapper.h +44 -0
- package/ios/RNSScreenContentWrapper.mm +61 -0
- package/ios/RNSScreenFooter.h +30 -0
- package/ios/RNSScreenFooter.mm +137 -0
- package/lib/commonjs/components/Screen.js +6 -2
- package/lib/commonjs/components/Screen.js.map +1 -1
- package/lib/commonjs/components/ScreenContentWrapper.js +19 -0
- package/lib/commonjs/components/ScreenContentWrapper.js.map +1 -0
- package/lib/commonjs/components/ScreenFooter.js +23 -0
- package/lib/commonjs/components/ScreenFooter.js.map +1 -0
- package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js +10 -0
- package/lib/commonjs/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenFooterNativeComponent.js +10 -0
- package/lib/commonjs/fabric/ScreenFooterNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/index.js +30 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native-stack/views/FooterComponent.js +18 -0
- package/lib/commonjs/native-stack/views/FooterComponent.js.map +1 -0
- package/lib/commonjs/native-stack/views/NativeStackView.js +59 -14
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/components/Screen.js +6 -2
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/ScreenContentWrapper.js +12 -0
- package/lib/module/components/ScreenContentWrapper.js.map +1 -0
- package/lib/module/components/ScreenFooter.js +17 -0
- package/lib/module/components/ScreenFooter.js.map +1 -0
- package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenContentWrapperNativeComponent.js +3 -0
- package/lib/module/fabric/ScreenContentWrapperNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenFooterNativeComponent.js +3 -0
- package/lib/module/fabric/ScreenFooterNativeComponent.js.map +1 -0
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/native-stack/views/FooterComponent.js +11 -0
- package/lib/module/native-stack/views/FooterComponent.js.map +1 -0
- package/lib/module/native-stack/views/NativeStackView.js +61 -15
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/typescript/components/Screen.d.ts.map +1 -1
- package/lib/typescript/components/ScreenContentWrapper.d.ts +6 -0
- package/lib/typescript/components/ScreenContentWrapper.d.ts.map +1 -0
- package/lib/typescript/components/ScreenFooter.d.ts +12 -0
- package/lib/typescript/components/ScreenFooter.d.ts.map +1 -0
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +2 -3
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts +7 -0
- package/lib/typescript/fabric/ScreenContentWrapperNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts +7 -0
- package/lib/typescript/fabric/ScreenFooterNativeComponent.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +9 -3
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/native-stack/types.d.ts +63 -23
- package/lib/typescript/native-stack/types.d.ts.map +1 -1
- package/lib/typescript/native-stack/views/FooterComponent.d.ts +7 -0
- package/lib/typescript/native-stack/views/FooterComponent.d.ts.map +1 -0
- package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +42 -17
- package/lib/typescript/types.d.ts.map +1 -1
- package/native-stack/README.md +16 -14
- package/package.json +1 -1
- package/react-native.config.js +18 -16
- package/src/components/Screen.tsx +6 -2
- package/src/components/ScreenContentWrapper.tsx +12 -0
- package/src/components/ScreenFooter.tsx +18 -0
- package/src/fabric/ModalScreenNativeComponent.ts +2 -4
- package/src/fabric/ScreenContentWrapperNativeComponent.ts +9 -0
- package/src/fabric/ScreenFooterNativeComponent.ts +6 -0
- package/src/fabric/ScreenNativeComponent.ts +10 -4
- package/src/index.tsx +10 -0
- package/src/native-stack/types.tsx +57 -23
- package/src/native-stack/views/FooterComponent.tsx +10 -0
- package/src/native-stack/views/NativeStackView.tsx +74 -11
- package/src/types.tsx +41 -16
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
package com.swmansion.rnscreens.events
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.WritableMap
|
|
5
|
+
import com.facebook.react.uimanager.events.Event
|
|
6
|
+
|
|
7
|
+
class SheetDetentChangedEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewId: Int,
|
|
10
|
+
val index: Int,
|
|
11
|
+
val isStable: Boolean,
|
|
12
|
+
) : Event<SheetDetentChangedEvent>(surfaceId, viewId) {
|
|
13
|
+
override fun getEventName() = EVENT_NAME
|
|
14
|
+
|
|
15
|
+
// All events for a given view can be coalesced.
|
|
16
|
+
override fun getCoalescingKey(): Short = 0
|
|
17
|
+
|
|
18
|
+
override fun getEventData(): WritableMap? =
|
|
19
|
+
Arguments.createMap().apply {
|
|
20
|
+
putInt("index", index)
|
|
21
|
+
putBoolean("isStable", isStable)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
companion object {
|
|
25
|
+
const val EVENT_NAME = "topSheetDetentChanged"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package com.swmansion.rnscreens.ext
|
|
2
|
+
|
|
3
|
+
import kotlin.math.abs
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 1e-4 should be a reasonable default value for graphic-related use cases.
|
|
7
|
+
* You should always make sure that it is feasible in your particular use case.
|
|
8
|
+
*/
|
|
9
|
+
internal fun Float.equalWithRespectToEps(
|
|
10
|
+
other: Float,
|
|
11
|
+
eps: Float = 1e-4F,
|
|
12
|
+
) = abs(this - other) <= eps
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
package com.swmansion.rnscreens.ext
|
|
2
|
+
|
|
3
|
+
import android.graphics.drawable.ColorDrawable
|
|
4
|
+
import android.view.View
|
|
5
|
+
import android.view.ViewGroup
|
|
6
|
+
|
|
7
|
+
internal fun View.parentAsView() = this.parent as? View
|
|
8
|
+
|
|
9
|
+
internal fun View.parentAsViewGroup() = this.parent as? ViewGroup
|
|
10
|
+
|
|
11
|
+
internal fun View.recycle(): View {
|
|
12
|
+
// screen fragments reuse view instances instead of creating new ones. In order to reuse a given
|
|
13
|
+
// view it needs to be detached from the view hierarchy to allow the fragment to attach it back.
|
|
14
|
+
this.parentAsViewGroup()?.let { parent ->
|
|
15
|
+
parent.endViewTransition(this)
|
|
16
|
+
parent.removeView(this)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// view detached from fragment manager get their visibility changed to GONE after their state is
|
|
20
|
+
// dumped. Since we don't restore the state but want to reuse the view we need to change
|
|
21
|
+
// visibility back to VISIBLE in order for the fragment manager to animate in the view.
|
|
22
|
+
this.visibility = View.VISIBLE
|
|
23
|
+
return this
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
internal fun View.maybeBgColor(): Int? {
|
|
27
|
+
val bgDrawable = this.background
|
|
28
|
+
if (bgDrawable is ColorDrawable) {
|
|
29
|
+
return bgDrawable.color
|
|
30
|
+
}
|
|
31
|
+
return null
|
|
32
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaDelegate.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
import com.facebook.react.uimanager.BaseViewManagerDelegate;
|
|
15
|
+
import com.facebook.react.uimanager.BaseViewManagerInterface;
|
|
16
|
+
|
|
17
|
+
public class RNSScreenContentWrapperManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & RNSScreenContentWrapperManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
|
|
18
|
+
public RNSScreenContentWrapperManagerDelegate(U viewManager) {
|
|
19
|
+
super(viewManager);
|
|
20
|
+
}
|
|
21
|
+
@Override
|
|
22
|
+
public void setProperty(T view, String propName, @Nullable Object value) {
|
|
23
|
+
super.setProperty(view, propName, value);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaInterface.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
|
|
14
|
+
public interface RNSScreenContentWrapperManagerInterface<T extends View> {
|
|
15
|
+
// No props
|
|
16
|
+
}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaDelegate.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
import androidx.annotation.Nullable;
|
|
14
|
+
import com.facebook.react.uimanager.BaseViewManagerDelegate;
|
|
15
|
+
import com.facebook.react.uimanager.BaseViewManagerInterface;
|
|
16
|
+
|
|
17
|
+
public class RNSScreenFooterManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & RNSScreenFooterManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
|
|
18
|
+
public RNSScreenFooterManagerDelegate(U viewManager) {
|
|
19
|
+
super(viewManager);
|
|
20
|
+
}
|
|
21
|
+
@Override
|
|
22
|
+
public void setProperty(T view, String propName, @Nullable Object value) {
|
|
23
|
+
super.setProperty(view, propName, value);
|
|
24
|
+
}
|
|
25
|
+
}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GeneratePropsJavaInterface.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
package com.facebook.react.viewmanagers;
|
|
11
|
+
|
|
12
|
+
import android.view.View;
|
|
13
|
+
|
|
14
|
+
public interface RNSScreenFooterManagerInterface<T extends View> {
|
|
15
|
+
// No props
|
|
16
|
+
}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java
CHANGED
|
@@ -12,6 +12,7 @@ package com.facebook.react.viewmanagers;
|
|
|
12
12
|
import android.view.View;
|
|
13
13
|
import androidx.annotation.Nullable;
|
|
14
14
|
import com.facebook.react.bridge.ColorPropConverter;
|
|
15
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
15
16
|
import com.facebook.react.bridge.ReadableMap;
|
|
16
17
|
import com.facebook.react.uimanager.BaseViewManagerDelegate;
|
|
17
18
|
import com.facebook.react.uimanager.BaseViewManagerInterface;
|
|
@@ -24,10 +25,10 @@ public class RNSScreenManagerDelegate<T extends View, U extends BaseViewManagerI
|
|
|
24
25
|
public void setProperty(T view, String propName, @Nullable Object value) {
|
|
25
26
|
switch (propName) {
|
|
26
27
|
case "sheetAllowedDetents":
|
|
27
|
-
mViewManager.setSheetAllowedDetents(view, (
|
|
28
|
+
mViewManager.setSheetAllowedDetents(view, (ReadableArray) value);
|
|
28
29
|
break;
|
|
29
30
|
case "sheetLargestUndimmedDetent":
|
|
30
|
-
mViewManager.setSheetLargestUndimmedDetent(view, (
|
|
31
|
+
mViewManager.setSheetLargestUndimmedDetent(view, value == null ? -1 : ((Double) value).intValue());
|
|
31
32
|
break;
|
|
32
33
|
case "sheetGrabberVisible":
|
|
33
34
|
mViewManager.setSheetGrabberVisible(view, value == null ? false : (boolean) value);
|
|
@@ -38,6 +39,12 @@ public class RNSScreenManagerDelegate<T extends View, U extends BaseViewManagerI
|
|
|
38
39
|
case "sheetExpandsWhenScrolledToEdge":
|
|
39
40
|
mViewManager.setSheetExpandsWhenScrolledToEdge(view, value == null ? false : (boolean) value);
|
|
40
41
|
break;
|
|
42
|
+
case "sheetInitialDetent":
|
|
43
|
+
mViewManager.setSheetInitialDetent(view, value == null ? 0 : ((Double) value).intValue());
|
|
44
|
+
break;
|
|
45
|
+
case "sheetElevation":
|
|
46
|
+
mViewManager.setSheetElevation(view, value == null ? 24 : ((Double) value).intValue());
|
|
47
|
+
break;
|
|
41
48
|
case "customAnimationOnSwipe":
|
|
42
49
|
mViewManager.setCustomAnimationOnSwipe(view, value == null ? false : (boolean) value);
|
|
43
50
|
break;
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java
CHANGED
|
@@ -11,14 +11,17 @@ package com.facebook.react.viewmanagers;
|
|
|
11
11
|
|
|
12
12
|
import android.view.View;
|
|
13
13
|
import androidx.annotation.Nullable;
|
|
14
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
14
15
|
import com.facebook.react.bridge.ReadableMap;
|
|
15
16
|
|
|
16
17
|
public interface RNSScreenManagerInterface<T extends View> {
|
|
17
|
-
void setSheetAllowedDetents(T view, @Nullable
|
|
18
|
-
void setSheetLargestUndimmedDetent(T view,
|
|
18
|
+
void setSheetAllowedDetents(T view, @Nullable ReadableArray value);
|
|
19
|
+
void setSheetLargestUndimmedDetent(T view, int value);
|
|
19
20
|
void setSheetGrabberVisible(T view, boolean value);
|
|
20
21
|
void setSheetCornerRadius(T view, float value);
|
|
21
22
|
void setSheetExpandsWhenScrolledToEdge(T view, boolean value);
|
|
23
|
+
void setSheetInitialDetent(T view, int value);
|
|
24
|
+
void setSheetElevation(T view, int value);
|
|
22
25
|
void setCustomAnimationOnSwipe(T view, boolean value);
|
|
23
26
|
void setFullScreenSwipeEnabled(T view, boolean value);
|
|
24
27
|
void setFullScreenSwipeShadowEnabled(T view, boolean value);
|
package/ios/RNSConvert.h
CHANGED
|
@@ -26,9 +26,7 @@ namespace react = facebook::react;
|
|
|
26
26
|
|
|
27
27
|
+ (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:(react::RNSScreenSwipeDirection)swipeDirection;
|
|
28
28
|
|
|
29
|
-
+ (
|
|
30
|
-
|
|
31
|
-
+ (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:(react::RNSScreenSheetLargestUndimmedDetent)detent;
|
|
29
|
+
+ (NSArray<NSNumber *> *)detentFractionsArrayFromVector:(const std::vector<react::Float> &)detents;
|
|
32
30
|
|
|
33
31
|
+ (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
|
|
34
32
|
(const react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance;
|
|
@@ -40,6 +38,10 @@ namespace react = facebook::react;
|
|
|
40
38
|
|
|
41
39
|
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement;
|
|
42
40
|
|
|
41
|
+
+ (NSMutableArray<NSNumber *> *)NSNumberMutableArrayFromFloatVector:(const std::vector<CGFloat> &)vector;
|
|
42
|
+
|
|
43
|
+
+ (NSMutableArray<NSNumber *> *)arrayFromVector:(const std::vector<CGFloat> &)vector;
|
|
44
|
+
|
|
43
45
|
+ (UIBlurEffectStyle)UIBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect;
|
|
44
46
|
|
|
45
47
|
@end
|
package/ios/RNSConvert.mm
CHANGED
|
@@ -113,28 +113,13 @@
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
+ (
|
|
116
|
+
+ (NSArray<NSNumber *> *)detentFractionsArrayFromVector:(const std::vector<react::Float> &)detents
|
|
117
117
|
{
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
case react::RNSScreenSheetAllowedDetents::Large:
|
|
122
|
-
return RNSScreenDetentTypeLarge;
|
|
123
|
-
case react::RNSScreenSheetAllowedDetents::Medium:
|
|
124
|
-
return RNSScreenDetentTypeMedium;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
+ (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:(react::RNSScreenSheetLargestUndimmedDetent)detent
|
|
129
|
-
{
|
|
130
|
-
switch (detent) {
|
|
131
|
-
case react::RNSScreenSheetLargestUndimmedDetent::All:
|
|
132
|
-
return RNSScreenDetentTypeAll;
|
|
133
|
-
case react::RNSScreenSheetLargestUndimmedDetent::Large:
|
|
134
|
-
return RNSScreenDetentTypeLarge;
|
|
135
|
-
case react::RNSScreenSheetLargestUndimmedDetent::Medium:
|
|
136
|
-
return RNSScreenDetentTypeMedium;
|
|
118
|
+
auto array = [NSMutableArray<NSNumber *> arrayWithCapacity:detents.size()];
|
|
119
|
+
for (const react::Float value : detents) {
|
|
120
|
+
[array addObject:[NSNumber numberWithFloat:value]];
|
|
137
121
|
}
|
|
122
|
+
return array;
|
|
138
123
|
}
|
|
139
124
|
|
|
140
125
|
+ (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
|
|
@@ -177,6 +162,15 @@
|
|
|
177
162
|
}
|
|
178
163
|
}
|
|
179
164
|
|
|
165
|
+
+ (NSMutableArray<NSNumber *> *)arrayFromVector:(const std::vector<CGFloat> &)vector
|
|
166
|
+
{
|
|
167
|
+
NSMutableArray *array = [NSMutableArray arrayWithCapacity:vector.size()];
|
|
168
|
+
for (CGFloat val : vector) {
|
|
169
|
+
[array addObject:[NSNumber numberWithFloat:val]];
|
|
170
|
+
}
|
|
171
|
+
return array;
|
|
172
|
+
}
|
|
173
|
+
|
|
180
174
|
+ (UIBlurEffectStyle)UIBlurEffectStyleFromCppEquivalent:(react::RNSScreenStackHeaderConfigBlurEffect)blurEffect
|
|
181
175
|
{
|
|
182
176
|
#if !TARGET_OS_TV && defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \
|
package/ios/RNSScreen.h
CHANGED
|
@@ -86,8 +86,8 @@ namespace react = facebook::react;
|
|
|
86
86
|
@property (nonatomic) BOOL homeIndicatorHidden;
|
|
87
87
|
|
|
88
88
|
// Props controlling UISheetPresentationController
|
|
89
|
-
@property (nonatomic)
|
|
90
|
-
@property (nonatomic)
|
|
89
|
+
@property (nonatomic) NSArray<NSNumber *> *sheetAllowedDetents;
|
|
90
|
+
@property (nonatomic) NSNumber *sheetLargestUndimmedDetent;
|
|
91
91
|
@property (nonatomic) BOOL sheetGrabberVisible;
|
|
92
92
|
@property (nonatomic) CGFloat sheetCornerRadius;
|
|
93
93
|
@property (nonatomic) BOOL sheetExpandsWhenScrolledToEdge;
|
|
@@ -109,6 +109,7 @@ namespace react = facebook::react;
|
|
|
109
109
|
@property (nonatomic, copy) RCTDirectEventBlock onNativeDismissCancelled;
|
|
110
110
|
@property (nonatomic, copy) RCTDirectEventBlock onTransitionProgress;
|
|
111
111
|
@property (nonatomic, copy) RCTDirectEventBlock onGestureCancel;
|
|
112
|
+
@property (nonatomic, copy) RCTDirectEventBlock onSheetDetentChanged;
|
|
112
113
|
#endif // RCT_NEW_ARCH_ENABLED
|
|
113
114
|
|
|
114
115
|
- (void)notifyFinishTransitioning;
|