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