1 #include "NativeReanimatedModuleSpec.h" 2 3 #include <utility> 4 5 #define SPEC_PREFIX(FN_NAME) __hostFunction_NativeReanimatedModuleSpec_##FN_NAME 6 7 namespace reanimated { 8 9 static jsi::Value SPEC_PREFIX(installCoreFunctions)( 10 jsi::Runtime &rt, 11 TurboModule &turboModule, 12 const jsi::Value *args, 13 size_t count) { 14 static_cast<NativeReanimatedModuleSpec *>(&turboModule) 15 ->installCoreFunctions(rt, std::move(args[0]), std::move(args[1])); 16 return jsi::Value::undefined(); 17 } 18 19 // SharedValue 20 21 static jsi::Value SPEC_PREFIX(makeShareableClone)( 22 jsi::Runtime &rt, 23 TurboModule &turboModule, 24 const jsi::Value *args, 25 size_t count) { 26 return static_cast<NativeReanimatedModuleSpec *>(&turboModule) 27 ->makeShareableClone(rt, std::move(args[0]), std::move(args[1])); 28 } 29 30 // Sync methods 31 32 static jsi::Value SPEC_PREFIX(makeSynchronizedDataHolder)( 33 jsi::Runtime &rt, 34 TurboModule &turboModule, 35 const jsi::Value *args, 36 size_t count) { 37 return static_cast<NativeReanimatedModuleSpec *>(&turboModule) 38 ->makeSynchronizedDataHolder(rt, std::move(args[0])); 39 } 40 41 static jsi::Value SPEC_PREFIX(getDataSynchronously)( 42 jsi::Runtime &rt, 43 TurboModule &turboModule, 44 const jsi::Value *args, 45 size_t count) { 46 return static_cast<NativeReanimatedModuleSpec *>(&turboModule) 47 ->getDataSynchronously(rt, std::move(args[0])); 48 } 49 50 // scheduler 51 52 static jsi::Value SPEC_PREFIX(scheduleOnUI)( 53 jsi::Runtime &rt, 54 TurboModule &turboModule, 55 const jsi::Value *args, 56 size_t count) { 57 static_cast<NativeReanimatedModuleSpec *>(&turboModule) 58 ->scheduleOnUI(rt, std::move(args[0])); 59 return jsi::Value::undefined(); 60 } 61 62 static jsi::Value SPEC_PREFIX(registerEventHandler)( 63 jsi::Runtime &rt, 64 TurboModule &turboModule, 65 const jsi::Value *args, 66 size_t count) { 67 return static_cast<NativeReanimatedModuleSpec *>(&turboModule) 68 ->registerEventHandler(rt, std::move(args[0]), std::move(args[1])); 69 } 70 71 static jsi::Value SPEC_PREFIX(unregisterEventHandler)( 72 jsi::Runtime &rt, 73 TurboModule &turboModule, 74 const jsi::Value *args, 75 size_t count) { 76 static_cast<NativeReanimatedModuleSpec *>(&turboModule) 77 ->unregisterEventHandler(rt, std::move(args[0])); 78 return jsi::Value::undefined(); 79 } 80 81 static jsi::Value SPEC_PREFIX(getViewProp)( 82 jsi::Runtime &rt, 83 TurboModule &turboModule, 84 const jsi::Value *args, 85 size_t count) { 86 static_cast<NativeReanimatedModuleSpec *>(&turboModule) 87 ->getViewProp( 88 rt, std::move(args[0]), std::move(args[1]), std::move(args[2])); 89 return jsi::Value::undefined(); 90 } 91 92 static jsi::Value SPEC_PREFIX(enableLayoutAnimations)( 93 jsi::Runtime &rt, 94 TurboModule &turboModule, 95 const jsi::Value *args, 96 size_t count) { 97 static_cast<NativeReanimatedModuleSpec *>(&turboModule) 98 ->enableLayoutAnimations(rt, std::move(args[0])); 99 return jsi::Value::undefined(); 100 } 101 102 static jsi::Value SPEC_PREFIX(registerSensor)( 103 jsi::Runtime &rt, 104 TurboModule &turboModule, 105 const jsi::Value *args, 106 size_t count) { 107 return static_cast<NativeReanimatedModuleSpec *>(&turboModule) 108 ->registerSensor( 109 rt, 110 std::move(args[0]), 111 std::move(args[1]), 112 std::move(args[2]), 113 std::move(args[3])); 114 } 115 116 static jsi::Value SPEC_PREFIX(unregisterSensor)( 117 jsi::Runtime &rt, 118 TurboModule &turboModule, 119 const jsi::Value *args, 120 size_t count) { 121 static_cast<NativeReanimatedModuleSpec *>(&turboModule) 122 ->unregisterSensor(rt, std::move(args[0])); 123 return jsi::Value::undefined(); 124 } 125 126 static jsi::Value SPEC_PREFIX(configureProps)( 127 jsi::Runtime &rt, 128 TurboModule &turboModule, 129 const jsi::Value *args, 130 size_t count) { 131 static_cast<NativeReanimatedModuleSpec *>(&turboModule) 132 ->configureProps(rt, std::move(args[0]), std::move(args[1])); 133 return jsi::Value::undefined(); 134 } 135 136 static jsi::Value SPEC_PREFIX(subscribeForKeyboardEvents)( 137 jsi::Runtime &rt, 138 TurboModule &turboModule, 139 const jsi::Value *args, 140 size_t count) { 141 return static_cast<NativeReanimatedModuleSpec *>(&turboModule) 142 ->subscribeForKeyboardEvents(rt, std::move(args[0]), std::move(args[1])); 143 } 144 145 static jsi::Value SPEC_PREFIX(unsubscribeFromKeyboardEvents)( 146 jsi::Runtime &rt, 147 TurboModule &turboModule, 148 const jsi::Value *args, 149 size_t count) { 150 static_cast<NativeReanimatedModuleSpec *>(&turboModule) 151 ->unsubscribeFromKeyboardEvents(rt, std::move(args[0])); 152 return jsi::Value::undefined(); 153 } 154 155 static jsi::Value SPEC_PREFIX(configureLayoutAnimation)( 156 jsi::Runtime &rt, 157 TurboModule &turboModule, 158 const jsi::Value *args, 159 size_t count) { 160 return static_cast<NativeReanimatedModuleSpec *>(&turboModule) 161 ->configureLayoutAnimation( 162 rt, 163 std::move(args[0]), 164 std::move(args[1]), 165 std::move(args[2]), 166 std::move(args[3])); 167 } 168 169 NativeReanimatedModuleSpec::NativeReanimatedModuleSpec( 170 std::shared_ptr<CallInvoker> jsInvoker) 171 : TurboModule("NativeReanimated", jsInvoker) { 172 methodMap_["installCoreFunctions"] = 173 MethodMetadata{2, SPEC_PREFIX(installCoreFunctions)}; 174 175 methodMap_["makeShareableClone"] = 176 MethodMetadata{2, SPEC_PREFIX(makeShareableClone)}; 177 178 methodMap_["makeSynchronizedDataHolder"] = 179 MethodMetadata{1, SPEC_PREFIX(makeSynchronizedDataHolder)}; 180 methodMap_["getDataSynchronously"] = 181 MethodMetadata{1, SPEC_PREFIX(getDataSynchronously)}; 182 183 methodMap_["scheduleOnUI"] = MethodMetadata{1, SPEC_PREFIX(scheduleOnUI)}; 184 185 methodMap_["registerEventHandler"] = 186 MethodMetadata{2, SPEC_PREFIX(registerEventHandler)}; 187 methodMap_["unregisterEventHandler"] = 188 MethodMetadata{1, SPEC_PREFIX(unregisterEventHandler)}; 189 190 methodMap_["getViewProp"] = MethodMetadata{3, SPEC_PREFIX(getViewProp)}; 191 methodMap_["enableLayoutAnimations"] = 192 MethodMetadata{2, SPEC_PREFIX(enableLayoutAnimations)}; 193 methodMap_["registerSensor"] = MethodMetadata{4, SPEC_PREFIX(registerSensor)}; 194 methodMap_["unregisterSensor"] = 195 MethodMetadata{1, SPEC_PREFIX(unregisterSensor)}; 196 methodMap_["configureProps"] = MethodMetadata{2, SPEC_PREFIX(configureProps)}; 197 methodMap_["subscribeForKeyboardEvents"] = 198 MethodMetadata{2, SPEC_PREFIX(subscribeForKeyboardEvents)}; 199 methodMap_["unsubscribeFromKeyboardEvents"] = 200 MethodMetadata{1, SPEC_PREFIX(unsubscribeFromKeyboardEvents)}; 201 202 methodMap_["configureLayoutAnimation"] = 203 MethodMetadata{4, SPEC_PREFIX(configureLayoutAnimation)}; 204 } 205 } // namespace reanimated 206