104819bfdSŁukasz Kosmaty #pragma once 204819bfdSŁukasz Kosmaty 304819bfdSŁukasz Kosmaty #include <memory> 404819bfdSŁukasz Kosmaty #include <string> 504819bfdSŁukasz Kosmaty #include <vector> 604819bfdSŁukasz Kosmaty 704819bfdSŁukasz Kosmaty #ifdef ANDROID 804819bfdSŁukasz Kosmaty #include "TurboModule.h" 904819bfdSŁukasz Kosmaty #else 1004819bfdSŁukasz Kosmaty #include <ReactCommon/TurboModule.h> 1104819bfdSŁukasz Kosmaty #endif 1204819bfdSŁukasz Kosmaty 1304819bfdSŁukasz Kosmaty #include <ReactCommon/CallInvoker.h> 1404819bfdSŁukasz Kosmaty 1504819bfdSŁukasz Kosmaty using namespace facebook; 1604819bfdSŁukasz Kosmaty using namespace react; 1704819bfdSŁukasz Kosmaty 1804819bfdSŁukasz Kosmaty namespace reanimated { 1904819bfdSŁukasz Kosmaty 2004819bfdSŁukasz Kosmaty class JSI_EXPORT NativeReanimatedModuleSpec : public TurboModule { 2104819bfdSŁukasz Kosmaty protected: 2204819bfdSŁukasz Kosmaty explicit NativeReanimatedModuleSpec(std::shared_ptr<CallInvoker> jsInvoker); 2304819bfdSŁukasz Kosmaty 2404819bfdSŁukasz Kosmaty public: 2504819bfdSŁukasz Kosmaty virtual void installCoreFunctions( 2604819bfdSŁukasz Kosmaty jsi::Runtime &rt, 27*5f154df9Saleqsio const jsi::Value &callGuard, 28*5f154df9Saleqsio const jsi::Value &valueUnpacker) = 0; 2904819bfdSŁukasz Kosmaty 3004819bfdSŁukasz Kosmaty // SharedValue 31*5f154df9Saleqsio virtual jsi::Value makeShareableClone( 3204819bfdSŁukasz Kosmaty jsi::Runtime &rt, 33*5f154df9Saleqsio const jsi::Value &value, 34*5f154df9Saleqsio const jsi::Value &shouldRetainRemote) = 0; 3504819bfdSŁukasz Kosmaty 36*5f154df9Saleqsio // Synchronized data objects 37*5f154df9Saleqsio virtual jsi::Value makeSynchronizedDataHolder( 3804819bfdSŁukasz Kosmaty jsi::Runtime &rt, 39*5f154df9Saleqsio const jsi::Value &initialShareable) = 0; 40*5f154df9Saleqsio virtual jsi::Value getDataSynchronously( 41*5f154df9Saleqsio jsi::Runtime &rt, 42*5f154df9Saleqsio const jsi::Value &synchronizedDataHolderRef) = 0; 43*5f154df9Saleqsio 44*5f154df9Saleqsio // Scheduling 45*5f154df9Saleqsio virtual void scheduleOnUI(jsi::Runtime &rt, const jsi::Value &worklet) = 0; 4604819bfdSŁukasz Kosmaty 4704819bfdSŁukasz Kosmaty // events 4804819bfdSŁukasz Kosmaty virtual jsi::Value registerEventHandler( 4904819bfdSŁukasz Kosmaty jsi::Runtime &rt, 5004819bfdSŁukasz Kosmaty const jsi::Value &eventHash, 5104819bfdSŁukasz Kosmaty const jsi::Value &worklet) = 0; 5204819bfdSŁukasz Kosmaty virtual void unregisterEventHandler( 5304819bfdSŁukasz Kosmaty jsi::Runtime &rt, 5404819bfdSŁukasz Kosmaty const jsi::Value ®istrationId) = 0; 5504819bfdSŁukasz Kosmaty 5604819bfdSŁukasz Kosmaty // views 5704819bfdSŁukasz Kosmaty virtual jsi::Value getViewProp( 5804819bfdSŁukasz Kosmaty jsi::Runtime &rt, 5904819bfdSŁukasz Kosmaty const jsi::Value &viewTag, 6004819bfdSŁukasz Kosmaty const jsi::Value &propName, 6104819bfdSŁukasz Kosmaty const jsi::Value &callback) = 0; 6204819bfdSŁukasz Kosmaty 6304819bfdSŁukasz Kosmaty // sensors 6404819bfdSŁukasz Kosmaty virtual jsi::Value registerSensor( 6504819bfdSŁukasz Kosmaty jsi::Runtime &rt, 6604819bfdSŁukasz Kosmaty const jsi::Value &sensorType, 6704819bfdSŁukasz Kosmaty const jsi::Value &interval, 68*5f154df9Saleqsio const jsi::Value &iosReferenceFrame, 6904819bfdSŁukasz Kosmaty const jsi::Value &sensorDataContainer) = 0; 7004819bfdSŁukasz Kosmaty virtual void unregisterSensor( 7104819bfdSŁukasz Kosmaty jsi::Runtime &rt, 7204819bfdSŁukasz Kosmaty const jsi::Value &sensorId) = 0; 7304819bfdSŁukasz Kosmaty 7404819bfdSŁukasz Kosmaty // keyboard 7504819bfdSŁukasz Kosmaty virtual jsi::Value subscribeForKeyboardEvents( 7604819bfdSŁukasz Kosmaty jsi::Runtime &rt, 77*5f154df9Saleqsio const jsi::Value &keyboardEventContainer, 78*5f154df9Saleqsio const jsi::Value &isStatusBarTranslucent) = 0; 7904819bfdSŁukasz Kosmaty virtual void unsubscribeFromKeyboardEvents( 8004819bfdSŁukasz Kosmaty jsi::Runtime &rt, 8104819bfdSŁukasz Kosmaty const jsi::Value &listenerId) = 0; 8204819bfdSŁukasz Kosmaty 8304819bfdSŁukasz Kosmaty // other 8404819bfdSŁukasz Kosmaty virtual jsi::Value enableLayoutAnimations( 8504819bfdSŁukasz Kosmaty jsi::Runtime &rt, 8604819bfdSŁukasz Kosmaty const jsi::Value &config) = 0; 8704819bfdSŁukasz Kosmaty virtual jsi::Value configureProps( 8804819bfdSŁukasz Kosmaty jsi::Runtime &rt, 8904819bfdSŁukasz Kosmaty const jsi::Value &uiProps, 9004819bfdSŁukasz Kosmaty const jsi::Value &nativeProps) = 0; 91*5f154df9Saleqsio 92*5f154df9Saleqsio // layout animations 93*5f154df9Saleqsio virtual jsi::Value configureLayoutAnimation( 94*5f154df9Saleqsio jsi::Runtime &rt, 95*5f154df9Saleqsio const jsi::Value &viewTag, 96*5f154df9Saleqsio const jsi::Value &type, 97*5f154df9Saleqsio const jsi::Value &sharedTransitionTag, 98*5f154df9Saleqsio const jsi::Value &config) = 0; 9904819bfdSŁukasz Kosmaty }; 10004819bfdSŁukasz Kosmaty 10104819bfdSŁukasz Kosmaty } // namespace reanimated 102