/* * 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 #include #include #include #include #include #include #include #include namespace facebook::react { /* * Contains all external dependencies of Scheduler. * Copyable. */ struct SchedulerToolbox final { /* * Represents general purpose DI container for product components/needs. * Must not be `nullptr`. */ ContextContainer::Shared contextContainer; /* * Represents externally managed, lazily available collection of components. */ ComponentRegistryFactory componentRegistryFactory; /* * Represents running JavaScript VM and associated execution queue. * Can execute lambdas before main bundle has loaded. */ std::optional bridgelessBindingsExecutor; /* * Represents running JavaScript VM and associated execution queue. * Executes lambdas after main bundle has loaded. */ RuntimeExecutor runtimeExecutor; /* * Represent connections with the platform-specific run loops and general * purpose background queue. */ EventBeat::Factory eventBeatFactory; /* * A list of `UIManagerCommitHook`s that should be registered in `UIManager`. */ std::vector> commitHooks; }; } // namespace facebook::react