@yoopta/file 6.0.0-beta.14 → 6.0.0-beta.16
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/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/index.js.map +0 -1
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yoopta/file",
|
|
3
|
-
"version": "6.0.0-beta.
|
|
3
|
+
"version": "6.0.0-beta.16",
|
|
4
4
|
"description": "File plugin for Yoopta Editor",
|
|
5
5
|
"author": "Darginec05 <devopsbanda@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/Darginec05/Yoopta-Editor#readme",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"bugs": {
|
|
36
36
|
"url": "https://github.com/Darginec05/Yoopta-Editor/issues"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "f4a1323d6295faf4d2e6f72ec87d27a759cf3b3f"
|
|
39
39
|
}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/commands/index.ts","../src/utils/format-size.ts","../src/plugin/file-plugin.tsx","../src/hooks/use-xhr.ts","../src/hooks/use-upload.ts","../src/utils/file-type.ts"],"sourcesContent":["import type { YooEditor, YooptaPathIndex } from '@yoopta/editor';\nimport { Blocks, Elements, buildBlockData, generateId } from '@yoopta/editor';\n\nimport type { FileElement, FileElementProps } from '../types';\n\ntype FileElementOptions = {\n props?: Partial<FileElementProps>;\n};\n\ntype InsertFileOptions = FileElementOptions & {\n at?: YooptaPathIndex;\n focus?: boolean;\n};\n\nexport type FileCommandsType = {\n buildFileElements: (editor: YooEditor, options?: Partial<FileElementOptions>) => FileElement;\n insertFile: (editor: YooEditor, options?: Partial<InsertFileOptions>) => void;\n deleteFile: (editor: YooEditor, blockId: string) => void;\n updateFile: (editor: YooEditor, blockId: string, props: Partial<FileElementProps>) => void;\n};\n\nexport const FileCommands: FileCommandsType = {\n buildFileElements: (_editor: YooEditor, options = {}) => {\n const fileProps: FileElementProps = {\n id: options.props?.id ?? null,\n src: options.props?.src ?? null,\n name: options.props?.name ?? null,\n size: options.props?.size ?? null,\n format: options.props?.format ?? null,\n };\n\n return {\n id: generateId(),\n type: 'file',\n children: [{ text: '' }],\n props: fileProps,\n };\n },\n insertFile: (editor: YooEditor, options = {}) => {\n const { at, focus, props } = options;\n const file = FileCommands.buildFileElements(editor, { props });\n const block = buildBlockData({ value: [file], type: 'File' });\n Blocks.insertBlock(editor, block.type, { focus, at, blockData: block });\n },\n deleteFile: (editor: YooEditor, blockId) => {\n Blocks.deleteBlock(editor, { blockId });\n },\n updateFile: (editor: YooEditor, blockId, props) => {\n Elements.updateElement(editor, { blockId, type: 'file', props });\n },\n};\n","/**\n * Format file size to human-readable string\n */\nexport const formatFileSize = (bytes: number | null | undefined): string => {\n if (bytes === null || bytes === undefined || bytes === 0) return '0 B';\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const k = 1024;\n const i = Math.floor(Math.log(Math.abs(bytes)) / Math.log(k));\n\n if (i === 0) return `${bytes} ${units[0]}`;\n\n const size = bytes / Math.pow(k, i);\n const decimals = size < 10 ? 2 : size < 100 ? 1 : 0;\n\n return `${size.toFixed(decimals)} ${units[i]}`;\n};\n\n/**\n * Parse file size string to bytes\n */\nexport const parseFileSize = (sizeString: string): number | null => {\n const match = sizeString.match(/^([\\d.]+)\\s*(B|KB|MB|GB|TB)?$/i);\n if (!match) return null;\n\n const value = parseFloat(match[1]);\n const unit = (match[2] ?? 'B').toUpperCase();\n\n const multipliers: Record<string, number> = {\n B: 1,\n KB: 1024,\n MB: 1024 * 1024,\n GB: 1024 * 1024 * 1024,\n TB: 1024 * 1024 * 1024 * 1024,\n };\n\n return Math.round(value * (multipliers[unit] ?? 1));\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\nimport { YooptaPlugin, generateId } from '@yoopta/editor';\n\nimport { FileCommands } from '../commands';\nimport type { FileElementMap, FileElementProps, FilePluginOptions } from '../types';\nimport { formatFileSize } from '../utils/format-size';\n\nconst ALIGNS_TO_JUSTIFY = {\n left: 'flex-start',\n center: 'center',\n right: 'flex-end',\n};\n\nconst DEFAULT_FILE_PROPS: FileElementProps = {\n id: null,\n src: null,\n name: null,\n size: null,\n format: null,\n};\n\nconst File = new YooptaPlugin<FileElementMap, FilePluginOptions>({\n type: 'File',\n elements: (\n <file\n render={(props: PluginElementRenderProps) => {\n const { name, src, size, format } = props.element.props;\n const displayName = format ? `${name}.${format}` : name;\n\n return (\n <div {...props.attributes}>\n <a href={src ?? undefined} download={name ?? undefined} target=\"_blank\" rel=\"noopener noreferrer\">\n {displayName ?? 'Untitled file'}\n {size ? ` (${formatFileSize(size)})` : ''}\n </a>\n {props.children}\n </div>\n );\n }}\n nodeType=\"void\"\n props={DEFAULT_FILE_PROPS}\n />\n ),\n commands: FileCommands,\n options: {\n display: {\n title: 'File',\n description: 'Upload and attach files',\n },\n accept: '',\n },\n parsers: {\n html: {\n serialize: (element, _text, blockMeta) => {\n const { align = 'left', depth = 0 } = blockMeta ?? {};\n const justify = ALIGNS_TO_JUSTIFY[align] ?? 'left';\n const displayName = element.props.format\n ? `${element.props.name}.${element.props.format}`\n : element.props.name;\n const sizeText = element.props.size ? ` (${formatFileSize(element.props.size)})` : '';\n\n return `<div style=\"margin-left: ${depth * 20}px; display: flex; width: 100%; justify-content: ${justify}\">\n <a \n data-yoopta-file\n data-meta-align=\"${align}\" \n data-meta-depth=\"${depth}\" \n href=\"${element.props.src}\" \n data-size=\"${element.props.size ?? 0}\" \n data-format=\"${element.props.format ?? ''}\"\n data-id=\"${element.props.id ?? ''}\"\n download=\"${element.props.name}\" \n target=\"_blank\" \n rel=\"noopener noreferrer\"\n >${displayName}${sizeText}</a>\n </div>`;\n },\n deserialize: {\n // [TODO] - add props as second param. ex.: ['A', { 'data-yoopta-file': true }]\n nodeNames: ['A'],\n parse: (el) => {\n if (el.nodeName === 'A') {\n const hasDownloadAttr = !!el.getAttribute('download');\n const isYooptaFile = !!el.getAttribute('data-yoopta-file');\n const href = el.getAttribute('href');\n\n // Only parse if it's a download link or explicitly marked as yoopta file\n if (!hasDownloadAttr && !isYooptaFile) return;\n if (!href) return;\n\n try {\n const url = new URL(href, window.location.origin);\n const textContent = el.textContent ?? '';\n const downloadAttr = el.getAttribute('download') ?? '';\n\n // Parse name and format\n let name = downloadAttr || textContent.split(' (')[0] || '';\n let format: string | null = null;\n\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n format = name.slice(dotIndex + 1);\n name = name.slice(0, dotIndex);\n }\n\n // Parse size from data attribute or text content\n const sizeAttr = el.getAttribute('data-size');\n const size = sizeAttr ? Number(sizeAttr) : null;\n\n // Parse id and format from data attributes\n const id = el.getAttribute('data-id') ?? null;\n const formatAttr = el.getAttribute('data-format');\n if (formatAttr) format = formatAttr;\n\n return {\n id: generateId(),\n type: 'file',\n children: [{ text: '' }],\n props: {\n id,\n name: name || null,\n format,\n src: url.href,\n size,\n },\n };\n } catch {\n // Invalid URL, skip\n }\n }\n },\n },\n },\n markdown: {\n serialize: (element) => {\n const displayName = element.props.format\n ? `${element.props.name}.${element.props.format}`\n : element.props.name;\n return `[${displayName}](${element.props.src})\\n`;\n },\n },\n email: {\n serialize: (element, _text, blockMeta) => {\n const { align = 'left', depth = 0 } = blockMeta ?? {};\n const justify = ALIGNS_TO_JUSTIFY[align] ?? 'left';\n const displayName = element.props.format\n ? `${element.props.name}.${element.props.format}`\n : element.props.name;\n const sizeText = element.props.size ? ` (${formatFileSize(element.props.size)})` : '';\n\n return `\n <table style=\"width:100%;\">\n <tbody style=\"width:100%;\">\n <tr>\n <td style=\"margin-left: ${depth * 20}px; display: flex; width: 100%; justify-content: ${justify}; padding: 8px 0;\">\n <a \n href=\"${element.props.src}\" \n download=\"${element.props.name}\" \n target=\"_blank\" \n rel=\"noopener noreferrer\"\n style=\"\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background-color: #f5f5f5;\n border-radius: 8px;\n text-decoration: none;\n color: #333;\n font-size: 14px;\n \"\n >\n <span style=\"font-size: 20px;\">📎</span>\n <span>${displayName}${sizeText}</span>\n </a>\n </td>\n </tr>\n </tbody>\n </table> \n `;\n },\n },\n },\n});\n\nexport { File };\n","import { useCallback, useRef, useState } from 'react';\n\nimport type {\n FileUploadProgress,\n FileUploadError,\n FileUploadResult,\n FileUploadState,\n XHRRequestOptions,\n} from '../types';\n\nconst validateFile = (file: File, accept?: string, maxSize?: number): FileUploadError | null => {\n if (accept) {\n const acceptedTypes = accept.split(',').map((t) => t.trim());\n const isAccepted = acceptedTypes.some((accepted) => {\n if (accepted.startsWith('.')) {\n // Extension check\n return file.name.toLowerCase().endsWith(accepted.toLowerCase());\n }\n if (accepted.endsWith('/*')) {\n // Wildcard MIME type (e.g., \"image/*\")\n const baseType = accepted.replace('/*', '');\n return file.type.startsWith(baseType);\n }\n // Exact MIME type match\n return file.type === accepted;\n });\n\n if (!isAccepted) {\n return {\n message: `Invalid file type. Allowed types: ${accept}`,\n code: 'INVALID_TYPE',\n };\n }\n }\n\n if (maxSize && file.size > maxSize) {\n const maxSizeMB = (maxSize / 1024 / 1024).toFixed(2);\n return {\n message: `File size exceeds ${maxSizeMB}MB`,\n code: 'FILE_TOO_LARGE',\n };\n }\n\n return null;\n};\n\nexport const useXHRRequest = ({\n onError,\n onSuccess,\n onProgress,\n accept,\n maxSize,\n method = 'POST',\n endpoint,\n headers,\n}: XHRRequestOptions) => {\n const [state, setState] = useState<FileUploadState>({\n loading: false,\n progress: null,\n error: null,\n result: null,\n });\n\n const xhrRef = useRef<XMLHttpRequest | null>(null);\n\n const xhrFetch = (body: XMLHttpRequestBodyInit): Promise<FileUploadResult> =>\n new Promise((resolve, reject) => {\n if (body instanceof File) {\n const validationError = validateFile(body, accept, maxSize);\n if (validationError) {\n setState((prev) => ({\n ...prev,\n error: validationError,\n }));\n onError?.(validationError);\n reject(validationError);\n return;\n }\n }\n\n setState({\n loading: true,\n progress: { loaded: 0, total: body instanceof File ? body.size : 0, percentage: 0 },\n error: null,\n result: null,\n });\n\n const xhr = new XMLHttpRequest();\n xhrRef.current = xhr;\n\n xhr.upload.addEventListener('progress', (event) => {\n if (event.lengthComputable) {\n const progress: FileUploadProgress = {\n loaded: event.loaded,\n total: event.total,\n percentage: Math.round((event.loaded / event.total) * 100),\n };\n\n setState((prev) => ({\n ...prev,\n progress,\n }));\n\n onProgress?.(progress);\n }\n });\n\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n const result: FileUploadResult = JSON.parse(xhr.responseText);\n\n setState((prev) => ({\n ...prev,\n loading: false,\n result,\n }));\n\n onSuccess?.(result);\n resolve(result);\n } catch {\n const parseError: FileUploadError = {\n message: 'Failed to parse server response',\n code: 'PARSE_ERROR',\n status: xhr.status,\n };\n\n setState((prev) => ({\n ...prev,\n loading: false,\n error: parseError,\n }));\n\n onError?.(parseError);\n reject(parseError);\n }\n } else {\n const httpError: FileUploadError = {\n message: `Upload failed with status ${xhr.status}`,\n code: 'HTTP_ERROR',\n status: xhr.status,\n };\n\n setState((prev) => ({\n ...prev,\n loading: false,\n error: httpError,\n }));\n\n onError?.(httpError);\n reject(httpError);\n }\n });\n\n xhr.addEventListener('error', () => {\n const networkError: FileUploadError = {\n message: 'Network error occurred',\n code: 'NETWORK_ERROR',\n };\n\n setState((prev) => ({\n ...prev,\n loading: false,\n error: networkError,\n }));\n\n onError?.(networkError);\n reject(networkError);\n });\n\n xhr.addEventListener('abort', () => {\n const abortError: FileUploadError = {\n message: 'Upload cancelled',\n code: 'ABORT',\n };\n\n setState((prev) => ({\n ...prev,\n loading: false,\n error: abortError,\n }));\n\n reject(abortError);\n });\n\n xhr.addEventListener('timeout', () => {\n const timeoutError: FileUploadError = {\n message: 'Upload timeout',\n code: 'TIMEOUT',\n };\n\n setState((prev) => ({\n ...prev,\n loading: false,\n error: timeoutError,\n }));\n\n onError?.(timeoutError);\n reject(timeoutError);\n });\n\n xhr.open(method, endpoint);\n\n if (headers) {\n Object.entries(headers).forEach(([key, value]) => {\n xhr.setRequestHeader(key, value);\n });\n }\n\n // Files can be large, so we use a longer timeout (5 minutes)\n xhr.timeout = 300000;\n xhr.send(body);\n });\n\n const cancel = useCallback(() => {\n if (xhrRef.current) {\n xhrRef.current.abort();\n xhrRef.current = null;\n }\n }, []);\n\n const reset = useCallback(() => {\n setState({\n loading: false,\n progress: null,\n error: null,\n result: null,\n });\n }, []);\n\n return {\n ...state,\n xhrFetch,\n cancel,\n reset,\n };\n};\n","import { useCallback, useState } from 'react';\n\nimport type {\n FileDeleteEndpointOptions,\n FileDeleteFn,\n FileDeleteOptions,\n FileElement,\n FileUploadEndpointOptions,\n FileUploadError,\n FileUploadFn,\n FileUploadOptions,\n FileUploadProgress,\n FileUploadResponse,\n FileUploadResult,\n FileUploadState,\n UseFileDeleteReturn,\n UseFileUploadReturn,\n} from '../types';\nimport { useXHRRequest } from './use-xhr';\n\nconst DOCS_URL = 'https://docs.yoopta.dev/plugins/file';\n\n// Type guard to check if options is a custom function\nconst isUploadFn = (\n options: FileUploadOptions,\n): options is (file: File, onProgress?: (progress: FileUploadProgress) => void) => Promise<FileUploadResponse> =>\n typeof options === 'function';\n\n// Type guard to check if delete options is a custom function\nconst isDeleteFn = (options: FileDeleteOptions): options is (element: FileElement) => Promise<void> =>\n typeof options === 'function';\n\n// Validation helpers\nconst validateUploadOptions = (options: FileUploadOptions | undefined): void => {\n if (options === undefined || options === null) {\n throw new Error(\n `[Yoopta File] Upload options are not configured. ` +\n `Please provide 'upload' option when extending the File plugin.\\n\\n` +\n `Example:\\n` +\n `File.extend({\\n` +\n ` options: {\\n` +\n ` upload: async (file) => {\\n` +\n ` // Upload file to your storage and return file props\\n` +\n ` return { src: '...', name: file.name, size: file.size };\\n` +\n ` },\\n` +\n ` },\\n` +\n `})\\n\\n` +\n `See documentation: ${DOCS_URL}`,\n );\n }\n\n if (typeof options !== 'function' && typeof options !== 'object') {\n throw new Error(\n `[Yoopta File] Invalid upload options. Expected a function or endpoint configuration object.\\n\\n` +\n `See documentation: ${DOCS_URL}`,\n );\n }\n\n if (typeof options === 'object' && !options.endpoint) {\n throw new Error(\n `[Yoopta File] Missing 'endpoint' in upload options. ` +\n `When using endpoint-based upload, you must provide an 'endpoint' URL.\\n\\n` +\n `Example:\\n` +\n `File.extend({\\n` +\n ` options: {\\n` +\n ` upload: {\\n` +\n ` endpoint: '/api/upload-file',\\n` +\n ` },\\n` +\n ` },\\n` +\n `})\\n\\n` +\n `See documentation: ${DOCS_URL}`,\n );\n }\n};\n\n// Validation helper for delete options (optional - only validates if provided)\nconst validateDeleteOptions = (options: FileDeleteOptions | undefined): boolean => {\n // Delete is optional - return false if not configured\n if (options === undefined || options === null) {\n return false;\n }\n\n if (typeof options !== 'function' && typeof options !== 'object') {\n throw new Error(\n `[Yoopta File] Invalid delete options. Expected a function or endpoint configuration object.\\n\\n` +\n `See documentation: ${DOCS_URL}`,\n );\n }\n\n if (typeof options === 'object' && !options.endpoint) {\n throw new Error(\n `[Yoopta File] Missing 'endpoint' in delete options. ` +\n `When using endpoint-based delete, you must provide an 'endpoint' URL.\\n\\n` +\n `Example:\\n` +\n `File.extend({\\n` +\n ` options: {\\n` +\n ` delete: {\\n` +\n ` endpoint: '/api/delete-file',\\n` +\n ` },\\n` +\n ` },\\n` +\n `})\\n\\n` +\n `See documentation: ${DOCS_URL}`,\n );\n }\n\n return true;\n};\n\nexport const useFileDelete = (options: FileDeleteOptions | undefined): UseFileDeleteReturn => {\n // Validate options - returns false if not configured (optional)\n const isConfigured = validateDeleteOptions(options);\n\n const validOptions = isConfigured ? (options as FileDeleteOptions) : null;\n const isCustomFn = validOptions ? isDeleteFn(validOptions) : false;\n\n // State for custom function approach - always called\n const [customState, setCustomState] = useState<FileUploadState>({\n loading: false,\n progress: null,\n error: null,\n result: null,\n });\n\n // For endpoint-based approach - create endpoint options (use dummy if custom fn or not configured)\n const endpointOpts: FileDeleteEndpointOptions =\n !validOptions || isCustomFn ? { endpoint: '' } : (validOptions as FileDeleteEndpointOptions);\n\n // Always call useXHRRequest (with dummy options if using custom function)\n const xhrResult = useXHRRequest({\n endpoint: endpointOpts.endpoint,\n method: endpointOpts.method ?? 'DELETE',\n headers: endpointOpts.headers ?? {},\n fieldName: endpointOpts.fieldName ?? 'file',\n onSuccess: endpointOpts.onSuccess,\n onError: endpointOpts.onError,\n onProgress: endpointOpts.onProgress,\n });\n\n // Custom delete function - always defined with useCallback\n const customDeleteFile = useCallback(\n async (element: FileElement): Promise<FileUploadResult> => {\n // If delete is not configured, just return success without actually deleting from storage\n if (!validOptions) {\n const src = element.props?.src ?? '';\n return { id: element.props?.id ?? '', url: src };\n }\n\n if (!isCustomFn) {\n throw new Error('Custom delete called but options is not a function');\n }\n\n const src = element.props?.src;\n if (!src) {\n throw new Error('File src is required');\n }\n\n setCustomState((prev) => ({ ...prev, loading: true, error: null }));\n\n try {\n await (validOptions as FileDeleteFn)(element);\n const result: FileUploadResult = { id: element.props?.id ?? '', url: src };\n setCustomState((prev) => ({ ...prev, loading: false, result }));\n return result;\n } catch (err) {\n const error: FileUploadError = {\n message: err instanceof Error ? err.message : 'Delete failed',\n code: 'CUSTOM_DELETE_ERROR',\n };\n setCustomState((prev) => ({ ...prev, loading: false, error }));\n throw error;\n }\n },\n [validOptions, isCustomFn],\n );\n\n const customReset = useCallback(() => {\n setCustomState({ loading: false, progress: null, error: null, result: null });\n }, []);\n\n // Endpoint-based delete function\n const endpointDeleteFile = useCallback(\n (element: FileElement) => {\n const fileId = element.props?.id;\n if (!fileId) {\n throw new Error('File id is required');\n }\n return xhrResult.xhrFetch(JSON.stringify({ fileId }));\n },\n [xhrResult],\n );\n\n // Return appropriate implementation based on options type\n // If not configured, return no-op delete function\n if (!isConfigured) {\n return {\n ...customState,\n deleteFile: customDeleteFile,\n cancel: () => { },\n reset: customReset,\n };\n }\n\n if (isCustomFn) {\n return {\n ...customState,\n deleteFile: customDeleteFile,\n cancel: () => { },\n reset: customReset,\n };\n }\n\n return {\n loading: xhrResult.loading,\n progress: xhrResult.progress,\n error: xhrResult.error,\n result: xhrResult.result,\n deleteFile: endpointDeleteFile,\n cancel: xhrResult.cancel,\n reset: xhrResult.reset,\n };\n};\n\nexport const useFileUpload = (options: FileUploadOptions | undefined): UseFileUploadReturn => {\n // Validate options - will throw descriptive error if invalid\n validateUploadOptions(options);\n\n // After validation, options is guaranteed to be defined\n const validOptions = options as FileUploadOptions;\n const isCustomFn = isUploadFn(validOptions);\n\n // State for custom function approach - always called\n const [customState, setCustomState] = useState<FileUploadState>({\n loading: false,\n progress: null,\n error: null,\n result: null,\n });\n\n // For endpoint-based approach - create endpoint options (use dummy if custom fn)\n const endpointOpts: FileUploadEndpointOptions = isCustomFn\n ? { endpoint: '' }\n : (validOptions as FileUploadEndpointOptions);\n\n // Always call useXHRRequest (with dummy options if using custom function)\n const xhrResult = useXHRRequest({\n endpoint: endpointOpts.endpoint,\n method: endpointOpts.method ?? 'POST',\n headers: endpointOpts.headers ?? {},\n fieldName: endpointOpts.fieldName ?? 'file',\n maxSize: endpointOpts.maxSize,\n accept: endpointOpts.accept,\n onSuccess: endpointOpts.onSuccess,\n onError: endpointOpts.onError,\n onProgress: endpointOpts.onProgress,\n });\n\n // Custom upload function - always defined with useCallback\n const customUpload = useCallback(\n async (file: File): Promise<FileUploadResult> => {\n if (!isCustomFn) {\n throw new Error('Custom upload called but options is not a function');\n }\n\n setCustomState((prev) => ({\n ...prev,\n loading: true,\n progress: { loaded: 0, total: file.size, percentage: 0 },\n error: null,\n }));\n\n try {\n const onProgress = (progress: FileUploadProgress) => {\n setCustomState((prev) => ({ ...prev, progress }));\n };\n\n const fileProps = await (validOptions as FileUploadFn)(file, onProgress);\n const result: FileUploadResult = {\n id: fileProps.id ?? '',\n url: fileProps.src ?? '',\n name: fileProps.name ?? file.name,\n size: fileProps.size ?? file.size,\n format: fileProps.format,\n };\n\n setCustomState((prev) => ({\n ...prev,\n loading: false,\n progress: { loaded: file.size, total: file.size, percentage: 100 },\n result,\n }));\n\n return result;\n } catch (err) {\n const error: FileUploadError = {\n message: err instanceof Error ? err.message : 'Upload failed',\n code: 'CUSTOM_UPLOAD_ERROR',\n };\n setCustomState((prev) => ({ ...prev, loading: false, error }));\n throw error;\n }\n },\n [validOptions, isCustomFn],\n );\n\n const customReset = useCallback(() => {\n setCustomState({ loading: false, progress: null, error: null, result: null });\n }, []);\n\n // Endpoint-based upload function\n const endpointUpload = useCallback(\n (file: File) => {\n const formData = new FormData();\n formData.append(endpointOpts.fieldName ?? 'yoopta-file', file);\n return xhrResult.xhrFetch(formData);\n },\n [endpointOpts.fieldName, xhrResult],\n );\n\n // Return appropriate implementation based on options type\n if (isCustomFn) {\n return {\n ...customState,\n upload: customUpload,\n cancel: () => { },\n reset: customReset,\n };\n }\n\n return {\n loading: xhrResult.loading,\n progress: xhrResult.progress,\n error: xhrResult.error,\n result: xhrResult.result,\n upload: endpointUpload,\n cancel: xhrResult.cancel,\n reset: xhrResult.reset,\n };\n};\n","import type { FileType, FileTypeConfig } from '../types';\n\n// File type configurations\nexport const FILE_TYPE_CONFIGS: FileTypeConfig[] = [\n {\n type: 'pdf',\n extensions: ['.pdf'],\n mimeTypes: ['application/pdf'],\n label: 'PDF',\n },\n {\n type: 'document',\n extensions: ['.doc', '.docx', '.odt', '.rtf', '.pages'],\n mimeTypes: [\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.oasis.opendocument.text',\n 'application/rtf',\n 'application/x-iwork-pages-sffpages',\n ],\n label: 'Document',\n },\n {\n type: 'spreadsheet',\n extensions: ['.xls', '.xlsx', '.csv', '.ods', '.numbers'],\n mimeTypes: [\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'text/csv',\n 'application/vnd.oasis.opendocument.spreadsheet',\n 'application/x-iwork-numbers-sffnumbers',\n ],\n label: 'Spreadsheet',\n },\n {\n type: 'presentation',\n extensions: ['.ppt', '.pptx', '.odp', '.key'],\n mimeTypes: [\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.oasis.opendocument.presentation',\n 'application/x-iwork-keynote-sffkey',\n ],\n label: 'Presentation',\n },\n {\n type: 'image',\n extensions: ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.svg', '.bmp', '.ico', '.tiff'],\n mimeTypes: [\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml',\n 'image/bmp',\n 'image/x-icon',\n 'image/tiff',\n ],\n label: 'Image',\n },\n {\n type: 'video',\n extensions: ['.mp4', '.webm', '.mov', '.avi', '.mkv', '.wmv', '.flv'],\n mimeTypes: [\n 'video/mp4',\n 'video/webm',\n 'video/quicktime',\n 'video/x-msvideo',\n 'video/x-matroska',\n 'video/x-ms-wmv',\n 'video/x-flv',\n ],\n label: 'Video',\n },\n {\n type: 'audio',\n extensions: ['.mp3', '.wav', '.ogg', '.flac', '.aac', '.m4a', '.wma'],\n mimeTypes: [\n 'audio/mpeg',\n 'audio/wav',\n 'audio/ogg',\n 'audio/flac',\n 'audio/aac',\n 'audio/mp4',\n 'audio/x-ms-wma',\n ],\n label: 'Audio',\n },\n {\n type: 'archive',\n extensions: ['.zip', '.rar', '.7z', '.tar', '.gz', '.bz2'],\n mimeTypes: [\n 'application/zip',\n 'application/x-rar-compressed',\n 'application/x-7z-compressed',\n 'application/x-tar',\n 'application/gzip',\n 'application/x-bzip2',\n ],\n label: 'Archive',\n },\n {\n type: 'code',\n extensions: [\n '.js',\n '.ts',\n '.jsx',\n '.tsx',\n '.html',\n '.css',\n '.json',\n '.xml',\n '.py',\n '.java',\n '.c',\n '.cpp',\n '.h',\n '.rb',\n '.php',\n '.go',\n '.rs',\n '.swift',\n '.kt',\n ],\n mimeTypes: [\n 'text/javascript',\n 'application/javascript',\n 'text/typescript',\n 'text/html',\n 'text/css',\n 'application/json',\n 'application/xml',\n 'text/x-python',\n 'text/x-java-source',\n 'text/x-c',\n 'text/x-c++',\n ],\n label: 'Code',\n },\n {\n type: 'text',\n extensions: ['.txt', '.md', '.log', '.ini', '.cfg'],\n mimeTypes: ['text/plain', 'text/markdown'],\n label: 'Text',\n },\n];\n\n/**\n * Detect file type from filename or MIME type\n */\nexport const getFileType = (filename?: string | null, mimeType?: string | null): FileType => {\n if (!filename && !mimeType) return 'unknown';\n\n const extension = filename ? `.${filename.split('.').pop()?.toLowerCase()}` : null;\n\n for (const config of FILE_TYPE_CONFIGS) {\n // Check by extension first (more reliable)\n if (extension && config.extensions.includes(extension)) {\n return config.type;\n }\n // Fallback to MIME type\n if (mimeType && config.mimeTypes.includes(mimeType)) {\n return config.type;\n }\n }\n\n return 'unknown';\n};\n\n/**\n * Get file type configuration\n */\nexport const getFileTypeConfig = (fileType: FileType): FileTypeConfig | undefined =>\n FILE_TYPE_CONFIGS.find((config) => config.type === fileType);\n\n/**\n * Get file type label\n */\nexport const getFileTypeLabel = (filename?: string | null, mimeType?: string | null): string => {\n const fileType = getFileType(filename, mimeType);\n const config = getFileTypeConfig(fileType);\n return config?.label ?? 'File';\n};\n\n/**\n * Get file extension from filename\n */\nexport const getFileExtension = (filename?: string | null): string | null => {\n if (!filename) return null;\n const parts = filename.split('.');\n if (parts.length < 2) return null;\n return parts.pop()?.toLowerCase() ?? null;\n};\n\n/**\n * Check if file is of a specific type\n */\nexport const isFileType = (\n fileType: FileType,\n filename?: string | null,\n mimeType?: string | null,\n): boolean => getFileType(filename, mimeType) === fileType;\n"],"names":["File","_jsx","_jsxs"],"mappings":"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"}
|