diff --git a/ReactCommon/fabric/uimanager/UIManagerBinding.cpp b/ReactCommon/fabric/uimanager/UIManagerBinding.cpp index 3807b4929..afcb6aff7 100644 --- a/ReactCommon/fabric/uimanager/UIManagerBinding.cpp +++ b/ReactCommon/fabric/uimanager/UIManagerBinding.cpp @@ -350,6 +350,33 @@ jsi::Value UIManagerBinding::get( }); } + if (methodName == "measureInWindow") { + return jsi::Function::createFromHostFunction( + runtime, + name, + 2, + [&uiManager]( + jsi::Runtime &runtime, + const jsi::Value &thisValue, + const jsi::Value *arguments, + size_t count) -> jsi::Value { + auto layoutMetrics = uiManager.getRelativeLayoutMetrics( + *shadowNodeFromValue(runtime, arguments[0]), nullptr); + + auto onSuccessFunction = + arguments[1].getObject(runtime).getFunction(runtime); + auto frame = layoutMetrics.frame; + + onSuccessFunction.call( + runtime, + {jsi::Value{runtime, (double)frame.origin.x}, + jsi::Value{runtime, (double)frame.origin.y}, + jsi::Value{runtime, (double)frame.size.width}, + jsi::Value{runtime, (double)frame.size.height}}); + return jsi::Value::undefined(); + }); + } + if (methodName == "setNativeProps") { return jsi::Function::createFromHostFunction( runtime,