@uploadista/react-native-core 0.0.20-beta.9 → 0.0.20

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/index.d.mts CHANGED
@@ -4,7 +4,7 @@ import * as _uploadista_client_core3 from "@uploadista/client-core";
4
4
  import { Base64Service, ConnectionMetrics, ConnectionPoolConfig, ConnectionPoolConfig as ConnectionPoolConfig$1, DetailedConnectionMetrics, FileReaderService, FlowManager, FlowManagerCallbacks, FlowUploadOptions, FlowUploadState, FlowUploadState as FlowUploadState$1, FlowUploadStatus, FlowUploadStatus as FlowUploadStatus$1, HttpClient, IdGenerationService, InputExecutionState, InputExecutionState as InputExecutionState$1, ServiceContainer, ServiceContainer as ServiceContainer$1, StorageService, UploadState, UploadStatus, UploadistaClientOptions, UploadistaEvent } from "@uploadista/client-core";
5
5
  import { TypedOutput } from "@uploadista/core/flow";
6
6
  import { UploadFile } from "@uploadista/core/types";
7
- import * as react_jsx_runtime12 from "react/jsx-runtime";
7
+ import * as react_jsx_runtime13 from "react/jsx-runtime";
8
8
  import * as _uploadista_core0 from "@uploadista/core";
9
9
 
10
10
  //#region src/types/types.d.ts
@@ -138,7 +138,7 @@ type UploadState$1 = "idle" | "pending" | "uploading" | "success" | "error" | "c
138
138
  /**
139
139
  * Upload progress information
140
140
  */
141
- interface UploadProgress$1 {
141
+ interface UploadProgress$2 {
142
142
  /** Current state of upload */
143
143
  state: UploadState$1;
144
144
  /** Progress percentage (0-100) */
@@ -157,13 +157,13 @@ interface UploadProgress$1 {
157
157
  /**
158
158
  * Multi-file upload item
159
159
  */
160
- interface UploadItem {
160
+ interface UploadItem$1 {
161
161
  /** Unique identifier for this upload */
162
162
  id: string;
163
163
  /** File information */
164
164
  file: FilePickResult;
165
165
  /** Upload progress */
166
- progress: UploadProgress$1;
166
+ progress: UploadProgress$2;
167
167
  /** Result from server if successful */
168
168
  result?: UploadFile;
169
169
  }
@@ -283,7 +283,7 @@ declare function CameraUploadButton({
283
283
  onError,
284
284
  onCancel,
285
285
  showProgress
286
- }: CameraUploadButtonProps): react_jsx_runtime12.JSX.Element;
286
+ }: CameraUploadButtonProps): react_jsx_runtime13.JSX.Element;
287
287
  //#endregion
288
288
  //#region src/components/FileUploadButton.d.ts
289
289
  interface FileUploadButtonProps {
@@ -314,7 +314,7 @@ declare function FileUploadButton({
314
314
  onError,
315
315
  onCancel,
316
316
  showProgress
317
- }: FileUploadButtonProps): react_jsx_runtime12.JSX.Element;
317
+ }: FileUploadButtonProps): react_jsx_runtime13.JSX.Element;
318
318
  //#endregion
319
319
  //#region src/components/GalleryUploadButton.d.ts
320
320
  interface GalleryUploadButtonProps {
@@ -345,16 +345,16 @@ declare function GalleryUploadButton({
345
345
  onError,
346
346
  onCancel,
347
347
  showProgress
348
- }: GalleryUploadButtonProps): react_jsx_runtime12.JSX.Element;
348
+ }: GalleryUploadButtonProps): react_jsx_runtime13.JSX.Element;
349
349
  //#endregion
350
350
  //#region src/components/UploadList.d.ts
351
351
  interface UploadListProps {
352
352
  /** List of upload items to display */
353
- items: UploadItem[];
353
+ items: UploadItem$1[];
354
354
  /** Callback when remove item is pressed */
355
355
  onRemove?: (id: string) => void;
356
356
  /** Callback when item is pressed */
357
- onItemPress?: (item: UploadItem) => void;
357
+ onItemPress?: (item: UploadItem$1) => void;
358
358
  /** Whether to show remove button */
359
359
  showRemoveButton?: boolean;
360
360
  }
@@ -367,10 +367,10 @@ declare function UploadList({
367
367
  onRemove,
368
368
  onItemPress,
369
369
  showRemoveButton
370
- }: UploadListProps): react_jsx_runtime12.JSX.Element;
370
+ }: UploadListProps): react_jsx_runtime13.JSX.Element;
371
371
  //#endregion
372
372
  //#region src/components/UploadProgress.d.ts
373
- interface UploadProgressProps {
373
+ interface UploadProgressProps$1 {
374
374
  /** Upload state information */
375
375
  state: UploadState;
376
376
  /** Optional custom label */
@@ -382,7 +382,7 @@ interface UploadProgressProps {
382
382
  declare function UploadProgress({
383
383
  state,
384
384
  label
385
- }: UploadProgressProps): react_jsx_runtime12.JSX.Element;
385
+ }: UploadProgressProps$1): react_jsx_runtime13.JSX.Element;
386
386
  //#endregion
387
387
  //#region src/hooks/use-flow.d.ts
388
388
  /**
@@ -727,7 +727,7 @@ declare function FlowRoot({
727
727
  onProgress,
728
728
  onFlowComplete,
729
729
  children
730
- }: FlowProps): react_jsx_runtime12.JSX.Element;
730
+ }: FlowProps): react_jsx_runtime13.JSX.Element;
731
731
  /**
732
732
  * Render props for Flow.Inputs component.
733
733
  */
@@ -764,7 +764,7 @@ interface FlowInputsProps {
764
764
  */
765
765
  declare function FlowInputs({
766
766
  children
767
- }: FlowInputsProps): react_jsx_runtime12.JSX.Element;
767
+ }: FlowInputsProps): react_jsx_runtime13.JSX.Element;
768
768
  /**
769
769
  * Props for Flow.Input component.
770
770
  */
