# jch-optimize/trunk/src/Service/CriticalJsConfigureHelperProvider.php

JCH Optimize, version trunk. 89 lines.

- Page: https://pluginprobe.com/plugins/jch-optimize/trunk/code/src/Service/CriticalJsConfigureHelperProvider.php
- Raw: https://pluginprobe.com/plugins/jch-optimize/trunk/raw/src/Service/CriticalJsConfigureHelperProvider.php
- Modified: 2026-07-04T02:31:50+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/jch-optimize/trunk/code/src/Service/CriticalJsConfigureHelperProvider.php#L10-L20`.

```php
<?php

/**
 * JCH Optimize - Performs several front-end optimizations for fast downloads
 *
 * @package   jchoptimize/wordpress-platform
 * @author    Samuel Marshall <samuel@jch-optimize.net>
 * @copyright Copyright (c) 2024 Samuel Marshall / JCH Optimize
 * @license   GNU/GPLv3, or later. See LICENSE file
 *
 * If LICENSE file missing, see <http://www.gnu.org/licenses/>.
 */

namespace JchOptimize\WordPress\Service;

use _JchOptimizeVendor\V91\Joomla\DI\Container;
use _JchOptimizeVendor\V91\Joomla\DI\ServiceProviderInterface;
use _JchOptimizeVendor\V91\Joomla\Input\Input;
use _JchOptimizeVendor\V91\Joomla\Renderer\RendererInterface;
use JchOptimize\Core\Admin\HtmlCrawler;
use JchOptimize\Core\Html\HtmlProcessor;
use JchOptimize\Core\Mvc\View;
use JchOptimize\Core\Registry;
use JchOptimize\WordPress\Controller\CriticalJsAutoSave;
use JchOptimize\WordPress\Controller\CriticalJsTableBody;
use JchOptimize\WordPress\Model\CriticalJsConfigureHelper;
use JchOptimize\WordPress\Model\PopulateModalBody;

class CriticalJsConfigureHelperProvider implements ServiceProviderInterface
{
    public function register(Container $container): void
    {
        $container->alias(CriticalJsAutoSave::class, 'criticaljsautosave')
            ->share('criticaljsautosave', [$this, 'getControllerCriticalJsAutoSaveService']);
        $container->alias(CriticalJsTableBody::class, 'criticaljstablebody')
            ->share('criticaljstablebody', [$this, 'getControllerCriticalJsTableBodyService']);

        $container->share(CriticalJsConfigureHelper::class, [$this, 'getModelCriticalJsConfigureHelperService']);
        $container->share(PopulateModalBody::class, [$this, 'getModelPopulateModalBodyService']);

        $container->share('configurejsview', [$this, 'getViewConfigureJsService']);
    }

    public function getControllerCriticalJsAutoSaveService(Container $container): CriticalJsAutoSave
    {
        return new CriticalJsAutoSave(
            $container->get(CriticalJsConfigureHelper::class),
            $container->get(Input::class)
        );
    }

    public function getControllerCriticalJsTableBodyService(Container $container): CriticalJsTableBody
    {
        return new CriticalJsTableBody(
            $container->get(PopulateModalBody::class),
            $container->get('configurejsview'),
            $container->get(Input::class)
        );
    }

    public function getModelCriticalJsConfigureHelperService(Container $container): CriticalJsConfigureHelper
    {
        $model = new CriticalJsConfigureHelper();
        $model->setState($container->get(Registry::class));

        return $model;
    }

    public function getModelPopulateModalBodyService(Container $container): PopulateModalBody
    {
        $model = new PopulateModalBody(
            $container->get(HtmlCrawler::class),
            $container->get(HtmlProcessor::class),
        );
        $model->setState($container->get(Registry::class));
        $model->setContainer($container);

        return $model;
    }

    public function getViewConfigureJsService(Container $container): View
    {
        $renderer = clone $container->getNewInstance(RendererInterface::class);
        $renderer->getRenderer()->setLayout('');

        return new View($renderer);
    }
}

```
