/* * 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 #include namespace facebook { namespace react { class ScrollViewMetrics { public: Size contentSize; Point contentOffset; EdgeInsets contentInset; Size containerSize; Float zoomScale; }; class ScrollViewEventEmitter; using SharedScrollViewEventEmitter = std::shared_ptr; class ScrollViewEventEmitter : public ViewEventEmitter { public: using ViewEventEmitter::ViewEventEmitter; void onScroll(const ScrollViewMetrics &scrollViewMetrics) const; void onScrollBeginDrag(const ScrollViewMetrics &scrollViewMetrics) const; void onScrollEndDrag(const ScrollViewMetrics &scrollViewMetrics) const; void onMomentumScrollBegin(const ScrollViewMetrics &scrollViewMetrics) const; void onMomentumScrollEnd(const ScrollViewMetrics &scrollViewMetrics) const; private: void dispatchScrollViewEvent( const std::string &name, const ScrollViewMetrics &scrollViewMetrics, EventPriority priority = EventPriority::AsynchronousBatched) const; }; } // namespace react } // namespace facebook