diff --git a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm index 235ebf0f96..a10f8c063c 100644 --- a/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm +++ b/React/Fabric/Mounting/ComponentViews/View/RCTViewComponentView.mm @@ -159,7 +159,7 @@ using namespace facebook::react; // `backfaceVisibility` if (oldViewProps.backfaceVisibility != newViewProps.backfaceVisibility) { - self.layer.doubleSided = newViewProps.backfaceVisibility; + self.layer.doubleSided = newViewProps.backfaceVisibility == BackfaceVisibility::Visible; } // `shouldRasterize` diff --git a/ReactCommon/fabric/components/view/ViewProps.h b/ReactCommon/fabric/components/view/ViewProps.h index 4ca4cd7583..c5f74d772f 100644 --- a/ReactCommon/fabric/components/view/ViewProps.h +++ b/ReactCommon/fabric/components/view/ViewProps.h @@ -51,7 +51,7 @@ class ViewProps : public Props, // Transform Transform transform{}; - bool const backfaceVisibility{}; + BackfaceVisibility const backfaceVisibility{}; bool const shouldRasterize{}; int const zIndex{}; diff --git a/ReactCommon/fabric/components/view/conversions.h b/ReactCommon/fabric/components/view/conversions.h index fd1969d62f..b71e44ad28 100644 --- a/ReactCommon/fabric/components/view/conversions.h +++ b/ReactCommon/fabric/components/view/conversions.h @@ -475,6 +475,24 @@ inline void fromRawValue(const RawValue &value, PointerEventsMode &result) { LOG(FATAL) << "Could not parse PointerEventsMode:" << stringValue; } +inline void fromRawValue(const RawValue &value, BackfaceVisibility &result) { + assert(value.hasType()); + auto stringValue = (std::string)value; + if (stringValue == "auto") { + result = BackfaceVisibility::Auto; + return; + } + if (stringValue == "visible") { + result = BackfaceVisibility::Visible; + return; + } + if (stringValue == "hidden") { + result = BackfaceVisibility::Hidden; + return; + } + LOG(FATAL) << "Could not parse BackfaceVisibility:" << stringValue; +} + inline void fromRawValue(const RawValue &value, BorderStyle &result) { assert(value.hasType()); auto stringValue = (std::string)value; diff --git a/ReactCommon/fabric/components/view/primitives.h b/ReactCommon/fabric/components/view/primitives.h index bdfd018c06..1bcb70ba48 100644 --- a/ReactCommon/fabric/components/view/primitives.h +++ b/ReactCommon/fabric/components/view/primitives.h @@ -18,6 +18,8 @@ namespace react { enum class PointerEventsMode { Auto, None, BoxNone, BoxOnly }; +enum class BackfaceVisibility { Auto, Visible, Hidden }; + enum class BorderStyle { Solid, Dotted, Dashed }; template