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