<?php
declare(strict_types=1);

namespace Autogedal\Manufacturers\Block\Adminhtml\Widget;

use Magento\Backend\Block\Widget\Button;
use Magento\Framework\Data\Form\Element\AbstractElement;

class ImageChooser extends AbstractInput
{
    public function prepareElementHtml(AbstractElement $element): AbstractElement
    {
        $sourceUrl = $this->getUrl(
            'cms/wysiwyg_images/index',
            ['target_element_id' => $element->getId(), 'type' => 'file']
        );
        $chooser = $this->getLayout()->createBlock(Button::class)
            ->setType('button')
            ->setClass('btn-chooser')
            ->setLabel($this->_getData('config')['button']['open'])
            ->setOnClick(sprintf("MediabrowserUtility.openDialog('%s', 0, 0, \"MediaBrowser\", {})", $sourceUrl))
            ->setDisabled($element->getReadonly());

        return $element->setData(
            'after_element_html',
            $this->getInputHtml($element, 'text')
            . $chooser->toHtml()
            . "<script>require(['mage/adminhtml/browser']);</script>"
        );
    }
}
