ScrollViewEventEmitter.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * Copyright (c) Facebook, Inc. and its affiliates.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. */
  7. #pragma once
  8. #include <memory>
  9. #include <folly/dynamic.h>
  10. #include <react/components/view/ViewEventEmitter.h>
  11. #include <react/core/EventEmitter.h>
  12. #include <react/graphics/Geometry.h>
  13. namespace facebook {
  14. namespace react {
  15. class ScrollViewMetrics {
  16. public:
  17. Size contentSize;
  18. Point contentOffset;
  19. EdgeInsets contentInset;
  20. Size containerSize;
  21. Float zoomScale;
  22. };
  23. class ScrollViewEventEmitter;
  24. using SharedScrollViewEventEmitter =
  25. std::shared_ptr<const ScrollViewEventEmitter>;
  26. class ScrollViewEventEmitter : public ViewEventEmitter {
  27. public:
  28. using ViewEventEmitter::ViewEventEmitter;
  29. void onScroll(const ScrollViewMetrics &scrollViewMetrics) const;
  30. void onScrollBeginDrag(const ScrollViewMetrics &scrollViewMetrics) const;
  31. void onScrollEndDrag(const ScrollViewMetrics &scrollViewMetrics) const;
  32. void onMomentumScrollBegin(const ScrollViewMetrics &scrollViewMetrics) const;
  33. void onMomentumScrollEnd(const ScrollViewMetrics &scrollViewMetrics) const;
  34. private:
  35. void dispatchScrollViewEvent(
  36. const std::string &name,
  37. const ScrollViewMetrics &scrollViewMetrics,
  38. EventPriority priority = EventPriority::AsynchronousBatched) const;
  39. };
  40. } // namespace react
  41. } // namespace facebook