/home/bdqbpbxa/api-uniferx.goodface.com.ua/vendor/laravel/nova/src/Fields/Audio.php
<?php

namespace Laravel\Nova\Fields;

use Illuminate\Support\Facades\Storage;

class Audio extends File
{
    use PresentsAudio;

    const PRELOAD_AUTO = 'auto';

    const PRELOAD_METADATA = 'metadata';

    const PRELOAD_NONE = 'none';

    /**
     * The field's component.
     *
     * @var string
     */
    public $component = 'audio-field';

    /**
     * The file types accepted by the field.
     *
     * @var string
     */
    public $acceptedTypes = 'audio/*';

    /**
     * Create a new field.
     *
     * @param  string  $name
     * @param  string|callable|null  $attribute
     * @param  string|null  $disk
     * @param  (callable(\Laravel\Nova\Http\Requests\NovaRequest, object, string, string, ?string, ?string):mixed)|null  $storageCallback
     * @return void
     */
    public function __construct($name, $attribute = null, $disk = 'public', $storageCallback = null)
    {
        parent::__construct($name, $attribute, $disk, $storageCallback);

        $this->preview(function ($value) {
            return $value ? Storage::disk($this->getStorageDisk())->url($value) : null;
        });
    }

    /**
     * Prepare the field element for JSON serialization.
     *
     * @return array<string, mixed>
     */
    public function jsonSerialize(): array
    {
        return array_merge(parent::jsonSerialize(), $this->audioAttributes());
    }
}