146 lines
4.5 KiB
Plaintext
146 lines
4.5 KiB
Plaintext
#import "RNSConversions.h"
|
|
|
|
namespace rnscreens::conversion {
|
|
|
|
#pragma mark SplitViewHost props
|
|
|
|
UISplitViewControllerSplitBehavior SplitViewPreferredSplitBehaviorFromHostProp(
|
|
facebook::react::RNSSplitViewHostPreferredSplitBehavior splitBehavior)
|
|
{
|
|
using enum facebook::react::RNSSplitViewHostPreferredSplitBehavior;
|
|
|
|
switch (splitBehavior) {
|
|
case Displace:
|
|
return UISplitViewControllerSplitBehaviorDisplace;
|
|
case Overlay:
|
|
return UISplitViewControllerSplitBehaviorOverlay;
|
|
case Tile:
|
|
return UISplitViewControllerSplitBehaviorTile;
|
|
case Automatic:
|
|
default:
|
|
return UISplitViewControllerSplitBehaviorAutomatic;
|
|
}
|
|
}
|
|
|
|
UISplitViewControllerPrimaryEdge SplitViewPrimaryEdgeFromHostProp(
|
|
facebook::react::RNSSplitViewHostPrimaryEdge primaryEdge)
|
|
{
|
|
using enum facebook::react::RNSSplitViewHostPrimaryEdge;
|
|
|
|
switch (primaryEdge) {
|
|
case Trailing:
|
|
return UISplitViewControllerPrimaryEdgeTrailing;
|
|
case Leading:
|
|
default:
|
|
return UISplitViewControllerPrimaryEdgeLeading;
|
|
}
|
|
}
|
|
|
|
UISplitViewControllerDisplayMode SplitViewPreferredDisplayModeFromHostProp(
|
|
facebook::react::RNSSplitViewHostPreferredDisplayMode displayMode)
|
|
{
|
|
using enum facebook::react::RNSSplitViewHostPreferredDisplayMode;
|
|
|
|
switch (displayMode) {
|
|
case SecondaryOnly:
|
|
return UISplitViewControllerDisplayModeSecondaryOnly;
|
|
case OneBesideSecondary:
|
|
return UISplitViewControllerDisplayModeOneBesideSecondary;
|
|
case OneOverSecondary:
|
|
return UISplitViewControllerDisplayModeOneOverSecondary;
|
|
case TwoBesideSecondary:
|
|
return UISplitViewControllerDisplayModeTwoBesideSecondary;
|
|
case TwoOverSecondary:
|
|
return UISplitViewControllerDisplayModeTwoOverSecondary;
|
|
case TwoDisplaceSecondary:
|
|
return UISplitViewControllerDisplayModeTwoDisplaceSecondary;
|
|
case Automatic:
|
|
default:
|
|
return UISplitViewControllerDisplayModeAutomatic;
|
|
}
|
|
}
|
|
|
|
UISplitViewControllerDisplayModeButtonVisibility SplitViewDisplayModeButtonVisibilityFromHostProp(
|
|
react::RNSSplitViewHostDisplayModeButtonVisibility displayModeButtonVisibility)
|
|
{
|
|
using enum facebook::react::RNSSplitViewHostDisplayModeButtonVisibility;
|
|
|
|
switch (displayModeButtonVisibility) {
|
|
case Always:
|
|
return UISplitViewControllerDisplayModeButtonVisibilityAlways;
|
|
case Never:
|
|
return UISplitViewControllerDisplayModeButtonVisibilityNever;
|
|
case Automatic:
|
|
default:
|
|
return UISplitViewControllerDisplayModeButtonVisibilityAutomatic;
|
|
}
|
|
}
|
|
|
|
std::string UISplitViewControllerDisplayModeToString(UISplitViewControllerDisplayMode displayMode)
|
|
{
|
|
switch (displayMode) {
|
|
case UISplitViewControllerDisplayModeSecondaryOnly:
|
|
return "secondaryOnly";
|
|
case UISplitViewControllerDisplayModeOneBesideSecondary:
|
|
return "oneBesideSecondary";
|
|
case UISplitViewControllerDisplayModeOneOverSecondary:
|
|
return "oneOverSecondary";
|
|
case UISplitViewControllerDisplayModeTwoBesideSecondary:
|
|
return "twoBesideSecondary";
|
|
case UISplitViewControllerDisplayModeTwoOverSecondary:
|
|
return "twoOverSecondary";
|
|
case UISplitViewControllerDisplayModeTwoDisplaceSecondary:
|
|
return "twoDisplaceSecondary";
|
|
case UISplitViewControllerDisplayModeAutomatic:
|
|
default:
|
|
return "automatic";
|
|
}
|
|
}
|
|
|
|
RNSOrientation RNSOrientationFromRNSSplitViewHostOrientation(react::RNSSplitViewHostOrientation orientation)
|
|
{
|
|
using enum facebook::react::RNSSplitViewHostOrientation;
|
|
|
|
switch (orientation) {
|
|
case Inherit:
|
|
return RNSOrientationInherit;
|
|
case All:
|
|
return RNSOrientationAll;
|
|
case AllButUpsideDown:
|
|
return RNSOrientationAllButUpsideDown;
|
|
case Portrait:
|
|
return RNSOrientationPortrait;
|
|
case PortraitUp:
|
|
return RNSOrientationPortraitUp;
|
|
case PortraitDown:
|
|
return RNSOrientationPortraitDown;
|
|
case Landscape:
|
|
return RNSOrientationLandscape;
|
|
case LandscapeLeft:
|
|
return RNSOrientationLandscapeLeft;
|
|
case LandscapeRight:
|
|
return RNSOrientationLandscapeRight;
|
|
default:
|
|
RCTLogError(@"[RNScreens] unsupported orientation");
|
|
return RNSOrientationInherit;
|
|
}
|
|
}
|
|
|
|
#pragma mark SplitViewScreen props
|
|
|
|
RNSSplitViewScreenColumnType RNSSplitViewScreenColumnTypeFromScreenProp(
|
|
facebook::react::RNSSplitViewScreenColumnType columnType)
|
|
{
|
|
using enum facebook::react::RNSSplitViewScreenColumnType;
|
|
|
|
switch (columnType) {
|
|
case Inspector:
|
|
return RNSSplitViewScreenColumnTypeInspector;
|
|
case Column:
|
|
default:
|
|
return RNSSplitViewScreenColumnTypeColumn;
|
|
}
|
|
}
|
|
|
|
}; // namespace rnscreens::conversion
|