@donotdev/crud 0.0.6 → 0.0.7

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 (304) hide show
  1. package/README.md +18 -2
  2. package/dist/CrudService.d.ts +91 -8
  3. package/dist/CrudService.d.ts.map +1 -1
  4. package/dist/CrudService.js +1 -1
  5. package/dist/CrudStore.d.ts +45 -2
  6. package/dist/CrudStore.d.ts.map +1 -1
  7. package/dist/CrudStore.js +1 -1
  8. package/dist/FieldRegistry.d.ts +56 -20
  9. package/dist/FieldRegistry.d.ts.map +1 -1
  10. package/dist/FieldRegistry.js +1 -1
  11. package/dist/adapters/FirestoreAdapter.d.ts +4 -4
  12. package/dist/adapters/FirestoreAdapter.d.ts.map +1 -1
  13. package/dist/adapters/FirestoreAdapter.js +1 -1
  14. package/dist/adapters/FunctionsAdapter.d.ts +3 -2
  15. package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
  16. package/dist/adapters/FunctionsAdapter.js +1 -1
  17. package/dist/builtinFieldTypes.d.ts +4 -0
  18. package/dist/builtinFieldTypes.d.ts.map +1 -1
  19. package/dist/builtinFieldTypes.js +1 -1
  20. package/dist/components/CrudButton.d.ts +1 -1
  21. package/dist/components/CrudButton.d.ts.map +1 -1
  22. package/dist/components/CrudButton.js +1 -1
  23. package/dist/components/DisplayFieldRenderer.d.ts +15 -11
  24. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  25. package/dist/components/DisplayFieldRenderer.js +1 -1
  26. package/dist/components/EntityCardList.d.ts +27 -0
  27. package/dist/components/EntityCardList.d.ts.map +1 -0
  28. package/dist/components/EntityCardList.js +1 -0
  29. package/dist/components/EntityDisplayRenderer.d.ts +43 -0
  30. package/dist/components/EntityDisplayRenderer.d.ts.map +1 -0
  31. package/dist/components/EntityDisplayRenderer.js +1 -0
  32. package/dist/components/EntityFormRenderer.d.ts +21 -26
  33. package/dist/components/EntityFormRenderer.d.ts.map +1 -1
  34. package/dist/components/EntityFormRenderer.js +1 -5
  35. package/dist/components/EntityList.d.ts +24 -0
  36. package/dist/components/EntityList.d.ts.map +1 -0
  37. package/dist/components/EntityList.js +1 -0
  38. package/dist/components/FormFieldRenderer.d.ts +3 -10
  39. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  40. package/dist/components/FormFieldRenderer.js +1 -1
  41. package/dist/components/FormLayout.d.ts +1 -9
  42. package/dist/components/FormLayout.d.ts.map +1 -1
  43. package/dist/components/controlled/complex/ControlledAddressField.d.ts +8 -0
  44. package/dist/components/controlled/complex/ControlledAddressField.d.ts.map +1 -0
  45. package/dist/components/controlled/complex/ControlledAddressField.js +1 -0
  46. package/dist/components/controlled/complex/ControlledDateField.d.ts +8 -0
  47. package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -0
  48. package/dist/components/controlled/complex/ControlledDateField.js +1 -0
  49. package/dist/components/controlled/complex/ControlledGeoPointField.d.ts +8 -0
  50. package/dist/components/controlled/complex/ControlledGeoPointField.d.ts.map +1 -0
  51. package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -0
  52. package/dist/components/controlled/complex/ControlledMapField.d.ts +8 -0
  53. package/dist/components/controlled/complex/ControlledMapField.d.ts.map +1 -0
  54. package/dist/components/controlled/complex/ControlledMapField.js +1 -0
  55. package/dist/components/controlled/complex/ControlledMultiInputField.d.ts +8 -0
  56. package/dist/components/controlled/complex/ControlledMultiInputField.d.ts.map +1 -0
  57. package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -0
  58. package/dist/components/controlled/complex/ControlledRichTextField.d.ts +8 -0
  59. package/dist/components/controlled/complex/ControlledRichTextField.d.ts.map +1 -0
  60. package/dist/components/controlled/complex/ControlledRichTextField.js +1 -0
  61. package/dist/components/controlled/complex/ControlledTimestampField.d.ts +8 -0
  62. package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -0
  63. package/dist/components/controlled/complex/ControlledTimestampField.js +1 -0
  64. package/dist/components/controlled/complex/index.d.ts +8 -0
  65. package/dist/components/controlled/complex/index.d.ts.map +1 -0
  66. package/dist/components/controlled/complex/index.js +1 -0
  67. package/dist/components/controlled/file/ControlledDocumentField.d.ts +8 -0
  68. package/dist/components/controlled/file/ControlledDocumentField.d.ts.map +1 -0
  69. package/dist/components/controlled/file/ControlledDocumentField.js +1 -0
  70. package/dist/components/controlled/file/ControlledFileField.d.ts +8 -0
  71. package/dist/components/controlled/file/ControlledFileField.d.ts.map +1 -0
  72. package/dist/components/controlled/file/ControlledFileField.js +1 -0
  73. package/dist/components/controlled/file/ControlledImageField.d.ts +8 -0
  74. package/dist/components/controlled/file/ControlledImageField.d.ts.map +1 -0
  75. package/dist/components/controlled/file/ControlledImageField.js +1 -0
  76. package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts +8 -0
  77. package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts.map +1 -0
  78. package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -0
  79. package/dist/components/controlled/file/ControlledMultiFileField.d.ts +8 -0
  80. package/dist/components/controlled/file/ControlledMultiFileField.d.ts.map +1 -0
  81. package/dist/components/controlled/file/ControlledMultiFileField.js +1 -0
  82. package/dist/components/controlled/file/ControlledMultiImageField.d.ts +8 -0
  83. package/dist/components/controlled/file/ControlledMultiImageField.d.ts.map +1 -0
  84. package/dist/components/controlled/file/ControlledMultiImageField.js +1 -0
  85. package/dist/components/controlled/file/index.d.ts +7 -0
  86. package/dist/components/controlled/file/index.d.ts.map +1 -0
  87. package/dist/components/controlled/file/index.js +1 -0
  88. package/dist/components/controlled/index.d.ts +12 -0
  89. package/dist/components/controlled/index.d.ts.map +1 -0
  90. package/dist/components/controlled/index.js +1 -0
  91. package/dist/components/controlled/input/ControlledCheckboxField.d.ts +8 -0
  92. package/dist/components/controlled/input/ControlledCheckboxField.d.ts.map +1 -0
  93. package/dist/components/controlled/input/ControlledCheckboxField.js +1 -0
  94. package/dist/components/controlled/input/ControlledNumberField.d.ts +8 -0
  95. package/dist/components/controlled/input/ControlledNumberField.d.ts.map +1 -0
  96. package/dist/components/controlled/input/ControlledNumberField.js +1 -0
  97. package/dist/components/controlled/input/ControlledPasswordField.d.ts +8 -0
  98. package/dist/components/controlled/input/ControlledPasswordField.d.ts.map +1 -0
  99. package/dist/components/controlled/input/ControlledPasswordField.js +1 -0
  100. package/dist/components/controlled/input/ControlledPhoneField.d.ts +8 -0
  101. package/dist/components/controlled/input/ControlledPhoneField.d.ts.map +1 -0
  102. package/dist/components/controlled/input/ControlledPhoneField.js +1 -0
  103. package/dist/components/controlled/input/ControlledRangeField.d.ts +8 -0
  104. package/dist/components/controlled/input/ControlledRangeField.d.ts.map +1 -0
  105. package/dist/components/controlled/input/ControlledRangeField.js +1 -0
  106. package/dist/components/controlled/input/ControlledSwitchField.d.ts +8 -0
  107. package/dist/components/controlled/input/ControlledSwitchField.d.ts.map +1 -0
  108. package/dist/components/controlled/input/ControlledSwitchField.js +1 -0
  109. package/dist/components/controlled/input/ControlledTextField.d.ts +8 -0
  110. package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -0
  111. package/dist/components/controlled/input/ControlledTextField.js +1 -0
  112. package/dist/components/controlled/input/ControlledTextareaField.d.ts +8 -0
  113. package/dist/components/controlled/input/ControlledTextareaField.d.ts.map +1 -0
  114. package/dist/components/controlled/input/ControlledTextareaField.js +1 -0
  115. package/dist/components/controlled/input/index.d.ts +9 -0
  116. package/dist/components/controlled/input/index.d.ts.map +1 -0
  117. package/dist/components/controlled/input/index.js +1 -0
  118. package/dist/components/controlled/select/ControlledComboboxField.d.ts +9 -0
  119. package/dist/components/controlled/select/ControlledComboboxField.d.ts.map +1 -0
  120. package/dist/components/controlled/select/ControlledComboboxField.js +1 -0
  121. package/dist/components/controlled/select/ControlledDropdownField.d.ts +9 -0
  122. package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -0
  123. package/dist/components/controlled/select/ControlledDropdownField.js +1 -0
  124. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +9 -0
  125. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -0
  126. package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -0
  127. package/dist/components/controlled/select/ControlledRadioField.d.ts +9 -0
  128. package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -0
  129. package/dist/components/controlled/select/ControlledRadioField.js +1 -0
  130. package/dist/components/controlled/select/index.d.ts +5 -0
  131. package/dist/components/controlled/select/index.d.ts.map +1 -0
  132. package/dist/components/controlled/select/index.js +1 -0
  133. package/dist/components/controlled/types.d.ts +23 -0
  134. package/dist/components/controlled/types.d.ts.map +1 -0
  135. package/dist/components/controlled/types.js +1 -0
  136. package/dist/components/form/fields/AddressFieldComponent.d.ts.map +1 -1
  137. package/dist/components/form/fields/AddressFieldComponent.js +1 -1
  138. package/dist/components/form/fields/AvatarFieldComponent.d.ts +2 -2
  139. package/dist/components/form/fields/BadgeFieldComponent.d.ts +2 -2
  140. package/dist/components/form/fields/ButtonFieldComponent.d.ts +1 -9
  141. package/dist/components/form/fields/ButtonFieldComponent.d.ts.map +1 -1
  142. package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
  143. package/dist/components/form/fields/ComboboxComponent.d.ts.map +1 -1
  144. package/dist/components/form/fields/CurrencyFieldComponent.d.ts +1 -9
  145. package/dist/components/form/fields/CurrencyFieldComponent.d.ts.map +1 -1
  146. package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
  147. package/dist/components/form/fields/DateFieldComponent.d.ts.map +1 -1
  148. package/dist/components/form/fields/DateFieldComponent.js +1 -1
  149. package/dist/components/form/fields/DocumentFieldComponent.d.ts +47 -0
  150. package/dist/components/form/fields/DocumentFieldComponent.d.ts.map +1 -0
  151. package/dist/components/form/fields/DocumentFieldComponent.js +1 -0
  152. package/dist/components/form/fields/DropdownComponent.d.ts.map +1 -1
  153. package/dist/components/form/fields/DropdownComponent.js +1 -1
  154. package/dist/components/form/fields/FileFieldComponent.d.ts +31 -15
  155. package/dist/components/form/fields/FileFieldComponent.d.ts.map +1 -1
  156. package/dist/components/form/fields/FileFieldComponent.js +1 -1
  157. package/dist/components/form/fields/GeoPointFieldComponent.d.ts.map +1 -1
  158. package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
  159. package/dist/components/form/fields/HiddenFieldComponent.d.ts +1 -1
  160. package/dist/components/form/fields/HiddenFieldComponent.d.ts.map +1 -1
  161. package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
  162. package/dist/components/form/fields/ImageFieldComponent.d.ts +8 -14
  163. package/dist/components/form/fields/ImageFieldComponent.d.ts.map +1 -1
  164. package/dist/components/form/fields/ImageFieldComponent.js +1 -1
  165. package/dist/components/form/fields/MapFieldComponent.d.ts.map +1 -1
  166. package/dist/components/form/fields/MapFieldComponent.js +1 -1
  167. package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
  168. package/dist/components/form/fields/MultiInputTextFieldComponent.d.ts +1 -9
  169. package/dist/components/form/fields/MultiInputTextFieldComponent.d.ts.map +1 -1
  170. package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
  171. package/dist/components/form/fields/NumberFieldComponent.d.ts +2 -0
  172. package/dist/components/form/fields/NumberFieldComponent.d.ts.map +1 -1
  173. package/dist/components/form/fields/NumberFieldComponent.js +1 -1
  174. package/dist/components/form/fields/PasswordFieldComponent.d.ts +1 -9
  175. package/dist/components/form/fields/PasswordFieldComponent.d.ts.map +1 -1
  176. package/dist/components/form/fields/PhoneNumberComponent.d.ts +1 -9
  177. package/dist/components/form/fields/PhoneNumberComponent.d.ts.map +1 -1
  178. package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
  179. package/dist/components/form/fields/RadioFieldComponent.d.ts +1 -9
  180. package/dist/components/form/fields/RadioFieldComponent.d.ts.map +1 -1
  181. package/dist/components/form/fields/ReferenceFieldComponent.d.ts +33 -12
  182. package/dist/components/form/fields/ReferenceFieldComponent.d.ts.map +1 -1
  183. package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
  184. package/dist/components/form/fields/RichTextComponent.d.ts +32 -0
  185. package/dist/components/form/fields/RichTextComponent.d.ts.map +1 -0
  186. package/dist/components/form/fields/RichTextComponent.js +1 -0
  187. package/dist/components/form/fields/SwitchFieldComponent.d.ts.map +1 -1
  188. package/dist/components/form/fields/TextAreaComponent.d.ts +1 -9
  189. package/dist/components/form/fields/TextAreaComponent.d.ts.map +1 -1
  190. package/dist/components/form/fields/TextAreaComponent.js +1 -1
  191. package/dist/components/form/fields/TextFieldComponent.d.ts +1 -9
  192. package/dist/components/form/fields/TextFieldComponent.d.ts.map +1 -1
  193. package/dist/components/form/fields/index.d.ts +4 -2
  194. package/dist/components/form/fields/index.d.ts.map +1 -1
  195. package/dist/components/form/fields/index.js +1 -1
  196. package/dist/components/form/fields/internal/TiptapEditor.d.ts +13 -0
  197. package/dist/components/form/fields/internal/TiptapEditor.d.ts.map +1 -0
  198. package/dist/components/form/fields/internal/TiptapEditor.js +52 -0
  199. package/dist/components/form/index.d.ts +10 -0
  200. package/dist/components/form/index.d.ts.map +1 -0
  201. package/dist/components/form/index.js +1 -0
  202. package/dist/components/form/internal/ImageViewerDialog.d.ts +1 -1
  203. package/dist/components/form/internal/ImageViewerDialog.d.ts.map +1 -1
  204. package/dist/components/index.d.ts +8 -2
  205. package/dist/components/index.d.ts.map +1 -1
  206. package/dist/components/index.js +1 -1
  207. package/dist/contexts/UploadContext.d.ts +16 -0
  208. package/dist/contexts/UploadContext.d.ts.map +1 -0
  209. package/dist/contexts/UploadContext.js +1 -0
  210. package/dist/contexts/index.d.ts +3 -0
  211. package/dist/contexts/index.d.ts.map +1 -0
  212. package/dist/contexts/index.js +1 -0
  213. package/dist/forms/hooks/index.d.ts +2 -0
  214. package/dist/forms/hooks/index.d.ts.map +1 -1
  215. package/dist/forms/hooks/index.js +1 -1
  216. package/dist/forms/hooks/useController.d.ts +29 -0
  217. package/dist/forms/hooks/useController.d.ts.map +1 -0
  218. package/dist/forms/hooks/useController.js +1 -0
  219. package/dist/forms/hooks/useEntityField.d.ts.map +1 -1
  220. package/dist/forms/hooks/useEntityField.js +1 -1
  221. package/dist/forms/hooks/useEntityForm.d.ts +8 -76
  222. package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
  223. package/dist/forms/hooks/useEntityForm.js +1 -1
  224. package/dist/forms/index.d.ts +6 -4
  225. package/dist/forms/index.d.ts.map +1 -1
  226. package/dist/forms/index.js +1 -1
  227. package/dist/forms/types.d.ts +31 -5
  228. package/dist/forms/types.d.ts.map +1 -1
  229. package/dist/forms/utils/getFieldsForOperation.d.ts +5 -5
  230. package/dist/forms/utils/getFieldsForOperation.d.ts.map +1 -1
  231. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  232. package/dist/forms/utils/index.d.ts +9 -5
  233. package/dist/forms/utils/index.d.ts.map +1 -1
  234. package/dist/forms/utils/index.js +1 -1
  235. package/dist/forms/utils/isFieldEditable.d.ts +0 -8
  236. package/dist/forms/utils/isFieldEditable.d.ts.map +1 -1
  237. package/dist/forms/utils/optionHelpers.d.ts +54 -0
  238. package/dist/forms/utils/optionHelpers.d.ts.map +1 -0
  239. package/dist/forms/utils/optionHelpers.js +1 -0
  240. package/dist/forms/utils/translateFieldLabel.d.ts +70 -0
  241. package/dist/forms/utils/translateFieldLabel.d.ts.map +1 -0
  242. package/dist/forms/utils/translateFieldLabel.js +1 -0
  243. package/dist/forms/utils/validateEntity.d.ts +5 -2
  244. package/dist/forms/utils/validateEntity.d.ts.map +1 -1
  245. package/dist/forms/utils/validateEntity.js +1 -1
  246. package/dist/hooks/index.d.ts +3 -0
  247. package/dist/hooks/index.d.ts.map +1 -0
  248. package/dist/hooks/index.js +1 -0
  249. package/dist/hooks/useFileUpload.d.ts +67 -0
  250. package/dist/hooks/useFileUpload.d.ts.map +1 -0
  251. package/dist/hooks/useFileUpload.js +1 -0
  252. package/dist/index.d.ts +15 -5
  253. package/dist/index.d.ts.map +1 -1
  254. package/dist/index.js +1 -1
  255. package/dist/stores/FormStore.d.ts +78 -0
  256. package/dist/stores/FormStore.d.ts.map +1 -0
  257. package/dist/stores/FormStore.js +1 -0
  258. package/dist/stores/UploadStore.d.ts +105 -0
  259. package/dist/stores/UploadStore.d.ts.map +1 -0
  260. package/dist/stores/UploadStore.js +1 -0
  261. package/dist/stores/index.d.ts +11 -0
  262. package/dist/stores/index.d.ts.map +1 -0
  263. package/dist/stores/index.js +1 -0
  264. package/dist/tsconfig.tsbuildinfo +1 -1
  265. package/dist/useCrud.d.ts +32 -74
  266. package/dist/useCrud.d.ts.map +1 -1
  267. package/dist/useCrud.js +1 -1
  268. package/dist/useCrudCardList.d.ts +62 -0
  269. package/dist/useCrudCardList.d.ts.map +1 -0
  270. package/dist/useCrudCardList.js +1 -0
  271. package/dist/useCrudList.d.ts +61 -0
  272. package/dist/useCrudList.d.ts.map +1 -0
  273. package/dist/useCrudList.js +1 -0
  274. package/dist/utils/fileStorage.d.ts +58 -0
  275. package/dist/utils/fileStorage.d.ts.map +1 -0
  276. package/dist/utils/fileStorage.js +1 -0
  277. package/dist/utils/imageProcessing.d.ts +1 -1
  278. package/dist/utils/imageProcessing.d.ts.map +1 -1
  279. package/dist/utils/imageProcessing.js +1 -1
  280. package/dist/utils/imageStorage.d.ts +1 -10
  281. package/dist/utils/imageStorage.d.ts.map +1 -1
  282. package/dist/utils/imageStorage.js +1 -1
  283. package/dist/utils/mergeWithOptimistic.d.ts +27 -0
  284. package/dist/utils/mergeWithOptimistic.d.ts.map +1 -0
  285. package/dist/utils/mergeWithOptimistic.js +1 -0
  286. package/dist/utils/uploadValidation.d.ts +37 -0
  287. package/dist/utils/uploadValidation.d.ts.map +1 -0
  288. package/dist/utils/uploadValidation.js +1 -0
  289. package/package.json +22 -5
  290. package/dist/components/ControlledFields.d.ts +0 -49
  291. package/dist/components/ControlledFields.d.ts.map +0 -1
  292. package/dist/components/ControlledFields.js +0 -1
  293. package/dist/context/FormUploadContext.d.ts +0 -36
  294. package/dist/context/FormUploadContext.d.ts.map +0 -1
  295. package/dist/context/FormUploadContext.js +0 -1
  296. package/dist/context/index.d.ts +0 -2
  297. package/dist/context/index.d.ts.map +0 -1
  298. package/dist/context/index.js +0 -1
  299. package/dist/forms/utils/createEntitySchema.d.ts +0 -53
  300. package/dist/forms/utils/createEntitySchema.d.ts.map +0 -1
  301. package/dist/forms/utils/createEntitySchema.js +0 -1
  302. package/dist/forms/utils/normalizeToFieldConfig.d.ts +0 -47
  303. package/dist/forms/utils/normalizeToFieldConfig.d.ts.map +0 -1
  304. package/dist/forms/utils/normalizeToFieldConfig.js +0 -1
