@drivenets/design-system 0.0.3 → 0.0.5

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.
Files changed (247) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +51 -0
  3. package/dist/components/ds-alert-banner/ds-alert-banner.cjs +157 -52
  4. package/dist/components/ds-alert-banner/ds-alert-banner.d.cts +5 -5
  5. package/dist/components/ds-alert-banner/ds-alert-banner.d.cts.map +1 -1
  6. package/dist/components/ds-alert-banner/ds-alert-banner.js +157 -52
  7. package/dist/components/ds-alert-banner/ds-alert-banner.js.map +1 -1
  8. package/dist/components/ds-alert-banner/ds-alert-banner.types.d.cts.map +1 -1
  9. package/dist/components/ds-alert-banner/ds-alert-banner.types.js.map +1 -1
  10. package/dist/components/ds-breadcrumb/ds-breadcrumb.cjs +59 -16
  11. package/dist/components/ds-breadcrumb/ds-breadcrumb.js +59 -16
  12. package/dist/components/ds-breadcrumb/ds-breadcrumb.js.map +1 -1
  13. package/dist/components/ds-button/ds-button.cjs +18 -2
  14. package/dist/components/ds-button/ds-button.d.cts +2 -2
  15. package/dist/components/ds-button/ds-button.d.cts.map +1 -1
  16. package/dist/components/ds-button/ds-button.d.ts +2 -2
  17. package/dist/components/ds-button/ds-button.js +18 -2
  18. package/dist/components/ds-button/ds-button.js.map +1 -1
  19. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.cjs +79 -10
  20. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js +79 -10
  21. package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js.map +1 -1
  22. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.cjs +78 -10
  23. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js +78 -10
  24. package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js.map +1 -1
  25. package/dist/components/ds-checkbox/ds-checkbox.cjs +89 -18
  26. package/dist/components/ds-checkbox/ds-checkbox.js +89 -18
  27. package/dist/components/ds-checkbox/ds-checkbox.js.map +1 -1
  28. package/dist/components/ds-chip/ds-chip.cjs +100 -30
  29. package/dist/components/ds-chip/ds-chip.js +100 -30
  30. package/dist/components/ds-chip/ds-chip.js.map +1 -1
  31. package/dist/components/ds-chip-group/ds-chip-group.cjs +6 -6
  32. package/dist/components/ds-chip-group/ds-chip-group.js +6 -6
  33. package/dist/components/ds-chip-group/ds-chip-group.js.map +1 -1
  34. package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.js.map +1 -1
  35. package/dist/components/ds-confirmation/ds-confirmation.cjs +210 -56
  36. package/dist/components/ds-confirmation/ds-confirmation.d.cts +8 -8
  37. package/dist/components/ds-confirmation/ds-confirmation.d.ts +8 -8
  38. package/dist/components/ds-confirmation/ds-confirmation.js +210 -56
  39. package/dist/components/ds-confirmation/ds-confirmation.js.map +1 -1
  40. package/dist/components/ds-dialog/ds-dialog.js.map +1 -1
  41. package/dist/components/ds-drawer/ds-drawer.cjs +261 -61
  42. package/dist/components/ds-drawer/ds-drawer.d.cts +9 -9
  43. package/dist/components/ds-drawer/ds-drawer.d.ts +9 -9
  44. package/dist/components/ds-drawer/ds-drawer.js +261 -61
  45. package/dist/components/ds-drawer/ds-drawer.js.map +1 -1
  46. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.cjs +481 -135
  47. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js +481 -135
  48. package/dist/components/ds-dropdown-menu/ds-dropdown-menu.js.map +1 -1
  49. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.cjs +146 -56
  50. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.cts +2 -2
  51. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.ts +2 -2
  52. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.js +146 -56
  53. package/dist/components/ds-expandable-text-input/ds-expandable-text-input.js.map +1 -1
  54. package/dist/components/ds-file-upload/components/file-upload/file-upload.cjs +190 -69
  55. package/dist/components/ds-file-upload/components/file-upload/file-upload.js +190 -69
  56. package/dist/components/ds-file-upload/components/file-upload/file-upload.js.map +1 -1
  57. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.cjs +273 -132
  58. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.js +273 -132
  59. package/dist/components/ds-file-upload/components/file-upload-item/file-upload-item.js.map +1 -1
  60. package/dist/components/ds-file-upload/ds-file-upload.cjs +96 -16
  61. package/dist/components/ds-file-upload/ds-file-upload.js +96 -16
  62. package/dist/components/ds-file-upload/ds-file-upload.js.map +1 -1
  63. package/dist/components/ds-file-upload/errors/file-upload-errors.js.map +1 -1
  64. package/dist/components/ds-file-upload/hooks/use-file-upload.cjs +93 -93
  65. package/dist/components/ds-file-upload/hooks/use-file-upload.js +93 -93
  66. package/dist/components/ds-file-upload/hooks/use-file-upload.js.map +1 -1
  67. package/dist/components/ds-file-upload/types/accept-types.js.map +1 -1
  68. package/dist/components/ds-file-upload/utils/accept-utils.js.map +1 -1
  69. package/dist/components/ds-file-upload/utils/constants.js.map +1 -1
  70. package/dist/components/ds-file-upload/utils/file-factory.js.map +1 -1
  71. package/dist/components/ds-file-upload/utils/format-file-size.js.map +1 -1
  72. package/dist/components/ds-file-upload/utils/generate-helper-text.js.map +1 -1
  73. package/dist/components/ds-file-upload/utils/get-error-message.js.map +1 -1
  74. package/dist/components/ds-file-upload/utils/is-file-equal.js.map +1 -1
  75. package/dist/components/ds-form-control/ds-form-control.cjs +119 -34
  76. package/dist/components/ds-form-control/ds-form-control.d.cts +7 -7
  77. package/dist/components/ds-form-control/ds-form-control.d.ts +7 -7
  78. package/dist/components/ds-form-control/ds-form-control.d.ts.map +1 -1
  79. package/dist/components/ds-form-control/ds-form-control.js +119 -34
  80. package/dist/components/ds-form-control/ds-form-control.js.map +1 -1
  81. package/dist/components/ds-form-control/ds-form-control.types.js.map +1 -1
  82. package/dist/components/ds-grid/ds-grid.js.map +1 -1
  83. package/dist/components/ds-icon/ds-icon.cjs +84 -13
  84. package/dist/components/ds-icon/ds-icon.js +84 -13
  85. package/dist/components/ds-icon/ds-icon.js.map +1 -1
  86. package/dist/components/ds-icon/ds-icon.types.d.cts.map +1 -1
  87. package/dist/components/ds-icon/ds-icon.types.js.map +1 -1
  88. package/dist/components/ds-modal/ds-modal.cjs +222 -55
  89. package/dist/components/ds-modal/ds-modal.d.cts +8 -8
  90. package/dist/components/ds-modal/ds-modal.d.ts +8 -8
  91. package/dist/components/ds-modal/ds-modal.d.ts.map +1 -1
  92. package/dist/components/ds-modal/ds-modal.js +222 -55
  93. package/dist/components/ds-modal/ds-modal.js.map +1 -1
  94. package/dist/components/ds-number-input/ds-number-input.cjs +136 -49
  95. package/dist/components/ds-number-input/ds-number-input.js +136 -49
  96. package/dist/components/ds-number-input/ds-number-input.js.map +1 -1
  97. package/dist/components/ds-panel/ds-panel.cjs +111 -19
  98. package/dist/components/ds-panel/ds-panel.d.cts +2 -2
  99. package/dist/components/ds-panel/ds-panel.d.cts.map +1 -1
  100. package/dist/components/ds-panel/ds-panel.d.ts +2 -2
  101. package/dist/components/ds-panel/ds-panel.js +111 -19
  102. package/dist/components/ds-panel/ds-panel.js.map +1 -1
  103. package/dist/components/ds-password-input/ds-password-input.cjs +108 -41
  104. package/dist/components/ds-password-input/ds-password-input.js +108 -41
  105. package/dist/components/ds-password-input/ds-password-input.js.map +1 -1
  106. package/dist/components/ds-popover/ds-popover.cjs +50 -12
  107. package/dist/components/ds-popover/ds-popover.js +50 -12
  108. package/dist/components/ds-popover/ds-popover.js.map +1 -1
  109. package/dist/components/ds-radio-group/ds-radio-group.cjs +209 -53
  110. package/dist/components/ds-radio-group/ds-radio-group.js +209 -53
  111. package/dist/components/ds-radio-group/ds-radio-group.js.map +1 -1
  112. package/dist/components/ds-segment-group/ds-segment-group.cjs +215 -0
  113. package/dist/components/ds-segment-group/ds-segment-group.d.cts +26 -0
  114. package/dist/components/ds-segment-group/ds-segment-group.d.cts.map +1 -0
  115. package/dist/components/ds-segment-group/ds-segment-group.d.ts +26 -0
  116. package/dist/components/ds-segment-group/ds-segment-group.d.ts.map +1 -0
  117. package/dist/components/ds-segment-group/ds-segment-group.js +214 -0
  118. package/dist/components/ds-segment-group/ds-segment-group.js.map +1 -0
  119. package/dist/components/ds-segment-group/ds-segment-group.module.cjs +12 -0
  120. package/dist/components/ds-segment-group/ds-segment-group.module.js +12 -0
  121. package/dist/components/ds-segment-group/ds-segment-group.module.js.map +1 -0
  122. package/dist/components/ds-segment-group/ds-segment-group.types.cjs +2 -0
  123. package/dist/components/ds-segment-group/ds-segment-group.types.d.cts +52 -0
  124. package/dist/components/ds-segment-group/ds-segment-group.types.d.cts.map +1 -0
  125. package/dist/components/ds-segment-group/ds-segment-group.types.d.ts +52 -0
  126. package/dist/components/ds-segment-group/ds-segment-group.types.d.ts.map +1 -0
  127. package/dist/components/ds-segment-group/ds-segment-group.types.js +2 -0
  128. package/dist/components/ds-segment-group/index.cjs +2 -0
  129. package/dist/components/ds-segment-group/index.d.ts +2 -0
  130. package/dist/components/ds-segment-group/index.js +2 -0
  131. package/dist/components/ds-select/ds-select.cjs +198 -89
  132. package/dist/components/ds-select/ds-select.d.cts +2 -2
  133. package/dist/components/ds-select/ds-select.d.cts.map +1 -1
  134. package/dist/components/ds-select/ds-select.d.ts +2 -2
  135. package/dist/components/ds-select/ds-select.js +198 -89
  136. package/dist/components/ds-select/ds-select.js.map +1 -1
  137. package/dist/components/ds-select/select-items-chips.cjs +73 -22
  138. package/dist/components/ds-select/select-items-chips.js +73 -22
  139. package/dist/components/ds-select/select-items-chips.js.map +1 -1
  140. package/dist/components/ds-smart-tabs/ds-smart-tabs.cjs +208 -46
  141. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.cts +2 -2
  142. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.cts.map +1 -1
  143. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts +2 -2
  144. package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts.map +1 -1
  145. package/dist/components/ds-smart-tabs/ds-smart-tabs.js +208 -46
  146. package/dist/components/ds-smart-tabs/ds-smart-tabs.js.map +1 -1
  147. package/dist/components/ds-smart-tabs/ds-smart-tabs.types.js.map +1 -1
  148. package/dist/components/ds-spinner/ds-spinner.cjs +90 -20
  149. package/dist/components/ds-spinner/ds-spinner.js +90 -20
  150. package/dist/components/ds-spinner/ds-spinner.js.map +1 -1
  151. package/dist/components/ds-spinner/ds-spinner.types.js.map +1 -1
  152. package/dist/components/ds-status-badge/ds-status-badge.cjs +54 -11
  153. package/dist/components/ds-status-badge/ds-status-badge.js +54 -11
  154. package/dist/components/ds-status-badge/ds-status-badge.js.map +1 -1
  155. package/dist/components/ds-stepper/components/ds-step-content.cjs +59 -13
  156. package/dist/components/ds-stepper/components/ds-step-content.d.cts +2 -2
  157. package/dist/components/ds-stepper/components/ds-step-content.js +59 -13
  158. package/dist/components/ds-stepper/components/ds-step-content.js.map +1 -1
  159. package/dist/components/ds-stepper/components/ds-step-description.cjs +14 -5
  160. package/dist/components/ds-stepper/components/ds-step-description.js +14 -5
  161. package/dist/components/ds-stepper/components/ds-step-description.js.map +1 -1
  162. package/dist/components/ds-stepper/components/ds-step-label.cjs +14 -5
  163. package/dist/components/ds-stepper/components/ds-step-label.js +14 -5
  164. package/dist/components/ds-stepper/components/ds-step-label.js.map +1 -1
  165. package/dist/components/ds-stepper/components/ds-step-next-button.cjs +23 -6
  166. package/dist/components/ds-stepper/components/ds-step-next-button.d.cts +2 -2
  167. package/dist/components/ds-stepper/components/ds-step-next-button.js +23 -6
  168. package/dist/components/ds-stepper/components/ds-step-next-button.js.map +1 -1
  169. package/dist/components/ds-stepper/components/ds-step.cjs +106 -25
  170. package/dist/components/ds-stepper/components/ds-step.d.cts +2 -2
  171. package/dist/components/ds-stepper/components/ds-step.js +106 -25
  172. package/dist/components/ds-stepper/components/ds-step.js.map +1 -1
  173. package/dist/components/ds-stepper/ds-stepper.cjs +62 -15
  174. package/dist/components/ds-stepper/ds-stepper.d.cts +2 -2
  175. package/dist/components/ds-stepper/ds-stepper.d.cts.map +1 -1
  176. package/dist/components/ds-stepper/ds-stepper.js +62 -15
  177. package/dist/components/ds-stepper/ds-stepper.js.map +1 -1
  178. package/dist/components/ds-stepper/hooks/use-stepper.js.map +1 -1
  179. package/dist/components/ds-stepper/hooks/use-steps.cjs +29 -9
  180. package/dist/components/ds-stepper/hooks/use-steps.js +29 -9
  181. package/dist/components/ds-stepper/hooks/use-steps.js.map +1 -1
  182. package/dist/components/ds-system-status/ds-system-status.cjs +37 -7
  183. package/dist/components/ds-system-status/ds-system-status.js +37 -7
  184. package/dist/components/ds-system-status/ds-system-status.js.map +1 -1
  185. package/dist/components/ds-system-status/ds-system-status.types.js.map +1 -1
  186. package/dist/components/ds-table/components/core-table/core-table.cjs +281 -48
  187. package/dist/components/ds-table/components/core-table/core-table.js +281 -48
  188. package/dist/components/ds-table/components/core-table/core-table.js.map +1 -1
  189. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.cjs +134 -50
  190. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js +134 -50
  191. package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js.map +1 -1
  192. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.cjs +140 -43
  193. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.js +140 -43
  194. package/dist/components/ds-table/components/ds-table-cell/ds-table-cell.js.map +1 -1
  195. package/dist/components/ds-table/components/ds-table-header/ds-table-header.cjs +37 -6
  196. package/dist/components/ds-table/components/ds-table-header/ds-table-header.js +37 -6
  197. package/dist/components/ds-table/components/ds-table-header/ds-table-header.js.map +1 -1
  198. package/dist/components/ds-table/components/ds-table-row/ds-table-row.cjs +272 -100
  199. package/dist/components/ds-table/components/ds-table-row/ds-table-row.js +272 -100
  200. package/dist/components/ds-table/components/ds-table-row/ds-table-row.js.map +1 -1
  201. package/dist/components/ds-table/context/ds-table-context.js.map +1 -1
  202. package/dist/components/ds-table/ds-table.cjs +15 -15
  203. package/dist/components/ds-table/ds-table.d.cts +2 -2
  204. package/dist/components/ds-table/ds-table.js +15 -15
  205. package/dist/components/ds-table/ds-table.js.map +1 -1
  206. package/dist/components/ds-table/hooks/use-drag-and-drop.cjs +126 -38
  207. package/dist/components/ds-table/hooks/use-drag-and-drop.js +126 -38
  208. package/dist/components/ds-table/hooks/use-drag-and-drop.js.map +1 -1
  209. package/dist/components/ds-table/utils/column-styling.js.map +1 -1
  210. package/dist/components/ds-table/utils/create-columns-grid-template.js.map +1 -1
  211. package/dist/components/ds-table/utils/merge-refs.js.map +1 -1
  212. package/dist/components/ds-text-input/ds-text-input.cjs +128 -43
  213. package/dist/components/ds-text-input/ds-text-input.js +128 -43
  214. package/dist/components/ds-text-input/ds-text-input.js.map +1 -1
  215. package/dist/components/ds-text-input/ds-text-input.types.js.map +1 -1
  216. package/dist/components/ds-textarea/ds-textarea.cjs +66 -22
  217. package/dist/components/ds-textarea/ds-textarea.js +66 -22
  218. package/dist/components/ds-textarea/ds-textarea.js.map +1 -1
  219. package/dist/components/ds-toast/ds-toast-context.cjs +62 -17
  220. package/dist/components/ds-toast/ds-toast-context.js +62 -17
  221. package/dist/components/ds-toast/ds-toast-context.js.map +1 -1
  222. package/dist/components/ds-toast/ds-toast.cjs +90 -26
  223. package/dist/components/ds-toast/ds-toast.js +90 -26
  224. package/dist/components/ds-toast/ds-toast.js.map +1 -1
  225. package/dist/components/ds-tooltip/ds-tooltip.cjs +51 -13
  226. package/dist/components/ds-tooltip/ds-tooltip.js +51 -13
  227. package/dist/components/ds-tooltip/ds-tooltip.js.map +1 -1
  228. package/dist/components/ds-typography/ds-typography.cjs +51 -7
  229. package/dist/components/ds-typography/ds-typography.config.js.map +1 -1
  230. package/dist/components/ds-typography/ds-typography.js +51 -7
  231. package/dist/components/ds-typography/ds-typography.js.map +1 -1
  232. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.cjs +91 -30
  233. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.cts +5 -5
  234. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.ts +5 -5
  235. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.js +91 -30
  236. package/dist/components/ds-vertical-tabs/ds-vertical-tabs.js.map +1 -1
  237. package/dist/index.cjs +3 -0
  238. package/dist/index.d.cts +3 -1
  239. package/dist/index.d.ts +4 -1
  240. package/dist/index.js +3 -1
  241. package/dist/index.min.css +1 -1
  242. package/package.json +8 -2
  243. package/src/components/ds-segment-group/ds-segment-group.module.scss +99 -0
  244. package/src/components/ds-segment-group/ds-segment-group.tsx +76 -0
  245. package/src/components/ds-segment-group/ds-segment-group.types.tsx +64 -0
  246. package/src/components/ds-segment-group/index.tsx +2 -0
  247. package/src/index.ts +1 -0
