MailPoet\EmailEditor

EmailEditorContainer{}WC 1.0

Main package class.

No Hooks.

Usage

$EmailEditorContainer = new EmailEditorContainer();
// use class methods

Methods

  1. public static container( $reset = false )
  2. public static init()

EmailEditorContainer{} code WC 9.8.1

class EmailEditorContainer {
	/**
	 * Init method.
	 */
	public static function init() {
		self::container()->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 mixed
	 */
	public static function container( $reset = false ) {
		static $container;

		if ( $reset ) {
			$container = null;
		}

		if ( $container ) {
			return $container;
		}

		$container = new Container();

		// Start: MailPoet plugin dependencies.
		$container->register(
			Initializer::class,
			function () {
				return new Initializer();
			}
		);
		// End: MailPoet plugin dependencies.
		// Start: Email editor dependencies.
		$container->register(
			Theme_Controller::class,
			function () {
				return new Theme_Controller();
			}
		);
		$container->register(
			User_Theme::class,
			function () {
				return new User_Theme();
			}
		);
		$container->register(
			Settings_Controller::class,
			function ( $container ) {
				return new Settings_Controller( $container->get( Theme_Controller::class ) );
			}
		);
		$container->register(
			Settings_Controller::class,
			function ( $container ) {
				return new Settings_Controller( $container->get( Theme_Controller::class ) );
			}
		);
		$container->register(
			Templates_Registry::class,
			function () {
				return new Templates_Registry();
			}
		);
		$container->register(
			Templates::class,
			function ( $container ) {
				return new Templates( $container->get( Templates_Registry::class ) );
			}
		);
		$container->register(
			Patterns::class,
			function () {
				return new Patterns();
			}
		);
		$container->register(
			Cleanup_Preprocessor::class,
			function () {
				return new Cleanup_Preprocessor();
			}
		);
		$container->register(
			Blocks_Width_Preprocessor::class,
			function () {
				return new Blocks_Width_Preprocessor();
			}
		);
		$container->register(
			Typography_Preprocessor::class,
			function ( $container ) {
				return new Typography_Preprocessor( $container->get( Settings_Controller::class ) );
			}
		);
		$container->register(
			Spacing_Preprocessor::class,
			function () {
				return new Spacing_Preprocessor();
			}
		);
		$container->register(
			Highlighting_Postprocessor::class,
			function () {
				return new Highlighting_Postprocessor();
			}
		);
		$container->register(
			Variables_Postprocessor::class,
			function ( $container ) {
				return new Variables_Postprocessor( $container->get( Theme_Controller::class ) );
			}
		);
		$container->register(
			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( Highlighting_Postprocessor::class ),
					$container->get( Variables_Postprocessor::class ),
				);
			}
		);
		$container->register(
			Blocks_Registry::class,
			function () {
				return new Blocks_Registry();
			}
		);
		$container->register(
			Content_Renderer::class,
			function ( $container ) {
				return new Content_Renderer(
					$container->get( Process_Manager::class ),
					$container->get( Blocks_Registry::class ),
					$container->get( Settings_Controller::class ),
					new EmailCssInliner(),
					$container->get( Theme_Controller::class ),
				);
			}
		);
		$container->register(
			Renderer::class,
			function ( $container ) {
				return new Renderer(
					$container->get( Content_Renderer::class ),
					$container->get( Templates::class ),
					new EmailCssInliner(),
					$container->get( Theme_Controller::class ),
				);
			}
		);
		$container->register(
			Personalization_Tags_Registry::class,
			function () {
				return new Personalization_Tags_Registry();
			}
		);
		$container->register(
			Personalizer::class,
			function ( $container ) {
				return new Personalizer(
					$container->get( Personalization_Tags_Registry::class ),
				);
			}
		);
		$container->register(
			Send_Preview_Email::class,
			function ( $container ) {
				return new Send_Preview_Email(
					$container->get( Renderer::class ),
					$container->get( Personalizer::class ),
				);
			}
		);
		$container->register(
			Email_Api_Controller::class,
			function ( $container ) {
				return new Email_Api_Controller(
					$container->get( Personalization_Tags_Registry::class ),
				);
			}
		);
		$container->register(
			Dependency_Check::class,
			function () {
				return new Dependency_Check();
			}
		);
		$container->register(
			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 ),
				);
			}
		);
		// End: Email editor dependencies.

		// Start: Woo dependencies.
		$container->register(
			Bootstrap::class,
			function ( $container ) {
				return new Bootstrap(
					$container->get(Email_Editor::class),
					$container->get(Initializer::class),
				);
			}
		);

		return $container;
	}
}