You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f4961cc
Browse filesBrowse the repository at this point in the historyBrowse files
Make LayoutConformance component headers for-frameworks
Summary:
Move `LayoutConformanceComponentDescriptor.h`, `LayoutConformanceProps.h` and `LayoutConformanceShadowNode.h` from the public tier of the C++ stable API to the for-frameworks tier, and remove them from the `<React/View.h>` umbrella.
These headers implement the experimental `LayoutConformance` core component. Native component authors do not use them, but a platform that registers React Native's core components does: `YogaLayoutableShadowNode::resolveErrata` checks for `LayoutConformanceShadowNode` with a `dynamic_cast` to choose the Yoga errata, so a platform has to register React Native's own descriptor for the component to have any effect. That makes them framework-author API rather than private headers. The `LayoutConformance` enum and its conversions stay public in `primitives.h` and `conversions.h`.
A for-frameworks header has to reach public headers through their umbrella, so the three headers now include `<React/View.h>` and `<React/RendererCore.h>` instead of fine-grained paths, and compile when included directly under strict API enforcement. `LayoutConformanceProps.h` was the only umbrella member that included the public `conversions.h`, so `conversions.h` is added to `<React/View.h>` directly to keep it available through the umbrella.
The headers stay published, because React Native's own core component registries outside this module include them. Because they now include their own module's umbrella, and `YogaLayoutableShadowNode.cpp` includes `LayoutConformanceShadowNode.h`, the CMake `rrc_view` target exposes its umbrella directory as `PUBLIC` instead of `INTERFACE`, so the module's own sources can resolve `<React/View.h>` as well as its dependents.
Changelog: [Internal]
Differential Revision: D123895702
@@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
424
423
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
425
424
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
426
425
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
427
-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
428
426
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
429
427
using facebook::react::NativeMethodCallFunc = std::function<void()>;
430
428
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
1728
-
}
1729
-
1730
1725
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
1731
1726
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
1732
1727
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -3375,12 +3370,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java
3375
3370
public static constexpr auto kJavaDescriptor;
3376
3371
}
3377
3372
3378
-
struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps {
3379
-
public LayoutConformanceProps() = default;
3380
-
public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps);
3381
-
public facebook::react::LayoutConformance mode;
3382
-
}
3383
-
3384
3373
struct facebook::react::LayoutConstraints {
3385
3374
public facebook::react::LayoutDirection layoutDirection;
3386
3375
public facebook::react::Size clamp(const facebook::react::Size& size) const;
@@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
424
423
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
425
424
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
426
425
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
427
-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
428
426
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
429
427
using facebook::react::NativeMethodCallFunc = std::function<void()>;
430
428
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
1727
-
}
1728
-
1729
1724
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
1730
1725
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
1731
1726
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -3368,12 +3363,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java
3368
3363
public static constexpr auto kJavaDescriptor;
3369
3364
}
3370
3365
3371
-
struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps {
3372
-
public LayoutConformanceProps() = default;
3373
-
public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps);
3374
-
public facebook::react::LayoutConformance mode;
3375
-
}
3376
-
3377
3366
struct facebook::react::LayoutConstraints {
3378
3367
public facebook::react::LayoutDirection layoutDirection;
3379
3368
public facebook::react::Size clamp(const facebook::react::Size& size) const;
@@ -424,7 +423,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
424
423
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
425
424
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
426
425
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
427
-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
428
426
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
429
427
using facebook::react::NativeMethodCallFunc = std::function<void()>;
430
428
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
1727
-
}
1728
-
1729
1724
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
1730
1725
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
1731
1726
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -3368,12 +3363,6 @@ struct facebook::react::JTurboModuleWithJSIBindings : public facebook::jni::Java
3368
3363
public static constexpr auto kJavaDescriptor;
3369
3364
}
3370
3365
3371
-
struct facebook::react::LayoutConformanceProps : public facebook::react::YogaStylableProps {
3372
-
public LayoutConformanceProps() = default;
3373
-
public LayoutConformanceProps(const facebook::react::PropsParserContext& context, const facebook::react::LayoutConformanceProps& sourceProps, const facebook::react::RawProps& rawProps);
3374
-
public facebook::react::LayoutConformance mode;
3375
-
}
3376
-
3377
3366
struct facebook::react::LayoutConstraints {
3378
3367
public facebook::react::LayoutDirection layoutDirection;
3379
3368
public facebook::react::Size clamp(const facebook::react::Size& size) const;
@@ -3210,7 +3209,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
3210
3209
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
3211
3210
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
3212
3211
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
3213
-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
3214
3212
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
3215
3213
using facebook::react::NativeMethodCallFunc = std::function<void()>;
3216
3214
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
@@ -4018,9 +4016,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer {
4018
4016
public ~JSBigString() override = default;
4019
4017
}
4020
4018
4021
-
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
4022
-
}
4023
-
4024
4019
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
4025
4020
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
4026
4021
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
@@ -3202,7 +3201,6 @@ using facebook::react::GradientDirection = std::variant<facebook::react::Float,
3202
3201
using facebook::react::HostPlatformTouch = facebook::react::BaseTouch;
3203
3202
using facebook::react::HostPlatformViewEventEmitter = facebook::react::BaseViewEventEmitter;
3204
3203
using facebook::react::ImageSources = std::vector<facebook::react::ImageSource>;
3205
-
using facebook::react::LayoutConformanceComponentDescriptor = facebook::react::ConcreteComponentDescriptor<facebook::react::LayoutConformanceShadowNode>;
3206
3204
using facebook::react::ModalHostViewSupportedOrientationsMask = uint32_t;
3207
3205
using facebook::react::NativeMethodCallFunc = std::function<void()>;
3208
3206
using facebook::react::PromiseSetupFunctionType = std::function<void(facebook::jsi::Runtime& rt, std::shared_ptr<facebook::react::Promise>)>;
@@ -4009,9 +4007,6 @@ class facebook::react::JSBigString : public facebook::jsi::Buffer {
4009
4007
public ~JSBigString() override = default;
4010
4008
}
4011
4009
4012
-
class facebook::react::LayoutConformanceShadowNode : public facebook::react::ConcreteShadowNode<facebook::react::LayoutConformanceShadowNodeComponentName, facebook::react::YogaLayoutableShadowNode, facebook::react::LayoutConformanceProps> {
4013
-
}
4014
-
4015
4010
class facebook::react::LayoutableShadowNode : public facebook::react::ShadowNode {
4016
4011
public LayoutableShadowNode(const facebook::react::ShadowNode& sourceShadowNode, const facebook::react::ShadowNodeFragment& fragment);
4017
4012
public LayoutableShadowNode(const facebook::react::ShadowNodeFragment& fragment, const facebook::react::ShadowNodeFamily::Shared& family, facebook::react::ShadowNodeTraits traits);
0 commit comments