1*4440fb50SKudo Chien #pragma once 2*4440fb50SKudo Chien 3*4440fb50SKudo Chien #include <jsi/jsi.h> 4*4440fb50SKudo Chien #include <memory> 5*4440fb50SKudo Chien #include <string> 6*4440fb50SKudo Chien #include <utility> 7*4440fb50SKudo Chien 8*4440fb50SKudo Chien #include "Shareables.h" 9*4440fb50SKudo Chien 10*4440fb50SKudo Chien using namespace facebook; 11*4440fb50SKudo Chien 12*4440fb50SKudo Chien namespace reanimated { 13*4440fb50SKudo Chien 14*4440fb50SKudo Chien class EventHandlerRegistry; 15*4440fb50SKudo Chien 16*4440fb50SKudo Chien class WorkletEventHandler { 17*4440fb50SKudo Chien friend EventHandlerRegistry; 18*4440fb50SKudo Chien 19*4440fb50SKudo Chien private: 20*4440fb50SKudo Chien std::shared_ptr<JSRuntimeHelper> _runtimeHelper; 21*4440fb50SKudo Chien uint64_t id; 22*4440fb50SKudo Chien std::string eventName; 23*4440fb50SKudo Chien jsi::Value _handlerFunction; 24*4440fb50SKudo Chien 25*4440fb50SKudo Chien public: WorkletEventHandler(const std::shared_ptr<JSRuntimeHelper> & runtimeHelper,uint64_t id,std::string eventName,jsi::Value && handlerFunction)26*4440fb50SKudo Chien WorkletEventHandler( 27*4440fb50SKudo Chien const std::shared_ptr<JSRuntimeHelper> &runtimeHelper, 28*4440fb50SKudo Chien uint64_t id, 29*4440fb50SKudo Chien std::string eventName, 30*4440fb50SKudo Chien jsi::Value &&handlerFunction) 31*4440fb50SKudo Chien : _runtimeHelper(runtimeHelper), 32*4440fb50SKudo Chien id(id), 33*4440fb50SKudo Chien eventName(eventName), 34*4440fb50SKudo Chien _handlerFunction(std::move(handlerFunction)) {} 35*4440fb50SKudo Chien void process(double eventTimestamp, const jsi::Value &eventValue); 36*4440fb50SKudo Chien }; 37*4440fb50SKudo Chien 38*4440fb50SKudo Chien } // namespace reanimated 39