get_inliner_class(); $that = new self(); $that->inliner = $inliner_class::fromHtml( $unprocessed_html ); return $that; } /** * Inlines the provided CSS. * * @param string $css The CSS to inline. * @return self * @throws \LogicException If from_html() was not called first. */ public function inline_css( string $css = '' ): self { if ( ! isset( $this->inliner ) ) { throw new \LogicException( 'You must call from_html before calling inline_css' ); } /** Ignore PHPStan analysis for dynamic inliner method call. @phpstan-ignore-next-line */ $this->inliner->inlineCss( $css ); return $this; } /** * Renders the HTML with inlined CSS. * * @return string The processed HTML. * @throws \LogicException If from_html() was not called first. */ public function render(): string { if ( ! isset( $this->inliner ) ) { throw new \LogicException( 'You must call from_html before calling render' ); } /** Ignore PHPStan analysis for dynamic inliner method call. @phpstan-ignore-next-line */ return $this->inliner->render(); } /** * Get the inliner class. * * Returns the fully qualified class name for the available CSS inliner. * Runtime return type: 'Pelago\Emogrifier\CssInliner' | 'Automattic\WooCommerce\Vendor\Pelago\Emogrifier\CssInliner' * * @return string Fully qualified class name * @throws \Exception If the inliner class is not found. */ private function get_inliner_class(): string { if ( class_exists( 'Automattic\WooCommerce\Vendor\Pelago\Emogrifier\CssInliner' ) ) { return 'Automattic\WooCommerce\Vendor\Pelago\Emogrifier\CssInliner'; } if ( class_exists( 'Automattic\WooCommerce\EmailEditorVendor\Pelago\Emogrifier\CssInliner' ) ) { return 'Automattic\WooCommerce\EmailEditorVendor\Pelago\Emogrifier\CssInliner'; } throw new \Exception( 'CssInliner class not found' ); } }