@oneplatformdev/ui 0.1.99-beta.296 → 0.1.99-beta.298
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/Wrappers.js.map +1 -1
- package/Accordion/Accordion.js.map +1 -1
- package/Alert/Alert.js.map +1 -1
- package/Alert/alertVariants.js.map +1 -1
- package/AlertDialog/AlertDialog.js.map +1 -1
- package/AlertDialog/AlertDialog.stories.js +2 -4
- package/AlertDialog/AlertDialog.stories.js.map +1 -1
- package/AlertDialog/AlertDialogRoot.js +18 -20
- package/AlertDialog/AlertDialogRoot.js.map +1 -1
- package/AreaChart/AreaChart.js.map +1 -1
- package/Aside/Aside.js.map +1 -1
- package/Aside/AsideSidebar.js.map +1 -1
- package/AspectRatio/AspectRatio.js.map +1 -1
- package/Avatar/Avatar.js.map +1 -1
- package/Badge/Badge.js.map +1 -1
- package/Badge/badgeVariants.js.map +1 -1
- package/Breadcrumb/Breadcrumb.js.map +1 -1
- package/Button/Button.js +10 -11
- package/Button/Button.js.map +1 -1
- package/Button/Button.stories.js.map +1 -1
- package/Button/Button.utils.js.map +1 -1
- package/Button/ButtonCounterBadge.js.map +1 -1
- package/Button/buttonVariants.js.map +1 -1
- package/ButtonIcon/ButtonIcon.js +19 -22
- package/ButtonIcon/ButtonIcon.js.map +1 -1
- package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
- package/ButtonIcon/buttonIconVariants.js.map +1 -1
- package/CHANGELOG.md +3491 -3465
- package/Calendar/Calendar.js +4 -6
- package/Calendar/Calendar.js.map +1 -1
- package/Card/Card.js.map +1 -1
- package/Carousel/Carousel.js +6 -7
- package/Carousel/Carousel.js.map +1 -1
- package/Chart/Chart.js.map +1 -1
- package/Checkbox/Checkbox.js +0 -1
- package/Checkbox/Checkbox.js.map +1 -1
- package/Checkbox/Checkbox.stories.js.map +1 -1
- package/Collapsible/Collapsible.js.map +1 -1
- package/Combobox/Combobox.js +10 -10
- package/Combobox/Combobox.js.map +1 -1
- package/Combobox/Combobox.stories.js.map +1 -1
- package/Combobox/Combobox.types.js.map +1 -1
- package/Combobox/ComboboxOptionItem.js +18 -19
- package/Combobox/ComboboxOptionItem.js.map +1 -1
- package/Combobox/ComboboxRenderContent.js +26 -27
- package/Combobox/ComboboxRenderContent.js.map +1 -1
- package/Combobox/ComboboxRenderOptions.js +5 -5
- package/Combobox/ComboboxRenderOptions.js.map +1 -1
- package/Combobox/ComboboxRenderTrigger.js +18 -20
- package/Combobox/ComboboxRenderTrigger.js.map +1 -1
- package/Command/Command.js +21 -22
- package/Command/Command.js.map +1 -1
- package/ContextPopover/ContextDropdownMenu.js.map +1 -1
- package/ContextPopover/ContextPopover.js.map +1 -1
- package/ContextPopover/useContextPopoverHandler.js.map +1 -1
- package/DataTable/DataTable.js +24 -26
- package/DataTable/DataTable.js.map +1 -1
- package/DataTable/DataTableColumnFilter.js +6 -7
- package/DataTable/DataTableColumnFilter.js.map +1 -1
- package/DataTable/useDataTable.js.map +1 -1
- package/DatePicker/DatePicker.js +1 -2
- package/DatePicker/DatePicker.js.map +1 -1
- package/Dialog/Dialog.js +20 -21
- package/Dialog/Dialog.js.map +1 -1
- package/Dialog/Dialog.stories.js +14 -15
- package/Dialog/Dialog.stories.js.map +1 -1
- package/Dialog/DialogOverlayScope.js.map +1 -1
- package/Dialog/useDialogClosePosition.js.map +1 -1
- package/Drawer/Drawer.js.map +1 -1
- package/DropdownMenu/DropdownMenu.js.map +1 -1
- package/Dropzone/Dropzone.d.ts.map +1 -1
- package/Dropzone/Dropzone.js +300 -277
- package/Dropzone/Dropzone.js.map +1 -1
- package/Dropzone/Dropzone.stories.js +87 -66
- package/Dropzone/Dropzone.stories.js.map +1 -1
- package/Dropzone/Dropzone.types.d.ts +2 -1
- package/Dropzone/Dropzone.types.d.ts.map +1 -1
- package/Dropzone/Dropzone.types.js +17 -6
- package/Dropzone/Dropzone.types.js.map +1 -1
- package/Dropzone/DropzoneCoverPreview.d.ts +14 -0
- package/Dropzone/DropzoneCoverPreview.d.ts.map +1 -0
- package/Dropzone/DropzoneCoverPreview.js +56 -0
- package/Dropzone/DropzoneCoverPreview.js.map +1 -0
- package/Dropzone/DropzoneFileCard.d.ts +17 -0
- package/Dropzone/DropzoneFileCard.d.ts.map +1 -0
- package/Dropzone/DropzoneFileCard.js +39 -0
- package/Dropzone/DropzoneFileCard.js.map +1 -0
- package/Dropzone/DropzoneFilePreview.js.map +1 -1
- package/Dropzone/DropzoneSinglePickPreview.js +2 -3
- package/Dropzone/DropzoneSinglePickPreview.js.map +1 -1
- package/Dropzone/DropzoneUtils.js.map +1 -1
- package/Dropzone/index.js +6 -5
- package/Form/Form.js +14 -15
- package/Form/Form.js.map +1 -1
- package/Form/FormRenderControl.js +6 -7
- package/Form/FormRenderControl.js.map +1 -1
- package/Form/Form_old.js +4 -5
- package/Form/Form_old.js.map +1 -1
- package/FormCheckbox/FormCheckbox.js +4 -4
- package/FormCheckbox/FormCheckbox.js.map +1 -1
- package/FormCombobox/FormCombobox.js +4 -4
- package/FormCombobox/FormCombobox.js.map +1 -1
- package/FormDatePicker/FormDatePicker.js +4 -4
- package/FormDatePicker/FormDatePicker.js.map +1 -1
- package/FormDropzone/FormDropzone.js +3 -3
- package/FormDropzone/FormDropzone.js.map +1 -1
- package/FormInput/FormInput.js +6 -6
- package/FormInput/FormInput.js.map +1 -1
- package/FormInput/FormInput.stories.js.map +1 -1
- package/FormRadio/FormRadio.js.map +1 -1
- package/FormSelect/FormSelect.js +6 -9
- package/FormSelect/FormSelect.js.map +1 -1
- package/FormTextarea/FormTextarea.js +4 -4
- package/FormTextarea/FormTextarea.js.map +1 -1
- package/Header/Header.js.map +1 -1
- package/HoverCard/HoverCard.js.map +1 -1
- package/InfoBlock/InfoBlock.js.map +1 -1
- package/InfoBlock/InfoBlock.stories.js.map +1 -1
- package/InfoBlock/infoBlockVariants.js.map +1 -1
- package/Input/Input.js.map +1 -1
- package/Input/Input.stories.js.map +1 -1
- package/Input/inputVariants.js.map +1 -1
- package/InputOTP/InputOTP.d.ts.map +1 -1
- package/InputOTP/InputOTP.js.map +1 -1
- package/LICENSE +21 -21
- package/Label/Label.js.map +1 -1
- package/Label/labelVariants.js.map +1 -1
- package/LazyLoader/LazyLoader.js +4 -5
- package/LazyLoader/LazyLoader.js.map +1 -1
- package/LoadedIcon/LoadedIcon.js.map +1 -1
- package/LoadingMask/LoadingMask.js.map +1 -1
- package/LoadingMask/RenderLoadingMask.js.map +1 -1
- package/LoadingProgress/LoadingProgress.js.map +1 -1
- package/LoadingProgress/loadingProgressVariants.js.map +1 -1
- package/Menubar/Menubar.js.map +1 -1
- package/NavigationMenu/NavigationMenu.js.map +1 -1
- package/NavigationMenu/navigationMenuVariants.js.map +1 -1
- package/Pagination/Pagination.js +0 -1
- package/Pagination/Pagination.js.map +1 -1
- package/Popover/Popover.js.map +1 -1
- package/Progress/Progress.js.map +1 -1
- package/README.md +7 -7
- package/Radio/Radio.js.map +1 -1
- package/RadioGroup/RadioGroup.js.map +1 -1
- package/Resizable/Resizable.js.map +1 -1
- package/Resizable/Resizable.stories.js.map +1 -1
- package/ScrollArea/ScrollArea.js.map +1 -1
- package/Search/Search.js +9 -9
- package/Search/Search.js.map +1 -1
- package/Search/Search.stories.js.map +1 -1
- package/Select/Select.js +6 -7
- package/Select/Select.js.map +1 -1
- package/Select/Select.stories.js.map +1 -1
- package/Select/SelectRoot.js.map +1 -1
- package/Separator/Separator.js.map +1 -1
- package/Sheet/Sheet.js.map +1 -1
- package/Sidebar/Sidebar.js +20 -21
- package/Sidebar/Sidebar.js.map +1 -1
- package/Skeleton/Skeleton.js.map +1 -1
- package/Slider/Slider.js.map +1 -1
- package/Sonner/Sonner.js.map +1 -1
- package/Switch/Switch.js.map +1 -1
- package/Switch/Switch.stories.js.map +1 -1
- package/Table/Table.js.map +1 -1
- package/TablePagination/TablePagination.js +21 -26
- package/TablePagination/TablePagination.js.map +1 -1
- package/Tabs/Tabs.js.map +1 -1
- package/Tabs/TabsRoot.js.map +1 -1
- package/Textarea/Textarea.js.map +1 -1
- package/Textarea/Textarea.stories.js.map +1 -1
- package/Textarea/useAutosizeTextArea.js.map +1 -1
- package/Theme/ThemeModeToggle.js +3 -4
- package/Theme/ThemeModeToggle.js.map +1 -1
- package/Theme/ThemeProvider.js.map +1 -1
- package/Toast/Toast.js.map +1 -1
- package/Toast/toast.constants.js.map +1 -1
- package/Toast/toastVariants.js.map +1 -1
- package/Toast/useToast.js.map +1 -1
- package/Toaster/Toaster.js.map +1 -1
- package/Toggle/Toggle.js.map +1 -1
- package/ToggleGroup/ToggleGroup.js.map +1 -1
- package/Tooltip/Tooltip.js.map +1 -1
- package/Tooltip/TooltipRoot.js.map +1 -1
- package/Tooltip/tooltipVariants.js.map +1 -1
- package/index.js +304 -303
- package/package.json +4 -4
- package/vite-env.d.ts +7 -7
package/Dropzone/Dropzone.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { FileTextIcon, InfoIcon, Plus, UploadIcon, X } from 'lucide-react';\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\nimport { FileRejection, useDropzone } from 'react-dropzone';\n\nimport { cn } from '@oneplatformdev/utils';\n\nimport { Card } from '../Card/Card';\n\nimport {\n DEFAULT_FILE_TYPES,\n DropzoneControl,\n DropzoneProps,\n DropzoneValueItem\n} from './Dropzone.types';\nimport { FilePreview } from './DropzoneFilePreview';\nimport { DropzoneSinglePickPreview } from './DropzoneSinglePickPreview';\nimport { extractName, isFile, isVideoUrl } from './DropzoneUtils';\nimport { Button } from \"../Button\";\nimport fileCsvIcon from './icons/file-csv.svg';\nimport fileDocIcon from './icons/file-doc.svg';\nimport fileDocxIcon from './icons/file-docx.svg';\nimport fileJpgIcon from './icons/file-jpg.svg';\nimport filePdfIcon from './icons/file-pdf.svg';\nimport filePngIcon from './icons/file-png.svg';\nimport filePptIcon from './icons/file-ppt.svg';\nimport filePptxIcon from './icons/file-pptx.svg';\nimport fileRarIcon from './icons/file-rar.svg';\nimport fileSvgIcon from './icons/file-svg.svg';\nimport fileWebpIcon from './icons/file-webp.svg';\nimport fileXlsIcon from './icons/file-xls.svg';\nimport fileXlsxIcon from './icons/file-xlsx.svg';\nimport fileZipIcon from './icons/file-zip.svg';\n\nconst formatFileSize = (bytes = 0): string => {\n if (!bytes || bytes < 0) return '0 KB';\n const KB = 1024;\n const MB = KB * 1024;\n const GB = MB * 1024;\n if (bytes >= GB) return `${(bytes / GB).toFixed(2)} GB`;\n if (bytes >= MB) {\n const mb = bytes / MB;\n return `${mb >= 100 ? mb.toFixed(0) : mb.toFixed(2)} MB`;\n }\n if (bytes >= KB) return `${(bytes / KB).toFixed(bytes / KB >= 100 ? 0 : 1)} KB`;\n return `${bytes} B`;\n};\nconst FILE_EXT_ICON_MAP: Record<string, string> = {\n csv: fileCsvIcon,\n doc: fileDocIcon,\n docx: fileDocxIcon,\n jpg: fileJpgIcon,\n jpeg: fileJpgIcon,\n pdf: filePdfIcon,\n png: filePngIcon,\n ppt: filePptIcon,\n pptx: filePptxIcon,\n rar: fileRarIcon,\n svg: fileSvgIcon,\n webp: fileWebpIcon,\n xls: fileXlsIcon,\n xlsx: fileXlsxIcon,\n zip: fileZipIcon,\n};\n\nconst getFileExtension = (fileName?: string) => {\n if (!fileName) return '';\n const parts = fileName.toLowerCase().split('.');\n return parts.length > 1 ? parts[parts.length - 1] : '';\n};\n\nconst getFileTypeIconByName = (fileName?: string) => {\n const extension = getFileExtension(fileName);\n return FILE_EXT_ICON_MAP[extension] ?? null;\n};\nconst areItemsEqual = (a: DropzoneValueItem[], b: DropzoneValueItem[]) => {\n if (a === b) return true;\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n const left = a[i];\n const right = b[i];\n\n if (left === right) continue;\n\n if (typeof left === 'string' && typeof right === 'string') {\n if (left !== right) return false;\n continue;\n }\n\n if (isFile(left) && isFile(right)) {\n if (\n left.name !== right.name ||\n left.size !== right.size ||\n left.type !== right.type ||\n left.lastModified !== right.lastModified\n ) {\n return false;\n }\n continue;\n }\n\n return false;\n }\n\n return true;\n};\n\n/**\n * Dropzone component - A drag-and-drop file upload area with image previews, error handling, and localization.\n *\n * @component\n * @param {DropzoneProps} props - The props for the Dropzone component.\n * @param {string[]} [props.acceptTypes=DEFAULT_FILE_TYPES] - Allowed file MIME types.\n * @param {number} props.maxSizeMB - Maximum allowed file size in megabytes.\n * @param {number} [props.maxFiles=1] - Maximum number of files that can be uploaded.\n * @param {DropzoneTranslations} props.translations - Translations for text labels.\n * @param {(errors: FileRejection[]) => void} [props.onErrors] - Callback triggered when file errors occur.\n * @param {boolean} [props.hideErrors=false] - Whether to hide error messages.\n * @param {boolean} [props.disabled=false] - Whether the dropzone is disabled.\n * @param {DropzoneStyles} [props.classNames] - Custom classNames for different dropzone states.\n * @param {DropzoneValueItem[]} [props.value=[]] - Current selected files or URLs.\n * @param {(items: DropzoneValueItem[]) => void} [props.onChangeValue] - Callback triggered when file selection changes.\n * @param {string} [props.className] - Additional class names for styling.\n * @param {React.Ref<HTMLDivElement>} ref - Ref for the root dropzone container.\n * @returns {JSX.Element} The rendered Dropzone component.\n */\nexport const Dropzone = forwardRef<DropzoneControl, DropzoneProps>(\n (\n {\n acceptTypes = DEFAULT_FILE_TYPES,\n maxSizeMB,\n maxFiles = 1,\n onErrors,\n hideErrors = false,\n disabled = false,\n classNames,\n value,\n onChangeValue,\n className,\n labelDropzonePrompt = 'Drop files here or click to select',\n labelDropzoneSubPrompt = '',\n labelOrClickToSelect = 'Upload file',\n labelSelectedFiles = 'Selected Files',\n labelUploadErrors = 'Upload Errors',\n labelFileTooLarge = 'File is too large',\n labelInvalidFileType = 'Invalid file type',\n labelVideoUploaded = 'Uploaded',\n labelVideoReplace = 'Replace',\n singlePick = false,\n labelDropzoneClassname,\n labelDropzoneSubClassname,\n isUploading = false,\n uploadProgress = 0,\n uploadLoadedBytes = 0,\n uploadTotalBytes = 0,\n onCancelUpload,\n labelUploadingTitle = 'Uploading video...',\n labelUploadingHint = 'Please do not close this page',\n labelUploadingActionCancel = 'Cancel',\n labelUploadingOf = 'of',\n playerTranslations,\n singlePickFileInfo,\n persistentDropzone = false,\n previewVariant = 'default',\n coverFirstItem = false,\n ...restProps\n },\n ref\n ) => {\n const [items, setItems] = useState<DropzoneValueItem[]>(value ?? []);\n const [fileErrors, setFileErrors] = useState<FileRejection[]>([]);\n const firstItem = items[0];\n const firstRejectedFile = fileErrors[0]?.file;\n const isRejectedImage = Boolean(firstRejectedFile?.type?.includes('image'));\n const isSingleFile = singlePick && items.length > 0 && isFile(firstItem);\n const isSingleImage = isSingleFile && firstItem.type.includes('image');\n const isSingleVideo =\n (isSingleFile && firstItem.type.includes('video')) ||\n (singlePick && items.length > 0 && typeof firstItem === 'string' && isVideoUrl(firstItem));\n const isSingleDocument = isSingleFile && !isSingleImage && !isSingleVideo;\n const hasRejectedSingleFile = singlePick && !items.length && Boolean(firstRejectedFile);\n const hasRejectedSingleDocumentFile = hasRejectedSingleFile && !isRejectedImage;\n const singleFileCard = isSingleDocument ? firstItem : firstRejectedFile;\n const singleFileCardIcon = getFileTypeIconByName(singleFileCard?.name);\n const hasSingleVideoPreview =\n singlePick && isSingleVideo;\n const shouldBlockRootOpen = hasSingleVideoPreview;\n const isContentPreviewMode = singlePick && items.length > 0;\n const isSingleImagePreview =\n isContentPreviewMode && !isSingleDocument && !hasSingleVideoPreview;\n\n const onDrop = (acceptedFiles: File[], fileRejections: FileRejection[]) => {\n setFileErrors(fileRejections);\n onErrors?.(fileRejections);\n\n const newItems = singlePick\n ? acceptedFiles.slice(0, 1)\n : [...items, ...acceptedFiles].slice(0, maxFiles);\n\n setItems(newItems);\n onChangeValue?.(newItems);\n };\n\n useEffect(() => {\n if (value && !areItemsEqual(items, value)) {\n setItems(value);\n }\n }, [items, value]);\n\n const removeItem = (\n event: React.MouseEvent<HTMLDivElement>,\n index: number\n ) => {\n if (disabled) return;\n event.stopPropagation();\n\n const newItems = items.filter((_, i) => i !== index);\n setItems(newItems);\n onChangeValue?.(newItems);\n };\n\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\n onDrop,\n accept: acceptTypes.reduce((acc, fileType) => {\n acc[fileType] = [];\n return acc;\n }, {} as Record<string, string[]>),\n maxSize: maxSizeMB * 1024 * 1024,\n maxFiles: singlePick ? 1 : maxFiles,\n disabled: disabled || isUploading,\n noClick: true,\n });\n\n useImperativeHandle(ref, () => {\n return {\n setItems,\n };\n }, []);\n\n const isCoverMode =\n coverFirstItem && previewVariant === 'image-grid' && !singlePick && items.length > 0;\n\n const shouldRenderDetachedPreview =\n !isUploading && !singlePick && persistentDropzone && items.length > 0;\n\n const restItemsForGrid = isCoverMode ? items.slice(1) : items;\n\n const showAddMoreTile =\n !disabled &&\n !singlePick &&\n previewVariant === 'image-grid' &&\n items.length > 0 &&\n items.length < maxFiles;\n\n const previewBlock =\n !isUploading &&\n !singlePick &&\n (restItemsForGrid.length > 0 || showAddMoreTile) && (\n <div className={cn('w-full mt-2', classNames?.previewWrapper)}>\n {previewVariant === 'default' && (\n <pre className=\"font-semibold text-gray-600\">\n {labelSelectedFiles}:\n </pre>\n )}\n <ul\n className={cn(\n 'mt-2 text-sm text-gray-500 flex flex-wrap items-start',\n previewVariant === 'image-grid'\n ? 'gap-2 justify-start'\n : 'gap-4 justify-center'\n )}\n >\n {restItemsForGrid.map((item, gridIndex) => {\n const index = isCoverMode ? gridIndex + 1 : gridIndex;\n const fileName = isFile(item) ? item.name : extractName(item);\n const fileSize = isFile(item) ? formatFileSize(item.size) : '';\n\n return (\n <li\n key={index}\n className={cn(\n 'relative',\n previewVariant === 'image-grid'\n ? 'w-[75px] h-[75px]'\n : 'flex flex-col items-center gap-2'\n )}\n >\n <div className=\"relative w-full h-full\">\n <FilePreview item={item} styles={classNames} />\n <div\n className={cn(\n 'absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm',\n previewVariant === 'image-grid' && 'top-1 right-1 bg-white/90 rounded-full p-0.5'\n )}\n onClick={(event) => removeItem(event, index)}\n >\n <X size={16} strokeWidth={1} color=\"black\" />\n </div>\n </div>\n {previewVariant === 'default' && (\n <span className=\"inline-flex flex-col items-center\">\n <span className=\"max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap\">\n {fileName}\n </span>\n {fileSize && <span>({fileSize})</span>}\n </span>\n )}\n </li>\n );\n })}\n {showAddMoreTile && (\n <li\n key=\"add-more\"\n className=\"relative w-[75px] h-[75px] flex items-center justify-center rounded-[8px] border border-dashed border-[#9368FF80] bg-[#FCFCFC] cursor-pointer hover:bg-[#9368FF0F]\"\n onClick={(event) => {\n event.stopPropagation();\n if (disabled || isUploading) return;\n open();\n }}\n >\n <div className=\"flex size-6 items-center justify-center rounded-full bg-[#9368FF1F]\">\n <Plus size={16} className=\"text-[#9368FF]\" />\n </div>\n </li>\n )}\n </ul>\n </div>\n );\n\n return (\n <div className=\"w-full select-none\">\n <Card\n {...restProps}\n {...getRootProps({\n onClick: (event) => {\n if (disabled || isUploading) return;\n if (shouldBlockRootOpen) {\n restProps.onClick?.(event);\n return;\n }\n open();\n restProps.onClick?.(event);\n },\n })}\n className={cn(\n `w-full text-center flex flex-col items-center justify-center gap-6 cursor-pointer`,\n !isContentPreviewMode &&\n 'border border-dashed border-[#9368FF80] rounded-[8px] bg-[#FCFCFC] p-4',\n isContentPreviewMode && 'min-h-0 border-0 bg-transparent p-0',\n isCoverMode && 'relative',\n disabled && 'border-[#E4E4E7] pointer-events-none',\n fileErrors.length > 0 && !isContentPreviewMode && 'border-red-500',\n isDragActive && 'bg-gray-100',\n singlePick && 'shadow-none!',\n singlePick && items.length > 0 && !hasSingleVideoPreview && 'p-0! shadow-none!',\n hasSingleVideoPreview && 'h-auto! max-h-none! min-h-0! p-2!',\n isSingleImagePreview && 'h-64',\n className\n )}\n >\n <input {...getInputProps()} />\n\n {isUploading && (\n <div\n className=\"w-full h-full min-h-46 rounded-lg border border-[#E4E4E7] bg-[#FCFCFC] flex flex-col items-center justify-center gap-4 p-4\"\n onClick={(event) => event.stopPropagation()}\n >\n <div className=\"relative h-24 w-24\">\n <svg className=\"h-24 w-24\" viewBox=\"0 0 100 100\">\n <circle cx=\"50\" cy=\"50\" r=\"42\" stroke=\"#E6E1F5\" strokeWidth=\"8\" fill=\"none\" />\n </svg>\n <span className=\"absolute inset-0 flex items-center justify-center text-lg font-semibold text-foreground\">\n {Math.max(0, Math.min(100, Math.round(uploadProgress)))}%\n </span>\n </div>\n\n <div className=\"text-center\">\n <p className=\"text-xl font-semibold text-foreground\">{labelUploadingTitle}</p>\n <p className=\"text-sm text-[#666A78]\">\n {formatFileSize(uploadLoadedBytes)} {labelUploadingOf} {formatFileSize(uploadTotalBytes)}\n </p>\n <p className=\"mt-2 text-sm text-[#666A78]\">{labelUploadingHint}</p>\n </div>\n\n <div className=\"w-full max-w-[520px] h-2 rounded-full bg-[#E6E1F5] overflow-hidden\">\n <div\n className=\"h-full bg-[#9368FF] transition-[width] duration-150 ease-linear\"\n style={{ width: `${Math.max(0, Math.min(100, uploadProgress))}%` }}\n />\n </div>\n\n {onCancelUpload && (\n <button\n type=\"button\"\n className=\"mt-1 h-10 min-w-36 rounded-md border border-[#E4E4E7] bg-white px-6 text-base font-medium text-foreground cursor-pointer\"\n onClick={(event) => {\n event.stopPropagation();\n onCancelUpload();\n }}\n >\n {labelUploadingActionCancel}\n </button>\n )}\n </div>\n )}\n\n {!isUploading && isCoverMode && (\n <div\n className=\"absolute inset-0 rounded-[8px] overflow-hidden\"\n onClick={(event) => event.stopPropagation()}\n >\n <FilePreview\n item={items[0]}\n styles={{\n ...classNames,\n previewWraper: cn(\n 'w-full h-full rounded-[8px] border-0',\n classNames?.previewWraper?.replace(/w-\\[[^\\]]+\\]|h-\\[[^\\]]+\\]/g, ''),\n ),\n }}\n />\n <div\n className=\"absolute top-2 right-2 cursor-pointer bg-white/90 rounded-full p-1\"\n onClick={(event) => removeItem(event, 0)}\n >\n <X size={16} strokeWidth={1} color=\"black\" />\n </div>\n </div>\n )}\n\n {!isUploading &&\n (items.length === 0 || (!singlePick && persistentDropzone)) &&\n (fileErrors.length === 0 || !singlePick) && (\n <div\n className={cn(\n 'flex flex-col items-center gap-2 w-full',\n classNames?.idleWrapper,\n isCoverMode && 'invisible',\n )}\n >\n <div className=\"flex size-12 items-center justify-center rounded-full bg-[#9368FF1F]\">\n <UploadIcon className=\"size-6 text-[#9368FF]\" />\n </div>\n\n <div className=\"flex flex-col items-center gap-1 w-full\">\n {!disabled && (\n <>\n <span\n className={cn(\n \"font-semibold text-[14px] leading-[125%] text-[#06080D] text-center w-full whitespace-pre-line\",\n labelDropzoneClassname\n )}\n >\n {labelDropzonePrompt}\n </span>\n\n <span\n className={cn(\n \"font-medium text-[12px] leading-[120%] text-[#666A78] text-center w-full whitespace-pre-line\",\n labelDropzoneSubClassname\n )}\n >\n {labelDropzoneSubPrompt}\n </span>\n </>\n )}\n </div>\n\n {!disabled && (\n <Button\n type=\"button\"\n size=\"md\"\n >\n {labelOrClickToSelect}\n </Button>\n )}\n </div>\n )}\n\n {!isUploading && singlePick && fileErrors.length > 0 && !hasRejectedSingleDocumentFile && (\n <div className={cn('w-full mt-4', classNames?.errorWrapper)}>\n <span className=\"font-semibold text-red-500\">\n {labelUploadErrors}:\n </span>\n <ul className=\"mt-2 text-sm text-red-500 list-disc list-inside\">\n {fileErrors.map((fileRejection, index) => (\n <li key={index}>\n {fileRejection.file.name} (\n {formatFileSize(fileRejection.file.size)})\n {!hideErrors && (\n <ul className=\"ml-4 list-disc list-inside\">\n {fileRejection.errors.map((error, errorIndex) => (\n <li key={errorIndex}>\n {error.code === 'file-too-large' && labelFileTooLarge}\n {error.code === 'file-invalid-type' &&\n labelInvalidFileType}\n {error.code !== 'file-too-large' &&\n error.code !== 'file-invalid-type' &&\n error.message}\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {!isUploading && Boolean(singlePick && items.length) && (\n <>\n {isSingleDocument ? (\n <div\n className=\"w-full max-w-[502px] flex flex-col items-center gap-4\"\n onClick={(event) => event.stopPropagation()}\n >\n <p className=\"w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]\">\n {labelDropzonePrompt}\n </p>\n\n <div className=\"w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4\">\n {singleFileCardIcon ? (\n <img\n src={singleFileCardIcon}\n alt=\"\"\n className=\"size-10 shrink-0\"\n />\n ) : (\n <div className=\"size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0\">\n <FileTextIcon size={20} />\n </div>\n )}\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1\">\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate\">\n {singlePickFileInfo?.name || singleFileCard?.name}\n </span>\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#666A78]\">\n {formatFileSize(singlePickFileInfo?.size || singleFileCard?.size)}\n </span>\n </div>\n {!disabled && (\n <div\n className=\"size-6 flex items-center justify-center cursor-pointer\"\n onClick={(event) => removeItem(event, 0)}\n >\n <X size={24} color=\"#06080D\" />\n </div>\n )}\n </div>\n </div>\n ) : (\n <DropzoneSinglePickPreview\n item={items[0]}\n onRemoveClick={(e) => removeItem(e, 0)}\n onReplaceClick={(e) => {\n e.stopPropagation();\n if (disabled) return;\n open();\n }}\n labelUploaded={labelVideoUploaded}\n labelReplace={labelVideoReplace}\n fileInfo={singlePickFileInfo}\n disabled={disabled}\n playerTranslations={playerTranslations}\n />\n )}\n </>\n )}\n\n {!isUploading && hasRejectedSingleDocumentFile && (\n <div\n className=\"w-full max-w-[502px] flex flex-col items-center gap-4\"\n onClick={(event) => event.stopPropagation()}\n >\n <p className=\"w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]\">\n {labelDropzonePrompt}\n </p>\n\n <div className=\"w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4\">\n {singleFileCardIcon ? (\n <img\n src={singleFileCardIcon}\n alt=\"\"\n className=\"size-10 shrink-0\"\n />\n ) : (\n <div className=\"size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0\">\n <FileTextIcon size={20} />\n </div>\n )}\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1\">\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate\">\n {singleFileCard?.name}\n </span>\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#666A78]\">\n {singleFileCard\n ? `${(singleFileCard.size / (1024 * 1024)).toFixed(0)} MB`\n : ''}\n </span>\n </div>\n {!disabled && (\n <div\n className=\"size-6 flex items-center justify-center cursor-pointer\"\n onClick={(event) => {\n event.stopPropagation();\n setFileErrors([]);\n }}\n >\n <X size={24} color=\"#06080D\" />\n </div>\n )}\n </div>\n\n <div className=\"w-full bg-[#DC26260F] p-4 flex items-start gap-4\">\n <InfoIcon size={20} color=\"#DC2626\" />\n <p className=\"text-[12px] leading-[120%] font-medium text-[#DC2626] text-left\">\n {fileErrors[0]?.errors?.[0]?.code === 'file-too-large'\n ? labelFileTooLarge\n : fileErrors[0]?.errors?.[0]?.message || labelInvalidFileType}\n </p>\n </div>\n </div>\n )}\n\n {!shouldRenderDetachedPreview && previewBlock}\n </Card>\n {shouldRenderDetachedPreview && <div className=\"w-full\">{previewBlock}</div>}\n {!isUploading && !singlePick && fileErrors.length > 0 && (\n <div\n className={cn('w-full mt-4 flex flex-col gap-2', classNames?.errorWrapper)}\n >\n {fileErrors.map((fileRejection, index) => {\n const firstError = fileRejection.errors[0];\n const errorText =\n firstError?.code === 'file-too-large'\n ? labelFileTooLarge\n : firstError?.code === 'file-invalid-type'\n ? labelInvalidFileType\n : firstError?.message || labelInvalidFileType;\n\n return (\n <div\n key={index}\n className=\"w-full bg-[#DC26260F] p-4 flex items-start gap-4 rounded-[8px]\"\n >\n <InfoIcon size={20} color=\"#DC2626\" className=\"shrink-0\" />\n <p className=\"text-[12px] leading-[120%] font-medium text-[#DC2626] text-left\">\n <span className=\"font-semibold\">{fileRejection.file.name}</span>\n {' — '}\n {errorText}\n </p>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\n\nDropzone.displayName = 'Dropzone';\n\n"],"names":["formatFileSize","bytes","KB","MB","GB","mb","FILE_EXT_ICON_MAP","fileCsvIcon","fileDocIcon","fileDocxIcon","fileJpgIcon","filePdfIcon","filePngIcon","filePptIcon","filePptxIcon","fileRarIcon","fileSvgIcon","fileWebpIcon","fileXlsIcon","fileXlsxIcon","fileZipIcon","getFileExtension","fileName","parts","getFileTypeIconByName","extension","areItemsEqual","a","b","i","left","right","isFile","Dropzone","forwardRef","acceptTypes","DEFAULT_FILE_TYPES","maxSizeMB","maxFiles","onErrors","hideErrors","disabled","classNames","value","onChangeValue","className","labelDropzonePrompt","labelDropzoneSubPrompt","labelOrClickToSelect","labelSelectedFiles","labelUploadErrors","labelFileTooLarge","labelInvalidFileType","labelVideoUploaded","labelVideoReplace","singlePick","labelDropzoneClassname","labelDropzoneSubClassname","isUploading","uploadProgress","uploadLoadedBytes","uploadTotalBytes","onCancelUpload","labelUploadingTitle","labelUploadingHint","labelUploadingActionCancel","labelUploadingOf","playerTranslations","singlePickFileInfo","persistentDropzone","previewVariant","coverFirstItem","restProps","ref","items","setItems","useState","fileErrors","setFileErrors","firstItem","firstRejectedFile","isRejectedImage","isSingleFile","isSingleImage","isSingleVideo","isVideoUrl","isSingleDocument","hasRejectedSingleDocumentFile","singleFileCard","singleFileCardIcon","hasSingleVideoPreview","shouldBlockRootOpen","isContentPreviewMode","isSingleImagePreview","onDrop","acceptedFiles","fileRejections","newItems","useEffect","removeItem","event","index","_","getRootProps","getInputProps","isDragActive","open","useDropzone","acc","fileType","useImperativeHandle","isCoverMode","shouldRenderDetachedPreview","restItemsForGrid","showAddMoreTile","previewBlock","jsxs","cn","item","gridIndex","extractName","fileSize","jsx","FilePreview","X","Plus","Card","UploadIcon","Fragment","Button","fileRejection","error","errorIndex","FileTextIcon","DropzoneSinglePickPreview","e","InfoIcon","firstError","errorText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { FileTextIcon, InfoIcon, Plus, UploadIcon, X } from 'lucide-react';\r\nimport { forwardRef, useEffect, useImperativeHandle, useState } from 'react';\r\nimport { FileRejection, useDropzone } from 'react-dropzone';\r\n\r\nimport { cn } from '@oneplatformdev/utils';\r\n\r\nimport { Card } from '../Card/Card';\r\n\r\nimport {\r\n DEFAULT_FILE_TYPES,\r\n DropzoneControl,\r\n DropzoneProps,\r\n DropzoneValueItem\r\n} from './Dropzone.types';\r\nimport { DropzoneCoverPreview } from './DropzoneCoverPreview';\r\nimport { DropzoneFileCard } from './DropzoneFileCard';\r\nimport { FilePreview } from './DropzoneFilePreview';\r\nimport { DropzoneSinglePickPreview } from './DropzoneSinglePickPreview';\r\nimport { extractName, isFile, isVideoUrl } from './DropzoneUtils';\r\nimport { Button } from \"../Button\";\r\nimport fileCsvIcon from './icons/file-csv.svg';\r\nimport fileDocIcon from './icons/file-doc.svg';\r\nimport fileDocxIcon from './icons/file-docx.svg';\r\nimport fileJpgIcon from './icons/file-jpg.svg';\r\nimport filePdfIcon from './icons/file-pdf.svg';\r\nimport filePngIcon from './icons/file-png.svg';\r\nimport filePptIcon from './icons/file-ppt.svg';\r\nimport filePptxIcon from './icons/file-pptx.svg';\r\nimport fileRarIcon from './icons/file-rar.svg';\r\nimport fileSvgIcon from './icons/file-svg.svg';\r\nimport fileWebpIcon from './icons/file-webp.svg';\r\nimport fileXlsIcon from './icons/file-xls.svg';\r\nimport fileXlsxIcon from './icons/file-xlsx.svg';\r\nimport fileZipIcon from './icons/file-zip.svg';\r\n\r\nconst formatFileSize = (bytes = 0): string => {\r\n if (!bytes || bytes < 0) return '0 KB';\r\n const KB = 1024;\r\n const MB = KB * 1024;\r\n const GB = MB * 1024;\r\n if (bytes >= GB) return `${(bytes / GB).toFixed(2)} GB`;\r\n if (bytes >= MB) {\r\n const mb = bytes / MB;\r\n return `${mb >= 100 ? mb.toFixed(0) : mb.toFixed(2)} MB`;\r\n }\r\n if (bytes >= KB) return `${(bytes / KB).toFixed(bytes / KB >= 100 ? 0 : 1)} KB`;\r\n return `${bytes} B`;\r\n};\r\nconst FILE_EXT_ICON_MAP: Record<string, string> = {\r\n csv: fileCsvIcon,\r\n doc: fileDocIcon,\r\n docx: fileDocxIcon,\r\n jpg: fileJpgIcon,\r\n jpeg: fileJpgIcon,\r\n pdf: filePdfIcon,\r\n png: filePngIcon,\r\n ppt: filePptIcon,\r\n pptx: filePptxIcon,\r\n rar: fileRarIcon,\r\n svg: fileSvgIcon,\r\n webp: fileWebpIcon,\r\n xls: fileXlsIcon,\r\n xlsx: fileXlsxIcon,\r\n zip: fileZipIcon,\r\n};\r\n\r\nconst getFileExtension = (fileName?: string) => {\r\n if (!fileName) return '';\r\n const parts = fileName.toLowerCase().split('.');\r\n return parts.length > 1 ? parts[parts.length - 1] : '';\r\n};\r\n\r\nconst getFileTypeIconByName = (fileName?: string) => {\r\n const extension = getFileExtension(fileName);\r\n return FILE_EXT_ICON_MAP[extension] ?? null;\r\n};\r\nconst areItemsEqual = (a: DropzoneValueItem[], b: DropzoneValueItem[]) => {\r\n if (a === b) return true;\r\n if (a.length !== b.length) return false;\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n const left = a[i];\r\n const right = b[i];\r\n\r\n if (left === right) continue;\r\n\r\n if (typeof left === 'string' && typeof right === 'string') {\r\n if (left !== right) return false;\r\n continue;\r\n }\r\n\r\n if (isFile(left) && isFile(right)) {\r\n if (\r\n left.name !== right.name ||\r\n left.size !== right.size ||\r\n left.type !== right.type ||\r\n left.lastModified !== right.lastModified\r\n ) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * Dropzone component - A drag-and-drop file upload area with image previews, error handling, and localization.\r\n *\r\n * @component\r\n * @param {DropzoneProps} props - The props for the Dropzone component.\r\n * @param {string[]} [props.acceptTypes=DEFAULT_FILE_TYPES] - Allowed file MIME types.\r\n * @param {number} props.maxSizeMB - Maximum allowed file size in megabytes.\r\n * @param {number} [props.maxFiles=1] - Maximum number of files that can be uploaded.\r\n * @param {DropzoneTranslations} props.translations - Translations for text labels.\r\n * @param {(errors: FileRejection[]) => void} [props.onErrors] - Callback triggered when file errors occur.\r\n * @param {boolean} [props.hideErrors=false] - Whether to hide error messages.\r\n * @param {boolean} [props.disabled=false] - Whether the dropzone is disabled.\r\n * @param {DropzoneStyles} [props.classNames] - Custom classNames for different dropzone states.\r\n * @param {DropzoneValueItem[]} [props.value=[]] - Current selected files or URLs.\r\n * @param {(items: DropzoneValueItem[]) => void} [props.onChangeValue] - Callback triggered when file selection changes.\r\n * @param {string} [props.className] - Additional class names for styling.\r\n * @param {React.Ref<HTMLDivElement>} ref - Ref for the root dropzone container.\r\n * @returns {JSX.Element} The rendered Dropzone component.\r\n */\r\nexport const Dropzone = forwardRef<DropzoneControl, DropzoneProps>(\r\n (\r\n {\r\n acceptTypes = DEFAULT_FILE_TYPES,\r\n maxSizeMB,\r\n maxFiles = 1,\r\n onErrors,\r\n hideErrors = false,\r\n disabled = false,\r\n classNames,\r\n value,\r\n onChangeValue,\r\n className,\r\n labelDropzonePrompt = 'Drop files here or click to select',\r\n labelDropzoneSubPrompt = '',\r\n labelOrClickToSelect = 'Upload file',\r\n labelSelectedFiles = 'Selected Files',\r\n labelUploadErrors = 'Upload Errors',\r\n labelFileTooLarge = 'File is too large',\r\n labelInvalidFileType = 'Invalid file type',\r\n labelVideoUploaded = 'Uploaded',\r\n labelVideoReplace = 'Replace',\r\n singlePick = false,\r\n labelDropzoneClassname,\r\n labelDropzoneSubClassname,\r\n isUploading = false,\r\n uploadProgress = 0,\r\n uploadLoadedBytes = 0,\r\n uploadTotalBytes = 0,\r\n onCancelUpload,\r\n labelUploadingTitle = 'Uploading video...',\r\n labelUploadingHint = 'Please do not close this page',\r\n labelUploadingActionCancel = 'Cancel',\r\n labelUploadingOf = 'of',\r\n playerTranslations,\r\n singlePickFileInfo,\r\n persistentDropzone = false,\r\n previewVariant = 'default',\r\n coverFirstItem = false,\r\n ...restProps\r\n },\r\n ref\r\n ) => {\r\n const [items, setItems] = useState<DropzoneValueItem[]>(value ?? []);\r\n const [fileErrors, setFileErrors] = useState<FileRejection[]>([]);\r\n const firstItem = items[0];\r\n const firstRejectedFile = fileErrors[0]?.file;\r\n const isRejectedImage = Boolean(firstRejectedFile?.type?.includes('image'));\r\n const isSingleFile = singlePick && items.length > 0 && isFile(firstItem);\r\n const isSingleImage = isSingleFile && firstItem.type.includes('image');\r\n const isSingleVideo =\r\n (isSingleFile && firstItem.type.includes('video')) ||\r\n (singlePick && items.length > 0 && typeof firstItem === 'string' && isVideoUrl(firstItem));\r\n const isSingleDocument = isSingleFile && !isSingleImage && !isSingleVideo;\r\n const hasRejectedSingleFile = singlePick && !items.length && Boolean(firstRejectedFile);\r\n const hasRejectedSingleDocumentFile = hasRejectedSingleFile && !isRejectedImage;\r\n const singleFileCard = isSingleDocument ? firstItem : firstRejectedFile;\r\n const singleFileCardIcon = getFileTypeIconByName(singleFileCard?.name);\r\n const hasSingleVideoPreview =\r\n singlePick && isSingleVideo;\r\n const shouldBlockRootOpen = hasSingleVideoPreview;\r\n const isContentPreviewMode = singlePick && items.length > 0;\r\n const isSingleImagePreview =\r\n isContentPreviewMode && !isSingleDocument && !hasSingleVideoPreview;\r\n\r\n // Тільки для мультизавантаження списком (file-list): коли набрали ліміт —\r\n // робимо зону неактивною й сірою (картки нижче лишаються інтерактивними).\r\n const isFileListLimitReached =\r\n previewVariant === 'file-list' && !singlePick && items.length >= maxFiles;\r\n\r\n const onDrop = (acceptedFiles: File[], fileRejections: FileRejection[]) => {\r\n setFileErrors(fileRejections);\r\n onErrors?.(fileRejections);\r\n\r\n const newItems = singlePick\r\n ? acceptedFiles.slice(0, 1)\r\n : [...items, ...acceptedFiles].slice(0, maxFiles);\r\n\r\n setItems(newItems);\r\n onChangeValue?.(newItems);\r\n };\r\n\r\n useEffect(() => {\r\n if (value && !areItemsEqual(items, value)) {\r\n setItems(value);\r\n }\r\n }, [items, value]);\r\n\r\n const removeItem = (\r\n event: React.MouseEvent<HTMLDivElement>,\r\n index: number\r\n ) => {\r\n if (disabled) return;\r\n event.stopPropagation();\r\n\r\n const newItems = items.filter((_, i) => i !== index);\r\n setItems(newItems);\r\n onChangeValue?.(newItems);\r\n };\r\n\r\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\r\n onDrop,\r\n accept: acceptTypes.reduce((acc, fileType) => {\r\n acc[fileType] = [];\r\n return acc;\r\n }, {} as Record<string, string[]>),\r\n maxSize: maxSizeMB * 1024 * 1024,\r\n maxFiles: singlePick ? 1 : maxFiles,\r\n disabled: disabled || isUploading || isFileListLimitReached,\r\n noClick: true,\r\n });\r\n\r\n useImperativeHandle(ref, () => {\r\n return {\r\n setItems,\r\n };\r\n }, []);\r\n\r\n const isCoverMode =\r\n coverFirstItem && previewVariant === 'image-grid' && !singlePick && items.length > 0;\r\n\r\n const shouldRenderDetachedPreview =\r\n !isUploading && !singlePick && persistentDropzone && items.length > 0;\r\n\r\n const restItemsForGrid = isCoverMode ? items.slice(1) : items;\r\n\r\n const showAddMoreTile =\r\n !disabled &&\r\n !singlePick &&\r\n previewVariant === 'image-grid' &&\r\n items.length > 0 &&\r\n items.length < maxFiles;\r\n\r\n // For multi image selection (image-grid) keep the drop area at a 16:9 ratio.\r\n // Use aspect-ratio (not a fixed height) so it follows whatever width the\r\n // consumer sets via className. Skipped when previews fill the card.\r\n const isImageGridDropArea =\r\n !singlePick &&\r\n previewVariant === 'image-grid' &&\r\n (persistentDropzone || items.length === 0);\r\n\r\n const previewBlock =\r\n !isUploading &&\r\n !singlePick &&\r\n (restItemsForGrid.length > 0 || showAddMoreTile) && (\r\n <div className={cn('w-full mt-2', classNames?.previewWrapper)}>\r\n {previewVariant === 'default' && (\r\n <pre className=\"font-semibold text-gray-600\">\r\n {labelSelectedFiles}:\r\n </pre>\r\n )}\r\n {previewVariant === 'file-list' ? (\r\n <div className=\"mt-2 flex flex-col gap-2\">\r\n {restItemsForGrid.map((item, index) => {\r\n const fileName = isFile(item) ? item.name : extractName(item);\r\n const sizeLabel = isFile(item) ? formatFileSize(item.size) : '';\r\n return (\r\n <DropzoneFileCard\r\n key={index}\r\n name={fileName}\r\n sizeLabel={sizeLabel}\r\n iconSrc={getFileTypeIconByName(fileName)}\r\n disabled={disabled}\r\n onRemove={(event) => removeItem(event, index)}\r\n />\r\n );\r\n })}\r\n </div>\r\n ) : (\r\n <ul\r\n className={cn(\r\n 'mt-2 text-sm text-gray-500 flex flex-wrap items-start',\r\n previewVariant === 'image-grid'\r\n ? 'gap-2 justify-start'\r\n : 'gap-4 justify-center'\r\n )}\r\n >\r\n {restItemsForGrid.map((item, gridIndex) => {\r\n const index = isCoverMode ? gridIndex + 1 : gridIndex;\r\n const fileName = isFile(item) ? item.name : extractName(item);\r\n const fileSize = isFile(item) ? formatFileSize(item.size) : '';\r\n\r\n return (\r\n <li\r\n key={index}\r\n className={cn(\r\n 'relative',\r\n previewVariant === 'image-grid'\r\n ? 'w-[75px] h-[75px]'\r\n : 'flex flex-col items-center gap-2'\r\n )}\r\n >\r\n <div className=\"relative w-full h-full\">\r\n {previewVariant === 'image-grid' ? (\r\n <DropzoneCoverPreview item={item} className=\"rounded-[8px]\" />\r\n ) : (\r\n <FilePreview item={item} styles={classNames} />\r\n )}\r\n <div\r\n className={cn(\r\n 'absolute top-0 right-0 z-20 cursor-pointer bg-gray-300 rounded-sm',\r\n previewVariant === 'image-grid' && 'top-1 right-1 bg-white/90 rounded-full p-0.5'\r\n )}\r\n onClick={(event) => removeItem(event, index)}\r\n >\r\n <X size={16} strokeWidth={1} color=\"black\" />\r\n </div>\r\n </div>\r\n {previewVariant === 'default' && (\r\n <span className=\"inline-flex flex-col items-center\">\r\n <span className=\"max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap\">\r\n {fileName}\r\n </span>\r\n {fileSize && <span>({fileSize})</span>}\r\n </span>\r\n )}\r\n </li>\r\n );\r\n })}\r\n {showAddMoreTile && (\r\n <li\r\n key=\"add-more\"\r\n className=\"relative w-[75px] h-[75px] flex items-center justify-center rounded-[8px] border border-dashed border-[#9368FF80] bg-[#FCFCFC] cursor-pointer hover:bg-[#9368FF0F]\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n if (disabled || isUploading) return;\r\n open();\r\n }}\r\n >\r\n <div className=\"flex size-6 items-center justify-center rounded-full bg-[#9368FF1F]\">\r\n <Plus size={16} className=\"text-[#9368FF]\" />\r\n </div>\r\n </li>\r\n )}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div className=\"w-full select-none\">\r\n <Card\r\n {...restProps}\r\n {...getRootProps({\r\n onClick: (event) => {\r\n if (disabled || isUploading || isFileListLimitReached) return;\r\n if (shouldBlockRootOpen) {\r\n restProps.onClick?.(event);\r\n return;\r\n }\r\n open();\r\n restProps.onClick?.(event);\r\n },\r\n })}\r\n className={cn(\r\n `w-full text-center flex flex-col items-center justify-center gap-6 cursor-pointer`,\r\n !isContentPreviewMode &&\r\n 'border border-dashed border-[#9368FF80] rounded-[8px] bg-[#FCFCFC] p-4',\r\n isContentPreviewMode && 'min-h-0 border-0 bg-transparent p-0',\r\n isImageGridDropArea && 'aspect-video h-auto',\r\n isCoverMode && 'relative',\r\n disabled && 'border-[#E4E4E7] pointer-events-none',\r\n fileErrors.length > 0 && !isContentPreviewMode && 'border-red-500',\r\n isDragActive && 'bg-gray-100',\r\n singlePick && 'shadow-none!',\r\n singlePick && items.length > 0 && !hasSingleVideoPreview && 'p-0! shadow-none!',\r\n hasSingleVideoPreview && 'h-auto! max-h-none! min-h-0! p-2!',\r\n isSingleImagePreview && 'h-64',\r\n isFileListLimitReached &&\r\n shouldRenderDetachedPreview &&\r\n 'border-[#E4E4E7] bg-[#F5F5F5] cursor-default pointer-events-none',\r\n className\r\n )}\r\n >\r\n <input {...getInputProps()} />\r\n\r\n {isUploading && (\r\n <div\r\n className=\"w-full h-full min-h-46 rounded-lg border border-[#E4E4E7] bg-[#FCFCFC] flex flex-col items-center justify-center gap-4 p-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <div className=\"relative h-24 w-24\">\r\n <svg className=\"h-24 w-24\" viewBox=\"0 0 100 100\">\r\n <circle cx=\"50\" cy=\"50\" r=\"42\" stroke=\"#E6E1F5\" strokeWidth=\"8\" fill=\"none\" />\r\n </svg>\r\n <span className=\"absolute inset-0 flex items-center justify-center text-lg font-semibold text-foreground\">\r\n {Math.max(0, Math.min(100, Math.round(uploadProgress)))}%\r\n </span>\r\n </div>\r\n\r\n <div className=\"text-center\">\r\n <p className=\"text-xl font-semibold text-foreground\">{labelUploadingTitle}</p>\r\n <p className=\"text-sm text-[#666A78]\">\r\n {formatFileSize(uploadLoadedBytes)} {labelUploadingOf} {formatFileSize(uploadTotalBytes)}\r\n </p>\r\n <p className=\"mt-2 text-sm text-[#666A78]\">{labelUploadingHint}</p>\r\n </div>\r\n\r\n <div className=\"w-full max-w-[520px] h-2 rounded-full bg-[#E6E1F5] overflow-hidden\">\r\n <div\r\n className=\"h-full bg-[#9368FF] transition-[width] duration-150 ease-linear\"\r\n style={{ width: `${Math.max(0, Math.min(100, uploadProgress))}%` }}\r\n />\r\n </div>\r\n\r\n {onCancelUpload && (\r\n <button\r\n type=\"button\"\r\n className=\"mt-1 h-10 min-w-36 rounded-md border border-[#E4E4E7] bg-white px-6 text-base font-medium text-foreground cursor-pointer\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n onCancelUpload();\r\n }}\r\n >\r\n {labelUploadingActionCancel}\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {!isUploading && isCoverMode && (\r\n <div\r\n className=\"absolute inset-0 rounded-[8px] overflow-hidden\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <DropzoneCoverPreview item={items[0]} className=\"rounded-[8px]\" />\r\n <div\r\n className=\"absolute top-2 right-2 z-20 cursor-pointer bg-white/90 rounded-full p-1\"\r\n onClick={(event) => removeItem(event, 0)}\r\n >\r\n <X size={16} strokeWidth={1} color=\"black\" />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!isUploading &&\r\n (items.length === 0 || (!singlePick && persistentDropzone)) &&\r\n (fileErrors.length === 0 || !singlePick) && (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center gap-2 w-full',\r\n classNames?.idleWrapper,\r\n isCoverMode && 'invisible',\r\n )}\r\n >\r\n <div\r\n className={cn(\r\n 'flex size-12 items-center justify-center rounded-full bg-[#9368FF1F]',\r\n isFileListLimitReached && 'bg-[#EDEDF0]'\r\n )}\r\n >\r\n <UploadIcon\r\n className={cn(\r\n 'size-6 text-[#9368FF]',\r\n isFileListLimitReached && 'text-[#A1A1AA]'\r\n )}\r\n />\r\n </div>\r\n\r\n <div className=\"flex flex-col items-center gap-1 w-full\">\r\n {!disabled && (\r\n <>\r\n <span\r\n className={cn(\r\n \"font-semibold text-[14px] leading-[125%] text-[#06080D] text-center w-full whitespace-pre-line\",\r\n isFileListLimitReached && 'text-[#A1A1AA]',\r\n labelDropzoneClassname\r\n )}\r\n >\r\n {labelDropzonePrompt}\r\n </span>\r\n\r\n <span\r\n className={cn(\r\n \"font-medium text-[12px] leading-[120%] text-[#666A78] text-center w-full whitespace-pre-line\",\r\n labelDropzoneSubClassname\r\n )}\r\n >\r\n {labelDropzoneSubPrompt}\r\n </span>\r\n </>\r\n )}\r\n </div>\r\n\r\n {!disabled && (\r\n <Button\r\n type=\"button\"\r\n size=\"md\"\r\n disabled={isFileListLimitReached}\r\n >\r\n {labelOrClickToSelect}\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {!isUploading && singlePick && fileErrors.length > 0 && !hasRejectedSingleDocumentFile && (\r\n <div className={cn('w-full mt-4', classNames?.errorWrapper)}>\r\n <span className=\"font-semibold text-red-500\">\r\n {labelUploadErrors}:\r\n </span>\r\n <ul className=\"mt-2 text-sm text-red-500 list-disc list-inside\">\r\n {fileErrors.map((fileRejection, index) => (\r\n <li key={index}>\r\n {fileRejection.file.name} (\r\n {formatFileSize(fileRejection.file.size)})\r\n {!hideErrors && (\r\n <ul className=\"ml-4 list-disc list-inside\">\r\n {fileRejection.errors.map((error, errorIndex) => (\r\n <li key={errorIndex}>\r\n {error.code === 'file-too-large' && labelFileTooLarge}\r\n {error.code === 'file-invalid-type' &&\r\n labelInvalidFileType}\r\n {error.code !== 'file-too-large' &&\r\n error.code !== 'file-invalid-type' &&\r\n error.message}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {!isUploading && Boolean(singlePick && items.length) && (\r\n <>\r\n {isSingleDocument ? (\r\n <div\r\n className=\"w-full max-w-[502px] flex flex-col items-center gap-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <p className=\"w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]\">\r\n {labelDropzonePrompt}\r\n </p>\r\n\r\n <div className=\"w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4\">\r\n {singleFileCardIcon ? (\r\n <img\r\n src={singleFileCardIcon}\r\n alt=\"\"\r\n className=\"size-10 shrink-0\"\r\n />\r\n ) : (\r\n <div className=\"size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0\">\r\n <FileTextIcon size={20} />\r\n </div>\r\n )}\r\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1\">\r\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate\">\r\n {singlePickFileInfo?.name || singleFileCard?.name}\r\n </span>\r\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#666A78]\">\r\n {formatFileSize(singlePickFileInfo?.size || singleFileCard?.size)}\r\n </span>\r\n </div>\r\n {!disabled && (\r\n <div\r\n className=\"size-6 flex items-center justify-center cursor-pointer\"\r\n onClick={(event) => removeItem(event, 0)}\r\n >\r\n <X size={24} color=\"#06080D\" />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <DropzoneSinglePickPreview\r\n item={items[0]}\r\n onRemoveClick={(e) => removeItem(e, 0)}\r\n onReplaceClick={(e) => {\r\n e.stopPropagation();\r\n if (disabled) return;\r\n open();\r\n }}\r\n labelUploaded={labelVideoUploaded}\r\n labelReplace={labelVideoReplace}\r\n fileInfo={singlePickFileInfo}\r\n disabled={disabled}\r\n playerTranslations={playerTranslations}\r\n />\r\n )}\r\n </>\r\n )}\r\n\r\n {!isUploading && hasRejectedSingleDocumentFile && (\r\n <div\r\n className=\"w-full max-w-[502px] flex flex-col items-center gap-4\"\r\n onClick={(event) => event.stopPropagation()}\r\n >\r\n <p className=\"w-full text-center text-[16px] leading-[130%] font-semibold text-[#06080D]\">\r\n {labelDropzonePrompt}\r\n </p>\r\n\r\n <div className=\"w-full min-h-[72px] rounded-[8px] bg-[#F5F5F5] p-4 flex items-center gap-4\">\r\n {singleFileCardIcon ? (\r\n <img\r\n src={singleFileCardIcon}\r\n alt=\"\"\r\n className=\"size-10 shrink-0\"\r\n />\r\n ) : (\r\n <div className=\"size-10 rounded-[8px] bg-[#DC2626] text-white flex items-center justify-center shrink-0\">\r\n <FileTextIcon size={20} />\r\n </div>\r\n )}\r\n <div className=\"flex flex-col items-start text-left gap-1 min-w-0 flex-1\">\r\n <span className=\"w-full text-[14px] font-semibold leading-[125%] text-[#06080D] truncate\">\r\n {singleFileCard?.name}\r\n </span>\r\n <span className=\"w-full text-[12px] font-medium leading-[120%] text-[#666A78]\">\r\n {singleFileCard\r\n ? `${(singleFileCard.size / (1024 * 1024)).toFixed(0)} MB`\r\n : ''}\r\n </span>\r\n </div>\r\n {!disabled && (\r\n <div\r\n className=\"size-6 flex items-center justify-center cursor-pointer\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n setFileErrors([]);\r\n }}\r\n >\r\n <X size={24} color=\"#06080D\" />\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"w-full bg-[#DC26260F] p-4 flex items-start gap-4\">\r\n <InfoIcon size={20} color=\"#DC2626\" />\r\n <p className=\"text-[12px] leading-[120%] font-medium text-[#DC2626] text-left\">\r\n {fileErrors[0]?.errors?.[0]?.code === 'file-too-large'\r\n ? labelFileTooLarge\r\n : fileErrors[0]?.errors?.[0]?.message || labelInvalidFileType}\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!shouldRenderDetachedPreview && previewBlock}\r\n </Card>\r\n {shouldRenderDetachedPreview && <div className=\"w-full\">{previewBlock}</div>}\r\n {!isUploading && !singlePick && fileErrors.length > 0 && (\r\n <div\r\n className={cn('w-full mt-4 flex flex-col gap-2', classNames?.errorWrapper)}\r\n >\r\n {fileErrors.map((fileRejection, index) => {\r\n const firstError = fileRejection.errors[0];\r\n const errorText =\r\n firstError?.code === 'file-too-large'\r\n ? labelFileTooLarge\r\n : firstError?.code === 'file-invalid-type'\r\n ? labelInvalidFileType\r\n : firstError?.message || labelInvalidFileType;\r\n\r\n return (\r\n <div\r\n key={index}\r\n className=\"w-full bg-[#DC26260F] p-4 flex items-start gap-4 rounded-[8px]\"\r\n >\r\n <InfoIcon size={20} color=\"#DC2626\" className=\"shrink-0\" />\r\n <p className=\"text-[12px] leading-[120%] font-medium text-[#DC2626] text-left\">\r\n <span className=\"font-semibold\">{fileRejection.file.name}</span>\r\n {' — '}\r\n {errorText}\r\n </p>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nDropzone.displayName = 'Dropzone';\r\n\r\n"],"names":["formatFileSize","bytes","KB","MB","GB","mb","FILE_EXT_ICON_MAP","fileCsvIcon","fileDocIcon","fileDocxIcon","fileJpgIcon","filePdfIcon","filePngIcon","filePptIcon","filePptxIcon","fileRarIcon","fileSvgIcon","fileWebpIcon","fileXlsIcon","fileXlsxIcon","fileZipIcon","getFileExtension","fileName","parts","getFileTypeIconByName","extension","areItemsEqual","a","b","i","left","right","isFile","Dropzone","forwardRef","acceptTypes","DEFAULT_FILE_TYPES","maxSizeMB","maxFiles","onErrors","hideErrors","disabled","classNames","value","onChangeValue","className","labelDropzonePrompt","labelDropzoneSubPrompt","labelOrClickToSelect","labelSelectedFiles","labelUploadErrors","labelFileTooLarge","labelInvalidFileType","labelVideoUploaded","labelVideoReplace","singlePick","labelDropzoneClassname","labelDropzoneSubClassname","isUploading","uploadProgress","uploadLoadedBytes","uploadTotalBytes","onCancelUpload","labelUploadingTitle","labelUploadingHint","labelUploadingActionCancel","labelUploadingOf","playerTranslations","singlePickFileInfo","persistentDropzone","previewVariant","coverFirstItem","restProps","ref","items","setItems","useState","fileErrors","setFileErrors","firstItem","firstRejectedFile","isRejectedImage","isSingleFile","isSingleImage","isSingleVideo","isVideoUrl","isSingleDocument","hasRejectedSingleDocumentFile","singleFileCard","singleFileCardIcon","hasSingleVideoPreview","shouldBlockRootOpen","isContentPreviewMode","isSingleImagePreview","isFileListLimitReached","onDrop","acceptedFiles","fileRejections","newItems","useEffect","removeItem","event","index","_","getRootProps","getInputProps","isDragActive","open","useDropzone","acc","fileType","useImperativeHandle","isCoverMode","shouldRenderDetachedPreview","restItemsForGrid","showAddMoreTile","isImageGridDropArea","previewBlock","jsxs","cn","jsx","item","extractName","sizeLabel","DropzoneFileCard","gridIndex","fileSize","DropzoneCoverPreview","FilePreview","X","Plus","Card","UploadIcon","Fragment","Button","fileRejection","error","errorIndex","FileTextIcon","DropzoneSinglePickPreview","InfoIcon","firstError","errorText"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as o, jsxs as x } from "react/jsx-runtime";
|
|
2
|
-
import { useState as
|
|
2
|
+
import { useState as c, useRef as F, useEffect as w } from "react";
|
|
3
3
|
import { Dropzone as b } from "./Dropzone.js";
|
|
4
|
-
import {
|
|
4
|
+
import { DEFAULT_DOCUMENT_TYPES as z, DEFAULT_IMAGES_TYPES as n, DEFAULT_VIDEO_TYPES as m, DEFAULT_AUDIO_TYPES as M } from "./Dropzone.types.js";
|
|
5
5
|
function r({ initialValue: e = [], ...u }) {
|
|
6
|
-
const [a, t] =
|
|
6
|
+
const [a, t] = c(e);
|
|
7
7
|
return /* @__PURE__ */ x("div", { className: "w-full space-y-3", children: [
|
|
8
8
|
/* @__PURE__ */ o(
|
|
9
9
|
b,
|
|
@@ -19,7 +19,7 @@ function r({ initialValue: e = [], ...u }) {
|
|
|
19
19
|
] })
|
|
20
20
|
] });
|
|
21
21
|
}
|
|
22
|
-
const
|
|
22
|
+
const I = {
|
|
23
23
|
title: "Dropzone",
|
|
24
24
|
component: b,
|
|
25
25
|
parameters: {
|
|
@@ -40,17 +40,17 @@ const N = {
|
|
|
40
40
|
decorators: [
|
|
41
41
|
(e) => /* @__PURE__ */ o("div", { className: "p-6 w-[680px]", children: /* @__PURE__ */ o(e, {}) })
|
|
42
42
|
]
|
|
43
|
-
},
|
|
43
|
+
}, k = {
|
|
44
44
|
args: {
|
|
45
|
-
acceptTypes:
|
|
45
|
+
acceptTypes: n,
|
|
46
46
|
labelDropzonePrompt: "Upload image",
|
|
47
47
|
labelDropzoneSubPrompt: "Formats: .jpg .jpeg .png .webp",
|
|
48
48
|
maxSizeMB: 5
|
|
49
49
|
},
|
|
50
50
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
51
|
-
},
|
|
51
|
+
}, V = {
|
|
52
52
|
args: {
|
|
53
|
-
acceptTypes:
|
|
53
|
+
acceptTypes: z,
|
|
54
54
|
labelDropzonePrompt: "Upload file",
|
|
55
55
|
labelDropzoneSubPrompt: "Formats: pdf, doc/docx, xls/xlsx, ppt/pptx, txt, csv",
|
|
56
56
|
maxSizeMB: 100,
|
|
@@ -58,9 +58,9 @@ const N = {
|
|
|
58
58
|
singlePick: !0
|
|
59
59
|
},
|
|
60
60
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
61
|
-
},
|
|
61
|
+
}, L = {
|
|
62
62
|
args: {
|
|
63
|
-
acceptTypes:
|
|
63
|
+
acceptTypes: m,
|
|
64
64
|
labelDropzonePrompt: "Upload video",
|
|
65
65
|
labelDropzoneSubPrompt: "Formats: .mp4 .mov .avi .webm",
|
|
66
66
|
maxSizeMB: 100,
|
|
@@ -68,9 +68,9 @@ const N = {
|
|
|
68
68
|
singlePick: !0
|
|
69
69
|
},
|
|
70
70
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
71
|
-
},
|
|
71
|
+
}, C = {
|
|
72
72
|
args: {
|
|
73
|
-
acceptTypes:
|
|
73
|
+
acceptTypes: m,
|
|
74
74
|
labelDropzonePrompt: "Upload video",
|
|
75
75
|
labelDropzoneSubPrompt: "Formats: .mp4 .mov .avi .webm or YouTube URL as value",
|
|
76
76
|
maxSizeMB: 100,
|
|
@@ -78,7 +78,7 @@ const N = {
|
|
|
78
78
|
singlePick: !0
|
|
79
79
|
},
|
|
80
80
|
render: (e) => /* @__PURE__ */ o(() => {
|
|
81
|
-
const [a, t] =
|
|
81
|
+
const [a, t] = c("https://www.youtube.com/watch?v=dQw4w9WgXcQ"), s = a.trim() ? [a.trim()] : [];
|
|
82
82
|
return /* @__PURE__ */ x("div", { className: "w-full space-y-3", children: [
|
|
83
83
|
/* @__PURE__ */ o(
|
|
84
84
|
"input",
|
|
@@ -104,9 +104,9 @@ const N = {
|
|
|
104
104
|
] });
|
|
105
105
|
}, {})
|
|
106
106
|
};
|
|
107
|
-
function
|
|
108
|
-
const [u, a] =
|
|
109
|
-
return
|
|
107
|
+
function h(e) {
|
|
108
|
+
const [u, a] = c([]), [t, s] = c(!1), [p, i] = c(0), [y, P] = c(0), [S, D] = c(0), l = F(null);
|
|
109
|
+
return w(() => () => {
|
|
110
110
|
l.current && clearInterval(l.current);
|
|
111
111
|
}, []), /* @__PURE__ */ o("div", { className: "w-full space-y-3", children: /* @__PURE__ */ o(
|
|
112
112
|
b,
|
|
@@ -115,28 +115,28 @@ function M(e) {
|
|
|
115
115
|
value: u,
|
|
116
116
|
isUploading: t,
|
|
117
117
|
uploadProgress: p,
|
|
118
|
-
uploadLoadedBytes:
|
|
118
|
+
uploadLoadedBytes: y,
|
|
119
119
|
uploadTotalBytes: S,
|
|
120
120
|
onCancelUpload: () => {
|
|
121
|
-
l.current && clearInterval(l.current), l.current = null, s(!1), i(0), P(0),
|
|
121
|
+
l.current && clearInterval(l.current), l.current = null, s(!1), i(0), P(0), D(0);
|
|
122
122
|
},
|
|
123
123
|
onChangeValue: (v) => {
|
|
124
124
|
if (a(v), !v.length) return;
|
|
125
125
|
l.current && clearInterval(l.current), l.current = null;
|
|
126
|
-
const f = v[0],
|
|
126
|
+
const f = v[0], d = f instanceof File ? f.size : 50 * 1024 * 1024;
|
|
127
127
|
let g = 0;
|
|
128
|
-
|
|
129
|
-
g = Math.min(
|
|
130
|
-
const T =
|
|
131
|
-
P(g), i(T), g >=
|
|
128
|
+
D(d), P(0), i(0), s(!0), l.current = setInterval(() => {
|
|
129
|
+
g = Math.min(d, g + d * 0.08);
|
|
130
|
+
const T = d ? Math.round(g / d * 100) : 0;
|
|
131
|
+
P(g), i(T), g >= d && (l.current && clearInterval(l.current), l.current = null, setTimeout(() => s(!1), 350));
|
|
132
132
|
}, 250);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
) });
|
|
136
136
|
}
|
|
137
|
-
const
|
|
137
|
+
const O = {
|
|
138
138
|
args: {
|
|
139
|
-
acceptTypes:
|
|
139
|
+
acceptTypes: m,
|
|
140
140
|
labelDropzonePrompt: "Upload video",
|
|
141
141
|
labelDropzoneSubPrompt: "Formats: .mp4 .mov .avi .webm",
|
|
142
142
|
maxSizeMB: 100,
|
|
@@ -144,7 +144,7 @@ const C = {
|
|
|
144
144
|
singlePick: !0
|
|
145
145
|
},
|
|
146
146
|
render: (e) => /* @__PURE__ */ o(() => {
|
|
147
|
-
const [a, t] =
|
|
147
|
+
const [a, t] = c(
|
|
148
148
|
"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"
|
|
149
149
|
), s = a.trim() ? [a.trim()] : [];
|
|
150
150
|
return /* @__PURE__ */ x("div", { className: "w-full space-y-3", children: [
|
|
@@ -171,9 +171,9 @@ const C = {
|
|
|
171
171
|
)
|
|
172
172
|
] });
|
|
173
173
|
}, {})
|
|
174
|
-
},
|
|
174
|
+
}, G = {
|
|
175
175
|
args: {
|
|
176
|
-
acceptTypes:
|
|
176
|
+
acceptTypes: m,
|
|
177
177
|
labelDropzonePrompt: "Upload video",
|
|
178
178
|
labelDropzoneSubPrompt: "Formats: .mp4 .mov .avi .webm",
|
|
179
179
|
labelUploadingTitle: "Завантаження відео...",
|
|
@@ -183,10 +183,10 @@ const C = {
|
|
|
183
183
|
maxFiles: 1,
|
|
184
184
|
singlePick: !0
|
|
185
185
|
},
|
|
186
|
-
render: (e) => /* @__PURE__ */ o(
|
|
187
|
-
},
|
|
186
|
+
render: (e) => /* @__PURE__ */ o(h, { ...e })
|
|
187
|
+
}, W = {
|
|
188
188
|
args: {
|
|
189
|
-
acceptTypes:
|
|
189
|
+
acceptTypes: n,
|
|
190
190
|
labelDropzonePrompt: "Перетягніть фото або оберіть файли",
|
|
191
191
|
labelDropzoneSubPrompt: "JPG, PNG, WEBP, HEIC · до 5 МБ кожне",
|
|
192
192
|
labelOrClickToSelect: "Завантажити файл",
|
|
@@ -202,9 +202,29 @@ const C = {
|
|
|
202
202
|
}
|
|
203
203
|
},
|
|
204
204
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
205
|
-
},
|
|
205
|
+
}, Y = {
|
|
206
206
|
args: {
|
|
207
|
-
acceptTypes:
|
|
207
|
+
acceptTypes: [
|
|
208
|
+
...z,
|
|
209
|
+
...n,
|
|
210
|
+
...m,
|
|
211
|
+
...M
|
|
212
|
+
],
|
|
213
|
+
labelDropzonePrompt: "Перетягніть файли або оберіть",
|
|
214
|
+
labelDropzoneSubPrompt: "PDF, DOC/DOCX, XLS/XLSX, зображення, відео, аудіо · до 50 МБ кожне",
|
|
215
|
+
labelOrClickToSelect: "Завантажити файл",
|
|
216
|
+
labelSelectedFiles: "Обрані файли",
|
|
217
|
+
maxSizeMB: 50,
|
|
218
|
+
maxFiles: 4,
|
|
219
|
+
singlePick: !1,
|
|
220
|
+
persistentDropzone: !0,
|
|
221
|
+
previewVariant: "file-list",
|
|
222
|
+
className: "w-[598px]"
|
|
223
|
+
},
|
|
224
|
+
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
225
|
+
}, j = {
|
|
226
|
+
args: {
|
|
227
|
+
acceptTypes: n,
|
|
208
228
|
labelDropzonePrompt: "Перетягніть фото або оберіть файли",
|
|
209
229
|
labelDropzoneSubPrompt: "JPG, PNG, WEBP, HEIC · до 5 МБ кожне",
|
|
210
230
|
labelOrClickToSelect: "Завантажити файл",
|
|
@@ -221,9 +241,9 @@ const C = {
|
|
|
221
241
|
}
|
|
222
242
|
},
|
|
223
243
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
224
|
-
},
|
|
244
|
+
}, A = {
|
|
225
245
|
args: {
|
|
226
|
-
acceptTypes:
|
|
246
|
+
acceptTypes: n,
|
|
227
247
|
labelDropzonePrompt: `Додайте файл
|
|
228
248
|
Перетягніть сюди або натисніть`,
|
|
229
249
|
labelDropzoneSubPrompt: "JPG, PNG, WEBP до 5 МБ кожне",
|
|
@@ -236,7 +256,7 @@ const C = {
|
|
|
236
256
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
237
257
|
}, R = {
|
|
238
258
|
args: {
|
|
239
|
-
acceptTypes:
|
|
259
|
+
acceptTypes: z,
|
|
240
260
|
labelDropzonePrompt: "Upload file...",
|
|
241
261
|
labelDropzoneSubPrompt: "PDF only, max 1 MB",
|
|
242
262
|
labelFileTooLarge: "File is too large. Max size is 1 MB.",
|
|
@@ -246,7 +266,7 @@ const C = {
|
|
|
246
266
|
className: "w-[598px]"
|
|
247
267
|
},
|
|
248
268
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
249
|
-
},
|
|
269
|
+
}, _ = {
|
|
250
270
|
args: {
|
|
251
271
|
acceptTypes: ["application/pdf"],
|
|
252
272
|
labelDropzonePrompt: "Upload file...",
|
|
@@ -258,9 +278,9 @@ const C = {
|
|
|
258
278
|
className: "w-[598px]"
|
|
259
279
|
},
|
|
260
280
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
261
|
-
},
|
|
281
|
+
}, J = {
|
|
262
282
|
args: {
|
|
263
|
-
acceptTypes:
|
|
283
|
+
acceptTypes: n,
|
|
264
284
|
labelDropzonePrompt: "Upload photo...",
|
|
265
285
|
labelDropzoneSubPrompt: "JPG/PNG/WEBP, max 1 MB",
|
|
266
286
|
labelFileTooLarge: "Photo is too large. Max size is 1 MB.",
|
|
@@ -270,9 +290,9 @@ const C = {
|
|
|
270
290
|
className: "w-[598px]"
|
|
271
291
|
},
|
|
272
292
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
273
|
-
},
|
|
293
|
+
}, X = {
|
|
274
294
|
args: {
|
|
275
|
-
acceptTypes:
|
|
295
|
+
acceptTypes: n,
|
|
276
296
|
labelDropzonePrompt: "Upload photo...",
|
|
277
297
|
labelDropzoneSubPrompt: "Only image files are supported",
|
|
278
298
|
labelInvalidFileType: "Invalid file type. Please upload an image file.",
|
|
@@ -282,9 +302,9 @@ const C = {
|
|
|
282
302
|
className: "w-[598px]"
|
|
283
303
|
},
|
|
284
304
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
285
|
-
},
|
|
305
|
+
}, H = {
|
|
286
306
|
args: {
|
|
287
|
-
acceptTypes:
|
|
307
|
+
acceptTypes: n,
|
|
288
308
|
labelDropzonePrompt: "Drag photos or choose files",
|
|
289
309
|
labelDropzoneSubPrompt: "JPG, PNG, WEBP · max 1 MB each",
|
|
290
310
|
labelFileTooLarge: "One or more photos are too large. Max size is 1 MB each.",
|
|
@@ -300,9 +320,9 @@ const C = {
|
|
|
300
320
|
}
|
|
301
321
|
},
|
|
302
322
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
303
|
-
},
|
|
323
|
+
}, Q = {
|
|
304
324
|
args: {
|
|
305
|
-
acceptTypes:
|
|
325
|
+
acceptTypes: n,
|
|
306
326
|
labelDropzonePrompt: "Drag photos or choose files",
|
|
307
327
|
labelDropzoneSubPrompt: "Only image files are supported",
|
|
308
328
|
labelInvalidFileType: "One or more files have invalid type.",
|
|
@@ -318,9 +338,9 @@ const C = {
|
|
|
318
338
|
}
|
|
319
339
|
},
|
|
320
340
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
321
|
-
},
|
|
341
|
+
}, q = {
|
|
322
342
|
args: {
|
|
323
|
-
acceptTypes:
|
|
343
|
+
acceptTypes: m,
|
|
324
344
|
labelDropzonePrompt: "Upload video...",
|
|
325
345
|
labelDropzoneSubPrompt: "MP4/MOV/AVI/WEBM, max 1 MB",
|
|
326
346
|
labelFileTooLarge: "Video is too large. Max size is 1 MB.",
|
|
@@ -330,9 +350,9 @@ const C = {
|
|
|
330
350
|
className: "w-[598px]"
|
|
331
351
|
},
|
|
332
352
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
333
|
-
},
|
|
353
|
+
}, K = {
|
|
334
354
|
args: {
|
|
335
|
-
acceptTypes:
|
|
355
|
+
acceptTypes: m,
|
|
336
356
|
labelDropzonePrompt: "Upload video...",
|
|
337
357
|
labelDropzoneSubPrompt: "Only video files are supported",
|
|
338
358
|
labelInvalidFileType: "Invalid file type. Please upload a video file.",
|
|
@@ -344,23 +364,24 @@ const C = {
|
|
|
344
364
|
render: (e) => /* @__PURE__ */ o(r, { ...e })
|
|
345
365
|
};
|
|
346
366
|
export {
|
|
347
|
-
|
|
367
|
+
_ as FileErrorInvalidType,
|
|
348
368
|
R as FileErrorTooLarge,
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
O as
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
369
|
+
V as Files,
|
|
370
|
+
k as Images,
|
|
371
|
+
Y as MultiFilesList,
|
|
372
|
+
j as MultiImagesCoverFirst,
|
|
373
|
+
W as MultiImagesPersistent,
|
|
374
|
+
A as MultilinePromptSpacing,
|
|
375
|
+
X as PhotoErrorInvalidType,
|
|
376
|
+
J as PhotoErrorTooLarge,
|
|
377
|
+
Q as PhotosMultiErrorInvalidType,
|
|
378
|
+
H as PhotosMultiErrorTooLarge,
|
|
379
|
+
K as VideoErrorInvalidType,
|
|
380
|
+
q as VideoErrorTooLarge,
|
|
381
|
+
O as VideoRemoteUrl,
|
|
382
|
+
G as VideoUploadingMock,
|
|
383
|
+
C as VideoYoutubeLink,
|
|
384
|
+
L as Videos,
|
|
385
|
+
I as default
|
|
365
386
|
};
|
|
366
387
|
//# sourceMappingURL=Dropzone.stories.js.map
|