@@ -794,7 +794,7 @@ interface FlowInputProps {
794
794
  declare function FlowInput({
795
795
  nodeId,
796
796
  children
797
- }: FlowInputProps): react_jsx_runtime12.JSX.Element | null;
797
+ }: FlowInputProps): react_jsx_runtime13.JSX.Element | null;
798
798
  /**
799
799
  * Render props for Flow.Input.FilePicker component.
800
800
  */
@@ -829,7 +829,7 @@ interface FlowInputFilePickerProps {
829
829
  */
830
830
  declare function FlowInputFilePicker({
831
831
  children
832
- }: FlowInputFilePickerProps): react_jsx_runtime12.JSX.Element;
832
+ }: FlowInputFilePickerProps): react_jsx_runtime13.JSX.Element;
833
833
  /**
834
834
  * Render props for Flow.Input.Preview component.
835
835
  */
@@ -861,7 +861,7 @@ interface FlowInputPreviewProps {
861
861
  */
862
862
  declare function FlowInputPreview({
863
863
  children
864
- }: FlowInputPreviewProps): react_jsx_runtime12.JSX.Element;
864
+ }: FlowInputPreviewProps): react_jsx_runtime13.JSX.Element;
865
865
  /**
866
866
  * Render props for Flow.Progress component.
867
867
  */
@@ -887,7 +887,7 @@ interface FlowProgressProps {
887
887
  */
888
888
  declare function FlowProgress({
889
889
  children
890
- }: FlowProgressProps): react_jsx_runtime12.JSX.Element;
890
+ }: FlowProgressProps): react_jsx_runtime13.JSX.Element;
891
891
  /**
892
892
  * Render props for Flow.Status component.
893
893
  */
@@ -919,7 +919,7 @@ interface FlowStatusProps {
919
919
  */
920
920
  declare function FlowStatus({
921
921
  children
922
- }: FlowStatusProps): react_jsx_runtime12.JSX.Element;
922
+ }: FlowStatusProps): react_jsx_runtime13.JSX.Element;
923
923
  /**
924
924
  * Render props for Flow.Error component.
925
925
  */
@@ -945,7 +945,7 @@ interface FlowErrorProps {
945
945
  */
946
946
  declare function FlowError({
947
947
  children
948
- }: FlowErrorProps): react_jsx_runtime12.JSX.Element;
948
+ }: FlowErrorProps): react_jsx_runtime13.JSX.Element;
949
949
  /**
950
950
  * Render props for Flow.Submit component.
951
951
  */
@@ -974,7 +974,7 @@ interface FlowSubmitProps {
974
974
  declare function FlowSubmit({
975
975
  children,
976
976
  disabled
977
- }: FlowSubmitProps): react_jsx_runtime12.JSX.Element;
977
+ }: FlowSubmitProps): react_jsx_runtime13.JSX.Element;
978
978
  /**
979
979
  * Render props for Flow.Cancel component.
980
980
  */
@@ -996,7 +996,7 @@ interface FlowCancelProps {
996
996
  */
997
997
  declare function FlowCancel({
998
998
  children
999
- }: FlowCancelProps): react_jsx_runtime12.JSX.Element;
999
+ }: FlowCancelProps): react_jsx_runtime13.JSX.Element;
1000
1000
  /**
1001
1001
  * Render props for Flow.Reset component.
1002
1002
  */
@@ -1018,7 +1018,7 @@ interface FlowResetProps {
1018
1018
  */
1019
1019
  declare function FlowReset({
1020
1020
  children
1021
- }: FlowResetProps): react_jsx_runtime12.JSX.Element;
1021
+ }: FlowResetProps): react_jsx_runtime13.JSX.Element;
1022
1022
  /**
1023
1023
  * Render props for Flow.QuickUpload component.
1024
1024
  */
