PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/react-native/ReactCommon/react/renderer/bridging
Просмотр файла: bridging.h
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
#include <jsi/jsi.h>
#include <react/bridging/Base.h>
#include <react/renderer/core/ShadowNode.h>
namespace facebook::react {
template <>
struct Bridging<std::shared_ptr<const ShadowNode>> {
static std::shared_ptr<const ShadowNode> fromJs(
jsi::Runtime& rt,
const jsi::Value& jsiValue) {
auto object = jsiValue.asObject(rt);
// Using `jsi::NativeState` instead of `ShadowNodeWrapper` to avoid doing a
// dynamic pointer cast twice (as we're calling `hasNativeState` and then
// `getNativeState`). When we use `NativeState`, JSI doesn't need to do any
// dynamic casts and we can do a single one on our own after the checks.
if (!object.hasNativeState<jsi::NativeState>(rt)) {
throw jsi::JSINativeException("Value is not a ShadowNode reference");
}
auto nativeState = object.getNativeState<jsi::NativeState>(rt);
auto shadowNodeWrapper =
std::dynamic_pointer_cast<ShadowNodeWrapper>(nativeState);
if (shadowNodeWrapper == nullptr ||
shadowNodeWrapper->shadowNode == nullptr) {
throw jsi::JSINativeException(
"Value state is nullptr, expected a ShadowNode reference");
}
return shadowNodeWrapper->shadowNode;
}
static jsi::Value toJs(
jsi::Runtime& rt,
const std::shared_ptr<const ShadowNode>& value) {
jsi::Object obj(rt);
obj.setNativeState(rt, std::make_shared<ShadowNodeWrapper>(value));
return obj;
}
};
} // namespace facebook::react
Выполнить команду
Для локальной разработки. Не используйте в интернете!