/* * 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 namespace facebook::react { extern const char ScrollViewComponentName[]; /* * `ShadowNode` for component. */ class ScrollViewShadowNode final : public ConcreteViewShadowNode< ScrollViewComponentName, ScrollViewProps, ScrollViewEventEmitter, ScrollViewState> { public: using ConcreteViewShadowNode::ConcreteViewShadowNode; static ScrollViewState initialStateData( const Props::Shared& props, const ShadowNodeFamily::Shared& family, const ComponentDescriptor& componentDescriptor); #pragma mark - LayoutableShadowNode void layout(LayoutContext layoutContext) override; Point getContentOriginOffset() const override; private: void updateStateIfNeeded(); void updateScrollContentOffsetIfNeeded(); }; } // namespace facebook::react