@@ -1059,7 +1059,7 @@ interface FlowQuickUploadProps {
1059
1059
  */
1060
1060
  declare function FlowQuickUpload({
1061
1061
  children
1062
- }: FlowQuickUploadProps): react_jsx_runtime12.JSX.Element;
1062
+ }: FlowQuickUploadProps): react_jsx_runtime13.JSX.Element;
1063
1063
  /**
1064
1064
  * Flow compound component for flow-based file uploads on React Native.
1065
1065
  *
@@ -1122,6 +1122,680 @@ declare const Flow: typeof FlowRoot & {
1122
1122
  QuickUpload: typeof FlowQuickUpload;
1123
1123
  };
1124
1124
  //#endregion
1125
+ //#region src/hooks/use-multi-upload.d.ts
1126
+ interface UploadItemState {
1127
+ id: string;
1128
+ file: Extract<FilePickResult, {
1129
+ status: "success";
1130
+ }>;
1131
+ status: "idle" | "uploading" | "success" | "error" | "aborted";
1132
+ progress: number;
1133
+ bytesUploaded: number;
1134
+ totalBytes: number;
1135
+ error: Error | null;
1136
+ result: UploadFile | null;
1137
+ }
1138
+ interface MultiUploadState {
1139
+ items: UploadItemState[];
1140
+ totalProgress: number;
1141
+ totalUploaded: number;
1142
+ totalBytes: number;
1143
+ activeCount: number;
1144
+ completedCount: number;
1145
+ failedCount: number;
1146
+ }
1147
+ /**
1148
+ * Hook for managing multiple concurrent file uploads with progress tracking.
1149
+ * Each file is uploaded independently using the core upload client.
1150
+ *
1151
+ * Must be used within an UploadistaProvider.
1152
+ *
1153
+ * @param options - Multi-upload configuration options
1154
+ * @returns Multi-upload state and control methods
1155
+ *
1156
+ * @example
1157
+ * ```tsx
1158
+ * function MyComponent() {
1159
+ * const multiUpload = useMultiUpload({
1160
+ * maxConcurrent: 3,
1161
+ * onSuccess: (result) => console.log('File uploaded:', result),
1162
+ * onError: (error) => console.error('Upload failed:', error),
1163
+ * });
1164
+ *
1165
+ * const handlePickFiles = async () => {
1166
+ * const files = await fileSystemProvider.pickImage({ allowMultiple: true });
1167
+ * multiUpload.addFiles(files);
1168
+ * await multiUpload.startUploads();
1169
+ * };
1170
+ *
1171
+ * return (
1172
+ * <View>
1173
+ * <Button title="Pick Files" onPress={handlePickFiles} />
1174
+ * <Text>Progress: {multiUpload.state.totalProgress}%</Text>
1175
+ * <Text>Active: {multiUpload.state.activeCount}</Text>
1176
+ * <Text>Completed: {multiUpload.state.completedCount}/{multiUpload.state.items.length}</Text>
1177
+ * </View>
1178
+ * );
1179
+ * }
1180
+ * ```
1181
+ */
1182
+ declare function useMultiUpload(options?: UseMultiUploadOptions): {
1183
+ state: MultiUploadState;
1184
+ addFiles: (files: FilePickResult[]) => string[];
1185
+ startUploads: (itemIds?: string[]) => Promise<void>;
1186
+ removeItem: (id: string) => void;
1187
+ abortItem: (id: string) => void;
1188
+ retryItem: (id: string) => Promise<void>;
1189
+ clear: () => void;
1190
+ };
1191
+ //#endregion
1192
+ //#region src/components/upload-primitives.d.ts
1193
+ /**
1194
+ * Context value provided by the Upload component root.
1195
+ * Contains all upload state and actions.
1196
+ */
1197
+ interface UploadContextValue {
1198
+ /** Whether in multi-file mode */
1199
+ mode: "single" | "multi";
1200
+ /** Current multi-upload state (aggregate) */
1201
+ state: MultiUploadState;
1202
+ /** Whether auto-start is enabled */
1203
+ autoStart: boolean;
1204
+ /** Add files to the upload queue */
1205
+ addFiles: (files: FilePickResult[]) => string[];
1206
+ /** Remove an item from the queue */
1207
+ removeItem: (id: string) => void;
1208
+ /** Start all pending uploads */
1209
+ startAll: (itemIds?: string[]) => Promise<void>;
1210
+ /** Abort a specific upload by ID */
1211
+ abortItem: (id: string) => void;
1212
+ /** Retry a specific failed upload by ID */
1213
+ retryItem: (id: string) => Promise<void>;
1214
+ /** Clear all items and reset state */
1215
+ clear: () => void;
1216
+ /** Internal handler for files received from picker */
1217
+ handleFilesReceived: (files: FilePickResult[]) => void;
1218
+ /** Pick a file using the file system provider */
1219
+ pickFile: () => Promise<FilePickResult | null>;
1220
+ /** Pick an image using the file system provider */
1221
+ pickImage: () => Promise<FilePickResult | null>;
1222
+ /** Take a photo using the camera */
1223
+ takePhoto: () => Promise<FilePickResult | null>;
1224
+ }
1225
+ /**
1226
+ * Hook to access upload context from within an Upload component.
1227
+ * @throws Error if used outside of an Upload component
1228
+ */
1229
+ declare function useUploadContext(): UploadContextValue;
1230
+ /**
1231
+ * Context value for a specific upload item within an Upload.
1232
+ */
1233
+ interface UploadItemContextValue {
1234
+ /** Item ID */
1235
+ id: string;
1236
+ /** The file being uploaded */
1237
+ file: Extract<FilePickResult, {
1238
+ status: "success";
1239
+ }>;
1240
+ /** Current upload state */
1241
+ state: {
1242
+ status: UploadItemState["status"];
1243
+ progress: number;
1244
+ bytesUploaded: number;
1245
+ totalBytes: number;
1246
+ error: Error | null;
1247
+ result: UploadFile | null;
1248
+ };
1249
+ /** Abort this upload */
1250
+ abort: () => void;
1251
+ /** Retry this upload */
1252
+ retry: () => Promise<void>;
1253
+ /** Remove this item from the queue */
1254
+ remove: () => void;
1255
+ }
1256
+ /**
1257
+ * Hook to access upload item context from within an Upload.Item component.
1258
+ * @throws Error if used outside of an Upload.Item component
1259
+ */
1260
+ declare function useUploadItemContext(): UploadItemContextValue;
1261
+ /**
1262
+ * Render props for the Upload root component.
1263
+ */
1264
+ interface UploadRenderProps extends UploadContextValue {}
1265
+ /**
1266
+ * Props for the Upload root component.
1267
+ */
1268
+ interface UploadProps {
1269
+ /** Whether to allow multiple file uploads (default: false) */
1270
+ multiple?: boolean;
1271
+ /** Maximum concurrent uploads (default: 3, only used in multi mode) */
1272
+ maxConcurrent?: number;
1273
+ /** Whether to auto-start uploads when files are received (default: true) */
1274
+ autoStart?: boolean;
1275
+ /** Metadata to attach to uploads */
1276
+ metadata?: Record<string, string>;
1277
+ /** Called when a single file upload succeeds */
1278
+ onSuccess?: (result: UploadFile) => void;
1279
+ /** Called when an upload fails */
1280
+ onError?: (error: Error) => void;
1281
+ /** Called when all uploads complete (multi mode) */
1282
+ onComplete?: (results: {
1283
+ successful: number;
1284
+ failed: number;
1285
+ total: number;
1286
+ }) => void;
1287
+ /** Children to render (can be render function or ReactNode) */
1288
+ children: ReactNode | ((props: UploadRenderProps) => ReactNode);
1289
+ }
1290
+ /**
1291
+ * Root component for file uploads on React Native.
1292
+ * Provides context for all Upload sub-components.
1293
+ * Supports both single-file and multi-file modes via the `multiple` prop.
1294
+ *
1295
+ * @example Single file upload
1296
+ * ```tsx
1297
+ * <Upload onSuccess={handleSuccess}>
1298
+ * <Upload.FilePicker>
1299
+ * {({ pick, isLoading }) => (
1300
+ * <Pressable onPress={pick}>
1301
+ * <Text>Select File</Text>
1302
+ * </Pressable>
1303
+ * )}
1304
+ * </Upload.FilePicker>
1305
+ * <Upload.Progress>
1306
+ * {({ progress, isUploading }) => (
1307
+ * isUploading && <Text>{progress}%</Text>
1308
+ * )}
1309
+ * </Upload.Progress>
1310
+ * </Upload>
1311
+ * ```
1312
+ *
1313
+ * @example Multi-file upload
1314
+ * ```tsx
1315
+ * <Upload multiple maxConcurrent={3} onComplete={handleComplete}>
1316
+ * <Upload.GalleryPicker>
1317
+ * {({ pick }) => (
1318
+ * <Pressable onPress={pick}>
1319
+ * <Text>Select Photos</Text>
1320
+ * </Pressable>
1321
+ * )}
1322
+ * </Upload.GalleryPicker>
1323
+ * <Upload.Items>
1324
+ * {({ items }) => items.map(item => (
1325
+ * <Upload.Item key={item.id} id={item.id}>
1326
+ * {({ file, state, abort, remove }) => (
1327
+ * <View>
1328
+ * <Text>{file.data.name}: {state.progress}%</Text>
1329
+ * </View>
1330
+ * )}
1331
+ * </Upload.Item>
1332
+ * ))}
1333
+ * </Upload.Items>
1334
+ * <Upload.StartAll>
1335
+ * {({ start, disabled }) => (
1336
+ * <Pressable onPress={start} disabled={disabled}>
1337
+ * <Text>Upload All</Text>
1338
+ * </Pressable>
1339
+ * )}
1340
+ * </Upload.StartAll>
1341
+ * </Upload>
1342
+ * ```
1343
+ */
1344
+ declare function UploadRoot({
1345
+ multiple,
1346
+ maxConcurrent,
1347
+ autoStart,
1348
+ metadata,
1349
+ onSuccess,
1350
+ onError,
1351
+ onComplete,
1352
+ children
1353
+ }: UploadProps): react_jsx_runtime13.JSX.Element;
1354
+ /**
1355
+ * Render props for Upload.FilePicker component.
1356
+ */
1357
+ interface UploadFilePickerRenderProps {
1358
+ /** Pick a file */
1359
+ pick: () => Promise<void>;
1360
+ /** Whether a pick operation is in progress */
1361
+ isLoading: boolean;
1362
+ }
1363
+ /**
1364
+ * Props for Upload.FilePicker component.
1365
+ */
1366
+ interface UploadFilePickerProps {
1367
+ /** Render function receiving picker state */
1368
+ children: (props: UploadFilePickerRenderProps) => ReactNode;
1369
+ }
1370
+ /**
1371
+ * File picker component for document selection.
1372
+ *
1373
+ * @example
1374
+ * ```tsx
1375
+ * <Upload.FilePicker>
1376
+ * {({ pick }) => (
1377
+ * <Pressable onPress={pick}>
1378
+ * <Text>Select Document</Text>
1379
+ * </Pressable>
1380
+ * )}
1381
+ * </Upload.FilePicker>
1382
+ * ```
1383
+ */
1384
+ declare function UploadFilePicker({
1385
+ children
1386
+ }: UploadFilePickerProps): react_jsx_runtime13.JSX.Element;
1387
+ /**
1388
+ * Render props for Upload.GalleryPicker component.
1389
+ */
1390
+ interface UploadGalleryPickerRenderProps {
1391
+ /** Pick from gallery */
1392
+ pick: () => Promise<void>;
1393
+ /** Whether a pick operation is in progress */
1394
+ isLoading: boolean;
1395
+ }
1396
+ /**
1397
+ * Props for Upload.GalleryPicker component.
1398
+ */
1399
+ interface UploadGalleryPickerProps {
1400
+ /** Render function receiving picker state */
1401
+ children: (props: UploadGalleryPickerRenderProps) => ReactNode;
1402
+ }
1403
+ /**
1404
+ * Gallery picker component for image selection.
1405
+ *
1406
+ * @example
1407
+ * ```tsx
1408
+ * <Upload.GalleryPicker>
1409
+ * {({ pick }) => (
1410
+ * <Pressable onPress={pick}>
1411
+ * <Text>Select Photos</Text>
1412
+ * </Pressable>
1413
+ * )}
1414
+ * </Upload.GalleryPicker>
1415
+ * ```
1416
+ */
1417
+ declare function UploadGalleryPicker({
1418
+ children
1419
+ }: UploadGalleryPickerProps): react_jsx_runtime13.JSX.Element;
1420
+ /**
1421
+ * Render props for Upload.CameraPicker component.
1422
+ */
1423
+ interface UploadCameraPickerRenderProps {
1424
+ /** Take a photo */
1425
+ take: () => Promise<void>;
1426
+ /** Whether a capture is in progress */
1427
+ isLoading: boolean;
1428
+ }
1429
+ /**
1430
+ * Props for Upload.CameraPicker component.
1431
+ */
1432
+ interface UploadCameraPickerProps {
1433
+ /** Render function receiving picker state */
1434
+ children: (props: UploadCameraPickerRenderProps) => ReactNode;
1435
+ }
1436
+ /**
1437
+ * Camera picker component for photo capture.
1438
+ *
1439
+ * @example
1440
+ * ```tsx
1441
+ * <Upload.CameraPicker>
1442
+ * {({ take }) => (
1443
+ * <Pressable onPress={take}>
1444
+ * <Text>Take Photo</Text>
1445
+ * </Pressable>
1446
+ * )}
1447
+ * </Upload.CameraPicker>
1448
+ * ```
1449
+ */
1450
+ declare function UploadCameraPicker({
1451
+ children
1452
+ }: UploadCameraPickerProps): react_jsx_runtime13.JSX.Element;
1453
+ /**
1454
+ * Render props for Upload.Items component.
1455
+ */
1456
+ interface UploadItemsRenderProps {
1457
+ /** All upload items */
1458
+ items: UploadItemState[];
1459
+ /** Whether there are any items */
1460
+ hasItems: boolean;
1461
+ /** Whether items array is empty */
1462
+ isEmpty: boolean;
1463
+ }
1464
+ /**
1465
+ * Props for Upload.Items component.
1466
+ */
1467
+ interface UploadItemsProps {
1468
+ /** Render function receiving items */
1469
+ children: (props: UploadItemsRenderProps) => ReactNode;
1470
+ }
1471
+ /**
1472
+ * Renders the list of upload items via render props.
1473
+ *
1474
+ * @example
1475
+ * ```tsx
1476
+ * <Upload.Items>
1477
+ * {({ items, isEmpty }) => (
1478
+ * isEmpty ? <Text>No files</Text> : (
1479
+ * items.map(item => (
1480
+ * <Upload.Item key={item.id} id={item.id}>
1481
+ * {(props) => ...}
1482
+ * </Upload.Item>
1483
+ * ))
1484
+ * )
1485
+ * )}
1486
+ * </Upload.Items>
1487
+ * ```
1488
+ */
1489
+ declare function UploadItems({
1490
+ children
1491
+ }: UploadItemsProps): react_jsx_runtime13.JSX.Element;
1492
+ /**
1493
+ * Props for Upload.Item component.
1494
+ */
1495
+ interface UploadItemProps {
1496
+ /** Item ID */
1497
+ id: string;
1498
+ /** Children (can be render function or regular children) */
1499
+ children: ReactNode | ((props: UploadItemContextValue) => ReactNode);
1500
+ }
1501
+ /**
1502
+ * Scoped context provider for a specific upload item.
1503
+ *
1504
+ * @example
1505
+ * ```tsx
1506
+ * <Upload.Item id={item.id}>
1507
+ * {({ file, state, abort, remove }) => (
1508
+ * <View>
1509
+ * <Text>{file.data.name}</Text>
1510
+ * <Text>{state.progress}%</Text>
1511
+ * <Pressable onPress={abort}><Text>Cancel</Text></Pressable>
1512
+ * <Pressable onPress={remove}><Text>Remove</Text></Pressable>
1513
+ * </View>
1514
+ * )}
1515
+ * </Upload.Item>
1516
+ * ```
1517
+ */
1518
+ declare function UploadItem({
1519
+ id,
1520
+ children
1521
+ }: UploadItemProps): react_jsx_runtime13.JSX.Element | null;
1522
+ /**
1523
+ * Render props for Upload.Progress component.
1524
+ */
1525
+ interface UploadProgressRenderProps {
1526
+ /** Progress percentage (0-100) */
1527
+ progress: number;
1528
+ /** Bytes uploaded so far */
1529
+ bytesUploaded: number;
1530
+ /** Total bytes to upload */
1531
+ totalBytes: number;
1532
+ /** Whether any uploads are active */
1533
+ isUploading: boolean;
1534
+ }
1535
+ /**
1536
+ * Props for Upload.Progress component.
1537
+ */
1538
+ interface UploadProgressProps {
1539
+ /** Render function receiving progress state */
1540
+ children: (props: UploadProgressRenderProps) => ReactNode;
1541
+ }
1542
+ /**
1543
+ * Progress display component within an Upload.
1544
+ *
1545
+ * @example
1546
+ * ```tsx
1547
+ * <Upload.Progress>
1548
+ * {({ progress, isUploading }) => (
1549
+ * isUploading && <Text>{progress}%</Text>
1550
+ * )}
1551
+ * </Upload.Progress>
1552
+ * ```
1553
+ */
1554
+ declare function UploadProgress$1({
1555
+ children
1556
+ }: UploadProgressProps): react_jsx_runtime13.JSX.Element;
1557
+ /**
1558
+ * Render props for Upload.Status component.
1559
+ */
1560
+ interface UploadStatusRenderProps {
1561
+ /** Overall status */
1562
+ status: "idle" | "uploading" | "success" | "error";
1563
+ /** Whether idle (no uploads active or completed) */
1564
+ isIdle: boolean;
1565
+ /** Whether uploading */
1566
+ isUploading: boolean;
1567
+ /** Whether all uploads succeeded */
1568
+ isSuccess: boolean;
1569
+ /** Whether any upload failed */
1570
+ isError: boolean;
1571
+ /** Number of total items */
1572
+ total: number;
1573
+ /** Number of successful uploads */
1574
+ successful: number;
1575
+ /** Number of failed uploads */
1576
+ failed: number;
1577
+ /** Number of currently uploading */
1578
+ active: number;
1579
+ }
1580
+ /**
1581
+ * Props for Upload.Status component.
1582
+ */
1583
+ interface UploadStatusProps {
1584
+ /** Render function receiving status state */
1585
+ children: (props: UploadStatusRenderProps) => ReactNode;
1586
+ }
1587
+ /**
1588
+ * Status display component within an Upload.
1589
+ *
1590
+ * @example
1591
+ * ```tsx
1592
+ * <Upload.Status>
1593
+ * {({ status, successful, failed, total }) => (
1594
+ * <Text>
1595
+ * {status}: {successful}/{total} uploaded, {failed} failed
1596
+ * </Text>
1597
+ * )}
1598
+ * </Upload.Status>
1599
+ * ```
1600
+ */
1601
+ declare function UploadStatus$1({
1602
+ children
1603
+ }: UploadStatusProps): react_jsx_runtime13.JSX.Element;
1604
+ /**
1605
+ * Render props for Upload.Error component.
1606
+ */
1607
+ interface UploadErrorRenderProps {
1608
+ /** Whether there are any errors */
1609
+ hasError: boolean;
1610
+ /** Number of failed uploads */
1611
+ failedCount: number;
1612
+ /** Failed items */
1613
+ failedItems: UploadItemState[];
1614
+ /** Clear all items */
1615
+ clear: () => void;
1616
+ }
1617
+ /**
1618
+ * Props for Upload.Error component.
1619
+ */
1620
+ interface UploadErrorProps {
1621
+ /** Render function receiving error state */
1622
+ children: (props: UploadErrorRenderProps) => ReactNode;
1623
+ }
1624
+ /**
1625
+ * Error display component within an Upload.
1626
+ *
1627
+ * @example
1628
+ * ```tsx
1629
+ * <Upload.Error>
1630
+ * {({ hasError, failedItems, clear }) => (
1631
+ * hasError && (
1632
+ * <View>
1633
+ * {failedItems.map(item => (
1634
+ * <Text key={item.id}>{item.file.data.name}: {item.error?.message}</Text>
1635
+ * ))}
1636
+ * <Pressable onPress={clear}><Text>Clear</Text></Pressable>
1637
+ * </View>
1638
+ * )
1639
+ * )}
1640
+ * </Upload.Error>
1641
+ * ```
1642
+ */
1643
+ declare function UploadError({
1644
+ children
1645
+ }: UploadErrorProps): react_jsx_runtime13.JSX.Element;
1646
+ /**
1647
+ * Render props for Upload.Cancel component.
1648
+ */
1649
+ interface UploadCancelRenderProps {
1650
+ /** Cancel all uploads */
1651
+ cancel: () => void;
1652
+ /** Whether cancel is disabled */
1653
+ disabled: boolean;
1654
+ }
1655
+ /**
1656
+ * Props for Upload.Cancel component.
1657
+ */
1658
+ interface UploadCancelProps {
1659
+ /** Render function receiving cancel state */
1660
+ children: (props: UploadCancelRenderProps) => ReactNode;
1661
+ }
1662
+ /**
1663
+ * Cancel component that aborts all active uploads.
1664
+ */
1665
+ declare function UploadCancel({
1666
+ children
1667
+ }: UploadCancelProps): react_jsx_runtime13.JSX.Element;
1668
+ /**
1669
+ * Render props for Upload.Retry component.
1670
+ */
1671
+ interface UploadRetryRenderProps {
1672
+ /** Retry all failed uploads */
1673
+ retry: () => Promise<void>;
1674
+ /** Whether retry is disabled */
1675
+ disabled: boolean;
1676
+ }
1677
+ /**
1678
+ * Props for Upload.Retry component.
1679
+ */
1680
+ interface UploadRetryProps {
1681
+ /** Render function receiving retry state */
1682
+ children: (props: UploadRetryRenderProps) => ReactNode;
1683
+ }
1684
+ /**
1685
+ * Retry component that retries all failed uploads.
1686
+ */
1687
+ declare function UploadRetry({
1688
+ children
1689
+ }: UploadRetryProps): react_jsx_runtime13.JSX.Element;
1690
+ /**
1691
+ * Render props for Upload.Reset component.
1692
+ */
1693
+ interface UploadResetRenderProps {
1694
+ /** Reset all state */
1695
+ reset: () => void;
1696
+ }
1697
+ /**
1698
+ * Props for Upload.Reset component.
1699
+ */
1700
+ interface UploadResetProps {
1701
+ /** Render function receiving reset state */
1702
+ children: (props: UploadResetRenderProps) => ReactNode;
1703
+ }
1704
+ /**
1705
+ * Reset component that clears all items and state.
1706
+ */
1707
+ declare function UploadReset({
1708
+ children
1709
+ }: UploadResetProps): react_jsx_runtime13.JSX.Element;
1710
+ /**
1711
+ * Render props for Upload.StartAll component.
1712
+ */
1713
+ interface UploadStartAllRenderProps {
1714
+ /** Start all pending uploads */
1715
+ start: () => Promise<void>;
1716
+ /** Whether start is disabled */
1717
+ disabled: boolean;
1718
+ }
1719
+ /**
1720
+ * Props for Upload.StartAll component.
1721
+ */
1722
+ interface UploadStartAllProps {
1723
+ /** Render function receiving start state */
1724
+ children: (props: UploadStartAllRenderProps) => ReactNode;
1725
+ }
1726
+ /**
1727
+ * Start all component that begins all queued uploads.
1728
+ */
1729
+ declare function UploadStartAll({
1730
+ children
1731
+ }: UploadStartAllProps): react_jsx_runtime13.JSX.Element;
1732
+ /**
1733
+ * Upload compound component for React Native.
1734
+ *
1735
+ * Provides a composable, headless API for building upload interfaces on mobile.
1736
+ * Uses picker components instead of drag-and-drop (which isn't available on mobile).
1737
+ * All sub-components use render props for complete UI control.
1738
+ *
1739
+ * @example Single file upload
1740
+ * ```tsx
1741
+ * <Upload onSuccess={handleSuccess}>
1742
+ * <Upload.FilePicker>
1743
+ * {({ pick }) => (
1744
+ * <Pressable onPress={pick}>
1745
+ * <Text>Select File</Text>
1746
+ * </Pressable>
1747
+ * )}
1748
+ * </Upload.FilePicker>
1749
+ * <Upload.Progress>
1750
+ * {({ progress }) => <Text>{progress}%</Text>}
1751
+ * </Upload.Progress>
1752
+ * </Upload>
1753
+ * ```
1754
+ *
1755
+ * @example Multi-file upload
1756
+ * ```tsx
1757
+ * <Upload multiple maxConcurrent={3} onComplete={handleComplete}>
1758
+ * <Upload.GalleryPicker>
1759
+ * {({ pick }) => (
1760
+ * <Pressable onPress={pick}>
1761
+ * <Text>Select Photos</Text>
1762
+ * </Pressable>
1763
+ * )}
1764
+ * </Upload.GalleryPicker>
1765
+ * <Upload.Items>
1766
+ * {({ items }) => items.map(item => (
1767
+ * <Upload.Item key={item.id} id={item.id}>
1768
+ * {({ file, state }) => (
1769
+ * <Text>{file.data.name}: {state.progress}%</Text>
1770
+ * )}
1771
+ * </Upload.Item>
1772
+ * ))}
1773
+ * </Upload.Items>
1774
+ * <Upload.StartAll>
1775
+ * {({ start, disabled }) => (
1776
+ * <Pressable onPress={start} disabled={disabled}>
1777
+ * <Text>Upload All</Text>
1778
+ * </Pressable>
1779
+ * )}
1780
+ * </Upload.StartAll>
1781
+ * </Upload>
1782
+ * ```
1783
+ */
1784
+ declare const Upload: typeof UploadRoot & {
1785
+ FilePicker: typeof UploadFilePicker;
1786
+ GalleryPicker: typeof UploadGalleryPicker;
1787
+ CameraPicker: typeof UploadCameraPicker;
1788
+ Items: typeof UploadItems;
1789
+ Item: typeof UploadItem;
1790
+ Progress: typeof UploadProgress$1;
1791
+ Status: typeof UploadStatus$1;
1792
+ Error: typeof UploadError;
1793
+ Cancel: typeof UploadCancel;
1794
+ Retry: typeof UploadRetry;
1795
+ Reset: typeof UploadReset;
1796
+ StartAll: typeof UploadStartAll;
1797
+ };
1798
+ //#endregion
1125
1799
  //#region src/contexts/flow-manager-context.d.ts
