patientId = $patientId; $this->field = $field; $patient = Patient::find($patientId); $this->form->fill([ $field => EditPatient::normalizeFileList($patient?->{$field}), ]); } public function form(Schema $form): Schema { $component = match ($this->field) { 'videos' => FileUpload::make('videos') ->hiddenLabel() ->multiple() ->disk('public') ->acceptedFileTypes([ 'video/mp4', 'video/quicktime', 'video/x-msvideo', 'video/x-matroska', 'video/webm', 'audio/mpeg', 'audio/mp3', 'audio/wav', 'audio/x-wav', 'audio/ogg', 'audio/opus', 'audio/mp4', 'audio/x-m4a', 'audio/aac', 'audio/x-aac', 'audio/flac', 'audio/x-flac', 'audio/webm', 'audio/amr', 'audio/3gpp', 'audio/3gpp2', 'audio/aiff', 'audio/x-aiff', ]) ->maxSize(102400) ->downloadable() ->openable() ->panelLayout('grid') ->extraAttributes(['class' => 'fi-video-gallery', 'data-hide-dropzone' => 'true']) ->disabled() ->deletable(false) ->fetchFileInformation(false), 'audio_files' => FileUpload::make('audio_files') ->hiddenLabel() ->multiple() ->disk('public') ->acceptedFileTypes([ 'audio/mpeg', 'audio/mp3', 'audio/wav', 'audio/x-wav', 'audio/ogg', 'audio/opus', 'audio/mp4', 'audio/x-m4a', 'audio/aac', 'audio/x-aac', 'audio/flac', 'audio/x-flac', 'audio/webm', 'audio/amr', 'audio/3gpp', 'audio/3gpp2', 'audio/aiff', 'audio/x-aiff', ]) ->downloadable() ->openable() ->extraAttributes(['data-hide-dropzone' => 'true']) ->disabled() ->deletable(false) ->fetchFileInformation(false), default => throw new \InvalidArgumentException("Unknown field: {$this->field}"), }; return $form ->schema([$component]) ->statePath('data'); } public function render(): \Illuminate\View\View { return view('livewire.patient-media-player'); } }