@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.
- package/README.md +18 -2
- package/dist/CrudService.d.ts +91 -8
- package/dist/CrudService.d.ts.map +1 -1
- package/dist/CrudService.js +1 -1
- package/dist/CrudStore.d.ts +45 -2
- package/dist/CrudStore.d.ts.map +1 -1
- package/dist/CrudStore.js +1 -1
- package/dist/FieldRegistry.d.ts +56 -20
- package/dist/FieldRegistry.d.ts.map +1 -1
- package/dist/FieldRegistry.js +1 -1
- package/dist/adapters/FirestoreAdapter.d.ts +4 -4
- package/dist/adapters/FirestoreAdapter.d.ts.map +1 -1
- package/dist/adapters/FirestoreAdapter.js +1 -1
- package/dist/adapters/FunctionsAdapter.d.ts +3 -2
- package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
- package/dist/adapters/FunctionsAdapter.js +1 -1
- package/dist/builtinFieldTypes.d.ts +4 -0
- package/dist/builtinFieldTypes.d.ts.map +1 -1
- package/dist/builtinFieldTypes.js +1 -1
- package/dist/components/CrudButton.d.ts +1 -1
- package/dist/components/CrudButton.d.ts.map +1 -1
- package/dist/components/CrudButton.js +1 -1
- package/dist/components/DisplayFieldRenderer.d.ts +15 -11
- package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
- package/dist/components/DisplayFieldRenderer.js +1 -1
- package/dist/components/EntityCardList.d.ts +27 -0
- package/dist/components/EntityCardList.d.ts.map +1 -0
- package/dist/components/EntityCardList.js +1 -0
- package/dist/components/EntityDisplayRenderer.d.ts +43 -0
- package/dist/components/EntityDisplayRenderer.d.ts.map +1 -0
- package/dist/components/EntityDisplayRenderer.js +1 -0
- package/dist/components/EntityFormRenderer.d.ts +21 -26
- package/dist/components/EntityFormRenderer.d.ts.map +1 -1
- package/dist/components/EntityFormRenderer.js +1 -5
- package/dist/components/EntityList.d.ts +24 -0
- package/dist/components/EntityList.d.ts.map +1 -0
- package/dist/components/EntityList.js +1 -0
- package/dist/components/FormFieldRenderer.d.ts +3 -10
- package/dist/components/FormFieldRenderer.d.ts.map +1 -1
- package/dist/components/FormFieldRenderer.js +1 -1
- package/dist/components/FormLayout.d.ts +1 -9
- package/dist/components/FormLayout.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledAddressField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledAddressField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledAddressField.js +1 -0
- package/dist/components/controlled/complex/ControlledDateField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledDateField.js +1 -0
- package/dist/components/controlled/complex/ControlledGeoPointField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledGeoPointField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -0
- package/dist/components/controlled/complex/ControlledMapField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledMapField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledMapField.js +1 -0
- package/dist/components/controlled/complex/ControlledMultiInputField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledMultiInputField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -0
- package/dist/components/controlled/complex/ControlledRichTextField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledRichTextField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledRichTextField.js +1 -0
- package/dist/components/controlled/complex/ControlledTimestampField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledTimestampField.js +1 -0
- package/dist/components/controlled/complex/index.d.ts +8 -0
- package/dist/components/controlled/complex/index.d.ts.map +1 -0
- package/dist/components/controlled/complex/index.js +1 -0
- package/dist/components/controlled/file/ControlledDocumentField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledDocumentField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledDocumentField.js +1 -0
- package/dist/components/controlled/file/ControlledFileField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledFileField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledFileField.js +1 -0
- package/dist/components/controlled/file/ControlledImageField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledImageField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledImageField.js +1 -0
- package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -0
- package/dist/components/controlled/file/ControlledMultiFileField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledMultiFileField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledMultiFileField.js +1 -0
- package/dist/components/controlled/file/ControlledMultiImageField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledMultiImageField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledMultiImageField.js +1 -0
- package/dist/components/controlled/file/index.d.ts +7 -0
- package/dist/components/controlled/file/index.d.ts.map +1 -0
- package/dist/components/controlled/file/index.js +1 -0
- package/dist/components/controlled/index.d.ts +12 -0
- package/dist/components/controlled/index.d.ts.map +1 -0
- package/dist/components/controlled/index.js +1 -0
- package/dist/components/controlled/input/ControlledCheckboxField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledCheckboxField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledCheckboxField.js +1 -0
- package/dist/components/controlled/input/ControlledNumberField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledNumberField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledNumberField.js +1 -0
- package/dist/components/controlled/input/ControlledPasswordField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledPasswordField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledPasswordField.js +1 -0
- package/dist/components/controlled/input/ControlledPhoneField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledPhoneField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledPhoneField.js +1 -0
- package/dist/components/controlled/input/ControlledRangeField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledRangeField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledRangeField.js +1 -0
- package/dist/components/controlled/input/ControlledSwitchField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledSwitchField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledSwitchField.js +1 -0
- package/dist/components/controlled/input/ControlledTextField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledTextField.js +1 -0
- package/dist/components/controlled/input/ControlledTextareaField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledTextareaField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledTextareaField.js +1 -0
- package/dist/components/controlled/input/index.d.ts +9 -0
- package/dist/components/controlled/input/index.d.ts.map +1 -0
- package/dist/components/controlled/input/index.js +1 -0
- package/dist/components/controlled/select/ControlledComboboxField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledComboboxField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledComboboxField.js +1 -0
- package/dist/components/controlled/select/ControlledDropdownField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledDropdownField.js +1 -0
- package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -0
- package/dist/components/controlled/select/ControlledRadioField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledRadioField.js +1 -0
- package/dist/components/controlled/select/index.d.ts +5 -0
- package/dist/components/controlled/select/index.d.ts.map +1 -0
- package/dist/components/controlled/select/index.js +1 -0
- package/dist/components/controlled/types.d.ts +23 -0
- package/dist/components/controlled/types.d.ts.map +1 -0
- package/dist/components/controlled/types.js +1 -0
- package/dist/components/form/fields/AddressFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/AddressFieldComponent.js +1 -1
- package/dist/components/form/fields/AvatarFieldComponent.d.ts +2 -2
- package/dist/components/form/fields/BadgeFieldComponent.d.ts +2 -2
- package/dist/components/form/fields/ButtonFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/ButtonFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
- package/dist/components/form/fields/ComboboxComponent.d.ts.map +1 -1
- package/dist/components/form/fields/CurrencyFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/CurrencyFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
- package/dist/components/form/fields/DateFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/DateFieldComponent.js +1 -1
- package/dist/components/form/fields/DocumentFieldComponent.d.ts +47 -0
- package/dist/components/form/fields/DocumentFieldComponent.d.ts.map +1 -0
- package/dist/components/form/fields/DocumentFieldComponent.js +1 -0
- package/dist/components/form/fields/DropdownComponent.d.ts.map +1 -1
- package/dist/components/form/fields/DropdownComponent.js +1 -1
- package/dist/components/form/fields/FileFieldComponent.d.ts +31 -15
- package/dist/components/form/fields/FileFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/FileFieldComponent.js +1 -1
- package/dist/components/form/fields/GeoPointFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
- package/dist/components/form/fields/HiddenFieldComponent.d.ts +1 -1
- package/dist/components/form/fields/HiddenFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
- package/dist/components/form/fields/ImageFieldComponent.d.ts +8 -14
- package/dist/components/form/fields/ImageFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ImageFieldComponent.js +1 -1
- package/dist/components/form/fields/MapFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/MapFieldComponent.js +1 -1
- package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
- package/dist/components/form/fields/MultiInputTextFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/MultiInputTextFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
- package/dist/components/form/fields/NumberFieldComponent.d.ts +2 -0
- package/dist/components/form/fields/NumberFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/NumberFieldComponent.js +1 -1
- package/dist/components/form/fields/PasswordFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/PasswordFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/PhoneNumberComponent.d.ts +1 -9
- package/dist/components/form/fields/PhoneNumberComponent.d.ts.map +1 -1
- package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
- package/dist/components/form/fields/RadioFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/RadioFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ReferenceFieldComponent.d.ts +33 -12
- package/dist/components/form/fields/ReferenceFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
- package/dist/components/form/fields/RichTextComponent.d.ts +32 -0
- package/dist/components/form/fields/RichTextComponent.d.ts.map +1 -0
- package/dist/components/form/fields/RichTextComponent.js +1 -0
- package/dist/components/form/fields/SwitchFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/TextAreaComponent.d.ts +1 -9
- package/dist/components/form/fields/TextAreaComponent.d.ts.map +1 -1
- package/dist/components/form/fields/TextAreaComponent.js +1 -1
- package/dist/components/form/fields/TextFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/TextFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/index.d.ts +4 -2
- package/dist/components/form/fields/index.d.ts.map +1 -1
- package/dist/components/form/fields/index.js +1 -1
- package/dist/components/form/fields/internal/TiptapEditor.d.ts +13 -0
- package/dist/components/form/fields/internal/TiptapEditor.d.ts.map +1 -0
- package/dist/components/form/fields/internal/TiptapEditor.js +52 -0
- package/dist/components/form/index.d.ts +10 -0
- package/dist/components/form/index.d.ts.map +1 -0
- package/dist/components/form/index.js +1 -0
- package/dist/components/form/internal/ImageViewerDialog.d.ts +1 -1
- package/dist/components/form/internal/ImageViewerDialog.d.ts.map +1 -1
- package/dist/components/index.d.ts +8 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/contexts/UploadContext.d.ts +16 -0
- package/dist/contexts/UploadContext.d.ts.map +1 -0
- package/dist/contexts/UploadContext.js +1 -0
- package/dist/contexts/index.d.ts +3 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +1 -0
- package/dist/forms/hooks/index.d.ts +2 -0
- package/dist/forms/hooks/index.d.ts.map +1 -1
- package/dist/forms/hooks/index.js +1 -1
- package/dist/forms/hooks/useController.d.ts +29 -0
- package/dist/forms/hooks/useController.d.ts.map +1 -0
- package/dist/forms/hooks/useController.js +1 -0
- package/dist/forms/hooks/useEntityField.d.ts.map +1 -1
- package/dist/forms/hooks/useEntityField.js +1 -1
- package/dist/forms/hooks/useEntityForm.d.ts +8 -76
- package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
- package/dist/forms/hooks/useEntityForm.js +1 -1
- package/dist/forms/index.d.ts +6 -4
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -1
- package/dist/forms/types.d.ts +31 -5
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/utils/getFieldsForOperation.d.ts +5 -5
- package/dist/forms/utils/getFieldsForOperation.d.ts.map +1 -1
- package/dist/forms/utils/getFieldsForOperation.js +1 -1
- package/dist/forms/utils/index.d.ts +9 -5
- package/dist/forms/utils/index.d.ts.map +1 -1
- package/dist/forms/utils/index.js +1 -1
- package/dist/forms/utils/isFieldEditable.d.ts +0 -8
- package/dist/forms/utils/isFieldEditable.d.ts.map +1 -1
- package/dist/forms/utils/optionHelpers.d.ts +54 -0
- package/dist/forms/utils/optionHelpers.d.ts.map +1 -0
- package/dist/forms/utils/optionHelpers.js +1 -0
- package/dist/forms/utils/translateFieldLabel.d.ts +70 -0
- package/dist/forms/utils/translateFieldLabel.d.ts.map +1 -0
- package/dist/forms/utils/translateFieldLabel.js +1 -0
- package/dist/forms/utils/validateEntity.d.ts +5 -2
- package/dist/forms/utils/validateEntity.d.ts.map +1 -1
- package/dist/forms/utils/validateEntity.js +1 -1
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useFileUpload.d.ts +67 -0
- package/dist/hooks/useFileUpload.d.ts.map +1 -0
- package/dist/hooks/useFileUpload.js +1 -0
- package/dist/index.d.ts +15 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/stores/FormStore.d.ts +78 -0
- package/dist/stores/FormStore.d.ts.map +1 -0
- package/dist/stores/FormStore.js +1 -0
- package/dist/stores/UploadStore.d.ts +105 -0
- package/dist/stores/UploadStore.d.ts.map +1 -0
- package/dist/stores/UploadStore.js +1 -0
- package/dist/stores/index.d.ts +11 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/index.js +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/useCrud.d.ts +32 -74
- package/dist/useCrud.d.ts.map +1 -1
- package/dist/useCrud.js +1 -1
- package/dist/useCrudCardList.d.ts +62 -0
- package/dist/useCrudCardList.d.ts.map +1 -0
- package/dist/useCrudCardList.js +1 -0
- package/dist/useCrudList.d.ts +61 -0
- package/dist/useCrudList.d.ts.map +1 -0
- package/dist/useCrudList.js +1 -0
- package/dist/utils/fileStorage.d.ts +58 -0
- package/dist/utils/fileStorage.d.ts.map +1 -0
- package/dist/utils/fileStorage.js +1 -0
- package/dist/utils/imageProcessing.d.ts +1 -1
- package/dist/utils/imageProcessing.d.ts.map +1 -1
- package/dist/utils/imageProcessing.js +1 -1
- package/dist/utils/imageStorage.d.ts +1 -10
- package/dist/utils/imageStorage.d.ts.map +1 -1
- package/dist/utils/imageStorage.js +1 -1
- package/dist/utils/mergeWithOptimistic.d.ts +27 -0
- package/dist/utils/mergeWithOptimistic.d.ts.map +1 -0
- package/dist/utils/mergeWithOptimistic.js +1 -0
- package/dist/utils/uploadValidation.d.ts +37 -0
- package/dist/utils/uploadValidation.d.ts.map +1 -0
- package/dist/utils/uploadValidation.js +1 -0
- package/package.json +22 -5
- package/dist/components/ControlledFields.d.ts +0 -49
- package/dist/components/ControlledFields.d.ts.map +0 -1
- package/dist/components/ControlledFields.js +0 -1
- package/dist/context/FormUploadContext.d.ts +0 -36
- package/dist/context/FormUploadContext.d.ts.map +0 -1
- package/dist/context/FormUploadContext.js +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -1
- package/dist/forms/utils/createEntitySchema.d.ts +0 -53
- package/dist/forms/utils/createEntitySchema.d.ts.map +0 -1
- package/dist/forms/utils/createEntitySchema.js +0 -1
- package/dist/forms/utils/normalizeToFieldConfig.d.ts +0 -47
- package/dist/forms/utils/normalizeToFieldConfig.d.ts.map +0 -1
- 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.
|
|
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
|
|
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
|
|
14
|
-
export {
|
|
15
|
-
export
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAGH,cAAc,WAAW,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
|
|
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":"AAeA;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvE;;GAEG;AACH,UAAU,gBAAgB;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,KACpC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC1D,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAChE,qEAAqE;IACrE,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC5E,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAEjC,8CAA8C;IAC9C,cAAc,EAAE,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,oBAAoB,KAChC,IAAI,CAAC;IACV,qDAAqD;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAG9D,+BAA+B;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,+BAA+B;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,8BAA8B;IAC9B,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,4BAA4B;IAC5B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE,qCAAqC;IACrC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,mCAAmC;IACnC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,uCAAuC;IACvC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAGlC,6CAA6C;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,kDAAkD;IAClD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAG/C,oCAAoC;IACpC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,YAAY,CAAC;IAC/D,sCAAsC;IACtC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,qDAAqD;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,gDAAgD;IAChD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,4BAA4B;IAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAChE;AAQD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,+IAkTzB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,MAU9C,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,OAQ5C,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,MACS,CAAC;AAE/E;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,YAGA,CAAC"}
|
|
@@ -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};
|