1126
1800
  /**
1127
1801
  * Context value providing access to flow managers
@@ -1170,7 +1844,7 @@ interface FlowManagerProviderProps {
1170
1844
  */
1171
1845
  declare function FlowManagerProvider({
1172
1846
  children
1173
- }: FlowManagerProviderProps): react_jsx_runtime12.JSX.Element;
1847
+ }: FlowManagerProviderProps): react_jsx_runtime13.JSX.Element;
1174
1848
  /**
1175
1849
  * Hook to access the FlowManager context.
1176
1850
  * Must be used within a FlowManagerProvider.
@@ -1435,73 +2109,6 @@ declare function useFileUpload(options?: UseFileUploadOptions): {
1435
2109
  metrics: _uploadista_client_core3.UploadMetrics;
1436
2110
  };
1437
2111
  //#endregion
1438
- //#region src/hooks/use-multi-upload.d.ts
1439
- interface UploadItemState {
1440
- id: string;
1441
- file: Extract<FilePickResult, {
1442
- status: "success";
1443
- }>;
1444
- status: "idle" | "uploading" | "success" | "error" | "aborted";
1445
- progress: number;
1446
- bytesUploaded: number;
1447
- totalBytes: number;
1448
- error: Error | null;
1449
- result: UploadFile | null;
1450
- }
1451
- interface MultiUploadState {
1452
- items: UploadItemState[];
1453
- totalProgress: number;
1454
- totalUploaded: number;
1455
- totalBytes: number;
1456
- activeCount: number;
1457
- completedCount: number;
1458
- failedCount: number;
1459
- }
1460
- /**
1461
- * Hook for managing multiple concurrent file uploads with progress tracking.
1462
- * Each file is uploaded independently using the core upload client.
1463
- *
1464
- * Must be used within an UploadistaProvider.
1465
- *
1466
- * @param options - Multi-upload configuration options
1467
- * @returns Multi-upload state and control methods
1468
- *
1469
- * @example
1470
- * ```tsx
1471
- * function MyComponent() {
1472
- * const multiUpload = useMultiUpload({
1473
- * maxConcurrent: 3,
1474
- * onSuccess: (result) => console.log('File uploaded:', result),
1475
- * onError: (error) => console.error('Upload failed:', error),
1476
- * });
1477
- *
1478
- * const handlePickFiles = async () => {
1479
- * const files = await fileSystemProvider.pickImage({ allowMultiple: true });
1480
- * multiUpload.addFiles(files);
1481
- * await multiUpload.startUploads();
1482
- * };
1483
- *
1484
- * return (
1485
- * <View>
1486
- * <Button title="Pick Files" onPress={handlePickFiles} />
1487
- * <Text>Progress: {multiUpload.state.totalProgress}%</Text>
1488
- * <Text>Active: {multiUpload.state.activeCount}</Text>
1489
- * <Text>Completed: {multiUpload.state.completedCount}/{multiUpload.state.items.length}</Text>
1490
- * </View>
1491
- * );
1492
- * }
1493
- * ```
1494
- */
1495
- declare function useMultiUpload(options?: UseMultiUploadOptions): {
1496
- state: MultiUploadState;
1497
- addFiles: (files: FilePickResult[]) => string[];
1498
- startUploads: (itemIds?: string[]) => Promise<void>;
1499
- removeItem: (id: string) => void;
1500
- abortItem: (id: string) => void;
1501
- retryItem: (id: string) => Promise<void>;
1502
- clear: () => void;
1503
- };
1504
- //#endregion
1505
2112
  //#region src/hooks/use-gallery-upload.d.ts