@@ -12,130 +12,130 @@ function useFileUpload({ adapter, autoUpload = true, maxConcurrent = 3, maxFiles
12
12
  const [files, setFiles] = useState([]);
13
13
  const acceptedFiles = files.filter((file) => file.status !== "error");
14
14
  if (files.length && !files.some((f) => f.status === "uploading")) onAllFileUploadsComplete?.();
15
- const getAddedFiles = (newFiles) => newFiles.filter((file) => !acceptedFiles.some((existing) => isFileEqual(existing, file)));
16
- const getDuplicatedFiles = (newFiles) => newFiles.filter((file) => {
17
- if (file.id) return false;
18
- const found = files.filter((existing) => isFileEqual(existing, file));
19
- if (found.length) return !found.some((existing) => existing.errors?.includes("FILE_EXISTS"));
15
+ const getAddedFiles = (newFiles) => newFiles.filter((file_0) => !acceptedFiles.some((existing) => isFileEqual(existing, file_0)));
16
+ const getDuplicatedFiles = (newFiles_0) => newFiles_0.filter((file_1) => {
17
+ if (file_1.id) return false;
18
+ const found = files.filter((existing_0) => isFileEqual(existing_0, file_1));
19
+ if (found.length) return !found.some((existing_1) => existing_1.errors?.includes("FILE_EXISTS"));
20
20
  return false;
21
21
  });
22
22
  const markDuplicates = (duplicates) => {
23
- const duplicateFilesWithErrors = duplicates.map((file) => ({
24
- file,
23
+ const duplicateFilesWithErrors = duplicates.map((file_2) => ({
24
+ file: file_2,
25
25
  errors: ["FILE_EXISTS"]
26
26
  }));
27
27
  if (duplicateFilesWithErrors.length) addRejectedFiles(duplicateFilesWithErrors);
28
28
  };
29
- const markMaxFiles = (files$1) => {
30
- if (maxFiles === void 0) return files$1;
29
+ const markMaxFiles = (files_0) => {
30
+ if (maxFiles === void 0) return files_0;
31
31
  const availableSlots = maxFiles - acceptedFiles.length;
32
32
  let filesToAdd;
33
33
  let rejectedFiles;
34
34
  if (availableSlots <= 0) {
35
35
  filesToAdd = [];
36
- rejectedFiles = files$1;
37
- } else if (files$1.length > availableSlots) {
38
- filesToAdd = files$1.slice(0, availableSlots);
39
- rejectedFiles = files$1.slice(availableSlots);
40
- } else return files$1;
41
- addRejectedFiles(rejectedFiles.map((file) => ({
42
- file,
36
+ rejectedFiles = files_0;
37
+ } else if (files_0.length > availableSlots) {
38
+ filesToAdd = files_0.slice(0, availableSlots);
39
+ rejectedFiles = files_0.slice(availableSlots);
40
+ } else return files_0;
41
+ addRejectedFiles(rejectedFiles.map((file_3) => ({
42
+ file: file_3,
43
43
  errors: ["TOO_MANY_FILES"]
44
44
  })));
45
45
  return filesToAdd;
46
46
  };
47
47
  const addNewFiles = (filesToUpload) => {
48
- const uploadedFiles = filesToUpload.map((file) => createUploadedFile(file, "pending"));
48
+ const uploadedFiles = filesToUpload.map((file_4) => createUploadedFile(file_4, "pending"));
49
49
  setFiles((prev) => [...prev, ...uploadedFiles]);
50
50
  return uploadedFiles;
51
51
  };
52
- const uploadNewFiles = (uploadedFiles) => {
53
- if (autoUpload) uploadedFiles.forEach((file) => {
54
- uploadSingleFile(file);
52
+ const uploadNewFiles = (uploadedFiles_0) => {
53
+ if (autoUpload) uploadedFiles_0.forEach((file_5) => {
54
+ uploadSingleFile(file_5);
55
55
  });
56
56
  };
57
- const addFiles = (newFiles) => {
58
- const addedFiles = getAddedFiles(newFiles);
59
- markDuplicates(getDuplicatedFiles(newFiles));
60
- const uploadedFiles = addNewFiles(markMaxFiles(addedFiles));
61
- uploadNewFiles(uploadedFiles);
62
- return uploadedFiles;
57
+ const addFiles = (newFiles_1) => {
58
+ const addedFiles = getAddedFiles(newFiles_1);
59
+ markDuplicates(getDuplicatedFiles(newFiles_1));
60
+ const uploadedFiles_1 = addNewFiles(markMaxFiles(addedFiles));
61
+ uploadNewFiles(uploadedFiles_1);
62
+ return uploadedFiles_1;
63
63
  };
64
64
  const addRejectedFiles = (filesWithErrors) => {
65
- const newFileStates = filesWithErrors.map(({ file, errors }) => createUploadedFile(file, "error", errors));
66
- setFiles((prev) => [...prev, ...newFileStates]);
65
+ const newFileStates = filesWithErrors.map(({ file: file_6, errors }) => createUploadedFile(file_6, "error", errors));
66
+ setFiles((prev_0) => [...prev_0, ...newFileStates]);
67
67
  };
68
68
  const updateFileProgress = (fileId, progress) => {
69
- setFiles((prev) => prev.map((file) => file.id === fileId ? {
70
- ...file,
69
+ setFiles((prev_1) => prev_1.map((file_7) => file_7.id === fileId ? {
70
+ ...file_7,
71
71
  progress
72
- } : file));
72
+ } : file_7));
73
73
  };
74
- const updateFileStatus = (fileId, status, error) => {
75
- setFiles((prev) => prev.map((file) => file.id === fileId ? {
76
- ...file,
74
+ const updateFileStatus = (fileId_0, status, error) => {
75
+ setFiles((prev_2) => prev_2.map((file_8) => file_8.id === fileId_0 ? {
76
+ ...file_8,
77
77
  status,
78
- errors: error ? [...file.errors || [], error] : file.errors
79
- } : file));
78
+ errors: error ? [...file_8.errors || [], error] : file_8.errors
79
+ } : file_8));
80
80
  };
81
- const uploadFile = async (fileId) => {
82
- const file = acceptedFiles.find((f) => f.id === fileId);
83
- if (file) await uploadSingleFile(file);
81
+ const uploadFile = async (fileId_1) => {
82
+ const file_9 = acceptedFiles.find((f_0) => f_0.id === fileId_1);
83
+ if (file_9) await uploadSingleFile(file_9);
84
84
  };
85
- const uploadSingleFile = async (file) => {
86
- const fileId = file.id;
85
+ const uploadSingleFile = async (file_10) => {
86
+ const fileId_2 = file_10.id;
87
87
  const abortController = new AbortController();
88
- abortControllers.set(fileId, abortController);
89
- updateFileStatus(file.id, "uploading");
88
+ abortControllers.set(fileId_2, abortController);
89
+ updateFileStatus(file_10.id, "uploading");
90
90
  try {
91
91
  const result = await adapter.upload({
92
- file,
93
- fileId,
92
+ file: file_10,
93
+ fileId: fileId_2,
94
94
  metadata,
95
95
  signal: abortController.signal,
96
- onProgress: (progress) => {
97
- updateFileProgress(fileId, progress);
96
+ onProgress: (progress_0) => {
97
+ updateFileProgress(fileId_2, progress_0);
98
98
  }
99
99
  });
100
- updateFileStatus(fileId, "completed");
101
- updateFileProgress(fileId, 100);
102
- onFileUploadComplete?.(fileId, result);
103
- } catch (error) {
104
- const errorMessage = error instanceof Error ? error.message : "Upload failed";
105
- let status = "interrupted";
106
- if (error instanceof FileUploadError) status = error.isRetryable ? "interrupted" : "error";
107
- updateFileStatus(fileId, status, errorMessage);
108
- onFileUploadError?.(fileId, errorMessage);
100
+ updateFileStatus(fileId_2, "completed");
101
+ updateFileProgress(fileId_2, 100);
102
+ onFileUploadComplete?.(fileId_2, result);
103
+ } catch (error_0) {
104
+ const errorMessage = error_0 instanceof Error ? error_0.message : "Upload failed";
105
+ let status_0 = "interrupted";
106
+ if (error_0 instanceof FileUploadError) status_0 = error_0.isRetryable ? "interrupted" : "error";
107
+ updateFileStatus(fileId_2, status_0, errorMessage);
108
+ onFileUploadError?.(fileId_2, errorMessage);
109
109
  } finally {
110
- abortControllers.delete(fileId);
110
+ abortControllers.delete(fileId_2);
111
111
  }
112
112
  };
113
113
  const uploadAll = async () => {
114
- const pendingFiles = files.filter((f) => f.status === "pending");
114
+ const pendingFiles = files.filter((f_1) => f_1.status === "pending");
115
115
  for (let i = 0; i < pendingFiles.length; i += maxConcurrent) {
116
116
  const batch = pendingFiles.slice(i, i + maxConcurrent);
117
- await Promise.allSettled(batch.map((f) => uploadFile(f.id)));
117
+ await Promise.allSettled(batch.map((f_2) => uploadFile(f_2.id)));
118
118
  }
119
119
  };
120
- const cancelUpload = async (fileId) => {
121
- abortControllers.get(fileId)?.abort();
122
- abortControllers.delete(fileId);
123
- if (adapter.cancel) await adapter.cancel(fileId);
124
- updateFileStatus(fileId, "cancelled");
120
+ const cancelUpload = async (fileId_3) => {
121
+ abortControllers.get(fileId_3)?.abort();
122
+ abortControllers.delete(fileId_3);
123
+ if (adapter.cancel) await adapter.cancel(fileId_3);
124
+ updateFileStatus(fileId_3, "cancelled");
125
125
  };
126
- const retryUpload = async (fileId) => {
127
- updateFileStatus(fileId, "pending");
128
- updateFileProgress(fileId, 0);
129
- await uploadFile(fileId);
126
+ const retryUpload = async (fileId_4) => {
127
+ updateFileStatus(fileId_4, "pending");
128
+ updateFileProgress(fileId_4, 0);
129
+ await uploadFile(fileId_4);
130
130
  };
131
- const removeFile = (fileId) => {
132
- abortControllers.get(fileId)?.abort();
133
- abortControllers.delete(fileId);
134
- setFiles((prev) => prev.filter((file) => file.id !== fileId));
131
+ const removeFile = (fileId_5) => {
132
+ abortControllers.get(fileId_5)?.abort();
133
+ abortControllers.delete(fileId_5);
134
+ setFiles((prev_3) => prev_3.filter((file_11) => file_11.id !== fileId_5));
135
135
  };
136
- const deleteFile = async (fileId) => {
137
- if (adapter.delete) await adapter.delete(fileId);
138
- removeFile(fileId);
136
+ const deleteFile = async (fileId_6) => {
137
+ if (adapter.delete) await adapter.delete(fileId_6);
138
+ removeFile(fileId_6);
139
139
  };
140
140
  const clearFiles = () => {
141
141
  abortControllers.forEach((controller) => controller.abort());
@@ -144,30 +144,30 @@ function useFileUpload({ adapter, autoUpload = true, maxConcurrent = 3, maxFiles
144
144
  };
145
145
  const getProps = (userCallbacks) => {
146
146
  const handleFileAccept = (details) => {
147
- const addedFiles = addFiles(details.files);
148
- userCallbacks?.onFilesAdded?.(addedFiles);
147
+ const addedFiles_0 = addFiles(details.files);
148
+ userCallbacks?.onFilesAdded?.(addedFiles_0);
149
149
  };
150
- const handleFileReject = (details) => {
151
- addRejectedFiles(details.files.map((f) => ({
152
- file: f.file,
153
- errors: f.errors
150
+ const handleFileReject = (details_0) => {
151
+ addRejectedFiles(details_0.files.map((f_3) => ({
152
+ file: f_3.file,
153
+ errors: f_3.errors
154
154
  })));
155
155
  };
156
- const handleFileRemove = (fileId) => {
157
- removeFile(fileId);
158
- userCallbacks?.onFileRemoved?.(fileId);
156
+ const handleFileRemove = (fileId_7) => {
157
+ removeFile(fileId_7);
158
+ userCallbacks?.onFileRemoved?.(fileId_7);
159
159
  };
160
- const handleFileDelete = async (fileId) => {
161
- await deleteFile(fileId);
162
- userCallbacks?.onFileDeleted?.(fileId);
160
+ const handleFileDelete = async (fileId_8) => {
161
+ await deleteFile(fileId_8);
162
+ userCallbacks?.onFileDeleted?.(fileId_8);
163
163
  };
164
- const handleFileUploadCanceled = async (fileId) => {
165
- await cancelUpload(fileId);
166
- userCallbacks?.onFileUploadCanceled?.(fileId);
164
+ const handleFileUploadCanceled = async (fileId_9) => {
165
+ await cancelUpload(fileId_9);
166
+ userCallbacks?.onFileUploadCanceled?.(fileId_9);
167
167
  };
168
- const handleFileUploadRetried = async (fileId) => {
169
- await retryUpload(fileId);
170
- userCallbacks?.onFileUploadRetried?.(fileId);
168
+ const handleFileUploadRetried = async (fileId_10) => {
169
+ await retryUpload(fileId_10);
170
+ userCallbacks?.onFileUploadRetried?.(fileId_10);
171
171
  };
172
172
  return {
173
173
  files,
@@ -1 +1 @@
1
- {"version":3,"file":"use-file-upload.js","names":["files","filesToAdd: File[]","rejectedFiles: File[]","status: UploadFileStatus"],"sources":["../../../../src/components/ds-file-upload/hooks/use-file-upload.ts"],"sourcesContent":["import { useState } from 'react';\nimport type {\n\tFileUploadFileAcceptDetails,\n\tFileUploadFileRejectDetails,\n\tFileUploadFileRejection,\n} from '@ark-ui/react';\nimport { createUploadedFile } from '../utils/file-factory';\nimport { isFileEqual } from '../utils/is-file-equal';\nimport type {\n\tFileError,\n\tFileMetadata,\n\tFileUploadAdapter,\n\tFileUploadResult,\n\tUploadedFile,\n\tUploadFileStatus,\n} from '../ds-file-upload-api.types';\nimport { FileUploadError } from '../errors/file-upload-errors';\nimport type { FileUploadProps } from '../components/file-upload';\n\nexport interface UseFileUploadConfig {\n\tadapter: FileUploadAdapter;\n\tautoUpload?: boolean;\n\tmaxConcurrent?: number;\n\tmaxFiles?: number;\n\tmetadata?: FileMetadata;\n\tonFileUploadComplete?: (fileId: string, result: FileUploadResult) => void;\n\tonFileUploadError?: (fileId: string, error: string) => void;\n\tonAllFileUploadsComplete?: () => void;\n}\n\nexport interface UseFileUploadUserCallbacks {\n\tonFilesAdded?: (files: File[]) => void;\n\tonFileRemoved?: (fileId: string) => void;\n\tonFileDeleted?: (fileId: string) => void;\n\tonFileUploadCanceled?: (fileId: string) => void;\n\tonFileUploadRetried?: (fileId: string) => void;\n}\n\nexport interface UseFileUploadReturn {\n\tfiles: UploadedFile[];\n\tacceptedFiles: UploadedFile[];\n\taddFiles: (newFiles: File[]) => UploadedFile[];\n\taddRejectedFiles: (filesWithErrors: { file: File; errors: FileError[] }[]) => void;\n\tremoveFile: (fileId: string) => void;\n\tdeleteFile: (fileId: string) => Promise<void>;\n\tuploadFile: (fileId: string) => Promise<void>;\n\tuploadAll: () => Promise<void>;\n\tcancelUpload: (fileId: string) => Promise<void>;\n\tretryUpload: (fileId: string) => Promise<void>;\n\tclearFiles: () => void;\n\t/**\n\t * Get props for FileUpload component with callback composition\n\t * @param userCallbacks Optional user callbacks to compose with internal logic\n\t * @returns Props ready to spread onto FileUpload component\n\t */\n\tgetProps: (\n\t\tuserCallbacks?: UseFileUploadUserCallbacks,\n\t) => Pick<\n\t\tFileUploadProps,\n\t\t| 'files'\n\t\t| 'acceptedFiles'\n\t\t| 'onFileAccept'\n\t\t| 'onFileReject'\n\t\t| 'onFileRemove'\n\t\t| 'onFileDelete'\n\t\t| 'onFileCancel'\n\t\t| 'onFileRetry'\n\t>;\n}\n\n/**\n * File upload state management hook\n */\nexport function useFileUpload({\n\tadapter,\n\tautoUpload = true,\n\tmaxConcurrent = 3,\n\tmaxFiles,\n\tmetadata,\n\tonFileUploadComplete,\n\tonFileUploadError,\n\tonAllFileUploadsComplete,\n}: UseFileUploadConfig): UseFileUploadReturn {\n\tconst [abortControllers] = useState(() => new Map<string, AbortController>());\n\tconst [files, setFiles] = useState<UploadedFile[]>([]);\n\tconst acceptedFiles = files.filter((file) => file.status !== 'error');\n\n\tif (files.length && !files.some((f) => f.status === 'uploading')) {\n\t\tonAllFileUploadsComplete?.();\n\t}\n\n\tconst getAddedFiles = (newFiles: File[]) =>\n\t\tnewFiles.filter((file) => !acceptedFiles.some((existing) => isFileEqual(existing, file)));\n\n\tconst getDuplicatedFiles = (newFiles: File[]) =>\n\t\tnewFiles.filter((file) => {\n\t\t\tconst uploadedFile = file as UploadedFile;\n\t\t\tif (uploadedFile.id) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst found = files.filter((existing) => isFileEqual(existing, file));\n\t\t\tif (found.length) {\n\t\t\t\tconst alreadyAdded = found.some((existing) => existing.errors?.includes('FILE_EXISTS'));\n\t\t\t\treturn !alreadyAdded;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\tconst markDuplicates = (duplicates: File[]) => {\n\t\tconst duplicateFilesWithErrors = duplicates.map((file) => ({\n\t\t\tfile,\n\t\t\terrors: ['FILE_EXISTS'],\n\t\t}));\n\t\tif (duplicateFilesWithErrors.length) {\n\t\t\taddRejectedFiles(duplicateFilesWithErrors);\n\t\t}\n\t};\n\n\tconst markMaxFiles = (files: File[]): File[] => {\n\t\tif (maxFiles === undefined) {\n\t\t\treturn files;\n\t\t}\n\n\t\tconst currentAcceptedCount = acceptedFiles.length;\n\t\tconst availableSlots = maxFiles - currentAcceptedCount;\n\n\t\tlet filesToAdd: File[];\n\t\tlet rejectedFiles: File[];\n\n\t\tif (availableSlots <= 0) {\n\t\t\tfilesToAdd = [];\n\t\t\trejectedFiles = files;\n\t\t} else if (files.length > availableSlots) {\n\t\t\tfilesToAdd = files.slice(0, availableSlots);\n\t\t\trejectedFiles = files.slice(availableSlots);\n\t\t} else {\n\t\t\treturn files;\n\t\t}\n\n\t\tconst rejectedFilesWithErrors = rejectedFiles.map((file) => ({\n\t\t\tfile,\n\t\t\terrors: ['TOO_MANY_FILES'],\n\t\t}));\n\t\taddRejectedFiles(rejectedFilesWithErrors);\n\n\t\treturn filesToAdd;\n\t};\n\n\tconst addNewFiles = (filesToUpload: File[]): UploadedFile[] => {\n\t\tconst uploadedFiles = filesToUpload.map((file) => createUploadedFile(file, 'pending'));\n\t\tsetFiles((prev) => [...prev, ...uploadedFiles]);\n\t\treturn uploadedFiles;\n\t};\n\n\tconst uploadNewFiles = (uploadedFiles: UploadedFile[]) => {\n\t\tif (autoUpload) {\n\t\t\tuploadedFiles.forEach((file) => {\n\t\t\t\tvoid uploadSingleFile(file);\n\t\t\t});\n\t\t}\n\t};\n\n\tconst addFiles = (newFiles: File[]): UploadedFile[] => {\n\t\tconst addedFiles = getAddedFiles(newFiles);\n\t\tconst duplicateFiles = getDuplicatedFiles(newFiles);\n\t\tmarkDuplicates(duplicateFiles);\n\t\tconst filesToAdd = markMaxFiles(addedFiles);\n\t\tconst uploadedFiles = addNewFiles(filesToAdd);\n\t\tuploadNewFiles(uploadedFiles);\n\t\treturn uploadedFiles;\n\t};\n\n\tconst addRejectedFiles = (filesWithErrors: { file: File; errors: FileError[] }[]) => {\n\t\tconst newFileStates = filesWithErrors.map(({ file, errors }) =>\n\t\t\tcreateUploadedFile(file, 'error', errors),\n\t\t);\n\t\tsetFiles((prev) => [...prev, ...newFileStates]);\n\t};\n\n\tconst updateFileProgress = (fileId: string, progress: number) => {\n\t\tsetFiles((prev) => prev.map((file) => (file.id === fileId ? { ...file, progress } : file)));\n\t};\n\n\tconst updateFileStatus = (fileId: string, status: UploadFileStatus, error?: string) => {\n\t\tsetFiles((prev) =>\n\t\t\tprev.map((file) =>\n\t\t\t\tfile.id === fileId\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...file,\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\terrors: error ? [...(file.errors || []), error] : file.errors,\n\t\t\t\t\t\t}\n\t\t\t\t\t: file,\n\t\t\t),\n\t\t);\n\t};\n\n\tconst uploadFile = async (fileId: string) => {\n\t\tconst file = acceptedFiles.find((f) => f.id === fileId);\n\t\tif (file) {\n\t\t\tawait uploadSingleFile(file);\n\t\t}\n\t};\n\n\tconst uploadSingleFile = async (file: UploadedFile) => {\n\t\tconst fileId = file.id;\n\t\tconst abortController = new AbortController();\n\t\tabortControllers.set(fileId, abortController);\n\n\t\tupdateFileStatus(file.id, 'uploading');\n\n\t\ttry {\n\t\t\tconst result = await adapter.upload({\n\t\t\t\tfile,\n\t\t\t\tfileId,\n\t\t\t\tmetadata,\n\t\t\t\tsignal: abortController.signal,\n\t\t\t\tonProgress: (progress) => {\n\t\t\t\t\tupdateFileProgress(fileId, progress);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tupdateFileStatus(fileId, 'completed');\n\t\t\tupdateFileProgress(fileId, 100);\n\t\t\tonFileUploadComplete?.(fileId, result);\n\t\t} catch (error) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : 'Upload failed';\n\t\t\t// Determine status based on error type\n\t\t\t// Unknown errors are treated as retryable (network errors, etc.)\n\t\t\tlet status: UploadFileStatus = 'interrupted';\n\t\t\tif (error instanceof FileUploadError) {\n\t\t\t\tstatus = error.isRetryable ? 'interrupted' : 'error';\n\t\t\t}\n\t\t\tupdateFileStatus(fileId, status, errorMessage);\n\t\t\tonFileUploadError?.(fileId, errorMessage);\n\t\t} finally {\n\t\t\tabortControllers.delete(fileId);\n\t\t}\n\t};\n\n\tconst uploadAll = async () => {\n\t\tconst pendingFiles = files.filter((f) => f.status === 'pending');\n\n\t\tfor (let i = 0; i < pendingFiles.length; i += maxConcurrent) {\n\t\t\tconst batch = pendingFiles.slice(i, i + maxConcurrent);\n\t\t\tawait Promise.allSettled(batch.map((f) => uploadFile(f.id)));\n\t\t}\n\t};\n\n\tconst cancelUpload = async (fileId: string) => {\n\t\tabortControllers.get(fileId)?.abort();\n\t\tabortControllers.delete(fileId);\n\n\t\tif (adapter.cancel) {\n\t\t\tawait adapter.cancel(fileId);\n\t\t}\n\n\t\tupdateFileStatus(fileId, 'cancelled');\n\t};\n\n\tconst retryUpload = async (fileId: string) => {\n\t\tupdateFileStatus(fileId, 'pending');\n\t\tupdateFileProgress(fileId, 0);\n\t\tawait uploadFile(fileId);\n\t};\n\n\tconst removeFile = (fileId: string) => {\n\t\tabortControllers.get(fileId)?.abort();\n\t\tabortControllers.delete(fileId);\n\n\t\tsetFiles((prev) => prev.filter((file) => file.id !== fileId));\n\t};\n\n\tconst deleteFile = async (fileId: string) => {\n\t\tif (adapter.delete) {\n\t\t\tawait adapter.delete(fileId);\n\t\t}\n\n\t\tremoveFile(fileId);\n\t};\n\n\tconst clearFiles = () => {\n\t\tabortControllers.forEach((controller) => controller.abort());\n\t\tabortControllers.clear();\n\n\t\tsetFiles([]);\n\t};\n\n\tconst getProps = (userCallbacks?: UseFileUploadUserCallbacks) => {\n\t\tconst handleFileAccept = (details: FileUploadFileAcceptDetails) => {\n\t\t\tconst addedFiles = addFiles(details.files);\n\t\t\tuserCallbacks?.onFilesAdded?.(addedFiles);\n\t\t};\n\n\t\tconst handleFileReject = (details: FileUploadFileRejectDetails) => {\n\t\t\taddRejectedFiles(\n\t\t\t\tdetails.files.map((f: FileUploadFileRejection) => ({\n\t\t\t\t\tfile: f.file,\n\t\t\t\t\terrors: f.errors,\n\t\t\t\t})),\n\t\t\t);\n\t\t};\n\n\t\tconst handleFileRemove = (fileId: string) => {\n\t\t\tremoveFile(fileId);\n\t\t\tuserCallbacks?.onFileRemoved?.(fileId);\n\t\t};\n\n\t\tconst handleFileDelete = async (fileId: string) => {\n\t\t\tawait deleteFile(fileId);\n\t\t\tuserCallbacks?.onFileDeleted?.(fileId);\n\t\t};\n\n\t\tconst handleFileUploadCanceled = async (fileId: string) => {\n\t\t\tawait cancelUpload(fileId);\n\t\t\tuserCallbacks?.onFileUploadCanceled?.(fileId);\n\t\t};\n\n\t\tconst handleFileUploadRetried = async (fileId: string) => {\n\t\t\tawait retryUpload(fileId);\n\t\t\tuserCallbacks?.onFileUploadRetried?.(fileId);\n\t\t};\n\n\t\treturn {\n\t\t\tfiles,\n\t\t\tacceptedFiles,\n\t\t\tonFileAccept: handleFileAccept,\n\t\t\tonFileReject: handleFileReject,\n\t\t\tonFileRemove: handleFileRemove,\n\t\t\tonFileDelete: handleFileDelete,\n\t\t\tonFileCancel: handleFileUploadCanceled,\n\t\t\tonFileRetry: handleFileUploadRetried,\n\t\t};\n\t};\n\n\treturn {\n\t\tfiles,\n\t\tacceptedFiles,\n\t\taddFiles,\n\t\taddRejectedFiles,\n\t\tremoveFile,\n\t\tdeleteFile,\n\t\tuploadFile,\n\t\tuploadAll,\n\t\tcancelUpload,\n\t\tretryUpload,\n\t\tclearFiles,\n\t\tgetProps,\n\t};\n}\n"],"mappings":";;;;;;;;;AAyEA,SAAgB,cAAc,EAC7B,SACA,aAAa,MACb,gBAAgB,GAChB,UACA,UACA,sBACA,mBACA,4BAC4C;CAC5C,MAAM,CAAC,oBAAoB,+BAAe,IAAI,KAA8B,CAAC;CAC7E,MAAM,CAAC,OAAO,YAAY,SAAyB,EAAE,CAAC;CACtD,MAAM,gBAAgB,MAAM,QAAQ,SAAS,KAAK,WAAW,QAAQ;AAErE,KAAI,MAAM,UAAU,CAAC,MAAM,MAAM,MAAM,EAAE,WAAW,YAAY,CAC/D,6BAA4B;CAG7B,MAAM,iBAAiB,aACtB,SAAS,QAAQ,SAAS,CAAC,cAAc,MAAM,aAAa,YAAY,UAAU,KAAK,CAAC,CAAC;CAE1F,MAAM,sBAAsB,aAC3B,SAAS,QAAQ,SAAS;AAEzB,MADqB,KACJ,GAChB,QAAO;EAER,MAAM,QAAQ,MAAM,QAAQ,aAAa,YAAY,UAAU,KAAK,CAAC;AACrE,MAAI,MAAM,OAET,QAAO,CADc,MAAM,MAAM,aAAa,SAAS,QAAQ,SAAS,cAAc,CAAC;AAGxF,SAAO;GACN;CAEH,MAAM,kBAAkB,eAAuB;EAC9C,MAAM,2BAA2B,WAAW,KAAK,UAAU;GAC1D;GACA,QAAQ,CAAC,cAAc;GACvB,EAAE;AACH,MAAI,yBAAyB,OAC5B,kBAAiB,yBAAyB;;CAI5C,MAAM,gBAAgB,YAA0B;AAC/C,MAAI,aAAa,OAChB,QAAOA;EAIR,MAAM,iBAAiB,WADM,cAAc;EAG3C,IAAIC;EACJ,IAAIC;AAEJ,MAAI,kBAAkB,GAAG;AACxB,gBAAa,EAAE;AACf,mBAAgBF;aACNA,QAAM,SAAS,gBAAgB;AACzC,gBAAaA,QAAM,MAAM,GAAG,eAAe;AAC3C,mBAAgBA,QAAM,MAAM,eAAe;QAE3C,QAAOA;AAOR,mBAJgC,cAAc,KAAK,UAAU;GAC5D;GACA,QAAQ,CAAC,iBAAiB;GAC1B,EAAE,CACsC;AAEzC,SAAO;;CAGR,MAAM,eAAe,kBAA0C;EAC9D,MAAM,gBAAgB,cAAc,KAAK,SAAS,mBAAmB,MAAM,UAAU,CAAC;AACtF,YAAU,SAAS,CAAC,GAAG,MAAM,GAAG,cAAc,CAAC;AAC/C,SAAO;;CAGR,MAAM,kBAAkB,kBAAkC;AACzD,MAAI,WACH,eAAc,SAAS,SAAS;AAC/B,GAAK,iBAAiB,KAAK;IAC1B;;CAIJ,MAAM,YAAY,aAAqC;EACtD,MAAM,aAAa,cAAc,SAAS;AAE1C,iBADuB,mBAAmB,SAAS,CACrB;EAE9B,MAAM,gBAAgB,YADH,aAAa,WAAW,CACE;AAC7C,iBAAe,cAAc;AAC7B,SAAO;;CAGR,MAAM,oBAAoB,oBAA2D;EACpF,MAAM,gBAAgB,gBAAgB,KAAK,EAAE,MAAM,aAClD,mBAAmB,MAAM,SAAS,OAAO,CACzC;AACD,YAAU,SAAS,CAAC,GAAG,MAAM,GAAG,cAAc,CAAC;;CAGhD,MAAM,sBAAsB,QAAgB,aAAqB;AAChE,YAAU,SAAS,KAAK,KAAK,SAAU,KAAK,OAAO,SAAS;GAAE,GAAG;GAAM;GAAU,GAAG,KAAM,CAAC;;CAG5F,MAAM,oBAAoB,QAAgB,QAA0B,UAAmB;AACtF,YAAU,SACT,KAAK,KAAK,SACT,KAAK,OAAO,SACT;GACA,GAAG;GACH;GACA,QAAQ,QAAQ,CAAC,GAAI,KAAK,UAAU,EAAE,EAAG,MAAM,GAAG,KAAK;GACvD,GACA,KACH,CACD;;CAGF,MAAM,aAAa,OAAO,WAAmB;EAC5C,MAAM,OAAO,cAAc,MAAM,MAAM,EAAE,OAAO,OAAO;AACvD,MAAI,KACH,OAAM,iBAAiB,KAAK;;CAI9B,MAAM,mBAAmB,OAAO,SAAuB;EACtD,MAAM,SAAS,KAAK;EACpB,MAAM,kBAAkB,IAAI,iBAAiB;AAC7C,mBAAiB,IAAI,QAAQ,gBAAgB;AAE7C,mBAAiB,KAAK,IAAI,YAAY;AAEtC,MAAI;GACH,MAAM,SAAS,MAAM,QAAQ,OAAO;IACnC;IACA;IACA;IACA,QAAQ,gBAAgB;IACxB,aAAa,aAAa;AACzB,wBAAmB,QAAQ,SAAS;;IAErC,CAAC;AAEF,oBAAiB,QAAQ,YAAY;AACrC,sBAAmB,QAAQ,IAAI;AAC/B,0BAAuB,QAAQ,OAAO;WAC9B,OAAO;GACf,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU;GAG9D,IAAIG,SAA2B;AAC/B,OAAI,iBAAiB,gBACpB,UAAS,MAAM,cAAc,gBAAgB;AAE9C,oBAAiB,QAAQ,QAAQ,aAAa;AAC9C,uBAAoB,QAAQ,aAAa;YAChC;AACT,oBAAiB,OAAO,OAAO;;;CAIjC,MAAM,YAAY,YAAY;EAC7B,MAAM,eAAe,MAAM,QAAQ,MAAM,EAAE,WAAW,UAAU;AAEhE,OAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK,eAAe;GAC5D,MAAM,QAAQ,aAAa,MAAM,GAAG,IAAI,cAAc;AACtD,SAAM,QAAQ,WAAW,MAAM,KAAK,MAAM,WAAW,EAAE,GAAG,CAAC,CAAC;;;CAI9D,MAAM,eAAe,OAAO,WAAmB;AAC9C,mBAAiB,IAAI,OAAO,EAAE,OAAO;AACrC,mBAAiB,OAAO,OAAO;AAE/B,MAAI,QAAQ,OACX,OAAM,QAAQ,OAAO,OAAO;AAG7B,mBAAiB,QAAQ,YAAY;;CAGtC,MAAM,cAAc,OAAO,WAAmB;AAC7C,mBAAiB,QAAQ,UAAU;AACnC,qBAAmB,QAAQ,EAAE;AAC7B,QAAM,WAAW,OAAO;;CAGzB,MAAM,cAAc,WAAmB;AACtC,mBAAiB,IAAI,OAAO,EAAE,OAAO;AACrC,mBAAiB,OAAO,OAAO;AAE/B,YAAU,SAAS,KAAK,QAAQ,SAAS,KAAK,OAAO,OAAO,CAAC;;CAG9D,MAAM,aAAa,OAAO,WAAmB;AAC5C,MAAI,QAAQ,OACX,OAAM,QAAQ,OAAO,OAAO;AAG7B,aAAW,OAAO;;CAGnB,MAAM,mBAAmB;AACxB,mBAAiB,SAAS,eAAe,WAAW,OAAO,CAAC;AAC5D,mBAAiB,OAAO;AAExB,WAAS,EAAE,CAAC;;CAGb,MAAM,YAAY,kBAA+C;EAChE,MAAM,oBAAoB,YAAyC;GAClE,MAAM,aAAa,SAAS,QAAQ,MAAM;AAC1C,kBAAe,eAAe,WAAW;;EAG1C,MAAM,oBAAoB,YAAyC;AAClE,oBACC,QAAQ,MAAM,KAAK,OAAgC;IAClD,MAAM,EAAE;IACR,QAAQ,EAAE;IACV,EAAE,CACH;;EAGF,MAAM,oBAAoB,WAAmB;AAC5C,cAAW,OAAO;AAClB,kBAAe,gBAAgB,OAAO;;EAGvC,MAAM,mBAAmB,OAAO,WAAmB;AAClD,SAAM,WAAW,OAAO;AACxB,kBAAe,gBAAgB,OAAO;;EAGvC,MAAM,2BAA2B,OAAO,WAAmB;AAC1D,SAAM,aAAa,OAAO;AAC1B,kBAAe,uBAAuB,OAAO;;EAG9C,MAAM,0BAA0B,OAAO,WAAmB;AACzD,SAAM,YAAY,OAAO;AACzB,kBAAe,sBAAsB,OAAO;;AAG7C,SAAO;GACN;GACA;GACA,cAAc;GACd,cAAc;GACd,cAAc;GACd,cAAc;GACd,cAAc;GACd,aAAa;GACb;;AAGF,QAAO;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA"}
1
+ {"version":3,"file":"use-file-upload.js","names":["useState","FileUploadFileAcceptDetails","FileUploadFileRejectDetails","FileUploadFileRejection","createUploadedFile","isFileEqual","FileError","FileMetadata","FileUploadAdapter","FileUploadResult","UploadedFile","UploadFileStatus","FileUploadError","FileUploadProps","UseFileUploadConfig","adapter","autoUpload","maxConcurrent","maxFiles","metadata","onFileUploadComplete","fileId","result","onFileUploadError","error","onAllFileUploadsComplete","UseFileUploadUserCallbacks","onFilesAdded","files","File","onFileRemoved","onFileDeleted","onFileUploadCanceled","onFileUploadRetried","UseFileUploadReturn","acceptedFiles","addFiles","newFiles","addRejectedFiles","filesWithErrors","file","errors","removeFile","deleteFile","Promise","uploadFile","uploadAll","cancelUpload","retryUpload","clearFiles","getProps","userCallbacks","Pick","useFileUpload","abortControllers","Map","AbortController","setFiles","filter","status","length","some","f","getAddedFiles","existing","getDuplicatedFiles","uploadedFile","id","found","alreadyAdded","includes","markDuplicates","duplicates","duplicateFilesWithErrors","map","markMaxFiles","undefined","currentAcceptedCount","availableSlots","filesToAdd","rejectedFiles","slice","rejectedFilesWithErrors","addNewFiles","filesToUpload","uploadedFiles","prev","uploadNewFiles","forEach","uploadSingleFile","addedFiles","duplicateFiles","newFileStates","updateFileProgress","progress","updateFileStatus","find","abortController","set","upload","signal","onProgress","errorMessage","Error","message","isRetryable","delete","pendingFiles","i","batch","allSettled","get","abort","cancel","controller","clear","handleFileAccept","details","handleFileReject","handleFileRemove","handleFileDelete","handleFileUploadCanceled","handleFileUploadRetried","onFileAccept","onFileReject","onFileRemove","onFileDelete","onFileCancel","onFileRetry"],"sources":["../../../../src/components/ds-file-upload/hooks/use-file-upload.ts"],"sourcesContent":["import { useState } from 'react';\nimport type {\n\tFileUploadFileAcceptDetails,\n\tFileUploadFileRejectDetails,\n\tFileUploadFileRejection,\n} from '@ark-ui/react';\nimport { createUploadedFile } from '../utils/file-factory';\nimport { isFileEqual } from '../utils/is-file-equal';\nimport type {\n\tFileError,\n\tFileMetadata,\n\tFileUploadAdapter,\n\tFileUploadResult,\n\tUploadedFile,\n\tUploadFileStatus,\n} from '../ds-file-upload-api.types';\nimport { FileUploadError } from '../errors/file-upload-errors';\nimport type { FileUploadProps } from '../components/file-upload';\n\nexport interface UseFileUploadConfig {\n\tadapter: FileUploadAdapter;\n\tautoUpload?: boolean;\n\tmaxConcurrent?: number;\n\tmaxFiles?: number;\n\tmetadata?: FileMetadata;\n\tonFileUploadComplete?: (fileId: string, result: FileUploadResult) => void;\n\tonFileUploadError?: (fileId: string, error: string) => void;\n\tonAllFileUploadsComplete?: () => void;\n}\n\nexport interface UseFileUploadUserCallbacks {\n\tonFilesAdded?: (files: File[]) => void;\n\tonFileRemoved?: (fileId: string) => void;\n\tonFileDeleted?: (fileId: string) => void;\n\tonFileUploadCanceled?: (fileId: string) => void;\n\tonFileUploadRetried?: (fileId: string) => void;\n}\n\nexport interface UseFileUploadReturn {\n\tfiles: UploadedFile[];\n\tacceptedFiles: UploadedFile[];\n\taddFiles: (newFiles: File[]) => UploadedFile[];\n\taddRejectedFiles: (filesWithErrors: { file: File; errors: FileError[] }[]) => void;\n\tremoveFile: (fileId: string) => void;\n\tdeleteFile: (fileId: string) => Promise<void>;\n\tuploadFile: (fileId: string) => Promise<void>;\n\tuploadAll: () => Promise<void>;\n\tcancelUpload: (fileId: string) => Promise<void>;\n\tretryUpload: (fileId: string) => Promise<void>;\n\tclearFiles: () => void;\n\t/**\n\t * Get props for FileUpload component with callback composition\n\t * @param userCallbacks Optional user callbacks to compose with internal logic\n\t * @returns Props ready to spread onto FileUpload component\n\t */\n\tgetProps: (\n\t\tuserCallbacks?: UseFileUploadUserCallbacks,\n\t) => Pick<\n\t\tFileUploadProps,\n\t\t| 'files'\n\t\t| 'acceptedFiles'\n\t\t| 'onFileAccept'\n\t\t| 'onFileReject'\n\t\t| 'onFileRemove'\n\t\t| 'onFileDelete'\n\t\t| 'onFileCancel'\n\t\t| 'onFileRetry'\n\t>;\n}\n\n/**\n * File upload state management hook\n */\nexport function useFileUpload({\n\tadapter,\n\tautoUpload = true,\n\tmaxConcurrent = 3,\n\tmaxFiles,\n\tmetadata,\n\tonFileUploadComplete,\n\tonFileUploadError,\n\tonAllFileUploadsComplete,\n}: UseFileUploadConfig): UseFileUploadReturn {\n\tconst [abortControllers] = useState(() => new Map<string, AbortController>());\n\tconst [files, setFiles] = useState<UploadedFile[]>([]);\n\tconst acceptedFiles = files.filter((file) => file.status !== 'error');\n\n\tif (files.length && !files.some((f) => f.status === 'uploading')) {\n\t\tonAllFileUploadsComplete?.();\n\t}\n\n\tconst getAddedFiles = (newFiles: File[]) =>\n\t\tnewFiles.filter((file) => !acceptedFiles.some((existing) => isFileEqual(existing, file)));\n\n\tconst getDuplicatedFiles = (newFiles: File[]) =>\n\t\tnewFiles.filter((file) => {\n\t\t\tconst uploadedFile = file as UploadedFile;\n\t\t\tif (uploadedFile.id) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst found = files.filter((existing) => isFileEqual(existing, file));\n\t\t\tif (found.length) {\n\t\t\t\tconst alreadyAdded = found.some((existing) => existing.errors?.includes('FILE_EXISTS'));\n\t\t\t\treturn !alreadyAdded;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\tconst markDuplicates = (duplicates: File[]) => {\n\t\tconst duplicateFilesWithErrors = duplicates.map((file) => ({\n\t\t\tfile,\n\t\t\terrors: ['FILE_EXISTS'],\n\t\t}));\n\t\tif (duplicateFilesWithErrors.length) {\n\t\t\taddRejectedFiles(duplicateFilesWithErrors);\n\t\t}\n\t};\n\n\tconst markMaxFiles = (files: File[]): File[] => {\n\t\tif (maxFiles === undefined) {\n\t\t\treturn files;\n\t\t}\n\n\t\tconst currentAcceptedCount = acceptedFiles.length;\n\t\tconst availableSlots = maxFiles - currentAcceptedCount;\n\n\t\tlet filesToAdd: File[];\n\t\tlet rejectedFiles: File[];\n\n\t\tif (availableSlots <= 0) {\n\t\t\tfilesToAdd = [];\n\t\t\trejectedFiles = files;\n\t\t} else if (files.length > availableSlots) {\n\t\t\tfilesToAdd = files.slice(0, availableSlots);\n\t\t\trejectedFiles = files.slice(availableSlots);\n\t\t} else {\n\t\t\treturn files;\n\t\t}\n\n\t\tconst rejectedFilesWithErrors = rejectedFiles.map((file) => ({\n\t\t\tfile,\n\t\t\terrors: ['TOO_MANY_FILES'],\n\t\t}));\n\t\taddRejectedFiles(rejectedFilesWithErrors);\n\n\t\treturn filesToAdd;\n\t};\n\n\tconst addNewFiles = (filesToUpload: File[]): UploadedFile[] => {\n\t\tconst uploadedFiles = filesToUpload.map((file) => createUploadedFile(file, 'pending'));\n\t\tsetFiles((prev) => [...prev, ...uploadedFiles]);\n\t\treturn uploadedFiles;\n\t};\n\n\tconst uploadNewFiles = (uploadedFiles: UploadedFile[]) => {\n\t\tif (autoUpload) {\n\t\t\tuploadedFiles.forEach((file) => {\n\t\t\t\tvoid uploadSingleFile(file);\n\t\t\t});\n\t\t}\n\t};\n\n\tconst addFiles = (newFiles: File[]): UploadedFile[] => {\n\t\tconst addedFiles = getAddedFiles(newFiles);\n\t\tconst duplicateFiles = getDuplicatedFiles(newFiles);\n\t\tmarkDuplicates(duplicateFiles);\n\t\tconst filesToAdd = markMaxFiles(addedFiles);\n\t\tconst uploadedFiles = addNewFiles(filesToAdd);\n\t\tuploadNewFiles(uploadedFiles);\n\t\treturn uploadedFiles;\n\t};\n\n\tconst addRejectedFiles = (filesWithErrors: { file: File; errors: FileError[] }[]) => {\n\t\tconst newFileStates = filesWithErrors.map(({ file, errors }) =>\n\t\t\tcreateUploadedFile(file, 'error', errors),\n\t\t);\n\t\tsetFiles((prev) => [...prev, ...newFileStates]);\n\t};\n\n\tconst updateFileProgress = (fileId: string, progress: number) => {\n\t\tsetFiles((prev) => prev.map((file) => (file.id === fileId ? { ...file, progress } : file)));\n\t};\n\n\tconst updateFileStatus = (fileId: string, status: UploadFileStatus, error?: string) => {\n\t\tsetFiles((prev) =>\n\t\t\tprev.map((file) =>\n\t\t\t\tfile.id === fileId\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...file,\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\terrors: error ? [...(file.errors || []), error] : file.errors,\n\t\t\t\t\t\t}\n\t\t\t\t\t: file,\n\t\t\t),\n\t\t);\n\t};\n\n\tconst uploadFile = async (fileId: string) => {\n\t\tconst file = acceptedFiles.find((f) => f.id === fileId);\n\t\tif (file) {\n\t\t\tawait uploadSingleFile(file);\n\t\t}\n\t};\n\n\tconst uploadSingleFile = async (file: UploadedFile) => {\n\t\tconst fileId = file.id;\n\t\tconst abortController = new AbortController();\n\t\tabortControllers.set(fileId, abortController);\n\n\t\tupdateFileStatus(file.id, 'uploading');\n\n\t\ttry {\n\t\t\tconst result = await adapter.upload({\n\t\t\t\tfile,\n\t\t\t\tfileId,\n\t\t\t\tmetadata,\n\t\t\t\tsignal: abortController.signal,\n\t\t\t\tonProgress: (progress) => {\n\t\t\t\t\tupdateFileProgress(fileId, progress);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tupdateFileStatus(fileId, 'completed');\n\t\t\tupdateFileProgress(fileId, 100);\n\t\t\tonFileUploadComplete?.(fileId, result);\n\t\t} catch (error) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : 'Upload failed';\n\t\t\t// Determine status based on error type\n\t\t\t// Unknown errors are treated as retryable (network errors, etc.)\n\t\t\tlet status: UploadFileStatus = 'interrupted';\n\t\t\tif (error instanceof FileUploadError) {\n\t\t\t\tstatus = error.isRetryable ? 'interrupted' : 'error';\n\t\t\t}\n\t\t\tupdateFileStatus(fileId, status, errorMessage);\n\t\t\tonFileUploadError?.(fileId, errorMessage);\n\t\t} finally {\n\t\t\tabortControllers.delete(fileId);\n\t\t}\n\t};\n\n\tconst uploadAll = async () => {\n\t\tconst pendingFiles = files.filter((f) => f.status === 'pending');\n\n\t\tfor (let i = 0; i < pendingFiles.length; i += maxConcurrent) {\n\t\t\tconst batch = pendingFiles.slice(i, i + maxConcurrent);\n\t\t\tawait Promise.allSettled(batch.map((f) => uploadFile(f.id)));\n\t\t}\n\t};\n\n\tconst cancelUpload = async (fileId: string) => {\n\t\tabortControllers.get(fileId)?.abort();\n\t\tabortControllers.delete(fileId);\n\n\t\tif (adapter.cancel) {\n\t\t\tawait adapter.cancel(fileId);\n\t\t}\n\n\t\tupdateFileStatus(fileId, 'cancelled');\n\t};\n\n\tconst retryUpload = async (fileId: string) => {\n\t\tupdateFileStatus(fileId, 'pending');\n\t\tupdateFileProgress(fileId, 0);\n\t\tawait uploadFile(fileId);\n\t};\n\n\tconst removeFile = (fileId: string) => {\n\t\tabortControllers.get(fileId)?.abort();\n\t\tabortControllers.delete(fileId);\n\n\t\tsetFiles((prev) => prev.filter((file) => file.id !== fileId));\n\t};\n\n\tconst deleteFile = async (fileId: string) => {\n\t\tif (adapter.delete) {\n\t\t\tawait adapter.delete(fileId);\n\t\t}\n\n\t\tremoveFile(fileId);\n\t};\n\n\tconst clearFiles = () => {\n\t\tabortControllers.forEach((controller) => controller.abort());\n\t\tabortControllers.clear();\n\n\t\tsetFiles([]);\n\t};\n\n\tconst getProps = (userCallbacks?: UseFileUploadUserCallbacks) => {\n\t\tconst handleFileAccept = (details: FileUploadFileAcceptDetails) => {\n\t\t\tconst addedFiles = addFiles(details.files);\n\t\t\tuserCallbacks?.onFilesAdded?.(addedFiles);\n\t\t};\n\n\t\tconst handleFileReject = (details: FileUploadFileRejectDetails) => {\n\t\t\taddRejectedFiles(\n\t\t\t\tdetails.files.map((f: FileUploadFileRejection) => ({\n\t\t\t\t\tfile: f.file,\n\t\t\t\t\terrors: f.errors,\n\t\t\t\t})),\n\t\t\t);\n\t\t};\n\n\t\tconst handleFileRemove = (fileId: string) => {\n\t\t\tremoveFile(fileId);\n\t\t\tuserCallbacks?.onFileRemoved?.(fileId);\n\t\t};\n\n\t\tconst handleFileDelete = async (fileId: string) => {\n\t\t\tawait deleteFile(fileId);\n\t\t\tuserCallbacks?.onFileDeleted?.(fileId);\n\t\t};\n\n\t\tconst handleFileUploadCanceled = async (fileId: string) => {\n\t\t\tawait cancelUpload(fileId);\n\t\t\tuserCallbacks?.onFileUploadCanceled?.(fileId);\n\t\t};\n\n\t\tconst handleFileUploadRetried = async (fileId: string) => {\n\t\t\tawait retryUpload(fileId);\n\t\t\tuserCallbacks?.onFileUploadRetried?.(fileId);\n\t\t};\n\n\t\treturn {\n\t\t\tfiles,\n\t\t\tacceptedFiles,\n\t\t\tonFileAccept: handleFileAccept,\n\t\t\tonFileReject: handleFileReject,\n\t\t\tonFileRemove: handleFileRemove,\n\t\t\tonFileDelete: handleFileDelete,\n\t\t\tonFileCancel: handleFileUploadCanceled,\n\t\t\tonFileRetry: handleFileUploadRetried,\n\t\t};\n\t};\n\n\treturn {\n\t\tfiles,\n\t\tacceptedFiles,\n\t\taddFiles,\n\t\taddRejectedFiles,\n\t\tremoveFile,\n\t\tdeleteFile,\n\t\tuploadFile,\n\t\tuploadAll,\n\t\tcancelUpload,\n\t\tretryUpload,\n\t\tclearFiles,\n\t\tgetProps,\n\t};\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"accept-types.js","names":["EXTENSIONS_MAP: Record<FileUploadFileMimeType, FileExtension[]>"],"sources":["../../../../src/components/ds-file-upload/types/accept-types.ts"],"sourcesContent":["/* cspell:disable */\nimport type { FileUploadFileMimeType } from '@ark-ui/react';\n\n/**\n * File extension with leading dot\n * @example '.pdf', '.jpg', '.csv'\n */\nexport type FileExtension = `.${string}`;\n\n/**\n * Accepted file type configuration\n * - Use string shorthand for common MIME types (uses built-in extensions map)\n * - Use object form to override or provide custom extensions\n */\nexport type AcceptedFileType =\n\t| FileUploadFileMimeType\n\t| {\n\t\t\tmimeType: FileUploadFileMimeType;\n\t\t\textensions: [FileExtension, ...FileExtension[]];\n\t };\n\n/**\n * Built-in extensions map for common MIME types\n */\nexport const EXTENSIONS_MAP: Record<FileUploadFileMimeType, FileExtension[]> = {\n\t// Images - specific types\n\t'image/png': ['.png'],\n\t'image/gif': ['.gif'],\n\t'image/jpeg': ['.jpg', '.jpeg'],\n\t'image/svg+xml': ['.svg'],\n\t'image/webp': ['.webp'],\n\t'image/avif': ['.avif'],\n\t'image/heic': ['.heic', '.heif'],\n\t'image/bmp': ['.bmp'],\n\n\t// Applications\n\t'application/pdf': ['.pdf'],\n\t'application/zip': ['.zip'],\n\t'application/json': ['.json'],\n\t'application/xml': ['.xml'],\n\t'application/msword': ['.doc'],\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],\n\t'application/vnd.ms-excel': ['.xls'],\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['.xlsx'],\n\t'application/vnd.ms-powerpoint': ['.ppt'],\n\t'application/vnd.openxmlformats-officedocument.presentationml.presentation': ['.pptx'],\n\t'application/rtf': ['.rtf'],\n\t'application/x-rar': ['.rar'],\n\t'application/x-7z-compressed': ['.7z'],\n\t'application/x-tar': ['.tar'],\n\t'application/vnd.microsoft.portable-executable': ['.exe', '.dll'],\n\n\t// Text\n\t'text/css': ['.css'],\n\t'text/csv': ['.csv'],\n\t'text/html': ['.html', '.htm'],\n\t'text/markdown': ['.md', '.markdown'],\n\t'text/plain': ['.txt'],\n\n\t// Fonts\n\t'font/ttf': ['.ttf'],\n\t'font/otf': ['.otf'],\n\t'font/woff': ['.woff'],\n\t'font/woff2': ['.woff2'],\n\t'font/eot': ['.eot'],\n\t'font/svg': ['.svg'],\n\n\t// Video\n\t'video/mp4': ['.mp4'],\n\t'video/webm': ['.webm'],\n\t'video/ogg': ['.ogv'],\n\t'video/quicktime': ['.mov'],\n\t'video/x-msvideo': ['.avi'],\n\n\t// Audio\n\t'audio/mpeg': ['.mp3'],\n\t'audio/ogg': ['.ogg', '.oga'],\n\t'audio/wav': ['.wav'],\n\t'audio/webm': ['.weba'],\n\t'audio/aac': ['.aac'],\n\t'audio/flac': ['.flac'],\n\t'audio/x-m4a': ['.m4a'],\n\n\t// Wildcards\n\t'image/*': ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.bmp', '.avif', '.heic', '.heif'],\n\t'audio/*': ['.mp3', '.wav', '.ogg', '.oga', '.m4a', '.flac', '.aac', '.weba'],\n\t'video/*': ['.mp4', '.webm', '.ogv', '.mov', '.avi'],\n\t'text/*': ['.txt', '.html', '.htm', '.css', '.csv', '.md', '.markdown'],\n\t'application/*': [\n\t\t'.pdf',\n\t\t'.zip',\n\t\t'.json',\n\t\t'.xml',\n\t\t'.doc',\n\t\t'.docx',\n\t\t'.xls',\n\t\t'.xlsx',\n\t\t'.ppt',\n\t\t'.pptx',\n\t\t'.rtf',\n\t\t'.rar',\n\t\t'.7z',\n\t\t'.tar',\n\t],\n\t'font/*': ['.ttf', '.otf', '.woff', '.woff2', '.eot'],\n} as const;\n"],"mappings":";;;;AAwBA,MAAaA,iBAAkE;CAE9E,aAAa,CAAC,OAAO;CACrB,aAAa,CAAC,OAAO;CACrB,cAAc,CAAC,QAAQ,QAAQ;CAC/B,iBAAiB,CAAC,OAAO;CACzB,cAAc,CAAC,QAAQ;CACvB,cAAc,CAAC,QAAQ;CACvB,cAAc,CAAC,SAAS,QAAQ;CAChC,aAAa,CAAC,OAAO;CAGrB,mBAAmB,CAAC,OAAO;CAC3B,mBAAmB,CAAC,OAAO;CAC3B,oBAAoB,CAAC,QAAQ;CAC7B,mBAAmB,CAAC,OAAO;CAC3B,sBAAsB,CAAC,OAAO;CAC9B,2EAA2E,CAAC,QAAQ;CACpF,4BAA4B,CAAC,OAAO;CACpC,qEAAqE,CAAC,QAAQ;CAC9E,iCAAiC,CAAC,OAAO;CACzC,6EAA6E,CAAC,QAAQ;CACtF,mBAAmB,CAAC,OAAO;CAC3B,qBAAqB,CAAC,OAAO;CAC7B,+BAA+B,CAAC,MAAM;CACtC,qBAAqB,CAAC,OAAO;CAC7B,iDAAiD,CAAC,QAAQ,OAAO;CAGjE,YAAY,CAAC,OAAO;CACpB,YAAY,CAAC,OAAO;CACpB,aAAa,CAAC,SAAS,OAAO;CAC9B,iBAAiB,CAAC,OAAO,YAAY;CACrC,cAAc,CAAC,OAAO;CAGtB,YAAY,CAAC,OAAO;CACpB,YAAY,CAAC,OAAO;CACpB,aAAa,CAAC,QAAQ;CACtB,cAAc,CAAC,SAAS;CACxB,YAAY,CAAC,OAAO;CACpB,YAAY,CAAC,OAAO;CAGpB,aAAa,CAAC,OAAO;CACrB,cAAc,CAAC,QAAQ;CACvB,aAAa,CAAC,OAAO;CACrB,mBAAmB,CAAC,OAAO;CAC3B,mBAAmB,CAAC,OAAO;CAG3B,cAAc,CAAC,OAAO;CACtB,aAAa,CAAC,QAAQ,OAAO;CAC7B,aAAa,CAAC,OAAO;CACrB,cAAc,CAAC,QAAQ;CACvB,aAAa,CAAC,OAAO;CACrB,cAAc,CAAC,QAAQ;CACvB,eAAe,CAAC,OAAO;CAGvB,WAAW;EAAC;EAAQ;EAAQ;EAAS;EAAQ;EAAS;EAAQ;EAAQ;EAAS;EAAS;EAAQ;CAChG,WAAW;EAAC;EAAQ;EAAQ;EAAQ;EAAQ;EAAQ;EAAS;EAAQ;EAAQ;CAC7E,WAAW;EAAC;EAAQ;EAAS;EAAQ;EAAQ;EAAO;CACpD,UAAU;EAAC;EAAQ;EAAS;EAAQ;EAAQ;EAAQ;EAAO;EAAY;CACvE,iBAAiB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,UAAU;EAAC;EAAQ;EAAQ;EAAS;EAAU;EAAO;CACrD"}
1
+ {"version":3,"file":"accept-types.js","names":["FileUploadFileMimeType","FileExtension","AcceptedFileType","mimeType","extensions","EXTENSIONS_MAP","Record","const"],"sources":["../../../../src/components/ds-file-upload/types/accept-types.ts"],"sourcesContent":["/* cspell:disable */\nimport type { FileUploadFileMimeType } from '@ark-ui/react';\n\n/**\n * File extension with leading dot\n * @example '.pdf', '.jpg', '.csv'\n */\nexport type FileExtension = `.${string}`;\n\n/**\n * Accepted file type configuration\n * - Use string shorthand for common MIME types (uses built-in extensions map)\n * - Use object form to override or provide custom extensions\n */\nexport type AcceptedFileType =\n\t| FileUploadFileMimeType\n\t| {\n\t\t\tmimeType: FileUploadFileMimeType;\n\t\t\textensions: [FileExtension, ...FileExtension[]];\n\t };\n\n/**\n * Built-in extensions map for common MIME types\n */\nexport const EXTENSIONS_MAP: Record<FileUploadFileMimeType, FileExtension[]> = {\n\t// Images - specific types\n\t'image/png': ['.png'],\n\t'image/gif': ['.gif'],\n\t'image/jpeg': ['.jpg', '.jpeg'],\n\t'image/svg+xml': ['.svg'],\n\t'image/webp': ['.webp'],\n\t'image/avif': ['.avif'],\n\t'image/heic': ['.heic', '.heif'],\n\t'image/bmp': ['.bmp'],\n\n\t// Applications\n\t'application/pdf': ['.pdf'],\n\t'application/zip': ['.zip'],\n\t'application/json': ['.json'],\n\t'application/xml': ['.xml'],\n\t'application/msword': ['.doc'],\n\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['.docx'],\n\t'application/vnd.ms-excel': ['.xls'],\n\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['.xlsx'],\n\t'application/vnd.ms-powerpoint': ['.ppt'],\n\t'application/vnd.openxmlformats-officedocument.presentationml.presentation': ['.pptx'],\n\t'application/rtf': ['.rtf'],\n\t'application/x-rar': ['.rar'],\n\t'application/x-7z-compressed': ['.7z'],\n\t'application/x-tar': ['.tar'],\n\t'application/vnd.microsoft.portable-executable': ['.exe', '.dll'],\n\n\t// Text\n\t'text/css': ['.css'],\n\t'text/csv': ['.csv'],\n\t'text/html': ['.html', '.htm'],\n\t'text/markdown': ['.md', '.markdown'],\n\t'text/plain': ['.txt'],\n\n\t// Fonts\n\t'font/ttf': ['.ttf'],\n\t'font/otf': ['.otf'],\n\t'font/woff': ['.woff'],\n\t'font/woff2': ['.woff2'],\n\t'font/eot': ['.eot'],\n\t'font/svg': ['.svg'],\n\n\t// Video\n\t'video/mp4': ['.mp4'],\n\t'video/webm': ['.webm'],\n\t'video/ogg': ['.ogv'],\n\t'video/quicktime': ['.mov'],\n\t'video/x-msvideo': ['.avi'],\n\n\t// Audio\n\t'audio/mpeg': ['.mp3'],\n\t'audio/ogg': ['.ogg', '.oga'],\n\t'audio/wav': ['.wav'],\n\t'audio/webm': ['.weba'],\n\t'audio/aac': ['.aac'],\n\t'audio/flac': ['.flac'],\n\t'audio/x-m4a': ['.m4a'],\n\n\t// Wildcards\n\t'image/*': ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg', '.bmp', '.avif', '.heic', '.heif'],\n\t'audio/*': ['.mp3', '.wav', '.ogg', '.oga', '.m4a', '.flac', '.aac', '.weba'],\n\t'video/*': ['.mp4', '.webm', '.ogv', '.mov', '.avi'],\n\t'text/*': ['.txt', '.html', '.htm', '.css', '.csv', '.md', '.markdown'],\n\t'application/*': [\n\t\t'.pdf',\n\t\t'.zip',\n\t\t'.json',\n\t\t'.xml',\n\t\t'.doc',\n\t\t'.docx',\n\t\t'.xls',\n\t\t'.xlsx',\n\t\t'.ppt',\n\t\t'.pptx',\n\t\t'.rtf',\n\t\t'.rar',\n\t\t'.7z',\n\t\t'.tar',\n\t],\n\t'font/*': ['.ttf', '.otf', '.woff', '.woff2', '.eot'],\n} as const;\n"],"mappings":";;;;AAwBA,MAAaK,iBAAkE;CAE9E,aAAa,CAAC,OAAO;CACrB,aAAa,CAAC,OAAO;CACrB,cAAc,CAAC,QAAQ,QAAQ;CAC/B,iBAAiB,CAAC,OAAO;CACzB,cAAc,CAAC,QAAQ;CACvB,cAAc,CAAC,QAAQ;CACvB,cAAc,CAAC,SAAS,QAAQ;CAChC,aAAa,CAAC,OAAO;CAGrB,mBAAmB,CAAC,OAAO;CAC3B,mBAAmB,CAAC,OAAO;CAC3B,oBAAoB,CAAC,QAAQ;CAC7B,mBAAmB,CAAC,OAAO;CAC3B,sBAAsB,CAAC,OAAO;CAC9B,2EAA2E,CAAC,QAAQ;CACpF,4BAA4B,CAAC,OAAO;CACpC,qEAAqE,CAAC,QAAQ;CAC9E,iCAAiC,CAAC,OAAO;CACzC,6EAA6E,CAAC,QAAQ;CACtF,mBAAmB,CAAC,OAAO;CAC3B,qBAAqB,CAAC,OAAO;CAC7B,+BAA+B,CAAC,MAAM;CACtC,qBAAqB,CAAC,OAAO;CAC7B,iDAAiD,CAAC,QAAQ,OAAO;CAGjE,YAAY,CAAC,OAAO;CACpB,YAAY,CAAC,OAAO;CACpB,aAAa,CAAC,SAAS,OAAO;CAC9B,iBAAiB,CAAC,OAAO,YAAY;CACrC,cAAc,CAAC,OAAO;CAGtB,YAAY,CAAC,OAAO;CACpB,YAAY,CAAC,OAAO;CACpB,aAAa,CAAC,QAAQ;CACtB,cAAc,CAAC,SAAS;CACxB,YAAY,CAAC,OAAO;CACpB,YAAY,CAAC,OAAO;CAGpB,aAAa,CAAC,OAAO;CACrB,cAAc,CAAC,QAAQ;CACvB,aAAa,CAAC,OAAO;CACrB,mBAAmB,CAAC,OAAO;CAC3B,mBAAmB,CAAC,OAAO;CAG3B,cAAc,CAAC,OAAO;CACtB,aAAa,CAAC,QAAQ,OAAO;CAC7B,aAAa,CAAC,OAAO;CACrB,cAAc,CAAC,QAAQ;CACvB,aAAa,CAAC,OAAO;CACrB,cAAc,CAAC,QAAQ;CACvB,eAAe,CAAC,OAAO;CAGvB,WAAW;EAAC;EAAQ;EAAQ;EAAS;EAAQ;EAAS;EAAQ;EAAQ;EAAS;EAAS;EAAQ;CAChG,WAAW;EAAC;EAAQ;EAAQ;EAAQ;EAAQ;EAAQ;EAAS;EAAQ;EAAQ;CAC7E,WAAW;EAAC;EAAQ;EAAS;EAAQ;EAAQ;EAAO;CACpD,UAAU;EAAC;EAAQ;EAAS;EAAQ;EAAQ;EAAQ;EAAO;EAAY;CACvE,iBAAiB;EAChB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,UAAU;EAAC;EAAQ;EAAQ;EAAS;EAAU;EAAM;CACpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"accept-utils.js","names":[],"sources":["../../../../src/components/ds-file-upload/utils/accept-utils.ts"],"sourcesContent":["import type { FileUploadFileMimeType } from '@ark-ui/react';\nimport { type AcceptedFileType, type FileExtension, EXTENSIONS_MAP } from '../types/accept-types';\n\n/**\n * Extract file extensions from accept configuration\n * @param accept Array of accepted file types\n * @returns Array of file extensions\n */\nexport function getFileExtensions(accept: AcceptedFileType[]): FileExtension[] {\n\treturn accept.flatMap((item) => {\n\t\tif (typeof item === 'string') {\n\t\t\treturn EXTENSIONS_MAP[item] ?? [];\n\t\t}\n\t\treturn item.extensions;\n\t});\n}\n\n/**\n * Extract MIME types from accept configuration\n * @param accept Array of accepted file types\n * @returns Array of MIME types\n */\nexport function getMimeTypes(accept: AcceptedFileType[]): FileUploadFileMimeType[] {\n\treturn accept.map((item) => (typeof item === 'string' ? item : item.mimeType));\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,kBAAkB,QAA6C;AAC9E,QAAO,OAAO,SAAS,SAAS;AAC/B,MAAI,OAAO,SAAS,SACnB,QAAO,eAAe,SAAS,EAAE;AAElC,SAAO,KAAK;GACX;;;;;;;AAQH,SAAgB,aAAa,QAAsD;AAClF,QAAO,OAAO,KAAK,SAAU,OAAO,SAAS,WAAW,OAAO,KAAK,SAAU"}
1
+ {"version":3,"file":"accept-utils.js","names":["FileUploadFileMimeType","AcceptedFileType","FileExtension","EXTENSIONS_MAP","getFileExtensions","accept","flatMap","item","extensions","getMimeTypes","map","mimeType"],"sources":["../../../../src/components/ds-file-upload/utils/accept-utils.ts"],"sourcesContent":["import type { FileUploadFileMimeType } from '@ark-ui/react';\nimport { type AcceptedFileType, type FileExtension, EXTENSIONS_MAP } from '../types/accept-types';\n\n/**\n * Extract file extensions from accept configuration\n * @param accept Array of accepted file types\n * @returns Array of file extensions\n */\nexport function getFileExtensions(accept: AcceptedFileType[]): FileExtension[] {\n\treturn accept.flatMap((item) => {\n\t\tif (typeof item === 'string') {\n\t\t\treturn EXTENSIONS_MAP[item] ?? [];\n\t\t}\n\t\treturn item.extensions;\n\t});\n}\n\n/**\n * Extract MIME types from accept configuration\n * @param accept Array of accepted file types\n * @returns Array of MIME types\n */\nexport function getMimeTypes(accept: AcceptedFileType[]): FileUploadFileMimeType[] {\n\treturn accept.map((item) => (typeof item === 'string' ? item : item.mimeType));\n}\n"],"mappings":";;;;;;;;AAQA,SAAgBI,kBAAkBC,QAA6C;AAC9E,QAAOA,OAAOC,SAASC,SAAS;AAC/B,MAAI,OAAOA,SAAS,SACnB,QAAOJ,eAAeI,SAAS,EAAE;AAElC,SAAOA,KAAKC;GACX;;;;;;;AAQH,SAAgBC,aAAaJ,QAAsD;AAClF,QAAOA,OAAOK,KAAKH,SAAU,OAAOA,SAAS,WAAWA,OAAOA,KAAKI,SAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["DEFAULT_ALLOWED_FILE_TYPES: AcceptedFileType[]"],"sources":["../../../../src/components/ds-file-upload/utils/constants.ts"],"sourcesContent":["import type { AcceptedFileType } from '../types/accept-types';\n\n/**\n * Default allowed file types for the file upload component\n */\nexport const DEFAULT_ALLOWED_FILE_TYPES: AcceptedFileType[] = [\n\t'application/pdf',\n\t'text/csv',\n\t'application/zip',\n\t'application/x-zip-compressed',\n];\n\n/**\n * Default maximum file size in bytes (25MB)\n */\nexport const DEFAULT_MAX_FILE_SIZE = 25_000_000;\n\n/**\n * Default maximum number of files allowed\n */\nexport const DEFAULT_MAX_FILES = 5;\n"],"mappings":";;;;AAKA,MAAaA,6BAAiD;CAC7D;CACA;CACA;CACA;CACA;;;;AAKD,MAAa,wBAAwB;;;;AAKrC,MAAa,oBAAoB"}
1
+ {"version":3,"file":"constants.js","names":["AcceptedFileType","DEFAULT_ALLOWED_FILE_TYPES","DEFAULT_MAX_FILE_SIZE","DEFAULT_MAX_FILES"],"sources":["../../../../src/components/ds-file-upload/utils/constants.ts"],"sourcesContent":["import type { AcceptedFileType } from '../types/accept-types';\n\n/**\n * Default allowed file types for the file upload component\n */\nexport const DEFAULT_ALLOWED_FILE_TYPES: AcceptedFileType[] = [\n\t'application/pdf',\n\t'text/csv',\n\t'application/zip',\n\t'application/x-zip-compressed',\n];\n\n/**\n * Default maximum file size in bytes (25MB)\n */\nexport const DEFAULT_MAX_FILE_SIZE = 25_000_000;\n\n/**\n * Default maximum number of files allowed\n */\nexport const DEFAULT_MAX_FILES = 5;\n"],"mappings":";;;;AAKA,MAAaC,6BAAiD;CAC7D;CACA;CACA;CACA;CACA;;;;AAKD,MAAaC,wBAAwB;;;;AAKrC,MAAaC,oBAAoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-factory.js","names":[],"sources":["../../../../src/components/ds-file-upload/utils/file-factory.ts"],"sourcesContent":["import type { FileError, UploadedFile, UploadFileStatus } from '../ds-file-upload-api.types';\n\n/**\n * Creates an UploadedFile object from a File with additional metadata\n */\nexport function createUploadedFile(file: File, status: UploadFileStatus, errors?: FileError[]): UploadedFile {\n\treturn {\n\t\t// eslint-disable-next-line @typescript-eslint/no-misused-spread -- We're fine with losing the prototype here\n\t\t...file,\n\t\tid: `${file.name}-${String(Date.now())}-${String(Math.random())}`,\n\t\tname: file.name,\n\t\tsize: file.size,\n\t\ttype: file.type,\n\t\tprogress: 0,\n\t\tstatus,\n\t\terrors,\n\t} satisfies UploadedFile;\n}\n"],"mappings":";;;;AAKA,SAAgB,mBAAmB,MAAY,QAA0B,QAAoC;AAC5G,QAAO;EAEN,GAAG;EACH,IAAI,GAAG,KAAK,KAAK,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,GAAG,OAAO,KAAK,QAAQ,CAAC;EAC/D,MAAM,KAAK;EACX,MAAM,KAAK;EACX,MAAM,KAAK;EACX,UAAU;EACV;EACA;EACA"}
1
+ {"version":3,"file":"file-factory.js","names":["FileError","UploadedFile","UploadFileStatus","createUploadedFile","file","File","status","errors","id","name","String","Date","now","Math","random","size","type","progress"],"sources":["../../../../src/components/ds-file-upload/utils/file-factory.ts"],"sourcesContent":["import type { FileError, UploadedFile, UploadFileStatus } from '../ds-file-upload-api.types';\n\n/**\n * Creates an UploadedFile object from a File with additional metadata\n */\nexport function createUploadedFile(file: File, status: UploadFileStatus, errors?: FileError[]): UploadedFile {\n\treturn {\n\t\t// eslint-disable-next-line @typescript-eslint/no-misused-spread -- We're fine with losing the prototype here\n\t\t...file,\n\t\tid: `${file.name}-${String(Date.now())}-${String(Math.random())}`,\n\t\tname: file.name,\n\t\tsize: file.size,\n\t\ttype: file.type,\n\t\tprogress: 0,\n\t\tstatus,\n\t\terrors,\n\t} satisfies UploadedFile;\n}\n"],"mappings":";;;;AAKA,SAAgBG,mBAAmBC,MAAYE,QAA0BC,QAAoC;AAC5G,QAAO;EAEN,GAAGH;EACHI,IAAI,GAAGJ,KAAKK,KAAI,GAAIC,OAAOC,KAAKC,KAAK,CAAC,CAAA,GAAIF,OAAOG,KAAKC,QAAQ,CAAC;EAC/DL,MAAML,KAAKK;EACXM,MAAMX,KAAKW;EACXC,MAAMZ,KAAKY;EACXC,UAAU;EACVX;EACAC;EACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-file-size.js","names":[],"sources":["../../../../src/components/ds-file-upload/utils/format-file-size.ts"],"sourcesContent":["/**\n * Format file size to human-readable format using SI units (decimal base)\n */\nexport function formatFileSize(bytes: number): string {\n\tif (bytes === 0) {\n\t\treturn '0 B';\n\t}\n\n\tconst k = 1000; // Decimal base (SI standard)\n\tconst sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\tconst size = bytes / Math.pow(k, i);\n\n\treturn `${size.toFixed(2)} ${sizes[i]}`;\n}\n"],"mappings":";;;;AAGA,SAAgB,eAAe,OAAuB;AACrD,KAAI,UAAU,EACb,QAAO;CAGR,MAAM,IAAI;CACV,MAAM,QAAQ;EAAC;EAAK;EAAM;EAAM;EAAM;EAAM;EAAK;CACjD,MAAM,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC;AAGnD,QAAO,IAFM,QAAQ,KAAK,IAAI,GAAG,EAAE,EAEpB,QAAQ,EAAE,CAAC,GAAG,MAAM"}
1
+ {"version":3,"file":"format-file-size.js","names":["formatFileSize","bytes","k","sizes","i","Math","floor","log","size","pow","toFixed"],"sources":["../../../../src/components/ds-file-upload/utils/format-file-size.ts"],"sourcesContent":["/**\n * Format file size to human-readable format using SI units (decimal base)\n */\nexport function formatFileSize(bytes: number): string {\n\tif (bytes === 0) {\n\t\treturn '0 B';\n\t}\n\n\tconst k = 1000; // Decimal base (SI standard)\n\tconst sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\tconst size = bytes / Math.pow(k, i);\n\n\treturn `${size.toFixed(2)} ${sizes[i]}`;\n}\n"],"mappings":";;;;AAGA,SAAgBA,eAAeC,OAAuB;AACrD,KAAIA,UAAU,EACb,QAAO;CAGR,MAAMC,IAAI;CACV,MAAMC,QAAQ;EAAC;EAAK;EAAM;EAAM;EAAM;EAAM;EAAK;CACjD,MAAMC,IAAIC,KAAKC,MAAMD,KAAKE,IAAIN,MAAM,GAAGI,KAAKE,IAAIL,EAAE,CAAC;AAGnD,QAAO,IAFMD,QAAQI,KAAKI,IAAIP,GAAGE,EAAE,EAEpBM,QAAQ,EAAE,CAAA,GAAIP,MAAMC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-helper-text.js","names":["parts: string[]"],"sources":["../../../../src/components/ds-file-upload/utils/generate-helper-text.ts"],"sourcesContent":["import type { AcceptedFileType } from '../types/accept-types';\nimport { getFileExtensions } from './accept-utils';\nimport { formatFileSize } from './format-file-size';\n\n/**\n * Generate helper text based on validation props\n */\nexport function generateHelperText(\n\taccept: AcceptedFileType[],\n\tmaxFileSize: number,\n\tmaxFiles: number,\n): string {\n\t// Extract file extensions from accept configuration\n\tconst extensions = getFileExtensions(accept);\n\tconst uniqueExtensions = [...new Set(extensions)];\n\tconst fileTypes = uniqueExtensions.map((ext) => ext.toUpperCase()).join(', ');\n\n\t// Format file size\n\tconst maxSizeText = formatFileSize(maxFileSize);\n\n\t// Build helper text\n\tconst parts: string[] = [];\n\n\tif (fileTypes) {\n\t\tparts.push(`Only ${fileTypes} files`);\n\t}\n\n\tif (maxFileSize < Infinity) {\n\t\tparts.push(`File size ${maxSizeText} max`);\n\t}\n\n\tif (maxFiles === 1) {\n\t\tparts.push('Only 1 file');\n\t} else if (maxFiles > 1) {\n\t\tparts.push(`Up to ${String(maxFiles)} files`);\n\t}\n\n\treturn parts.join('. ') + '.';\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,mBACf,QACA,aACA,UACS;CAET,MAAM,aAAa,kBAAkB,OAAO;CAE5C,MAAM,YADmB,CAAC,GAAG,IAAI,IAAI,WAAW,CAAC,CACd,KAAK,QAAQ,IAAI,aAAa,CAAC,CAAC,KAAK,KAAK;CAG7E,MAAM,cAAc,eAAe,YAAY;CAG/C,MAAMA,QAAkB,EAAE;AAE1B,KAAI,UACH,OAAM,KAAK,QAAQ,UAAU,QAAQ;AAGtC,KAAI,cAAc,SACjB,OAAM,KAAK,aAAa,YAAY,MAAM;AAG3C,KAAI,aAAa,EAChB,OAAM,KAAK,cAAc;UACf,WAAW,EACrB,OAAM,KAAK,SAAS,OAAO,SAAS,CAAC,QAAQ;AAG9C,QAAO,MAAM,KAAK,KAAK,GAAG"}
1
+ {"version":3,"file":"generate-helper-text.js","names":["AcceptedFileType","getFileExtensions","formatFileSize","generateHelperText","accept","maxFileSize","maxFiles","extensions","uniqueExtensions","Set","fileTypes","map","ext","toUpperCase","join","maxSizeText","parts","push","Infinity","String"],"sources":["../../../../src/components/ds-file-upload/utils/generate-helper-text.ts"],"sourcesContent":["import type { AcceptedFileType } from '../types/accept-types';\nimport { getFileExtensions } from './accept-utils';\nimport { formatFileSize } from './format-file-size';\n\n/**\n * Generate helper text based on validation props\n */\nexport function generateHelperText(\n\taccept: AcceptedFileType[],\n\tmaxFileSize: number,\n\tmaxFiles: number,\n): string {\n\t// Extract file extensions from accept configuration\n\tconst extensions = getFileExtensions(accept);\n\tconst uniqueExtensions = [...new Set(extensions)];\n\tconst fileTypes = uniqueExtensions.map((ext) => ext.toUpperCase()).join(', ');\n\n\t// Format file size\n\tconst maxSizeText = formatFileSize(maxFileSize);\n\n\t// Build helper text\n\tconst parts: string[] = [];\n\n\tif (fileTypes) {\n\t\tparts.push(`Only ${fileTypes} files`);\n\t}\n\n\tif (maxFileSize < Infinity) {\n\t\tparts.push(`File size ${maxSizeText} max`);\n\t}\n\n\tif (maxFiles === 1) {\n\t\tparts.push('Only 1 file');\n\t} else if (maxFiles > 1) {\n\t\tparts.push(`Up to ${String(maxFiles)} files`);\n\t}\n\n\treturn parts.join('. ') + '.';\n}\n"],"mappings":";;;;;;;AAOA,SAAgBG,mBACfC,QACAC,aACAC,UACS;CAET,MAAMC,aAAaN,kBAAkBG,OAAO;CAE5C,MAAMM,YADmB,CAAC,GAAG,IAAID,IAAIF,WAAW,CAAC,CACdI,KAAKC,QAAQA,IAAIC,aAAa,CAAC,CAACC,KAAK,KAAK;CAG7E,MAAMC,cAAcb,eAAeG,YAAY;CAG/C,MAAMW,QAAkB,EAAE;AAE1B,KAAIN,UACHM,OAAMC,KAAK,QAAQP,UAAS,QAAS;AAGtC,KAAIL,cAAca,SACjBF,OAAMC,KAAK,aAAaF,YAAW,MAAO;AAG3C,KAAIT,aAAa,EAChBU,OAAMC,KAAK,cAAc;UACfX,WAAW,EACrBU,OAAMC,KAAK,SAASE,OAAOb,SAAS,CAAA,QAAS;AAG9C,QAAOU,MAAMF,KAAK,KAAK,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-error-message.js","names":["FILE_ERROR_MESSAGES: Record<FileError, string>"],"sources":["../../../../src/components/ds-file-upload/utils/get-error-message.ts"],"sourcesContent":["import type { FileError } from '../ds-file-upload-api.types';\n\nconst FILE_ERROR_MESSAGES: Record<FileError, string> = {\n\tFILE_TOO_LARGE: 'File size exceeds the maximum limit',\n\tFILE_INVALID_TYPE: 'File type is not allowed',\n\tTOO_MANY_FILES: 'Too many files selected',\n\tFILE_TOO_SMALL: 'File size is too small',\n\tFILE_INVALID: 'File is invalid',\n\tFILE_EXISTS: 'File already exists',\n};\n\n/**\n * Map FileUploadFileError to user-friendly error message\n */\nexport function getErrorMessage(error: FileError): string {\n\treturn FILE_ERROR_MESSAGES[error] || error || 'File validation failed';\n}\n"],"mappings":";AAEA,MAAMA,sBAAiD;CACtD,gBAAgB;CAChB,mBAAmB;CACnB,gBAAgB;CAChB,gBAAgB;CAChB,cAAc;CACd,aAAa;CACb;;;;AAKD,SAAgB,gBAAgB,OAA0B;AACzD,QAAO,oBAAoB,UAAU,SAAS"}
1
+ {"version":3,"file":"get-error-message.js","names":["FileError","FILE_ERROR_MESSAGES","Record","FILE_TOO_LARGE","FILE_INVALID_TYPE","TOO_MANY_FILES","FILE_TOO_SMALL","FILE_INVALID","FILE_EXISTS","getErrorMessage","error"],"sources":["../../../../src/components/ds-file-upload/utils/get-error-message.ts"],"sourcesContent":["import type { FileError } from '../ds-file-upload-api.types';\n\nconst FILE_ERROR_MESSAGES: Record<FileError, string> = {\n\tFILE_TOO_LARGE: 'File size exceeds the maximum limit',\n\tFILE_INVALID_TYPE: 'File type is not allowed',\n\tTOO_MANY_FILES: 'Too many files selected',\n\tFILE_TOO_SMALL: 'File size is too small',\n\tFILE_INVALID: 'File is invalid',\n\tFILE_EXISTS: 'File already exists',\n};\n\n/**\n * Map FileUploadFileError to user-friendly error message\n */\nexport function getErrorMessage(error: FileError): string {\n\treturn FILE_ERROR_MESSAGES[error] || error || 'File validation failed';\n}\n"],"mappings":";AAEA,MAAMC,sBAAiD;CACtDE,gBAAgB;CAChBC,mBAAmB;CACnBC,gBAAgB;CAChBC,gBAAgB;CAChBC,cAAc;CACdC,aAAa;CACb;;;;AAKD,SAAgBC,gBAAgBC,OAA0B;AACzD,QAAOT,oBAAoBS,UAAUA,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-file-equal.js","names":[],"sources":["../../../../src/components/ds-file-upload/utils/is-file-equal.ts"],"sourcesContent":["/**\n * Check if two files are equal based on name, size, and type\n *\n * @see https://github.com/chakra-ui/zag/blob/698fff1d2/packages/utilities/file-utils/src/is-file-equal.ts\n */\nexport function isFileEqual(file1: File, file2: File): boolean {\n\treturn file1.name === file2.name && file1.size === file2.size && file1.type === file2.type;\n}\n"],"mappings":";;;;;;AAKA,SAAgB,YAAY,OAAa,OAAsB;AAC9D,QAAO,MAAM,SAAS,MAAM,QAAQ,MAAM,SAAS,MAAM,QAAQ,MAAM,SAAS,MAAM"}
1
+ {"version":3,"file":"is-file-equal.js","names":["isFileEqual","file1","File","file2","name","size","type"],"sources":["../../../../src/components/ds-file-upload/utils/is-file-equal.ts"],"sourcesContent":["/**\n * Check if two files are equal based on name, size, and type\n *\n * @see https://github.com/chakra-ui/zag/blob/698fff1d2/packages/utilities/file-utils/src/is-file-equal.ts\n */\nexport function isFileEqual(file1: File, file2: File): boolean {\n\treturn file1.name === file2.name && file1.size === file2.size && file1.type === file2.type;\n}\n"],"mappings":";;;;;;AAKA,SAAgBA,YAAYC,OAAaE,OAAsB;AAC9D,QAAOF,MAAMG,SAASD,MAAMC,QAAQH,MAAMI,SAASF,MAAME,QAAQJ,MAAMK,SAASH,MAAMG"}
@@ -12,6 +12,7 @@ require('../ds-number-input/index.cjs');
12
12
  const require_ds_password_input = require('../ds-password-input/ds-password-input.cjs');
13
13
  require('../ds-password-input/index.cjs');
14
14
  const require_ds_form_control_module = require('./ds-form-control.module.cjs');
15
+ let react_compiler_runtime = require("react/compiler-runtime");
15
16
  let classnames = require("classnames");
16
17
  classnames = require_rolldown_runtime.__toESM(classnames);
17
18
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -40,47 +41,131 @@ const controlify = (Component) => {
40
41
  });
41
42
  };
42
43
  };
43
- const DsFormControlDescription = ({ children, className }) => {
44
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
45
- className: (0, classnames.default)(require_ds_form_control_module.default.description, className),
46
- children
47
- });
44
+ const DsFormControlDescription = (t0) => {
45
+ const $ = (0, react_compiler_runtime.c)(5);
46
+ const { children, className } = t0;
47
+ let t1;
48
+ if ($[0] !== className) {
49
+ t1 = (0, classnames.default)(require_ds_form_control_module.default.description, className);
50
+ $[0] = className;
51
+ $[1] = t1;
52
+ } else t1 = $[1];
53
+ let t2;
54
+ if ($[2] !== children || $[3] !== t1) {
55
+ t2 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
56
+ className: t1,
57
+ children
58
+ });
59
+ $[2] = children;
60
+ $[3] = t1;
61
+ $[4] = t2;
62
+ } else t2 = $[4];
63
+ return t2;
48
64
  };
49
- const DsFormControl = ({ id, status, label, required = false, slots, message, messageIcon = "info", className, style, children }) => {
65
+ const DsFormControl = (t0) => {
66
+ const $ = (0, react_compiler_runtime.c)(28);
67
+ const { id, status, label, required: t1, slots, message, messageIcon: t2, className, style, children } = t0;
68
+ const required = t1 === void 0 ? false : t1;
69
+ const messageIcon = t2 === void 0 ? "info" : t2;
50
70
  const generatedId = (0, react.useId)();
51
71
  const controlId = id || generatedId;
52
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormControlContext.Provider, {
53
- value: { controlId },
54
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
55
- className: (0, classnames.default)(require_ds_form_control_module.default.container, status && message && require_ds_form_control_module.default[status], className),
72
+ let t3;
73
+ if ($[0] !== controlId) {
74
+ t3 = { controlId };
75
+ $[0] = controlId;
76
+ $[1] = t3;
77
+ } else t3 = $[1];
78
+ const t4 = status && message && require_ds_form_control_module.default[status];
79
+ let t5;
80
+ if ($[2] !== className || $[3] !== t4) {
81
+ t5 = (0, classnames.default)(require_ds_form_control_module.default.container, t4, className);
82
+ $[2] = className;
83
+ $[3] = t4;
84
+ $[4] = t5;
85
+ } else t5 = $[4];
86
+ let t6;
87
+ if ($[5] !== required) {
88
+ t6 = (0, classnames.default)(require_ds_form_control_module.default.label, { [require_ds_form_control_module.default.required]: required });
89
+ $[5] = required;
90
+ $[6] = t6;
91
+ } else t6 = $[6];
92
+ let t7;
93
+ if ($[7] !== controlId || $[8] !== label || $[9] !== t6) {
94
+ t7 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
95
+ htmlFor: controlId,
96
+ className: t6,
97
+ children: label
98
+ });
99
+ $[7] = controlId;
100
+ $[8] = label;
101
+ $[9] = t6;
102
+ $[10] = t7;
103
+ } else t7 = $[10];
104
+ let t8;
105
+ if ($[11] !== slots) {
106
+ t8 = slots?.endAdornment && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
107
+ className: require_ds_form_control_module.default.endAdornment,
108
+ children: slots.endAdornment
109
+ });
110
+ $[11] = slots;
111
+ $[12] = t8;
112
+ } else t8 = $[12];
113
+ let t9;
114
+ if ($[13] !== t7 || $[14] !== t8) {
115
+ t9 = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
116
+ className: require_ds_form_control_module.default.labelContainer,
117
+ children: [t7, t8]
118
+ });
119
+ $[13] = t7;
120
+ $[14] = t8;
121
+ $[15] = t9;
122
+ } else t9 = $[15];
123
+ let t10;
124
+ if ($[16] !== message || $[17] !== messageIcon) {
125
+ t10 = message && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
126
+ className: require_ds_form_control_module.default.message,
127
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_icon.default, {
128
+ icon: messageIcon,
129
+ size: "tiny",
130
+ filled: true
131
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
132
+ className: require_ds_form_control_module.default.messageText,
133
+ children: message
134
+ })]
135
+ });
136
+ $[16] = message;
137
+ $[17] = messageIcon;
138
+ $[18] = t10;
139
+ } else t10 = $[18];
140
+ let t11;
141
+ if ($[19] !== children || $[20] !== style || $[21] !== t10 || $[22] !== t5 || $[23] !== t9) {
142
+ t11 = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
143
+ className: t5,
56
144
  style,
57
145
  children: [
58
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
59
- className: require_ds_form_control_module.default.labelContainer,
60
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
61
- htmlFor: controlId,
62
- className: (0, classnames.default)(require_ds_form_control_module.default.label, { [require_ds_form_control_module.default.required]: required }),
63
- children: label
64
- }), slots?.endAdornment && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
65
- className: require_ds_form_control_module.default.endAdornment,
66
- children: slots.endAdornment
67
- })]
68
- }),
146
+ t9,
69
147
  children,
70
- message && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
71
- className: require_ds_form_control_module.default.message,
72
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_ds_icon.default, {
73
- icon: messageIcon,
74
- size: "tiny",
75
- filled: true
76
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
77
- className: require_ds_form_control_module.default.messageText,
78
- children: message
79
- })]
80
- })
148
+ t10
81
149
  ]
82
- })
83
- });
150
+ });
151
+ $[19] = children;
152
+ $[20] = style;
153
+ $[21] = t10;
154
+ $[22] = t5;
155
+ $[23] = t9;
156
+ $[24] = t11;
157
+ } else t11 = $[24];
158
+ let t12;
159
+ if ($[25] !== t11 || $[26] !== t3) {
160
+ t12 = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormControlContext.Provider, {
161
+ value: t3,
162
+ children: t11
163
+ });
164
+ $[25] = t11;
165
+ $[26] = t3;
166
+ $[27] = t12;
167
+ } else t12 = $[27];
168
+ return t12;
84
169
  };
85
170
  DsFormControl.TextInput = controlify(require_ds_text_input.default);
86
171
  DsFormControl.NumberInput = controlify(require_ds_number_input.default);