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