1506
2113
  /**
1507
2114
  * Hook for selecting and uploading photos/videos from gallery
@@ -1727,5 +2334,5 @@ declare function normalizeUri(uri: string): string;
1727
2334
  */
1728
2335
  declare function getMimeTypeFromUri(uri: string): string;
1729
2336
  //#endregion
1730
- export { type Base64Service, type CameraOptions, CameraUploadButton, type CameraUploadButtonProps, type ConnectionMetrics, type ConnectionPoolConfig, type DetailedConnectionMetrics, type FileInfo, type FilePickResult, type FileReaderService, type FileSystemProvider, type FileSystemProviderConfig, FileUploadButton, type FileUploadButtonProps, Flow, type FlowCancelProps, type FlowCancelRenderProps, type FlowContextValue, type FlowErrorProps, type FlowErrorRenderProps, type FlowInputContextValue, type FlowInputFilePickerProps, type FlowInputFilePickerRenderProps, type FlowInputMetadata, type FlowInputPreviewProps, type FlowInputPreviewRenderProps, type FlowInputProps, type FlowInputsProps, type FlowInputsRenderProps, FlowManagerProvider, type FlowProgressProps, type FlowProgressRenderProps, type FlowProps, type FlowQuickUploadProps, type FlowQuickUploadRenderProps, type FlowRenderProps, type FlowResetProps, type FlowResetRenderProps, type FlowStatusProps, type FlowStatusRenderProps, type FlowSubmitProps, type FlowSubmitRenderProps, type FlowUploadState, type FlowUploadStatus, GalleryUploadButton, type GalleryUploadButtonProps, type HttpClient, type IdGenerationService, type InputExecutionState, type MultiUploadState, PermissionStatus, PermissionType, type PickerOptions, type ReactNativeUploadInput, type ServiceContainer, type StorageService, type UploadItemState, UploadList, type UploadListProps, type UploadMetrics, UploadProgress, type UploadProgressProps, type UploadState, type UploadStatus, UploadistaContext, type UploadistaContextType, type UseCameraUploadOptions, type UseFileUploadOptions, type UseFlowOptions, type UseFlowReturn, type UseGalleryUploadOptions, type UseMultiUploadOptions, formatFileSize, getDirectoryFromUri, getFileExtension, getFileNameFromUri, getFileNameWithoutExtension, getMimeTypeFromFileName, getMimeTypeFromUri, getPermissionStatus, hasPermissions, isContentUri, isDocumentFile, isFileSizeValid, isFileTypeAllowed, isFileUri, isImageFile, isVideoFile, normalizeUri, openAppSettings, pathToUri, requestCameraPermission, requestPermissions, requestPhotoLibraryPermission, requestStorageReadPermission, requestStorageWritePermission, uriToPath, useCameraUpload, useFileUpload, useFlow, useFlowContext, useFlowInputContext, useFlowManagerContext, useGalleryUpload, useMultiUpload, useUploadMetrics, useUploadistaContext };
2337
+ export { type Base64Service, type CameraOptions, CameraUploadButton, type CameraUploadButtonProps, type ConnectionMetrics, type ConnectionPoolConfig, type DetailedConnectionMetrics, type FileInfo, type FilePickResult, type FileReaderService, type FileSystemProvider, type FileSystemProviderConfig, FileUploadButton, type FileUploadButtonProps, Flow, type FlowCancelProps, type FlowCancelRenderProps, type FlowContextValue, type FlowErrorProps, type FlowErrorRenderProps, type FlowInputContextValue, type FlowInputFilePickerProps, type FlowInputFilePickerRenderProps, type FlowInputMetadata, type FlowInputPreviewProps, type FlowInputPreviewRenderProps, type FlowInputProps, type FlowInputsProps, type FlowInputsRenderProps, FlowManagerProvider, type FlowProgressProps, type FlowProgressRenderProps, type FlowProps, type FlowQuickUploadProps, type FlowQuickUploadRenderProps, type FlowRenderProps, type FlowResetProps, type FlowResetRenderProps, type FlowStatusProps, type FlowStatusRenderProps, type FlowSubmitProps, type FlowSubmitRenderProps, type FlowUploadState, type FlowUploadStatus, GalleryUploadButton, type GalleryUploadButtonProps, type HttpClient, type IdGenerationService, type InputExecutionState, type MultiUploadState, PermissionStatus, PermissionType, type PickerOptions, type ReactNativeUploadInput, type ServiceContainer, type StorageService, Upload, type UploadCameraPickerProps, type UploadCameraPickerRenderProps, type UploadCancelProps, type UploadCancelRenderProps, type UploadProgressProps as UploadCompoundProgressProps, type UploadProgressRenderProps as UploadCompoundProgressRenderProps, type UploadContextValue, type UploadErrorProps, type UploadErrorRenderProps, type UploadFilePickerProps, type UploadFilePickerRenderProps, type UploadGalleryPickerProps, type UploadGalleryPickerRenderProps, type UploadItemContextValue, type UploadItemProps, type UploadItemState, type UploadItemsProps, type UploadItemsRenderProps, UploadList, type UploadListProps, type UploadMetrics, UploadProgress, type UploadProgressProps$1 as UploadProgressProps, type UploadProps, type UploadRenderProps, type UploadResetProps, type UploadResetRenderProps, type UploadRetryProps, type UploadRetryRenderProps, type UploadStartAllProps, type UploadStartAllRenderProps, type UploadState, type UploadStatus, type UploadStatusProps, type UploadStatusRenderProps, UploadistaContext, type UploadistaContextType, type UseCameraUploadOptions, type UseFileUploadOptions, type UseFlowOptions, type UseFlowReturn, type UseGalleryUploadOptions, type UseMultiUploadOptions, formatFileSize, getDirectoryFromUri, getFileExtension, getFileNameFromUri, getFileNameWithoutExtension, getMimeTypeFromFileName, getMimeTypeFromUri, getPermissionStatus, hasPermissions, isContentUri, isDocumentFile, isFileSizeValid, isFileTypeAllowed, isFileUri, isImageFile, isVideoFile, normalizeUri, openAppSettings, pathToUri, requestCameraPermission, requestPermissions, requestPhotoLibraryPermission, requestStorageReadPermission, requestStorageWritePermission, uriToPath, useCameraUpload, useFileUpload, useFlow, useFlowContext, useFlowInputContext, useFlowManagerContext, useGalleryUpload, useMultiUpload, useUploadContext, useUploadItemContext, useUploadMetrics, useUploadistaContext };
1731
2338
  //# sourceMappingURL=index.d.mts.map