/* * 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. */ #include "RootShadowNode.h" #include #include namespace facebook::react { const char RootComponentName[] = "RootView"; bool RootShadowNode::layoutIfNeeded( std::vector *affectedNodes) { SystraceSection s("RootShadowNode::layout"); if (getIsLayoutClean()) { return false; } ensureUnsealed(); auto layoutContext = getConcreteProps().layoutContext; layoutContext.affectedNodes = affectedNodes; layoutTree(layoutContext, getConcreteProps().layoutConstraints); return true; } Transform RootShadowNode::getTransform() const { auto viewportOffset = getConcreteProps().layoutContext.viewportOffset; return Transform::Translate(viewportOffset.x, viewportOffset.y, 0); } RootShadowNode::Unshared RootShadowNode::clone( PropsParserContext const &propsParserContext, LayoutConstraints const &layoutConstraints, LayoutContext const &layoutContext) const { auto props = std::make_shared( propsParserContext, getConcreteProps(), layoutConstraints, layoutContext); auto newRootShadowNode = std::make_shared( *this, ShadowNodeFragment{ /* .props = */ props, }); if (layoutConstraints != getConcreteProps().layoutConstraints) { newRootShadowNode->dirtyLayout(); } return newRootShadowNode; } } // namespace facebook::react