1*023bc8eaSKudo Chien #pragma once
2*023bc8eaSKudo Chien 
3*023bc8eaSKudo Chien #include <jsi/jsi.h>
4*023bc8eaSKudo Chien #include <string>
5*023bc8eaSKudo Chien #include <utility>
6*023bc8eaSKudo Chien 
7*023bc8eaSKudo Chien using namespace facebook;
8*023bc8eaSKudo Chien 
9*023bc8eaSKudo Chien namespace reanimated {
10*023bc8eaSKudo Chien 
11*023bc8eaSKudo Chien class EventHandlerRegistry;
12*023bc8eaSKudo Chien 
13*023bc8eaSKudo Chien class WorkletEventHandler {
14*023bc8eaSKudo Chien   friend EventHandlerRegistry;
15*023bc8eaSKudo Chien 
16*023bc8eaSKudo Chien  private:
17*023bc8eaSKudo Chien   unsigned long id;
18*023bc8eaSKudo Chien   std::string eventName;
19*023bc8eaSKudo Chien   jsi::Function handler;
20*023bc8eaSKudo Chien 
21*023bc8eaSKudo Chien  public:
WorkletEventHandler(unsigned long id,std::string eventName,jsi::Function && handler)22*023bc8eaSKudo Chien   WorkletEventHandler(
23*023bc8eaSKudo Chien       unsigned long id,
24*023bc8eaSKudo Chien       std::string eventName,
25*023bc8eaSKudo Chien       jsi::Function &&handler)
26*023bc8eaSKudo Chien       : id(id), eventName(eventName), handler(std::move(handler)) {}
27*023bc8eaSKudo Chien   void process(jsi::Runtime &rt, const jsi::Value &eventValue);
28*023bc8eaSKudo Chien };
29*023bc8eaSKudo Chien 
30*023bc8eaSKudo Chien } // namespace reanimated
31