#include "RNSvgComponentsRegistry.h" #include #include #include #include #include #include namespace facebook { namespace react { RNSvgComponentsRegistry::RNSvgComponentsRegistry( ComponentFactory *delegate) : delegate_(delegate) {} std::shared_ptr RNSvgComponentsRegistry::sharedProviderRegistry() { auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); // Svg providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); providerRegistry->add(concreteComponentDescriptorProvider()); return providerRegistry; } jni::local_ref RNSvgComponentsRegistry::initHybrid( jni::alias_ref, ComponentFactory *delegate) { auto instance = makeCxxInstance(delegate); auto buildRegistryFunction = [](EventDispatcher::Weak const &eventDispatcher, ContextContainer::Shared const &contextContainer) -> ComponentDescriptorRegistry::Shared { auto registry = RNSvgComponentsRegistry::sharedProviderRegistry() ->createComponentDescriptorRegistry( {eventDispatcher, contextContainer}); return registry; }; delegate->buildRegistryFunction = buildRegistryFunction; return instance; } void RNSvgComponentsRegistry::registerNatives() { registerHybrid({ makeNativeMethod("initHybrid", RNSvgComponentsRegistry::initHybrid), }); // This is a temporary solution that allows components exported by the svg // library to be added to the main component registry. This code is triggered // when c++ svg library is initialized and is needed because RN's autolinking // does not currently support Fabric components. As a consequence, users would need // to manually put library initialization calls in their ReactNativeHost implementation // which is undesirable. sharedProviderRegistry(); } } // namespace react } // namespace facebook