<?php
declare (strict_types = 1);

namespace GrottoPress\Jentil\Setups\Customizer\Title\Settings;

use GrottoPress\Jentil\Setups\Customizer\Title\Title;
use GrottoPress\Jentil\Utilities\ThemeMods\Title as TitleMod;
use GrottoPress\Jentil\Setups\Customizer\AbstractSetting as Setting;

abstract class AbstractSetting extends Setting
{
    /**
     * @var TitleMod
     */
    protected $mod;

    public function __construct(Title $title)
    {
        parent::__construct($title);

        $this->args['transport'] = 'postMessage';
        $this->args['sanitize_callback'] = 'wp_kses_data';

        $this->control['section'] = $this->section->id;
        $this->control['label'] = \esc_html__('Enter title', 'jentil');
        $this->control['type'] = 'text';
    }

    protected function themeMod(array $args): TitleMod
    {
        return $this->section->customizer->app->utilities->themeMods->title(
            $args
        );
    }
}

<?php
declare (strict_types = 1);

namespace GrottoPress\Jentil\Setups\Customizer\Title\Settings;

use GrottoPress\Jentil\Setups\Customizer\Title\Title;
use GrottoPress\Jentil\Utilities\ThemeMods\Title as TitleMod;
use GrottoPress\Jentil\Setups\Customizer\AbstractSetting as Setting;

abstract class AbstractSetting extends Setting
{
    /**
     * @var TitleMod
     */
    protected $mod;

    public function __construct(Title $title)
    {
        parent::__construct($title);

        $this->args['transport'] = 'refresh';
        $this->args['sanitize_callback'] = 'wp_kses_data';

        $this->control['section'] = $this->section->id;
        $this->control['label'] = \esc_html__('Enter title', 'jentil');
        $this->control['type'] = 'text';
    }

    protected function themeMod(array $args): TitleMod
    {
        return $this->section->customizer->app->utilities->themeMods->title(
            $args
        );
    }
}

Use 'refresh' for title customizer settings transport
Use 'refresh' for title customizer settings transport

'postMessage' is buggy as page-specific functions return empty in
the customizer and so JS cannot replace short tags.

Will work out a way to do this later.
