1 #pragma once
2 
3 #include <jsi/jsi.h>
4 #include <memory>
5 #include <unordered_map>
6 #include <vector>
7 
8 using namespace facebook;
9 
10 namespace reanimated {
11 
12 class Mapper;
13 
14 class MapperRegistry {
15   std::unordered_map<unsigned long, std::shared_ptr<Mapper>> mappers;
16   std::vector<std::shared_ptr<Mapper>> sortedMappers;
17   void updateOrder();
18   bool updatedSinceLastExecute = false;
19 
20  public:
21   void startMapper(std::shared_ptr<Mapper> mapper);
22   void stopMapper(unsigned long id);
23 
24   void execute(jsi::Runtime &rt);
25 
26   bool needRunOnRender();
27 };
28 
29 } // namespace reanimated
30