/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include #include #include #include #include #include #include #include #include namespace facebook { namespace react { class ViewProps; using SharedViewProps = std::shared_ptr; class ViewProps : public YogaStylableProps, public AccessibilityProps { public: ViewProps() = default; ViewProps( const PropsParserContext &context, ViewProps const &sourceProps, RawProps const &rawProps, bool shouldSetRawProps = true); void setProp( const PropsParserContext &context, RawPropsPropNameHash hash, const char *propName, RawValue const &value); #ifdef ANDROID void propsDiffMapBuffer(Props const *oldProps, MapBufferBuilder &builder) const override; #endif #pragma mark - Props // Color Float opacity{1.0}; SharedColor foregroundColor{}; SharedColor backgroundColor{}; // Borders CascadedBorderRadii borderRadii{}; CascadedBorderColors borderColors{}; CascadedBorderCurves borderCurves{}; // iOS only? CascadedBorderStyles borderStyles{}; // Shadow SharedColor shadowColor{}; Size shadowOffset{0, -3}; Float shadowOpacity{}; Float shadowRadius{3}; // Transform Transform transform{}; BackfaceVisibility backfaceVisibility{}; bool shouldRasterize{}; std::optional zIndex{}; // Events PointerEventsMode pointerEvents{}; EdgeInsets hitSlop{}; bool onLayout{}; ViewEvents events{}; bool collapsable{true}; bool removeClippedSubviews{false}; Float elevation{}; /* Android-only */ #ifdef ANDROID std::optional nativeBackground{}; std::optional nativeForeground{}; bool focusable{false}; bool hasTVPreferredFocus{false}; bool needsOffscreenAlphaCompositing{false}; bool renderToHardwareTextureAndroid{false}; #endif #pragma mark - Convenience Methods BorderMetrics resolveBorderMetrics(LayoutMetrics const &layoutMetrics) const; bool getClipsContentToBounds() const; #ifdef ANDROID bool getProbablyMoreHorizontalThanVertical_DEPRECATED() const; #endif #pragma mark - DebugStringConvertible #if RN_DEBUG_STRING_CONVERTIBLE SharedDebugStringConvertibleList getDebugProps() const override; #endif }; } // namespace react } // namespace facebook