get( Bootstrap::class )->init(); } /** * Loads the DI container for the Email editor. * * @internal This uses the Blocks DI container. This container will be replaced * with a different compatible container. * * @param boolean $reset Used to reset the container to a fresh instance. Note: this means all dependencies will be reconstructed. * @return Container */ public static function container( $reset = false ) { static $container; if ( $reset ) { $container = null; } if ( $container ) { return $container; } $container = new Container(); $container->set( CoreInitializer::class, function () { return new CoreInitializer(); } ); $container->set( WooCommerceInitializer::class, function () { return new WooCommerceInitializer(); } ); // Start: Email editor dependencies. $container->set( Theme_Controller::class, function () { return new Theme_Controller(); } ); $container->set( User_Theme::class, function () { return new User_Theme(); } ); $container->set( Settings_Controller::class, function ( $container ) { return new Settings_Controller( $container->get( Theme_Controller::class ) ); } ); $container->set( Templates_Registry::class, function () { return new Templates_Registry(); } ); $container->set( Templates::class, function ( $container ) { return new Templates( $container->get( Templates_Registry::class ) ); } ); $container->set( Patterns::class, function () { return new Patterns(); } ); $container->set( Cleanup_Preprocessor::class, function () { return new Cleanup_Preprocessor(); } ); $container->set( Blocks_Width_Preprocessor::class, function () { return new Blocks_Width_Preprocessor(); } ); $container->set( Typography_Preprocessor::class, function ( $container ) { return new Typography_Preprocessor( $container->get( Settings_Controller::class ) ); } ); $container->set( Spacing_Preprocessor::class, function () { return new Spacing_Preprocessor(); } ); $container->set( Quote_Preprocessor::class, function () { return new Quote_Preprocessor(); } ); $container->set( Highlighting_Postprocessor::class, function () { return new Highlighting_Postprocessor(); } ); $container->set( Variables_Postprocessor::class, function ( $container ) { return new Variables_Postprocessor( $container->get( Theme_Controller::class ) ); } ); $container->set( Border_Style_Postprocessor::class, function () { return new Border_Style_Postprocessor(); } ); $container->set( Assets_Manager::class, function ( $container ) { return new Assets_Manager( $container->get( Settings_Controller::class ), $container->get( Theme_Controller::class ), $container->get( User_Theme::class ), $container->get( Email_Editor_Logger::class ) ); } ); $container->set( Process_Manager::class, function ( $container ) { return new Process_Manager( $container->get( Cleanup_Preprocessor::class ), $container->get( Blocks_Width_Preprocessor::class ), $container->get( Typography_Preprocessor::class ), $container->get( Spacing_Preprocessor::class ), $container->get( Quote_Preprocessor::class ), $container->get( Highlighting_Postprocessor::class ), $container->get( Variables_Postprocessor::class ), $container->get( Border_Style_Postprocessor::class ) ); } ); $container->set( Content_Renderer::class, function ( $container ) { return new Content_Renderer( $container->get( Process_Manager::class ), new Email_Css_Inliner(), $container->get( Theme_Controller::class ), $container->get( Email_Editor_Logger::class ) ); } ); $container->set( Renderer::class, function ( $container ) { return new Renderer( $container->get( Content_Renderer::class ), $container->get( Templates::class ), new Email_Css_Inliner(), $container->get( Theme_Controller::class ), $container->get( Personalization_Tags_Registry::class ), ); } ); $container->set( Personalization_Tags_Registry::class, function ( $container ) { return new Personalization_Tags_Registry( $container->get( Email_Editor_Logger::class ) ); } ); $container->set( Personalizer::class, function ( $container ) { return new Personalizer( $container->get( Personalization_Tags_Registry::class ), ); } ); $container->set( Send_Preview_Email::class, function ( $container ) { return new Send_Preview_Email( $container->get( Renderer::class ), $container->get( Personalizer::class ), ); } ); $container->set( Email_Api_Controller::class, function ( $container ) { return new Email_Api_Controller( $container->get( Personalization_Tags_Registry::class ), ); } ); $container->set( Dependency_Check::class, function () { return new Dependency_Check(); } ); $container->set( Email_Editor_Logger::class, function () { return new Email_Editor_Logger(); } ); $container->set( Site_Style_Sync_Controller::class, function () { return new Site_Style_Sync_Controller(); } ); $container->set( Email_Editor::class, function ( $container ) { return new Email_Editor( $container->get( Email_Api_Controller::class ), $container->get( Templates::class ), $container->get( Patterns::class ), $container->get( Send_Preview_Email::class ), $container->get( Personalization_Tags_Registry::class ), $container->get( Email_Editor_Logger::class ), $container->get( Assets_Manager::class ) ); } ); // End: Email editor dependencies. // Start: Woo dependencies. $container->set( Bootstrap::class, function ( $container ) { return new Bootstrap( $container->get( Email_Editor::class ), $container->get( CoreInitializer::class ), $container->get( WooCommerceInitializer::class ), ); } ); return $container; } }