<?php
namespace App\Admin\Extensions\Field;

use Encore\Admin\Form\Field;

class SyncFile extends Field
{
    protected $view = 'admin.field.sync_file';

    protected static $css = [
        '/vendor/laravel-admin/bootstrap-fileinput/css/fileinput.min.css',
        '/vendor/laravel-admin/bootstrap-fileinput/themes/explorer/theme.min.css',
    ];

    protected static $js = [
        '/vendor/laravel-admin/bootstrap-fileinput/js/plugins/sortable.min.js',
        '/vendor/laravel-admin/bootstrap-fileinput/js/plugins/purify.min.js',
        '/vendor/laravel-admin/bootstrap-fileinput/js/plugins/piexif.min.js',
        '/vendor/laravel-admin/bootstrap-fileinput/js/fileinput.min.js',
        '/vendor/laravel-admin/bootstrap-fileinput/js/locales/zh.js',
        '/vendor/laravel-admin/bootstrap-fileinput/themes/explorer/theme.min.js',
    ];


//    public function placeholder($placeholder = ''): self
//    {
//        if (!empty($placeholder)) {
//            $this->options(['initialCaption' => $placeholder]);
//        }
//        return $this;
//    }


    /**
     * Set default options form image field.
     *
     * @return void
     */
    protected function setupDefaultOptions()
    {
        $defaultOptions = [
            'language'     => 'zh',
           // 'theme'     => 'explorer',
            'uploadUrl' => route('api.fileinput'),
            'initialPreviewAsData'     => true,

//            'initialPreviewAsData' => true,
//            'browseLabel'          => trans('admin.browse'),
//            'showRemove'           => false,
//            'showUpload'           => false,
//            'dropZoneEnabled'      => false,        //dropzone disabled by default for backward compatibility
////            'initialCaption'       => $this->initialCaption($this->value),
//            'deleteExtraData'      => [
//                $this->formatName($this->column) => static::FILE_DELETE_FLAG,
//                static::FILE_DELETE_FLAG         => '',
//                '_token'                         => csrf_token(),
//                '_method'                        => 'PUT',
//            ],
        ];
        $this->options($defaultOptions);
    }

    /**
     * Render file upload field.
     *
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function render()
    {
        $this->options([]);
        $this->setupDefaultOptions();
        $options = json_encode($this->options);

        $this->script = <<<EOT

$("input{$this->getElementClassSelector()}").fileinput({$options});

EOT;

        return parent::render();
    }
}