{{-- format-ignore-start --}}
@use(Illuminate\Support\Str)
@props([
// name of the input field for use in passing form submission data
// this is prefixed with bw- when used as a class name
'name' => defaultBladewindName('bw-file-'),
// by default all file media and pdf file types can be selected
'acceptedFileTypes' => config('bladewind.filepicker.accepted_file_types', 'image/*,audio/*,video/*,application/pdf'),
// the default text to display in the file picker
'placeholderLine1' => config('bladewind.filepicker.placeholder_line1', 'Choose files or drag and drop to upload'),
'placeholderLine2' => config('bladewind.filepicker.placeholder_line2', '%s up to %s'),
// ensure a file is selected by user
'required' => false,
// add files to the component by browsing for files
'canBrowse' => config('bladewind.filepicker.can_browse', true),
// add files using only drag and drop on the filepicker component
'canDrop' => config('bladewind.filepicker.can_drop', true),
// disable the filepicker
'disabled' => false,
// validate sizes of selected files
'validateFileSize' => config('bladewind.filepicker.validate_file_size', true),
// generate base64 output of selected files
'base64' => config('bladewind.filepicker.base64', false),
// how should the base64 data be returned. string | url
'base64Output' => config('bladewind.filepicker.base64_output', 'url'),
// show Filepond credits
'showCredits' => config('bladewind.filepicker.show_credits', false),
// should files be automatically uploaded to a server once selected
'autoUpload' => config('bladewind.filepicker.auto_upload', false),
// how many files can the user select
'maxFiles' => config('bladewind.filepicker.max_files', 1),
// maximum size for each file
'maxFileSize' => config('bladewind.filepicker.max_file_size', '5mb'),
// maximum size allowed for all files selected
'maxTotalFileSize' => config('bladewind.filepicker.max_total_file_size', null),
// display selected files when component loads
'selectedValue' => [],
// when files exist, add new files to this position. top|bottom
'addNewFilesTo' => config('bladewind.filepicker.add_new_files_to', 'top'),
// show image previews when images are selected
'showImagePreview' => config('bladewind.filepicker.show_image_preview', true),
// allow image resizing in the background. This does not display any UI resizing controls
'canResizeImage' => config('bladewind.filepicker.can_resize_image', false),
// images should be resized to this width
'imageResizeWidth' => config('bladewind.filepicker.image_resize_width', null),
// images should be resized to this height
'imageResizeHeight' => config('bladewind.filepicker.image_resize_height', null),
// allow image cropping
'canCrop' => config('bladewind.filepicker.can_crop', false),
// aspect ratio used for image cropping
'cropAspectRatio' => config('bladewind.filepicker.crop_aspect_ratio', '16:9'),
// url for file uploads
'uploadRoute' => null,
// HTTP headers to append when calling $uploadRoute
'uploadHeaders' => [],
// HTTP method for uploading files
'uploadMethod' => 'POST',
// url for deleting uploaded files
'deleteRoute' => null,
// HTTP method for deleting uploaded files
'deleteMethod' => null,
// HTTP headers to append when calling $deleteRoute
'deleteHeaders' => null,
'nonce' => config('bladewind.script.nonce', null),
])
@php
$name = parseBladewindName($name);
$cleanName = str_replace('[]', '', $name);
$required = parseBladewindVariable($required);
$canBrowse = parseBladewindVariable($canBrowse);
$canDrop = parseBladewindVariable($canDrop);
$canCrop = parseBladewindVariable($canCrop);
$canResizeImage = parseBladewindVariable($canResizeImage);
$validateFileSize = parseBladewindVariable($validateFileSize);
$showImagePreview = parseBladewindVariable($showImagePreview);
$autoUpload = parseBladewindVariable($autoUpload);
$maxFileSize = ((Str::contains($maxFileSize, 'b')) ? $maxFileSize : $maxFileSize.'mb') ;
$maxFiles = (! is_numeric($maxFiles)) ? 1 : (int) $maxFiles;
$imageResizeWidth = (! is_numeric($imageResizeWidth)) ? null : $imageResizeWidth;
$imageResizeHeight = (! is_numeric($imageResizeHeight)) ? null : $imageResizeHeight;
$hasImageFiles = Str::contains($acceptedFileTypes,['image','png','jpg','jpeg','gif']);
$cropAspectRatio = isValidAspectRatio($cropAspectRatio) ? $cropAspectRatio : 'NaN';
if(!app()->environment('production') && !file_exists('vendor/bladewind/css/filepond.min.css')) {
echo 'filepicker assets missing. publish public bladewind assets';
}
$deleteRoute = empty($deleteRoute) ? $uploadRoute : $deleteRoute;
$deleteMethod = empty($deleteMethod) ? $uploadMethod : $deleteMethod;
$uploadHeaders = is_array($uploadHeaders) ? $uploadHeaders : json_decode($uploadHeaders, true);
$deleteHeaders = empty($deleteHeaders) ? $uploadHeaders : (is_array($deleteHeaders) ? $deleteHeaders : json_decode($deleteHeaders, true));
@endphp
@once
@if($hasImageFiles)