/* * Copyright (c) Facebook, Inc. and its 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 namespace facebook { namespace react { class RootShadowNode; extern const char RootComponentName[]; /* * `ShadowNode` for the root component. * Besides all functionality of the `View` component, `RootShadowNode` contains * props which represent external layout constraints and context of the * shadow tree. */ class RootShadowNode final : public ConcreteViewShadowNode { public: using ConcreteViewShadowNode::ConcreteViewShadowNode; using Shared = std::shared_ptr; using Unshared = std::shared_ptr; /* * Layouts the shadow tree if needed. * Returns `false` if the three is already laid out. */ bool layoutIfNeeded( std::vector *affectedNodes = {}); /* * Clones the node with given `layoutConstraints` and `layoutContext`. */ RootShadowNode::Unshared clone( LayoutConstraints const &layoutConstraints, LayoutContext const &layoutContext) const; }; } // namespace react } // namespace facebook