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