package/dist/index.d.ts CHANGED
@@ -2,15 +2,25 @@
2
2
  * @fileoverview CRUD package
3
3
  * @description CRUD operations and form components for DoNotDev framework
4
4
  *
5
- * @version 0.0.2
5
+ * @version 0.0.3
6
6
  * @since 0.0.1
7
7
  * @author AMBROISE PARK Consulting
8
8
  */
9
9
  export * from './useCrud';
10
+ export * from './useCrudList';
11
+ export * from './useCrudCardList';
10
12
  export * from './components';
11
- export { getCrudService } from './CrudService';
13
+ export * from './stores';
14
+ export { getCrudService, type CrudServiceInterface, type CacheOptions, type QueryOptions, } from './CrudService';
15
+ export { useCrudStore, type CrudState, type CrudActions, type BackendType, type OptimisticStatus, type OptimisticMeta, } from './CrudStore';
12
16
  export { loadDeterministicRange, upsertDeterministic, appendToCollection, } from './utils/collections';
13
- export { getFieldRegistry, registerFieldType, isFieldTypeRegistered, type FieldTypeRegistration, type SchemaGenerator, type ControlledFieldProps, type UncontrolledFieldProps, } from './FieldRegistry';
14
- export { useEntityForm, useEntityField, isFieldEditable, normalizeToFieldConfig, getFieldsForOperation, createEntitySchema, validateEntity, } from './forms';
15
- export type { ViewerRole, RenderableField, GetFieldsForOperationOptions, EntityFieldsInput, SchemaOperation, ValidationIssue, ValidationResult, InferEntityData, InferEntityInput, InferEntityOutput, UseEntityFormOptions, EntityFormReturn, EntityFieldReturn, } from './forms';
17
+ export { getFieldRegistry, registerFieldType, isFieldTypeRegistered, type FieldTypeRegistration, type ControlledFieldProps, type UncontrolledFieldProps, } from './FieldRegistry';
18
+ export { registerBuiltinFieldTypes } from './builtinFieldTypes';
19
+ export { useEntityForm, useEntityField, useController, isFieldEditable, getFieldsForOperation, validateEntity, translateFieldLabel, translateLabel, yearOptions, rangeOptions, } from './forms';
20
+ export type { ViewerRole, RenderableField, GetFieldsForOperationOptions, EntityFieldsInput, SchemaOperation, ValidationIssue, ValidationResult, SelectOption, InferEntityData, InferEntityInput, InferEntityOutput, UseEntityFormOptions, EntityFormReturn, EntityFieldReturn, UseControllerProps, UseControllerReturn, ControllerRenderProps, ControllerFieldState, } from './forms';
21
+ export { UploadProvider, useUploadContext } from './contexts';
22
+ export type { UploadProviderProps } from './contexts';
23
+ export { useFileUpload } from './hooks';
24
+ export type { FileMetadata, UseFileUploadOptions } from './hooks';
25
+ export { isStorageUrl, validatePicture, checkForBlobUrls, hasBlobUrls, } from './utils/uploadValidation';
16
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAGH,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAEL,aAAa,EACb,cAAc,EAEd,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAGH,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,cAAc,CAAC;AAG7B,cAAc,UAAU,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAEL,aAAa,EACb,cAAc,EACd,aAAa,EAEb,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,cAAc,EAEd,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9D,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGlE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export*from"./useCrud";export*from"./components";import{getCrudService as d}from"./CrudService";import{loadDeterministicRange as m,upsertDeterministic as n,appendToCollection as s}from"./utils/collections";import{getFieldRegistry as F,registerFieldType as g,isFieldTypeRegistered as f}from"./FieldRegistry";import{useEntityForm as c,useEntityField as x,isFieldEditable as u,normalizeToFieldConfig as E,getFieldsForOperation as T,createEntitySchema as C,validateEntity as R}from"./forms";import{registerBuiltinFieldTypes as e}from"./builtinFieldTypes";e();export{s as appendToCollection,C as createEntitySchema,d as getCrudService,F as getFieldRegistry,T as getFieldsForOperation,u as isFieldEditable,f as isFieldTypeRegistered,m as loadDeterministicRange,E as normalizeToFieldConfig,g as registerFieldType,n as upsertDeterministic,x as useEntityField,c as useEntityForm,R as validateEntity};
1
+ export*from"./useCrud";export*from"./useCrudList";export*from"./useCrudCardList";export*from"./components";export*from"./stores";import{getCrudService as s}from"./CrudService";import{useCrudStore as d}from"./CrudStore";import{loadDeterministicRange as n,upsertDeterministic as x,appendToCollection as f}from"./utils/collections";import{getFieldRegistry as u,registerFieldType as g,isFieldTypeRegistered as y}from"./FieldRegistry";import{registerBuiltinFieldTypes as U}from"./builtinFieldTypes";import{useEntityForm as C,useEntityField as v,useController as E,isFieldEditable as T,getFieldsForOperation as B,validateEntity as O,translateFieldLabel as R,translateLabel as S,yearOptions as h,rangeOptions as D}from"./forms";import{UploadProvider as P,useUploadContext as k}from"./contexts";import{useFileUpload as q}from"./hooks";import{isStorageUrl as z,validatePicture as A,checkForBlobUrls as G,hasBlobUrls as H}from"./utils/uploadValidation";export{P as UploadProvider,f as appendToCollection,G as checkForBlobUrls,s as getCrudService,u as getFieldRegistry,B as getFieldsForOperation,H as hasBlobUrls,T as isFieldEditable,y as isFieldTypeRegistered,z as isStorageUrl,n as loadDeterministicRange,D as rangeOptions,U as registerBuiltinFieldTypes,g as registerFieldType,R as translateFieldLabel,S as translateLabel,x as upsertDeterministic,E as useController,d as useCrudStore,v as useEntityField,C as useEntityForm,q as useFileUpload,k as useUploadContext,O as validateEntity,A as validatePicture,h as yearOptions};
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Form status states
3
+ * Represents the current phase of form submission
4
+ */
5
+ export type FormStatus = 'idle' | 'uploading' | 'validating' | 'submitting' | 'success' | 'error';
6
+ /**
7
+ * Individual form state
8
+ */
9
+ interface FormState {
10
+ status: FormStatus;
11
+ error: string | null;
12
+ uploadProgress: number;
13
+ }
14
+ /**
15
+ * Form store state interface
16
+ */
17
+ export interface FormStoreState {
18
+ /** Form states keyed by formId */
19
+ forms: Record<string, FormState>;
20
+ }
21
+ /**
22
+ * Form store actions interface
23
+ */
24
+ export interface FormStoreActions {
25
+ /** Start form submission - called immediately on click (before validation) */
26
+ startSubmit: (formId: string) => void;
27
+ /** Set uploading state with progress */
28
+ setUploading: (formId: string, progress: number) => void;
29
+ /** Set validating state */
30
+ setValidating: (formId: string) => void;
31
+ /** Set submitting state (server call in progress) */
32
+ setSubmitting: (formId: string) => void;
33
+ /** Set success state */
34
+ setSuccess: (formId: string) => void;
35
+ /** Set error state */
36
+ setError: (formId: string, error: string) => void;
37
+ /** Reset form to idle state */
38
+ reset: (formId: string) => void;
39
+ /** Clean up form state (on unmount) */
40
+ cleanup: (formId: string) => void;
41
+ /** Get form status */
42
+ getStatus: (formId: string) => FormStatus;
43
+ /** Check if form is in any loading state */
44
+ isLoading: (formId: string) => boolean;
45
+ /** Get upload progress */
46
+ getUploadProgress: (formId: string) => number;
47
+ /** Get error message */
48
+ getError: (formId: string) => string | null;
49
+ }
50
+ /**
51
+ * Form store for managing form submission states
52
+ *
53
+ * @example
54
+ * ```tsx
55
+ * const formId = useId();
56
+ * const isLoading = useFormStore((s) => s.isLoading(formId));
57
+ * const status = useFormStore((s) => s.getStatus(formId));
58
+ * ```
59
+ */
60
+ export declare const useFormStore: import("zustand").UseBoundStore<import("zustand").StoreApi<FormStoreState & FormStoreActions & import("@donotdev/stores").DoNotDevStore>>;
61
+ /**
62
+ * Hook to get form status
63
+ */
64
+ export declare const useFormStatus: (formId: string) => FormStatus;
65
+ /**
66
+ * Hook to check if form is loading
67
+ */
68
+ export declare const useFormLoading: (formId: string) => boolean;
69
+ /**
70
+ * Hook to get upload progress
71
+ */
72
+ export declare const useUploadProgress: (formId: string) => number;
73
+ /**
74
+ * Hook to get form error
75
+ */
76
+ export declare const useFormError: (formId: string) => string | null;
77
+ export {};
78
+ //# sourceMappingURL=FormStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormStore.d.ts","sourceRoot":"","sources":["../../src/stores/FormStore.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,OAAO,CAAC;AAEZ;;GAEG;AACH,UAAU,SAAS;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAE/B,8EAA8E;IAC9E,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,wCAAwC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,2BAA2B;IAC3B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qDAAqD;IACrD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,wBAAwB;IACxB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,sBAAsB;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,+BAA+B;IAC/B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,uCAAuC;IACvC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAGlC,sBAAsB;IACtB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;IAC1C,4CAA4C;IAC5C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,0BAA0B;IAC1B,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,wBAAwB;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC7C;AAQD;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,2IAsJvB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,UACiB,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,OAQ5C,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MACgB,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,IACM,CAAC"}
@@ -0,0 +1 @@
1
+ "use client";import{createDoNotDevStore as a}from"@donotdev/core";const e={status:"idle",error:null,uploadProgress:0},m=a({name:"form-store",createStore:(o,t)=>({forms:{},startSubmit:r=>{o(s=>({forms:{...s.forms,[r]:{status:"uploading",error:null,uploadProgress:0}}}))},setUploading:(r,s)=>{o(u=>{const n=u.forms[r]||e;return{forms:{...u.forms,[r]:{...n,status:"uploading",uploadProgress:Math.min(100,Math.max(0,s))}}}})},setValidating:r=>{o(s=>{const u=s.forms[r]||e;return{forms:{...s.forms,[r]:{...u,status:"validating",uploadProgress:100}}}})},setSubmitting:r=>{o(s=>{const u=s.forms[r]||e;return{forms:{...s.forms,[r]:{...u,status:"submitting"}}}})},setSuccess:r=>{o(s=>{const u=s.forms[r]||e;return{forms:{...s.forms,[r]:{...u,status:"success",error:null}}}}),setTimeout(()=>{t().reset(r)},1500)},setError:(r,s)=>{o(u=>{const n=u.forms[r]||e;return{forms:{...u.forms,[r]:{...n,status:"error",error:s}}}})},reset:r=>{o(s=>({forms:{...s.forms,[r]:{...e}}}))},cleanup:r=>{o(s=>{const{[r]:u,...n}=s.forms;return{forms:n}})},getStatus:r=>t().forms[r]?.status??"idle",isLoading:r=>{const s=t().forms[r]?.status??"idle";return s==="uploading"||s==="validating"||s==="submitting"},getUploadProgress:r=>t().forms[r]?.uploadProgress??0,getError:r=>t().forms[r]?.error??null})}),l=o=>m(t=>t.forms[o]?.status??"idle"),f=o=>m(t=>{const r=t.forms[o]?.status??"idle";return r==="uploading"||r==="validating"||r==="submitting"}),g=o=>m(t=>t.forms[o]?.uploadProgress??0),c=o=>m(t=>t.forms[o]?.error??null);export{c as useFormError,f as useFormLoading,l as useFormStatus,m as useFormStore,g as useUploadProgress};
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Upload status for a single field
3
+ */
4
+ export type UploadStatus = 'idle' | 'uploading' | 'complete' | 'error';
5
+ /**
6
+ * Individual field upload state
7
+ */
8
+ interface FieldUploadState {
9
+ status: UploadStatus;
10
+ progress: number;
11
+ error: string | null;
12
+ }
13
+ /**
14
+ * Upload function signature
15
+ * Called with progress callback for real-time updates
16
+ */
17
+ export type UploadFunction = (onProgress?: (progress: number) => void) => Promise<void>;
18
+ /**
19
+ * Check pending function signature
20
+ * Returns true if the upload function has pending files to upload
21
+ */
22
+ export type CheckPendingFunction = () => boolean;
23
+ /**
24
+ * Upload store state interface
25
+ */
26
+ export interface UploadStoreState {
27
+ /** Upload states: formId -> fieldName -> state */
28
+ uploads: Record<string, Record<string, FieldUploadState>>;
29
+ /** Registered upload functions: formId -> fieldName -> uploadFn */
30
+ uploadFunctions: Record<string, Record<string, UploadFunction>>;
31
+ /** Check pending functions: formId -> fieldName -> checkPendingFn */
32
+ checkPendingFunctions: Record<string, Record<string, CheckPendingFunction>>;
33
+ /** Retry attempts: formId -> fieldName -> attempts */
34
+ retryAttempts: Record<string, Record<string, number>>;
35
+ /** Max retries per field (default: 3) */
36
+ maxRetries: number;
37
+ /** Base retry delay in ms (default: 1000) */
38
+ retryDelay: number;
39
+ }
40
+ /**
41
+ * Upload store actions interface
42
+ */
43
+ export interface UploadStoreActions {
44
+ /** Register an upload function for a field */
45
+ registerUpload: (formId: string, fieldName: string, uploadFn: UploadFunction, checkPending?: CheckPendingFunction) => void;
46
+ /** Unregister upload function when field unmounts */
47
+ unregisterUpload: (formId: string, fieldName: string) => void;
48
+ /** Start upload for a field */
49
+ startUpload: (formId: string, fieldName: string) => void;
50
+ /** Set progress for a field */
51
+ setProgress: (formId: string, fieldName: string, progress: number) => void;
52
+ /** Mark upload as complete */
53
+ completeUpload: (formId: string, fieldName: string) => void;
54
+ /** Mark upload as failed */
55
+ failUpload: (formId: string, fieldName: string, error: string) => void;
56
+ /** Reset upload state for a field */
57
+ resetUpload: (formId: string, fieldName: string) => void;
58
+ /** Reset all uploads for a form */
59
+ resetForm: (formId: string) => void;
60
+ /** Clean up form state (on unmount) */
61
+ cleanup: (formId: string) => void;
62
+ /** Upload all registered files for a form */
63
+ uploadAll: (formId: string) => Promise<void>;
64
+ /** Check if any uploads are pending for a form */
65
+ hasPendingUploads: (formId: string) => boolean;
66
+ /** Get upload status for a field */
67
+ getStatus: (formId: string, fieldName: string) => UploadStatus;
68
+ /** Get upload progress for a field */
69
+ getProgress: (formId: string, fieldName: string) => number;
70
+ /** Get total progress across all fields in a form */
71
+ getTotalProgress: (formId: string) => number;
72
+ /** Check if any field is currently uploading */
73
+ isUploading: (formId: string) => boolean;
74
+ /** Get error for a field */
75
+ getError: (formId: string, fieldName: string) => string | null;
76
+ }
77
+ /**
78
+ * Upload store for managing file upload progress
79
+ *
80
+ * @example
81
+ * ```tsx
82
+ * const formId = useId();
83
+ * const totalProgress = useUploadStore((s) => s.getTotalProgress(formId));
84
+ * const isUploading = useUploadStore((s) => s.isUploading(formId));
85
+ * ```
86
+ */
87
+ export declare const useUploadStore: import("zustand").UseBoundStore<import("zustand").StoreApi<UploadStoreState & UploadStoreActions & import("@donotdev/stores").DoNotDevStore>>;
88
+ /**
89
+ * Hook to get total upload progress for a form
90
+ */
91
+ export declare const useTotalProgress: (formId: string) => number;
92
+ /**
93
+ * Hook to check if any field is currently uploading
94
+ */
95
+ export declare const useIsUploading: (formId: string) => boolean;
96
+ /**
97
+ * Hook to get upload progress for a specific field
98
+ */
99
+ export declare const useFieldProgress: (formId: string, fieldName: string) => number;
100
+ /**
101
+ * Hook to get upload status for a specific field
102
+ */
103
+ export declare const useFieldUploadStatus: (formId: string, fieldName: string) => UploadStatus;
104
+ export {};
105
+ //# sourceMappingURL=UploadStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadStore.d.ts","sourceRoot":"","sources":["../../src/stores/UploadStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ "use client";import{createDoNotDevStore as U}from"@donotdev/core";const i={status:"idle",progress:0,error:null},d=U({name:"upload-store",createStore:(u,r)=>({uploads:{},uploadFunctions:{},checkPendingFunctions:{},retryAttempts:{},maxRetries:3,retryDelay:1e3,registerUpload:(s,n,t,o)=>{u(e=>({uploadFunctions:{...e.uploadFunctions,[s]:{...e.uploadFunctions[s]||{},[n]:t}},checkPendingFunctions:{...e.checkPendingFunctions,[s]:{...e.checkPendingFunctions[s]||{},[n]:o||(()=>!1)}}}))},unregisterUpload:(s,n)=>{u(t=>{const o=t.uploadFunctions[s],e=t.checkPendingFunctions[s];if(!o)return t;const{[n]:a,...c}=o,{[n]:g,...l}=e||{},{[n]:h,...F}=t.retryAttempts[s]||{};return{uploadFunctions:{...t.uploadFunctions,[s]:c},checkPendingFunctions:{...t.checkPendingFunctions,[s]:l},retryAttempts:{...t.retryAttempts,[s]:F}}})},startUpload:(s,n)=>{u(t=>({uploads:{...t.uploads,[s]:{...t.uploads[s]||{},[n]:{status:"uploading",progress:0,error:null}}}}))},setProgress:(s,n,t)=>{u(o=>{const e=o.uploads[s]?.[n]||i;return{uploads:{...o.uploads,[s]:{...o.uploads[s]||{},[n]:{...e,progress:Math.min(100,Math.max(0,t))}}}}})},completeUpload:(s,n)=>{u(t=>{const o=t.uploads[s]?.[n]||i;return{uploads:{...t.uploads,[s]:{...t.uploads[s]||{},[n]:{...o,status:"complete",progress:100}}}}})},failUpload:(s,n,t)=>{u(o=>{const e=o.uploads[s]?.[n]||i;return{uploads:{...o.uploads,[s]:{...o.uploads[s]||{},[n]:{...e,status:"error",error:t}}}}})},resetUpload:(s,n)=>{u(t=>({uploads:{...t.uploads,[s]:{...t.uploads[s]||{},[n]:{...i}}}}))},resetForm:s=>{u(n=>({uploads:{...n.uploads,[s]:{}}}))},cleanup:s=>{u(n=>{const{[s]:t,...o}=n.uploads,{[s]:e,...a}=n.uploadFunctions;return{uploads:o,uploadFunctions:a}})},uploadAll:async s=>{const t=r().uploadFunctions[s];if(!t)return;const o=Object.entries(t);if(o.length===0)return;const e=async(a,c,g=1)=>{r().startUpload(s,a);try{await c(l=>{r().setProgress(s,a,l)}),r().completeUpload(s,a),u(l=>({retryAttempts:{...l.retryAttempts,[s]:{...l.retryAttempts[s]||{},[a]:0}}}))}catch(l){const h=l instanceof Error?l.message:"Upload failed",F=r().maxRetries,y=r().retryAttempts[s]?.[a]||0;if(y<F){u(p=>({retryAttempts:{...p.retryAttempts,[s]:{...p.retryAttempts[s]||{},[a]:y+1}}}));const P=r().retryDelay*Math.pow(2,g-1);return await new Promise(p=>setTimeout(p,P)),e(a,c,g+1)}else throw r().failUpload(s,a,h),l}};await Promise.all(o.map(async([a,c])=>{await e(a,c)}))},hasPendingUploads:s=>{const n=r(),t=n.uploadFunctions[s],o=n.checkPendingFunctions[s];return t?Object.entries(t).some(([e,a])=>{const c=o?.[e];return c?c():!0}):!1},getStatus:(s,n)=>r().uploads[s]?.[n]?.status??"idle",getProgress:(s,n)=>r().uploads[s]?.[n]?.progress??0,getTotalProgress:s=>{const n=r().uploads[s];if(!n)return 100;const t=Object.values(n);if(t.length===0)return 100;const o=t.reduce((e,a)=>e+a.progress,0);return Math.round(o/t.length)},isUploading:s=>{const n=r().uploads[s];return n?Object.values(n).some(t=>t.status==="uploading"):!1},getError:(s,n)=>r().uploads[s]?.[n]?.error??null})}),k=u=>d(r=>{const s=r.uploads[u];if(!s)return 100;const n=Object.values(s);if(n.length===0)return 100;const t=n.reduce((o,e)=>o+e.progress,0);return Math.round(t/n.length)}),x=u=>d(r=>{const s=r.uploads[u];return s?Object.values(s).some(n=>n.status==="uploading"):!1}),_=(u,r)=>d(s=>s.uploads[u]?.[r]?.progress??0),w=(u,r)=>d(s=>s.uploads[u]?.[r]?.status??"idle");export{_ as useFieldProgress,w as useFieldUploadStatus,x as useIsUploading,k as useTotalProgress,d as useUploadStore};
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @fileoverview CRUD Stores
3
+ * @description Store exports for CRUD feature
4
+ *
5
+ * @version 0.0.1
6
+ * @since 0.0.1
7
+ * @author AMBROISE PARK Consulting
8
+ */
9
+ export { useFormStore, useFormStatus, useFormLoading, useUploadProgress, useFormError, type FormStatus, type FormStoreState, type FormStoreActions, } from './FormStore';
10
+ export { useUploadStore, useTotalProgress, useIsUploading, useFieldProgress, useFieldUploadStatus, type UploadStatus, type UploadFunction, type UploadStoreState, type UploadStoreActions, } from './UploadStore';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAGH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ import{useFormStore as r,useFormStatus as s,useFormLoading as u,useUploadProgress as t,useFormError as a}from"./FormStore";import{useUploadStore as l,useTotalProgress as m,useIsUploading as p,useFieldProgress as F,useFieldUploadStatus as g}from"./UploadStore";export{F as useFieldProgress,g as useFieldUploadStatus,a as useFormError,u as useFormLoading,s as useFormStatus,r as useFormStore,p as useIsUploading,m as useTotalProgress,t as useUploadProgress,l as useUploadStore};