1*023bc8eaSKudo Chien #pragma once 2*023bc8eaSKudo Chien 3*023bc8eaSKudo Chien #include <memory> 4*023bc8eaSKudo Chien #include <string> 5*023bc8eaSKudo Chien #include <vector> 6*023bc8eaSKudo Chien 7*023bc8eaSKudo Chien #ifdef ANDROID 8*023bc8eaSKudo Chien #include "TurboModule.h" 9*023bc8eaSKudo Chien #else 10*023bc8eaSKudo Chien #include <ReactCommon/TurboModule.h> 11*023bc8eaSKudo Chien #endif 12*023bc8eaSKudo Chien 13*023bc8eaSKudo Chien #include <ReactCommon/CallInvoker.h> 14*023bc8eaSKudo Chien 15*023bc8eaSKudo Chien using namespace facebook; 16*023bc8eaSKudo Chien using namespace react; 17*023bc8eaSKudo Chien 18*023bc8eaSKudo Chien namespace reanimated { 19*023bc8eaSKudo Chien 20*023bc8eaSKudo Chien class JSI_EXPORT NativeReanimatedModuleSpec : public TurboModule { 21*023bc8eaSKudo Chien protected: 22*023bc8eaSKudo Chien explicit NativeReanimatedModuleSpec(std::shared_ptr<CallInvoker> jsInvoker); 23*023bc8eaSKudo Chien 24*023bc8eaSKudo Chien public: 25*023bc8eaSKudo Chien virtual void installCoreFunctions( 26*023bc8eaSKudo Chien jsi::Runtime &rt, 27*023bc8eaSKudo Chien const jsi::Value &valueSetter) = 0; 28*023bc8eaSKudo Chien 29*023bc8eaSKudo Chien // SharedValue 30*023bc8eaSKudo Chien virtual jsi::Value makeShareable( 31*023bc8eaSKudo Chien jsi::Runtime &rt, 32*023bc8eaSKudo Chien const jsi::Value &value) = 0; 33*023bc8eaSKudo Chien virtual jsi::Value makeMutable(jsi::Runtime &rt, const jsi::Value &value) = 0; 34*023bc8eaSKudo Chien virtual jsi::Value makeRemote(jsi::Runtime &rt, const jsi::Value &value) = 0; 35*023bc8eaSKudo Chien 36*023bc8eaSKudo Chien // mappers 37*023bc8eaSKudo Chien virtual jsi::Value startMapper( 38*023bc8eaSKudo Chien jsi::Runtime &rt, 39*023bc8eaSKudo Chien const jsi::Value &worklet, 40*023bc8eaSKudo Chien const jsi::Value &inputs, 41*023bc8eaSKudo Chien const jsi::Value &outputs, 42*023bc8eaSKudo Chien const jsi::Value &updater, 43*023bc8eaSKudo Chien const jsi::Value &viewDescriptors) = 0; 44*023bc8eaSKudo Chien virtual void stopMapper(jsi::Runtime &rt, const jsi::Value &mapperId) = 0; 45*023bc8eaSKudo Chien 46*023bc8eaSKudo Chien // events 47*023bc8eaSKudo Chien virtual jsi::Value registerEventHandler( 48*023bc8eaSKudo Chien jsi::Runtime &rt, 49*023bc8eaSKudo Chien const jsi::Value &eventHash, 50*023bc8eaSKudo Chien const jsi::Value &worklet) = 0; 51*023bc8eaSKudo Chien virtual void unregisterEventHandler( 52*023bc8eaSKudo Chien jsi::Runtime &rt, 53*023bc8eaSKudo Chien const jsi::Value ®istrationId) = 0; 54*023bc8eaSKudo Chien 55*023bc8eaSKudo Chien // views 56*023bc8eaSKudo Chien virtual jsi::Value getViewProp( 57*023bc8eaSKudo Chien jsi::Runtime &rt, 58*023bc8eaSKudo Chien const jsi::Value &viewTag, 59*023bc8eaSKudo Chien const jsi::Value &propName, 60*023bc8eaSKudo Chien const jsi::Value &callback) = 0; 61*023bc8eaSKudo Chien 62*023bc8eaSKudo Chien // sensors 63*023bc8eaSKudo Chien virtual jsi::Value registerSensor( 64*023bc8eaSKudo Chien jsi::Runtime &rt, 65*023bc8eaSKudo Chien const jsi::Value &sensorType, 66*023bc8eaSKudo Chien const jsi::Value &interval, 67*023bc8eaSKudo Chien const jsi::Value &sensorDataContainer) = 0; 68*023bc8eaSKudo Chien virtual void unregisterSensor( 69*023bc8eaSKudo Chien jsi::Runtime &rt, 70*023bc8eaSKudo Chien const jsi::Value &sensorId) = 0; 71*023bc8eaSKudo Chien 72*023bc8eaSKudo Chien // keyboard 73*023bc8eaSKudo Chien virtual jsi::Value subscribeForKeyboardEvents( 74*023bc8eaSKudo Chien jsi::Runtime &rt, 75*023bc8eaSKudo Chien const jsi::Value &keyboardEventContainer) = 0; 76*023bc8eaSKudo Chien virtual void unsubscribeFromKeyboardEvents( 77*023bc8eaSKudo Chien jsi::Runtime &rt, 78*023bc8eaSKudo Chien const jsi::Value &listenerId) = 0; 79*023bc8eaSKudo Chien 80*023bc8eaSKudo Chien // other 81*023bc8eaSKudo Chien virtual jsi::Value enableLayoutAnimations( 82*023bc8eaSKudo Chien jsi::Runtime &rt, 83*023bc8eaSKudo Chien const jsi::Value &config) = 0; 84*023bc8eaSKudo Chien virtual jsi::Value configureProps( 85*023bc8eaSKudo Chien jsi::Runtime &rt, 86*023bc8eaSKudo Chien const jsi::Value &uiProps, 87*023bc8eaSKudo Chien const jsi::Value &nativeProps) = 0; 88*023bc8eaSKudo Chien }; 89*023bc8eaSKudo Chien 90*023bc8eaSKudo Chien } // namespace reanimated 91