1*4440fb50SKudo Chien #pragma once 2*4440fb50SKudo Chien 3*4440fb50SKudo Chien #include <memory> 4*4440fb50SKudo Chien #include <string> 5*4440fb50SKudo Chien #include <vector> 6*4440fb50SKudo Chien 7*4440fb50SKudo Chien #ifdef ANDROID 8*4440fb50SKudo Chien #include "TurboModule.h" 9*4440fb50SKudo Chien #else 10*4440fb50SKudo Chien #include <ReactCommon/TurboModule.h> 11*4440fb50SKudo Chien #endif 12*4440fb50SKudo Chien 13*4440fb50SKudo Chien #include <ReactCommon/CallInvoker.h> 14*4440fb50SKudo Chien 15*4440fb50SKudo Chien using namespace facebook; 16*4440fb50SKudo Chien using namespace react; 17*4440fb50SKudo Chien 18*4440fb50SKudo Chien namespace reanimated { 19*4440fb50SKudo Chien 20*4440fb50SKudo Chien class JSI_EXPORT NativeReanimatedModuleSpec : public TurboModule { 21*4440fb50SKudo Chien protected: 22*4440fb50SKudo Chien explicit NativeReanimatedModuleSpec(std::shared_ptr<CallInvoker> jsInvoker); 23*4440fb50SKudo Chien 24*4440fb50SKudo Chien public: 25*4440fb50SKudo Chien virtual void installCoreFunctions( 26*4440fb50SKudo Chien jsi::Runtime &rt, 27*4440fb50SKudo Chien const jsi::Value &callGuard, 28*4440fb50SKudo Chien const jsi::Value &valueUnpacker) = 0; 29*4440fb50SKudo Chien 30*4440fb50SKudo Chien // SharedValue 31*4440fb50SKudo Chien virtual jsi::Value makeShareableClone( 32*4440fb50SKudo Chien jsi::Runtime &rt, 33*4440fb50SKudo Chien const jsi::Value &value, 34*4440fb50SKudo Chien const jsi::Value &shouldRetainRemote) = 0; 35*4440fb50SKudo Chien 36*4440fb50SKudo Chien // Synchronized data objects 37*4440fb50SKudo Chien virtual jsi::Value makeSynchronizedDataHolder( 38*4440fb50SKudo Chien jsi::Runtime &rt, 39*4440fb50SKudo Chien const jsi::Value &initialShareable) = 0; 40*4440fb50SKudo Chien virtual jsi::Value getDataSynchronously( 41*4440fb50SKudo Chien jsi::Runtime &rt, 42*4440fb50SKudo Chien const jsi::Value &synchronizedDataHolderRef) = 0; 43*4440fb50SKudo Chien 44*4440fb50SKudo Chien // Scheduling 45*4440fb50SKudo Chien virtual void scheduleOnUI(jsi::Runtime &rt, const jsi::Value &worklet) = 0; 46*4440fb50SKudo Chien 47*4440fb50SKudo Chien // events 48*4440fb50SKudo Chien virtual jsi::Value registerEventHandler( 49*4440fb50SKudo Chien jsi::Runtime &rt, 50*4440fb50SKudo Chien const jsi::Value &eventHash, 51*4440fb50SKudo Chien const jsi::Value &worklet) = 0; 52*4440fb50SKudo Chien virtual void unregisterEventHandler( 53*4440fb50SKudo Chien jsi::Runtime &rt, 54*4440fb50SKudo Chien const jsi::Value ®istrationId) = 0; 55*4440fb50SKudo Chien 56*4440fb50SKudo Chien // views 57*4440fb50SKudo Chien virtual jsi::Value getViewProp( 58*4440fb50SKudo Chien jsi::Runtime &rt, 59*4440fb50SKudo Chien const jsi::Value &viewTag, 60*4440fb50SKudo Chien const jsi::Value &propName, 61*4440fb50SKudo Chien const jsi::Value &callback) = 0; 62*4440fb50SKudo Chien 63*4440fb50SKudo Chien // sensors 64*4440fb50SKudo Chien virtual jsi::Value registerSensor( 65*4440fb50SKudo Chien jsi::Runtime &rt, 66*4440fb50SKudo Chien const jsi::Value &sensorType, 67*4440fb50SKudo Chien const jsi::Value &interval, 68*4440fb50SKudo Chien const jsi::Value &iosReferenceFrame, 69*4440fb50SKudo Chien const jsi::Value &sensorDataContainer) = 0; 70*4440fb50SKudo Chien virtual void unregisterSensor( 71*4440fb50SKudo Chien jsi::Runtime &rt, 72*4440fb50SKudo Chien const jsi::Value &sensorId) = 0; 73*4440fb50SKudo Chien 74*4440fb50SKudo Chien // keyboard 75*4440fb50SKudo Chien virtual jsi::Value subscribeForKeyboardEvents( 76*4440fb50SKudo Chien jsi::Runtime &rt, 77*4440fb50SKudo Chien const jsi::Value &keyboardEventContainer, 78*4440fb50SKudo Chien const jsi::Value &isStatusBarTranslucent) = 0; 79*4440fb50SKudo Chien virtual void unsubscribeFromKeyboardEvents( 80*4440fb50SKudo Chien jsi::Runtime &rt, 81*4440fb50SKudo Chien const jsi::Value &listenerId) = 0; 82*4440fb50SKudo Chien 83*4440fb50SKudo Chien // other 84*4440fb50SKudo Chien virtual jsi::Value enableLayoutAnimations( 85*4440fb50SKudo Chien jsi::Runtime &rt, 86*4440fb50SKudo Chien const jsi::Value &config) = 0; 87*4440fb50SKudo Chien virtual jsi::Value configureProps( 88*4440fb50SKudo Chien jsi::Runtime &rt, 89*4440fb50SKudo Chien const jsi::Value &uiProps, 90*4440fb50SKudo Chien const jsi::Value &nativeProps) = 0; 91*4440fb50SKudo Chien 92*4440fb50SKudo Chien // layout animations 93*4440fb50SKudo Chien virtual jsi::Value configureLayoutAnimation( 94*4440fb50SKudo Chien jsi::Runtime &rt, 95*4440fb50SKudo Chien const jsi::Value &viewTag, 96*4440fb50SKudo Chien const jsi::Value &type, 97*4440fb50SKudo Chien const jsi::Value &sharedTransitionTag, 98*4440fb50SKudo Chien const jsi::Value &config) = 0; 99*4440fb50SKudo Chien }; 100*4440fb50SKudo Chien 101*4440fb50SKudo Chien } // namespace reanimated 102