123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /*
- * Copyright (c) Facebook, Inc. and its 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 <memory>
- #include <folly/dynamic.h>
- #include <react/config/ReactNativeConfig.h>
- #include <react/core/ShadowNode.h>
- #include <react/uimanager/ComponentDescriptorRegistry.h>
- #include <react/uimanager/UIManagerDelegate.h>
- namespace facebook {
- namespace react {
- // Temporary NativeModuleRegistry definition
- using NativeModuleCallFn =
- std::function<folly::dynamic(const std::string &, const folly::dynamic &)>;
- class NativeModuleRegistry {
- public:
- void registerModule(
- const std::string &moduleName,
- NativeModuleCallFn callFn) {
- modules_.emplace(moduleName, callFn);
- }
- folly::dynamic call(
- const std::string &moduleName,
- const std::string &methodName,
- const folly::dynamic &args) const {
- return modules_.at(moduleName)(methodName, args);
- }
- private:
- std::unordered_map<std::string, NativeModuleCallFn> modules_;
- };
- class UITemplateProcessor {
- public:
- static ShadowNode::Shared buildShadowTree(
- const std::string &jsonStr,
- int rootTag,
- const folly::dynamic ¶ms,
- const ComponentDescriptorRegistry &componentDescriptorRegistry,
- const NativeModuleRegistry &nativeModuleRegistry,
- const std::shared_ptr<const ReactNativeConfig> reactNativeConfig);
- private:
- static ShadowNode::Shared runCommand(
- const folly::dynamic &command,
- Tag rootTag,
- std::vector<SharedShadowNode> &nodes,
- std::vector<folly::dynamic> ®isters,
- const ComponentDescriptorRegistry &componentDescriptorRegistry,
- const NativeModuleRegistry &nativeModuleRegistry,
- const std::shared_ptr<const ReactNativeConfig> reactNativeConfig);
- };
- } // namespace react
- } // namespace facebook
|