@donotdev/crud 0.0.8 → 0.0.10

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 (370) hide show
  1. package/dist/CrudService.d.ts +30 -60
  2. package/dist/CrudService.d.ts.map +1 -1
  3. package/dist/CrudService.js +1 -1
  4. package/dist/CrudStore.d.ts +1 -94
  5. package/dist/CrudStore.d.ts.map +1 -1
  6. package/dist/CrudStore.js +1 -1
  7. package/dist/FieldRegistry.js +1 -1
  8. package/dist/adapters/FirestoreAdapter.d.ts +3 -1
  9. package/dist/adapters/FirestoreAdapter.d.ts.map +1 -1
  10. package/dist/adapters/FirestoreAdapter.js +1 -1
  11. package/dist/adapters/FunctionsAdapter.d.ts +8 -1
  12. package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
  13. package/dist/adapters/FunctionsAdapter.js +1 -1
  14. package/dist/adapters/index.js +1 -1
  15. package/dist/builtinFieldTypes.d.ts +17 -4
  16. package/dist/builtinFieldTypes.d.ts.map +1 -1
  17. package/dist/builtinFieldTypes.js +1 -1
  18. package/dist/components/CrudButton.js +1 -1
  19. package/dist/components/DisplayFieldRenderer.d.ts +2 -0
  20. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  21. package/dist/components/DisplayFieldRenderer.js +1 -1
  22. package/dist/components/EntityDisplayRenderer.d.ts +3 -3
  23. package/dist/components/EntityDisplayRenderer.d.ts.map +1 -1
  24. package/dist/components/EntityDisplayRenderer.js +1 -1
  25. package/dist/components/EntityFilters.d.ts +61 -0
  26. package/dist/components/EntityFilters.d.ts.map +1 -0
  27. package/dist/components/EntityFilters.js +1 -0
  28. package/dist/components/EntityFormRenderer.d.ts +22 -1
  29. package/dist/components/EntityFormRenderer.d.ts.map +1 -1
  30. package/dist/components/EntityFormRenderer.js +1 -1
  31. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  32. package/dist/components/FormFieldRenderer.js +1 -1
  33. package/dist/components/FormLayout.js +1 -1
  34. package/dist/components/controlled/complex/ControlledAddressField.d.ts +3 -0
  35. package/dist/components/controlled/complex/ControlledAddressField.d.ts.map +1 -1
  36. package/dist/components/controlled/complex/ControlledAddressField.js +1 -1
  37. package/dist/components/controlled/complex/ControlledDateField.d.ts +3 -0
  38. package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -1
  39. package/dist/components/controlled/complex/ControlledDateField.js +1 -1
  40. package/dist/components/controlled/complex/ControlledGeoPointField.d.ts +3 -0
  41. package/dist/components/controlled/complex/ControlledGeoPointField.d.ts.map +1 -1
  42. package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -1
  43. package/dist/components/controlled/complex/ControlledMapField.d.ts +3 -0
  44. package/dist/components/controlled/complex/ControlledMapField.d.ts.map +1 -1
  45. package/dist/components/controlled/complex/ControlledMapField.js +1 -1
  46. package/dist/components/controlled/complex/ControlledMultiInputField.d.ts +3 -0
  47. package/dist/components/controlled/complex/ControlledMultiInputField.d.ts.map +1 -1
  48. package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -1
  49. package/dist/components/controlled/complex/ControlledRichTextField.d.ts +3 -0
  50. package/dist/components/controlled/complex/ControlledRichTextField.d.ts.map +1 -1
  51. package/dist/components/controlled/complex/ControlledRichTextField.js +1 -1
  52. package/dist/components/controlled/complex/ControlledTimestampField.d.ts +3 -0
  53. package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -1
  54. package/dist/components/controlled/complex/ControlledTimestampField.js +1 -1
  55. package/dist/components/controlled/complex/index.d.ts.map +1 -1
  56. package/dist/components/controlled/complex/index.js +1 -1
  57. package/dist/components/controlled/file/ControlledDocumentField.d.ts +3 -0
  58. package/dist/components/controlled/file/ControlledDocumentField.d.ts.map +1 -1
  59. package/dist/components/controlled/file/ControlledDocumentField.js +1 -1
  60. package/dist/components/controlled/file/ControlledFileField.d.ts +3 -0
  61. package/dist/components/controlled/file/ControlledFileField.d.ts.map +1 -1
  62. package/dist/components/controlled/file/ControlledFileField.js +1 -1
  63. package/dist/components/controlled/file/ControlledImageField.d.ts +3 -0
  64. package/dist/components/controlled/file/ControlledImageField.d.ts.map +1 -1
  65. package/dist/components/controlled/file/ControlledImageField.js +1 -1
  66. package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts +3 -0
  67. package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts.map +1 -1
  68. package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -1
  69. package/dist/components/controlled/file/ControlledMultiFileField.d.ts +3 -0
  70. package/dist/components/controlled/file/ControlledMultiFileField.d.ts.map +1 -1
  71. package/dist/components/controlled/file/ControlledMultiFileField.js +1 -1
  72. package/dist/components/controlled/file/ControlledMultiImageField.d.ts +3 -0
  73. package/dist/components/controlled/file/ControlledMultiImageField.d.ts.map +1 -1
  74. package/dist/components/controlled/file/ControlledMultiImageField.js +1 -1
  75. package/dist/components/controlled/file/index.d.ts.map +1 -1
  76. package/dist/components/controlled/file/index.js +1 -1
  77. package/dist/components/controlled/index.d.ts +4 -0
  78. package/dist/components/controlled/index.d.ts.map +1 -1
  79. package/dist/components/controlled/index.js +1 -1
  80. package/dist/components/controlled/input/ControlledCheckboxField.d.ts +3 -0
  81. package/dist/components/controlled/input/ControlledCheckboxField.d.ts.map +1 -1
  82. package/dist/components/controlled/input/ControlledCheckboxField.js +1 -1
  83. package/dist/components/controlled/input/ControlledCurrencyField.d.ts +8 -0
  84. package/dist/components/controlled/input/ControlledCurrencyField.d.ts.map +1 -0
  85. package/dist/components/controlled/input/ControlledCurrencyField.js +1 -0
  86. package/dist/components/controlled/input/ControlledGdprConsentField.d.ts +8 -0
  87. package/dist/components/controlled/input/ControlledGdprConsentField.d.ts.map +1 -0
  88. package/dist/components/controlled/input/ControlledGdprConsentField.js +1 -0
  89. package/dist/components/controlled/input/ControlledNumberField.d.ts +3 -0
  90. package/dist/components/controlled/input/ControlledNumberField.d.ts.map +1 -1
  91. package/dist/components/controlled/input/ControlledNumberField.js +1 -1
  92. package/dist/components/controlled/input/ControlledPasswordField.d.ts +3 -0
  93. package/dist/components/controlled/input/ControlledPasswordField.d.ts.map +1 -1
  94. package/dist/components/controlled/input/ControlledPasswordField.js +1 -1
  95. package/dist/components/controlled/input/ControlledPhoneField.d.ts +3 -0
  96. package/dist/components/controlled/input/ControlledPhoneField.d.ts.map +1 -1
  97. package/dist/components/controlled/input/ControlledPhoneField.js +1 -1
  98. package/dist/components/controlled/input/ControlledPriceField.d.ts +8 -0
  99. package/dist/components/controlled/input/ControlledPriceField.d.ts.map +1 -0
  100. package/dist/components/controlled/input/ControlledPriceField.js +1 -0
  101. package/dist/components/controlled/input/ControlledRangeField.d.ts +3 -0
  102. package/dist/components/controlled/input/ControlledRangeField.d.ts.map +1 -1
  103. package/dist/components/controlled/input/ControlledRangeField.js +1 -1
  104. package/dist/components/controlled/input/ControlledRatingField.d.ts +8 -0
  105. package/dist/components/controlled/input/ControlledRatingField.d.ts.map +1 -0
  106. package/dist/components/controlled/input/ControlledRatingField.js +1 -0
  107. package/dist/components/controlled/input/ControlledSwitchField.d.ts +3 -0
  108. package/dist/components/controlled/input/ControlledSwitchField.d.ts.map +1 -1
  109. package/dist/components/controlled/input/ControlledSwitchField.js +1 -1
  110. package/dist/components/controlled/input/ControlledTextField.d.ts +3 -0
  111. package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -1
  112. package/dist/components/controlled/input/ControlledTextField.js +1 -1
  113. package/dist/components/controlled/input/ControlledTextareaField.d.ts +3 -0
  114. package/dist/components/controlled/input/ControlledTextareaField.d.ts.map +1 -1
  115. package/dist/components/controlled/input/ControlledTextareaField.js +1 -1
  116. package/dist/components/controlled/input/index.d.ts +4 -0
  117. package/dist/components/controlled/input/index.d.ts.map +1 -1
  118. package/dist/components/controlled/input/index.js +1 -1
  119. package/dist/components/controlled/select/ControlledComboboxField.d.ts +4 -0
  120. package/dist/components/controlled/select/ControlledComboboxField.d.ts.map +1 -1
  121. package/dist/components/controlled/select/ControlledComboboxField.js +1 -1
  122. package/dist/components/controlled/select/ControlledDropdownField.d.ts +4 -0
  123. package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -1
  124. package/dist/components/controlled/select/ControlledDropdownField.js +1 -1
  125. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +4 -0
  126. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -1
  127. package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -1
  128. package/dist/components/controlled/select/ControlledRadioField.d.ts +4 -0
  129. package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -1
  130. package/dist/components/controlled/select/ControlledRadioField.js +1 -1
  131. package/dist/components/controlled/select/ControlledYearField.d.ts +9 -0
  132. package/dist/components/controlled/select/ControlledYearField.d.ts.map +1 -0
  133. package/dist/components/controlled/select/ControlledYearField.js +1 -0
  134. package/dist/components/controlled/select/index.d.ts +1 -0
  135. package/dist/components/controlled/select/index.d.ts.map +1 -1
  136. package/dist/components/controlled/select/index.js +1 -1
  137. package/dist/components/controlled/types.d.ts +6 -0
  138. package/dist/components/controlled/types.d.ts.map +1 -1
  139. package/dist/components/controlled/types.js +1 -1
  140. package/dist/components/fields/display/AvatarFieldDisplay.d.ts +23 -0
  141. package/dist/components/fields/display/AvatarFieldDisplay.d.ts.map +1 -0
  142. package/dist/components/fields/display/AvatarFieldDisplay.js +1 -0
  143. package/dist/components/fields/display/BadgeFieldDisplay.d.ts +21 -0
  144. package/dist/components/fields/display/BadgeFieldDisplay.d.ts.map +1 -0
  145. package/dist/components/fields/display/BadgeFieldDisplay.js +1 -0
  146. package/dist/components/fields/display/ButtonFieldDisplay.d.ts +29 -0
  147. package/dist/components/fields/display/ButtonFieldDisplay.d.ts.map +1 -0
  148. package/dist/components/fields/display/ButtonFieldDisplay.js +1 -0
  149. package/dist/components/fields/display/CheckboxFieldDisplay.d.ts +21 -0
  150. package/dist/components/fields/display/CheckboxFieldDisplay.d.ts.map +1 -0
  151. package/dist/components/fields/display/CheckboxFieldDisplay.js +1 -0
  152. package/dist/components/fields/display/DateFieldDisplay.d.ts +24 -0
  153. package/dist/components/fields/display/DateFieldDisplay.d.ts.map +1 -0
  154. package/dist/components/fields/display/DateFieldDisplay.js +1 -0
  155. package/dist/components/fields/display/DropdownDisplay.d.ts +21 -0
  156. package/dist/components/fields/display/DropdownDisplay.d.ts.map +1 -0
  157. package/dist/components/fields/display/DropdownDisplay.js +1 -0
  158. package/dist/components/fields/display/FileFieldDisplay.d.ts +21 -0
  159. package/dist/components/fields/display/FileFieldDisplay.d.ts.map +1 -0
  160. package/dist/components/fields/display/FileFieldDisplay.js +1 -0
  161. package/dist/components/fields/display/GeoPointFieldDisplay.d.ts +25 -0
  162. package/dist/components/fields/display/GeoPointFieldDisplay.d.ts.map +1 -0
  163. package/dist/components/fields/display/GeoPointFieldDisplay.js +1 -0
  164. package/dist/components/fields/display/HiddenFieldDisplay.d.ts +30 -0
  165. package/dist/components/fields/display/HiddenFieldDisplay.d.ts.map +1 -0
  166. package/dist/components/fields/display/HiddenFieldDisplay.js +1 -0
  167. package/dist/components/fields/display/ImageFieldDisplay.d.ts +24 -0
  168. package/dist/components/fields/display/ImageFieldDisplay.d.ts.map +1 -0
  169. package/dist/components/fields/display/ImageFieldDisplay.js +1 -0
  170. package/dist/components/fields/display/LinkFieldDisplay.d.ts +22 -0
  171. package/dist/components/fields/display/LinkFieldDisplay.d.ts.map +1 -0
  172. package/dist/components/fields/display/LinkFieldDisplay.js +1 -0
  173. package/dist/components/fields/display/MapFieldDisplay.d.ts +25 -0
  174. package/dist/components/fields/display/MapFieldDisplay.d.ts.map +1 -0
  175. package/dist/components/fields/display/MapFieldDisplay.js +1 -0
  176. package/dist/components/fields/display/MultiDropdownDisplay.d.ts +22 -0
  177. package/dist/components/fields/display/MultiDropdownDisplay.d.ts.map +1 -0
  178. package/dist/components/fields/display/MultiDropdownDisplay.js +1 -0
  179. package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts +22 -0
  180. package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts.map +1 -0
  181. package/dist/components/fields/display/MultiInputTextFieldDisplay.js +1 -0
  182. package/dist/components/fields/display/NumberFieldDisplay.d.ts +24 -0
  183. package/dist/components/fields/display/NumberFieldDisplay.d.ts.map +1 -0
  184. package/dist/components/fields/display/NumberFieldDisplay.js +1 -0
  185. package/dist/components/fields/display/PasswordFieldDisplay.d.ts +24 -0
  186. package/dist/components/fields/display/PasswordFieldDisplay.d.ts.map +1 -0
  187. package/dist/components/fields/display/PasswordFieldDisplay.js +1 -0
  188. package/dist/components/fields/display/PhoneNumberDisplay.d.ts +22 -0
  189. package/dist/components/fields/display/PhoneNumberDisplay.d.ts.map +1 -0
  190. package/dist/components/fields/display/PhoneNumberDisplay.js +1 -0
  191. package/dist/components/fields/display/RadioFieldDisplay.d.ts +22 -0
  192. package/dist/components/fields/display/RadioFieldDisplay.d.ts.map +1 -0
  193. package/dist/components/fields/display/RadioFieldDisplay.js +1 -0
  194. package/dist/components/fields/display/RangeFieldDisplay.d.ts +22 -0
  195. package/dist/components/fields/display/RangeFieldDisplay.d.ts.map +1 -0
  196. package/dist/components/fields/display/RangeFieldDisplay.js +1 -0
  197. package/dist/components/fields/display/ReferenceFieldDisplay.d.ts +22 -0
  198. package/dist/components/fields/display/ReferenceFieldDisplay.d.ts.map +1 -0
  199. package/dist/components/fields/display/ReferenceFieldDisplay.js +1 -0
  200. package/dist/components/fields/display/RichTextDisplay.d.ts +25 -0
  201. package/dist/components/fields/display/RichTextDisplay.d.ts.map +1 -0
  202. package/dist/components/fields/display/RichTextDisplay.js +61 -0
  203. package/dist/components/fields/display/TextAreaDisplay.d.ts +22 -0
  204. package/dist/components/fields/display/TextAreaDisplay.d.ts.map +1 -0
  205. package/dist/components/fields/display/TextAreaDisplay.js +1 -0
  206. package/dist/components/fields/display/TextFieldDisplay.d.ts +42 -0
  207. package/dist/components/fields/display/TextFieldDisplay.d.ts.map +1 -0
  208. package/dist/components/fields/display/TextFieldDisplay.js +1 -0
  209. package/dist/components/fields/display/TimestampFieldDisplay.d.ts +22 -0
  210. package/dist/components/fields/display/TimestampFieldDisplay.d.ts.map +1 -0
  211. package/dist/components/fields/display/TimestampFieldDisplay.js +1 -0
  212. package/dist/components/fields/display/index.d.ts +32 -0
  213. package/dist/components/fields/display/index.d.ts.map +1 -0
  214. package/dist/components/fields/display/index.js +1 -0
  215. package/dist/components/form/fields/AddressFieldComponent.js +1 -1
  216. package/dist/components/form/fields/AvatarFieldComponent.js +1 -1
  217. package/dist/components/form/fields/BadgeFieldComponent.js +1 -1
  218. package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
  219. package/dist/components/form/fields/CheckboxFieldComponent.d.ts +3 -3
  220. package/dist/components/form/fields/CheckboxFieldComponent.d.ts.map +1 -1
  221. package/dist/components/form/fields/CheckboxFieldComponent.js +1 -1
  222. package/dist/components/form/fields/ComboboxComponent.d.ts +6 -0
  223. package/dist/components/form/fields/ComboboxComponent.d.ts.map +1 -1
  224. package/dist/components/form/fields/ComboboxComponent.js +1 -1
  225. package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
  226. package/dist/components/form/fields/DateFieldComponent.js +1 -1
  227. package/dist/components/form/fields/DocumentFieldComponent.d.ts.map +1 -1
  228. package/dist/components/form/fields/DocumentFieldComponent.js +1 -1
  229. package/dist/components/form/fields/DropdownComponent.js +1 -1
  230. package/dist/components/form/fields/FileFieldComponent.d.ts.map +1 -1
  231. package/dist/components/form/fields/FileFieldComponent.js +1 -1
  232. package/dist/components/form/fields/GdprConsentFieldComponent.d.ts +26 -0
  233. package/dist/components/form/fields/GdprConsentFieldComponent.d.ts.map +1 -0
  234. package/dist/components/form/fields/GdprConsentFieldComponent.js +1 -0
  235. package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
  236. package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
  237. package/dist/components/form/fields/ImageFieldComponent.d.ts +3 -2
  238. package/dist/components/form/fields/ImageFieldComponent.d.ts.map +1 -1
  239. package/dist/components/form/fields/ImageFieldComponent.js +1 -1
  240. package/dist/components/form/fields/MapFieldComponent.js +1 -1
  241. package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
  242. package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
  243. package/dist/components/form/fields/NumberFieldComponent.js +1 -1
  244. package/dist/components/form/fields/PasswordFieldComponent.js +1 -1
  245. package/dist/components/form/fields/PhoneNumberComponent.d.ts.map +1 -1
  246. package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
  247. package/dist/components/form/fields/PriceFieldComponent.d.ts +34 -0
  248. package/dist/components/form/fields/PriceFieldComponent.d.ts.map +1 -0
  249. package/dist/components/form/fields/PriceFieldComponent.js +1 -0
  250. package/dist/components/form/fields/RadioFieldComponent.js +1 -1
  251. package/dist/components/form/fields/RangeFieldComponent.js +1 -1
  252. package/dist/components/form/fields/RatingFieldComponent.d.ts +37 -0
  253. package/dist/components/form/fields/RatingFieldComponent.d.ts.map +1 -0
  254. package/dist/components/form/fields/RatingFieldComponent.js +1 -0
  255. package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
  256. package/dist/components/form/fields/RichTextComponent.d.ts +2 -21
  257. package/dist/components/form/fields/RichTextComponent.d.ts.map +1 -1
  258. package/dist/components/form/fields/RichTextComponent.js +1 -1
  259. package/dist/components/form/fields/SwitchFieldComponent.js +1 -1
  260. package/dist/components/form/fields/TextAreaComponent.d.ts.map +1 -1
  261. package/dist/components/form/fields/TextAreaComponent.js +1 -1
  262. package/dist/components/form/fields/TextFieldComponent.js +1 -1
  263. package/dist/components/form/fields/TimestampFieldComponent.js +1 -1
  264. package/dist/components/form/fields/index.d.ts +7 -1
  265. package/dist/components/form/fields/index.d.ts.map +1 -1
  266. package/dist/components/form/fields/index.js +1 -1
  267. package/dist/components/form/fields/internal/TiptapEditor.d.ts +1 -1
  268. package/dist/components/form/fields/internal/TiptapEditor.d.ts.map +1 -1
  269. package/dist/components/form/fields/internal/TiptapEditor.js +2 -2
  270. package/dist/components/form/fields/types.d.ts +33 -0
  271. package/dist/components/form/fields/types.d.ts.map +1 -0
  272. package/dist/components/form/fields/types.js +0 -0
  273. package/dist/components/form/internal/ImageViewerDialog.d.ts +2 -1
  274. package/dist/components/form/internal/ImageViewerDialog.d.ts.map +1 -1
  275. package/dist/components/form/internal/ImageViewerDialog.js +1 -1
  276. package/dist/components/index.d.ts +4 -8
  277. package/dist/components/index.d.ts.map +1 -1
  278. package/dist/components/index.js +1 -1
  279. package/dist/contexts/UploadContext.d.ts.map +1 -1
  280. package/dist/contexts/UploadContext.js +1 -1
  281. package/dist/contexts/index.js +1 -1
  282. package/dist/fieldTypeRegistry.d.ts +92 -0
  283. package/dist/fieldTypeRegistry.d.ts.map +1 -0
  284. package/dist/fieldTypeRegistry.js +1 -0
  285. package/dist/forms/hooks/index.js +1 -1
  286. package/dist/forms/hooks/useController.js +1 -1
  287. package/dist/forms/hooks/useEntityField.js +1 -1
  288. package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
  289. package/dist/forms/hooks/useEntityForm.js +1 -1
  290. package/dist/forms/index.d.ts +2 -2
  291. package/dist/forms/index.d.ts.map +1 -1
  292. package/dist/forms/index.js +1 -1
  293. package/dist/forms/types.d.ts +15 -0
  294. package/dist/forms/types.d.ts.map +1 -1
  295. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  296. package/dist/forms/utils/index.d.ts +0 -2
  297. package/dist/forms/utils/index.d.ts.map +1 -1
  298. package/dist/forms/utils/index.js +1 -1
  299. package/dist/forms/utils/isFieldEditable.js +1 -1
  300. package/dist/forms/utils/translateFieldLabel.js +1 -1
  301. package/dist/forms/utils/validateEntity.js +1 -1
  302. package/dist/hooks/index.d.ts +5 -0
  303. package/dist/hooks/index.d.ts.map +1 -1
  304. package/dist/hooks/index.js +1 -1
  305. package/dist/hooks/useEntityFavorites.d.ts +53 -0
  306. package/dist/hooks/useEntityFavorites.d.ts.map +1 -0
  307. package/dist/hooks/useEntityFavorites.js +1 -0
  308. package/dist/hooks/useFileUpload.d.ts.map +1 -1
  309. package/dist/hooks/useFileUpload.js +1 -1
  310. package/dist/hooks/useFormNavigationGuard.d.ts +34 -0
  311. package/dist/hooks/useFormNavigationGuard.d.ts.map +1 -0
  312. package/dist/hooks/useFormNavigationGuard.js +1 -0
  313. package/dist/hooks/useRelatedItems.d.ts +37 -0
  314. package/dist/hooks/useRelatedItems.d.ts.map +1 -0
  315. package/dist/hooks/useRelatedItems.js +1 -0
  316. package/dist/hooks/useUnsavedChangesWarning.d.ts +51 -0
  317. package/dist/hooks/useUnsavedChangesWarning.d.ts.map +1 -0
  318. package/dist/hooks/useUnsavedChangesWarning.js +1 -0
  319. package/dist/index.d.ts +9 -6
  320. package/dist/index.d.ts.map +1 -1
  321. package/dist/index.js +1 -1
  322. package/dist/registerBuiltinFieldTypes.d.ts +6 -0
  323. package/dist/registerBuiltinFieldTypes.d.ts.map +1 -0
  324. package/dist/registerBuiltinFieldTypes.js +1 -0
  325. package/dist/stores/FormStore.d.ts +17 -0
  326. package/dist/stores/FormStore.d.ts.map +1 -1
  327. package/dist/stores/FormStore.js +1 -1
  328. package/dist/stores/UploadStore.js +1 -1
  329. package/dist/stores/index.d.ts +1 -1
  330. package/dist/stores/index.d.ts.map +1 -1
  331. package/dist/stores/index.js +1 -1
  332. package/dist/tsconfig.tsbuildinfo +1 -1
  333. package/dist/types.d.ts +202 -0
  334. package/dist/types.d.ts.map +1 -0
  335. package/dist/types.js +0 -0
  336. package/dist/useBaseCrudList.d.ts +53 -0
  337. package/dist/useBaseCrudList.d.ts.map +1 -0
  338. package/dist/useBaseCrudList.js +1 -0
  339. package/dist/useCrud.d.ts +4 -8
  340. package/dist/useCrud.d.ts.map +1 -1
  341. package/dist/useCrud.js +1 -1
  342. package/dist/useCrudCardList.d.ts +10 -4
  343. package/dist/useCrudCardList.d.ts.map +1 -1
  344. package/dist/useCrudCardList.js +1 -1
  345. package/dist/useCrudList.d.ts +19 -5
  346. package/dist/useCrudList.d.ts.map +1 -1
  347. package/dist/useCrudList.js +1 -1
  348. package/dist/utils/collections.js +1 -1
  349. package/dist/utils/fileStorage.js +1 -1
  350. package/dist/utils/imageProcessing.js +1 -1
  351. package/dist/utils/imageStorage.js +1 -1
  352. package/dist/utils/imageUtils.js +1 -1
  353. package/dist/utils/mergeWithOptimistic.d.ts +5 -6
  354. package/dist/utils/mergeWithOptimistic.d.ts.map +1 -1
  355. package/dist/utils/mergeWithOptimistic.js +1 -1
  356. package/dist/utils/scopeUtils.d.ts +38 -0
  357. package/dist/utils/scopeUtils.d.ts.map +1 -0
  358. package/dist/utils/scopeUtils.js +1 -0
  359. package/dist/utils/uploadValidation.d.ts.map +1 -1
  360. package/dist/utils/uploadValidation.js +1 -1
  361. package/package.json +24 -17
  362. package/dist/components/EntityCardList.d.ts +0 -27
  363. package/dist/components/EntityCardList.d.ts.map +0 -1
  364. package/dist/components/EntityCardList.js +0 -1
  365. package/dist/components/EntityList.d.ts +0 -24
  366. package/dist/components/EntityList.d.ts.map +0 -1
  367. package/dist/components/EntityList.js +0 -1
  368. package/dist/forms/utils/optionHelpers.d.ts +0 -54
  369. package/dist/forms/utils/optionHelpers.d.ts.map +0 -1
  370. package/dist/forms/utils/optionHelpers.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TiptapEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/fields/internal/TiptapEditor.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,OAAO,CAAC;AAQxD;;;;;;;GAOG;AACH,QAAA,MAAM,YAAY,EAAE,aAAa,CAAC,sBAAsB,CA+MvD,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"TiptapEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/fields/internal/TiptapEditor.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,OAAO,CAAC;AAQxD;;;;;;;GAOG;AACH,QAAA,MAAM,YAAY,EAAE,aAAa,CAAC,sBAAsB,CA+MvD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
- "use client";import{jsx as n,jsxs as M}from"react/jsx-runtime";import{useEffect as y,useState as r,useMemo as j}from"react";import{Stack as L}from"@donotdev/components";const H=({label:P,value:o="",onChange:f,error:a,helperText:m,required:E,disabled:s,placeholder:g,className:b})=>{const[i,x]=r(!1),[d,T]=r(!1),[l,z]=r(null),[h,C]=r(null),[c,S]=r(null),[p,w]=r(null);y(()=>{if(i||d)return;(async()=>{try{const[{useEditor:e,EditorContent:u},k,F]=await Promise.all([import("@tiptap/react"),import("@tiptap/starter-kit"),import("@tiptap/extension-placeholder")]);z(e),C(u),S(k.default),w(F.default),x(!0)}catch(e){e instanceof Error&&(e.message.includes("Cannot find module '@tiptap")||e.message.includes("Failed to fetch dynamically imported module")),T(!0)}})()},[i,d]);const t=j(()=>!i||!l||!c||!p?null:l({extensions:[c.configure({heading:{levels:[1,2,3]}}),p.configure({placeholder:g||"Start typing..."})],content:o,editable:!s,onUpdate:({editor:v})=>{const u={target:{value:v.getHTML()}};f(u)}}),[i,l,c,p,o,s,g,f]);return y(()=>{t&&o!==t.getHTML()&&t.commands.setContent(o||"")},[o,t]),d||!i||!t||!h?null:M(L,{gap:"tight",children:[M("label",{style:{fontSize:"var(--font-size-sm)",fontWeight:500,color:a?"var(--destructive-foreground)":"var(--foreground)"},children:[P,E&&n("span",{style:{color:"var(--destructive)"},children:" *"})]}),n("div",{className:b,"data-variant":a?"destructive":void 0,style:{border:"var(--border-hairline) solid",borderColor:a?"var(--destructive)":"var(--line-2)",borderRadius:"var(--radius-interactive)",padding:"var(--gap-md)",minHeight:"200px",backgroundColor:s?"var(--muted)":"transparent",opacity:s?"var(--opacity-muted)":void 0},children:n(h,{editor:t})}),m&&n("p",{style:{fontSize:"var(--font-size-xs)",color:a?"var(--destructive-foreground)":"var(--muted-foreground)"},children:m}),n("style",{children:`
1
+ "use client";import{jsx as n,jsxs as h}from"react/jsx-runtime";import{useEffect as y,useState as o,useMemo as T}from"react";import{Stack as j}from"@donotdev/components";const L=({label:M,value:t="",onChange:f,error:a,helperText:g,required:b,disabled:l,placeholder:v,className:P})=>{const[i,x]=o(!1),[s,z]=o(!1),[d,C]=o(null),[p,w]=o(null),[c,S]=o(null),[u,k]=o(null);y(()=>{i||s||(async()=>{try{const[{useEditor:r,EditorContent:m},E,H]=await Promise.all([import("@tiptap/react"),import("@tiptap/starter-kit"),import("@tiptap/extension-placeholder")]);C(r),w(m),S(E.default),k(H.default),x(!0)}catch(r){r instanceof Error&&(r.message.includes("Cannot find module '@tiptap")||r.message.includes("Failed to fetch dynamically imported module")),z(!0)}})()},[i,s]);const e=T(()=>!i||!d||!c||!u?null:d({extensions:[c.configure({heading:{levels:[1,2,3]}}),u.configure({placeholder:v||"Start typing..."})],content:t,editable:!l,onUpdate:({editor:r})=>{const m={target:{value:r.getHTML()}};f(m)}}),[i,d,c,u,t,l,v,f]);return y(()=>{e&&t!==e.getHTML()&&e.commands.setContent(t||"")},[t,e]),s||!i||!e||!p?null:h(j,{gap:"tight",children:[h("label",{style:{fontSize:"var(--font-size-sm)",fontWeight:500,color:a?"var(--destructive-foreground)":"var(--foreground)"},children:[M,b&&n("span",{style:{color:"var(--destructive)"},children:" *"})]}),n("div",{className:P,"data-variant":a?"destructive":void 0,style:{border:"var(--border-hairline) solid",borderColor:a?"var(--destructive)":"var(--line-2)",borderRadius:"var(--radius-interactive)",padding:"var(--gap-md)",minHeight:"200px",backgroundColor:l?"var(--muted)":"transparent",opacity:l?"var(--opacity-muted)":void 0},children:n(p,{editor:e})}),g&&n("p",{style:{fontSize:"var(--font-size-xs)",color:a?"var(--destructive-foreground)":"var(--muted-foreground)"},children:g}),n("style",{children:`
2
2
  .ProseMirror {
3
3
  outline: none;
4
4
  min-height: 150px;
@@ -49,4 +49,4 @@
49
49
  margin: 0.5em 0;
50
50
  color: var(--muted-foreground);
51
51
  }
52
- `})]})};var _=H;export{_ as default};
52
+ `})]})};var q=L;export{q as default};
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @fileoverview Shared Field Component Types
3
+ * @description Types shared between field components to break circular dependencies
4
+ *
5
+ * @version 0.0.1
6
+ * @since 0.0.1
7
+ * @author AMBROISE PARK Consulting
8
+ */
9
+ import type { ChangeEvent } from 'react';
10
+ /**
11
+ * Rich Text Field Component Props
12
+ */
13
+ export interface RichTextComponentProps {
14
+ /** Field label */
15
+ label: string;
16
+ /** Current HTML value */
17
+ value?: string;
18
+ /** Change handler */
19
+ onChange: (event: ChangeEvent<HTMLTextAreaElement>) => void;
20
+ /** Error state */
21
+ error?: string;
22
+ /** Helper text */
23
+ helperText?: string;
24
+ /** Required field */
25
+ required?: boolean;
26
+ /** Disabled state */
27
+ disabled?: boolean;
28
+ /** Placeholder */
29
+ placeholder?: string;
30
+ /** Optional className */
31
+ className?: string;
32
+ }
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/form/fields/types.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAC5D,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
File without changes
@@ -18,7 +18,8 @@ export interface ImageViewerDialogProps {
18
18
  multiple?: boolean;
19
19
  }
20
20
  /**
21
- * ImageViewerDialog - Full-size image preview with edit controls (Crop, Rotate, Metadata)
21
+ * ImageViewerDialog - Side sheet for image viewing and editing
22
+ * Uses react-easy-crop for smooth, touch-friendly cropping
22
23
  */
23
24
  export declare function ImageViewerDialog({ images, selectedIndex, open, onClose, onUpdate, onDelete, onNavigate, multiple, }: ImageViewerDialogProps): import("react/jsx-runtime").JSX.Element | null;
24
25
  export default ImageViewerDialog;
@@ -1 +1 @@
1
- {"version":3,"file":"ImageViewerDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/form/internal/ImageViewerDialog.tsx"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,WAAW,sBAAsB;IACrC,sBAAsB;IACtB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,2BAA2B;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,qBAAqB;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sBAAsB;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACnE,sBAAsB;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,wBAAwB;IACxB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,aAAa,EACb,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAgB,GACjB,EAAE,sBAAsB,kDAiXxB;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"ImageViewerDialog.d.ts","sourceRoot":"","sources":["../../../../src/components/form/internal/ImageViewerDialog.tsx"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,WAAW,sBAAsB;IACrC,sBAAsB;IACtB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,2BAA2B;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,qBAAqB;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sBAAsB;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACnE,sBAAsB;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,wBAAwB;IACxB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAYD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,aAAa,EACb,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAgB,GACjB,EAAE,sBAAsB,kDAyexB;AAED,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- "use client";import{jsx as e,Fragment as Y,jsxs as a}from"react/jsx-runtime";import{ChevronLeft as Z,ChevronRight as q,RotateCw as J,Trash2 as K,Crop as Q,Eye as X,Save as ee,Undo2 as te}from"lucide-react";import{useCallback as O,useEffect as ae,useState as c}from"react";import ie from"react-easy-crop";import{Button as l,BUTTON_VARIANT as s,Dialog as oe,Stack as r,Text as T,Input as V,Label as f,Slider as F,Tabs as re}from"@donotdev/components";import{processImage as ne}from"../../../utils/imageProcessing";import{createPreviewURL as le,revokePreviewURL as se}from"../../../utils/imageUtils";function ce({images:n,selectedIndex:i,open:N,onClose:C,onUpdate:A,onDelete:U,onNavigate:p,multiple:d=!1}){const[R,m]=c("view"),[j,x]=c({x:0,y:0}),[P,b]=c(1),[u,h]=c(0),[k,z]=c(null),[L,$]=c(!1),[w,S]=c({alt:"",caption:""}),[B,v]=c(!1),o=n[i],H=d&&i>0,W=d&&i<n.length-1;ae(()=>{o&&(x({x:0,y:0}),b(1),h(o.rotation*90),S({alt:"",caption:""}),m("view"),v(!1))},[o]);const D=(t,g)=>{S(y=>({...y,[t]:g}))},G=O((t,g)=>{z(g)},[]),M=async()=>{if(!(!o||!k)){$(!0);try{const t=await ne(o.file,{crop:k,maxWidth:2048,maxHeight:2048,quality:.95}),g=new File([t.fullBlob],o.file.name,{type:"image/webp"}),y=le(g);A(i,{file:g,previewURL:y,uploaded:null,uploadProgress:null,error:null,rotation:0}),o.previewURL.startsWith("blob:")&&se(o.previewURL),m("view")}catch{}finally{$(!1)}}},_=O(()=>{U(i),v(!1),n.length===1?C():i>=n.length-1&&p(i-1)},[i,n.length,U,C,p]);if(!o)return null;const E=o.uploadProgress!==null&&o.uploadProgress<100,I=o.previewURL||o.uploaded?.fullUrl;return e(oe,{open:N,onOpenChange:t=>!t&&C(),title:d?`Image ${i+1} of ${n.length}`:"Image Details",description:d?`View, edit, and manage image ${i+1} of ${n.length}. Use the tabs to view metadata or edit the image with crop and rotation tools.`:"View, edit, and manage this image. Use the tabs to view metadata or edit the image with crop and rotation tools.",showClose:!0,children:a("div",{style:{display:"grid",gridTemplateColumns:"1fr 300px",gap:"var(--gap-lg)",height:"60vh",minHeight:"500px"},children:[e("div",{style:{position:"relative",backgroundColor:"var(--surface-muted)",borderRadius:"var(--radius-lg)",overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center"},children:R==="edit"?e("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0},children:e(ie,{image:I,crop:j,zoom:P,rotation:u,onCropChange:x,onCropComplete:G,onZoomChange:b,onRotationChange:h})}):a(Y,{children:[H&&e(l,{variant:s.GHOST,icon:Z,onClick:()=>p(i-1),"aria-label":"Previous image",style:{position:"absolute",left:"var(--gap-sm)",zIndex:10,backgroundColor:"rgba(0,0,0,0.3)",color:"white",border:"none"}}),e("img",{src:I,alt:w.alt||o.file.name||`Image ${i+1}${d?` of ${n.length}`:""}`,loading:"eager",decoding:"async",fetchPriority:"high",style:{maxWidth:"100%",maxHeight:"100%",objectFit:"contain",transform:`rotate(${u}deg)`},"aria-label":`Image ${i+1}${d?` of ${n.length}`:""}`}),W&&e(l,{variant:s.GHOST,icon:q,onClick:()=>p(i+1),"aria-label":"Next image",style:{position:"absolute",right:"var(--gap-sm)",zIndex:10,backgroundColor:"rgba(0,0,0,0.3)",color:"white",border:"none"}})]})}),e(r,{gap:"large",style:{overflowY:"auto",height:"100%"},children:e(re,{value:R,onValueChange:t=>m(t),items:[{value:"view",label:a(r,{direction:"row",align:"center",gap:"tight",children:[e(X,{className:"dndev-size-sm"}),e(T,{children:"View"})]}),content:a(r,{gap:"medium",style:{paddingTop:"var(--gap-md)"},children:[a(r,{gap:"tight",children:[e(f,{htmlFor:"img-alt",children:"Alt Text (Accessibility)"}),e(V,{id:"img-alt",value:w.alt,onChange:t=>D("alt",t.target.value),placeholder:"Describe the image..."})]}),a(r,{gap:"tight",children:[e(f,{htmlFor:"img-caption",children:"Caption"}),e(V,{id:"img-caption",value:w.caption,onChange:t=>D("caption",t.target.value),placeholder:"Image caption or credits"})]}),e("div",{style:{marginTop:"auto",paddingTop:"var(--gap-lg)"},children:B?a(r,{gap:"medium",style:{border:"1px solid var(--destructive)",padding:"var(--gap-md)",borderRadius:"var(--radius-md)"},children:[e(T,{variant:"destructive",level:"small",children:"Permanently delete this image?"}),a(r,{direction:"row",gap:"tight",children:[e(l,{variant:s.DESTRUCTIVE,onClick:_,fullWidth:!0,children:"Yes, Delete"}),e(l,{variant:s.OUTLINE,onClick:()=>v(!1),fullWidth:!0,children:"Cancel"})]})]}):e(l,{variant:s.OUTLINE,className:"text-destructive hover:bg-destructive/10",icon:K,onClick:()=>v(!0),fullWidth:!0,disabled:E,children:"Delete Image"})})]})},{value:"edit",label:a(r,{direction:"row",align:"center",gap:"tight",children:[e(Q,{className:"dndev-size-sm"}),e(T,{children:"Edit"})]}),disabled:E,content:a(r,{gap:"medium",style:{paddingTop:"var(--gap-md)"},children:[a(r,{gap:"tight",children:[e(f,{children:"Zoom"}),e(F,{value:[P],min:1,max:3,step:.1,onValueChange:t=>b(t[0]??1)})]}),a(r,{gap:"tight",children:[a(f,{children:["Rotation (",u,"\xB0)"]}),a(r,{direction:"row",gap:"tight",children:[e(l,{variant:s.OUTLINE,onClick:()=>h(t=>t-90),icon:te,title:"-90\xB0"}),e(F,{value:[u],min:0,max:360,step:90,onValueChange:t=>h(t[0]??0),style:{flex:1}}),e(l,{variant:s.OUTLINE,onClick:()=>h(t=>t+90),icon:J,title:"+90\xB0"})]})]}),a(r,{gap:"medium",style:{marginTop:"var(--gap-xl)"},children:[e(l,{variant:s.PRIMARY,onClick:M,disabled:L,icon:ee,children:L?"Processing...":"Save Changes"}),e(l,{variant:s.GHOST,onClick:()=>m("view"),children:"Cancel"})]})]})}]})})]})})}var fe=ce;export{ce as ImageViewerDialog,fe as default};
1
+ "use client";import{jsx as e,Fragment as re,jsxs as a}from"react/jsx-runtime";import{ChevronLeft as le,ChevronRight as ne,RotateCcw as M,RotateCw as H,Trash2 as de,Check as ce,Undo2 as se,ZoomIn as me,ZoomOut as ge,Maximize2 as pe,Grid3X3 as ue}from"lucide-react";import{useCallback as m,useEffect as B,useState as c,useRef as he}from"react";import ve from"react-easy-crop";import{Button as o,BUTTON_VARIANT as r,Sheet as fe,Stack as n,Text as h,Slider as F,ToggleGroup as ye}from"@donotdev/components";import{useTranslation as we}from"@donotdev/core";import{processImage as Ce}from"../../../utils/imageProcessing";import{createPreviewURL as be,revokePreviewURL as ke}from"../../../utils/imageUtils";const xe={free:void 0,"1:1":1,"4:3":4/3,"16:9":16/9,"3:2":3/2};function Y({images:u,selectedIndex:l,open:T,onClose:R,onUpdate:D,onDelete:E,onNavigate:g,multiple:L=!1}){const{t}=we("crud"),[Z,C]=c({x:0,y:0}),[v,p]=c(1),[b,f]=c(0),[N,$]=c(null),[S,z]=c("free"),[k,q]=c(!0),[y,w]=c(!1),[G,P]=c(!1),[X,x]=c(!1),I=he({crop:{x:0,y:0},zoom:1,rotation:0}),d=u[l],U=L&&l>0,O=L&&l<u.length-1;B(()=>{if(d){const i={x:0,y:0};C(i),p(1),f(d.rotation*90),z("free"),w(!1),x(!1),I.current={crop:i,zoom:1,rotation:d.rotation*90}}},[d]);const _=m((i,s)=>{$(s)},[]),J=m(()=>{C(I.current.crop),p(I.current.zoom),f(I.current.rotation)},[]),A=m(()=>{f(i=>(i-90+360)%360)},[]),V=m(()=>{f(i=>(i+90)%360)},[]),K=m(()=>{p(i=>Math.min(i+.25,3))},[]),Q=m(()=>{p(i=>Math.max(i-.25,1))},[]),ee=m(()=>{p(1),C({x:0,y:0})},[]),ie=async()=>{if(!(!d||!N)){P(!0);try{const i=await Ce(d.file,{crop:N,maxWidth:2048,maxHeight:2048,quality:.95}),s=new File([i.fullBlob],d.file.name,{type:"image/webp"}),oe=be(s);d.previewURL.startsWith("blob:")&&ke(d.previewURL),D(l,{file:s,previewURL:oe,uploaded:null,uploadProgress:null,error:null,rotation:0}),w(!1)}catch{}finally{P(!1)}}},te=m(()=>{E(l),x(!1),u.length===1?R():l>=u.length-1&&g(l-1)},[l,u.length,E,R,g]);if(B(()=>{if(!T)return;const i=s=>{s.key==="ArrowLeft"&&U?g(l-1):s.key==="ArrowRight"&&O?g(l+1):s.key==="Escape"&&y&&w(!1)};return window.addEventListener("keydown",i),()=>window.removeEventListener("keydown",i)},[T,U,O,l,g,y]),!d)return null;const W=d.uploadProgress!==null&&d.uploadProgress<100,j=d.uploaded?.fullUrl||d.previewURL,ae=L?t("image.editor.titleWithIndex",{current:l+1,total:u.length}):t("image.editor.title");return e(fe,{open:T,onOpenChange:i=>!i&&R(),side:"right",title:ae,description:t("image.editor.description"),noSwipe:y,children:a(n,{gap:"large",style:{height:"100%"},children:[e("div",{style:{position:"relative",flex:1,minHeight:300,backgroundColor:"var(--surface-muted)",borderRadius:"var(--radius-lg)",overflow:"hidden"},children:y?e(ve,{image:j,crop:Z,zoom:v,rotation:b,aspect:xe[S],onCropChange:C,onCropComplete:_,onZoomChange:p,showGrid:k,style:{containerStyle:{position:"absolute",top:0,left:0,right:0,bottom:0},cropAreaStyle:{border:"2px solid var(--primary)",boxShadow:"0 0 0 9999px rgba(0,0,0,0.5)"}}}):a(re,{children:[U&&e(o,{variant:r.GHOST,icon:le,onClick:()=>g(l-1),"aria-label":t("image.editor.previousImage"),style:{position:"absolute",left:"var(--gap-sm)",top:"50%",transform:"translateY(-50%)",zIndex:10,backgroundColor:"rgba(0,0,0,0.3)",color:"white"}}),e("img",{src:j,alt:`Image ${l+1}`,style:{width:"100%",height:"100%",objectFit:"contain",transform:`rotate(${b}deg)`,transition:"transform var(--dur-normal) var(--ease-out)"}}),O&&e(o,{variant:r.GHOST,icon:ne,onClick:()=>g(l+1),"aria-label":t("image.editor.nextImage"),style:{position:"absolute",right:"var(--gap-sm)",top:"50%",transform:"translateY(-50%)",zIndex:10,backgroundColor:"rgba(0,0,0,0.3)",color:"white"}})]})}),y?a(n,{gap:"medium",children:[a(n,{gap:"tight",children:[e(h,{level:"small",variant:"muted",children:t("image.editor.aspectRatio")}),e(ye,{type:"single",value:S,onValueChange:i=>i&&z(i),items:[{value:"free",label:t("image.editor.aspectFree")},{value:"1:1",label:"1:1"},{value:"4:3",label:"4:3"},{value:"16:9",label:"16:9"}]})]}),a(n,{gap:"tight",children:[a(n,{direction:"row",justify:"between",align:"center",children:[e(h,{level:"small",variant:"muted",children:t("image.editor.zoom")}),a(h,{level:"small",variant:"muted",children:[Math.round(v*100),"%"]})]}),a(n,{direction:"row",gap:"tight",align:"center",children:[e(o,{variant:r.OUTLINE,icon:ge,display:"compact",onClick:Q,disabled:v<=1}),e(F,{value:[v],min:1,max:3,step:.05,onValueChange:i=>p(i[0]??1),style:{flex:1}}),e(o,{variant:r.OUTLINE,icon:me,display:"compact",onClick:K,disabled:v>=3})]})]}),a(n,{gap:"tight",children:[a(n,{direction:"row",justify:"between",align:"center",children:[e(h,{level:"small",variant:"muted",children:t("image.editor.rotation")}),a(h,{level:"small",variant:"muted",children:[b,"\xB0"]})]}),a(n,{direction:"row",gap:"tight",align:"center",children:[e(o,{variant:r.OUTLINE,icon:M,display:"compact",onClick:A,tooltip:t("image.editor.rotateLeft")}),e(F,{value:[b],min:0,max:360,step:1,onValueChange:i=>f(i[0]??0),style:{flex:1}}),e(o,{variant:r.OUTLINE,icon:H,display:"compact",onClick:V,tooltip:t("image.editor.rotateRight")})]})]}),a(n,{direction:"row",gap:"tight",children:[e(o,{variant:r.OUTLINE,icon:pe,display:"compact",onClick:ee,tooltip:t("image.editor.fitToView")}),e(o,{variant:r.OUTLINE,icon:ue,display:"compact",onClick:()=>q(!k),tooltip:t(k?"image.editor.hideGrid":"image.editor.showGrid"),"data-active":k||void 0}),e(o,{variant:r.OUTLINE,icon:se,display:"compact",onClick:J,tooltip:t("image.editor.reset")})]}),a(n,{direction:"row",gap:"medium",style:{marginTop:"var(--gap-md)"},children:[e(o,{variant:r.OUTLINE,onClick:()=>w(!1),fullWidth:!0,children:t("image.editor.cancel")}),e(o,{variant:r.PRIMARY,icon:ce,onClick:ie,disabled:G,fullWidth:!0,children:t(G?"image.editor.processing":"image.editor.apply")})]})]}):a(n,{gap:"medium",children:[a(n,{direction:"row",gap:"tight",justify:"center",children:[e(o,{variant:r.OUTLINE,icon:M,display:"compact",onClick:A,tooltip:t("image.editor.rotateLeft")}),e(o,{variant:r.PRIMARY,onClick:()=>w(!0),disabled:W,children:t("image.editor.editButton")}),e(o,{variant:r.OUTLINE,icon:H,display:"compact",onClick:V,tooltip:t("image.editor.rotateRight")})]}),X?a(n,{gap:"medium",style:{border:"1px solid var(--destructive)",padding:"var(--gap-md)",borderRadius:"var(--radius-md)"},children:[e(h,{variant:"destructive",level:"small",align:"center",children:t("image.editor.deleteConfirm")}),a(n,{direction:"row",gap:"tight",children:[e(o,{variant:r.OUTLINE,onClick:()=>x(!1),fullWidth:!0,children:t("image.editor.cancel")}),e(o,{variant:r.DESTRUCTIVE,onClick:te,fullWidth:!0,children:t("actions.delete")})]})]}):e(o,{variant:r.GHOST,icon:de,onClick:()=>x(!0),disabled:W,style:{color:"var(--destructive)"},children:t("image.editor.deleteImage")})]})]})})}var Ie=Y;export{Y as ImageViewerDialog,Ie as default};
@@ -8,17 +8,13 @@
8
8
  */
9
9
  export { default as CrudButton } from './CrudButton';
10
10
  export type { CrudButtonProps } from './CrudButton';
11
- export { EntityFormRenderer } from './EntityFormRenderer';
12
11
  export { FormFieldRenderer } from './FormFieldRenderer';
13
- export { DisplayFieldRenderer } from './DisplayFieldRenderer';
12
+ export { DisplayFieldRenderer, formatValue } from './DisplayFieldRenderer';
14
13
  export type { DisplayFieldRendererProps } from './DisplayFieldRenderer';
15
- export { EntityDisplayRenderer } from './EntityDisplayRenderer';
16
- export type { EntityDisplayRendererProps } from './EntityDisplayRenderer';
17
14
  export { default as FormLayout } from './FormLayout';
18
15
  export * from './controlled';
19
16
  export * from './form';
20
- export { EntityList } from './EntityList';
21
- export type { EntityListProps } from './EntityList';
22
- export { EntityCardList } from './EntityCardList';
23
- export type { EntityCardListProps } from './EntityCardList';
17
+ export { EntityFilters, matchesFilter } from './EntityFilters';
18
+ export type { EntityFiltersProps } from './EntityFilters';
19
+ export * from './fields/display';
24
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,cAAc,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- import{default as o}from"./CrudButton";import{EntityFormRenderer as m}from"./EntityFormRenderer";import{FormFieldRenderer as p}from"./FormFieldRenderer";import{DisplayFieldRenderer as i}from"./DisplayFieldRenderer";import{EntityDisplayRenderer as n}from"./EntityDisplayRenderer";import{default as y}from"./FormLayout";export*from"./controlled";export*from"./form";import{EntityList as F}from"./EntityList";import{EntityCardList as R}from"./EntityCardList";export{o as CrudButton,i as DisplayFieldRenderer,R as EntityCardList,n as EntityDisplayRenderer,m as EntityFormRenderer,F as EntityList,p as FormFieldRenderer,y as FormLayout};
1
+ import{default as r}from"./CrudButton";import{FormFieldRenderer as e}from"./FormFieldRenderer";import{DisplayFieldRenderer as a,formatValue as t}from"./DisplayFieldRenderer";import{default as o}from"./FormLayout";export*from"./controlled";export*from"./form";import{EntityFilters as m,matchesFilter as s}from"./EntityFilters";export*from"./fields/display";export{r as CrudButton,a as DisplayFieldRenderer,m as EntityFilters,e as FormFieldRenderer,o as FormLayout,t as formatValue,s as matchesFilter};
@@ -1 +1 @@
1
- {"version":3,"file":"UploadContext.d.ts","sourceRoot":"","sources":["../../src/contexts/UploadContext.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAMvE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD"}
1
+ {"version":3,"file":"UploadContext.d.ts","sourceRoot":"","sources":["../../src/contexts/UploadContext.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAIvE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD"}
@@ -1 +1 @@
1
- "use client";import{jsx as r}from"react/jsx-runtime";import{createContext as n,useContext as i}from"react";const e=n(void 0);function x({formId:t,children:o}){return r(e.Provider,{value:t,children:o})}function p(){return i(e)}export{x as UploadProvider,p as useUploadContext};
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import{createContext as n,useContext as i}from"react";const e=n(void 0);function s({formId:r,children:o}){return t(e.Provider,{value:r,children:o})}function a(){return i(e)}export{s as UploadProvider,a as useUploadContext};
@@ -1 +1 @@
1
- import{UploadProvider as r,useUploadContext as d}from"./UploadContext";export{r as UploadProvider,d as useUploadContext};
1
+ import{UploadProvider as o,useUploadContext as a}from"./UploadContext";export{o as UploadProvider,a as useUploadContext};
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @fileoverview Unified Field Type Registry
3
+ * @description Single source of truth for framework built-in field types.
4
+ * Coordinates schema registration, UI components, filter metadata, and display formatting.
5
+ *
6
+ * @version 0.0.1
7
+ * @since 0.0.1
8
+ * @author AMBROISE PARK Consulting
9
+ */
10
+ import type { EntityField, FieldType } from '@donotdev/core';
11
+ import type { ComponentType, ReactElement } from 'react';
12
+ import type { ControlledFieldProps, UncontrolledFieldProps } from './FieldRegistry';
13
+ /**
14
+ * Filter type metadata for EntityFilters component
15
+ */
16
+ export type FilterType = 'text' | 'range' | 'select' | 'none' | 'address' | 'multiselect';
17
+ /**
18
+ * Value type for type checking
19
+ */
20
+ export type ValueType = 'string' | 'number' | 'boolean' | 'date' | 'object' | 'array';
21
+ /**
22
+ * Display formatter function
23
+ */
24
+ export type DisplayFormatterOptions = {
25
+ compact?: boolean;
26
+ asString?: boolean;
27
+ };
28
+ export type DisplayFormatter = (value: any, config: EntityField, t: (key: string, options?: Record<string, any>) => string, options?: DisplayFormatterOptions) => string | ReactElement;
29
+ /**
30
+ * Component registration for a field type
31
+ */
32
+ export interface ComponentRegistration {
33
+ controlled: ComponentType<ControlledFieldProps<any, any>>;
34
+ uncontrolled?: ComponentType<UncontrolledFieldProps>;
35
+ }
36
+ /**
37
+ * Complete metadata for a built-in field type
38
+ *
39
+ * NOTE: Schemas are registered separately in @donotdev/core/schemas/getSchemaType.ts
40
+ * This registry only handles UI components + filter/display metadata
41
+ */
42
+ export interface FieldTypeMetadata {
43
+ /** Field type identifier */
44
+ type: FieldType;
45
+ /** Whether this field type is filterable */
46
+ filterable?: boolean;
47
+ /** Filter UI type for EntityFilters */
48
+ filterType?: FilterType;
49
+ /** Display formatter function */
50
+ displayFormatter?: DisplayFormatter;
51
+ /** Runtime value type */
52
+ valueType?: ValueType;
53
+ /** UI components */
54
+ components?: ComponentRegistration;
55
+ }
56
+ /**
57
+ * Register a built-in field type with all metadata
58
+ *
59
+ * This is the single registration point for framework built-ins.
60
+ * It coordinates:
61
+ * - Schema registration (via registerSchemaGenerator)
62
+ * - UI component registration (via FieldRegistry)
63
+ * - Filter/display metadata storage
64
+ *
65
+ * @param metadata - Complete field type metadata
66
+ */
67
+ export declare function registerBuiltinFieldType(metadata: FieldTypeMetadata): void;
68
+ /**
69
+ * Get metadata for a field type
70
+ */
71
+ export declare function getFieldTypeMetadata(type: string): FieldTypeMetadata | undefined;
72
+ /**
73
+ * Get filter type for a field type
74
+ */
75
+ export declare function getFilterType(type: string): FilterType | undefined;
76
+ /**
77
+ * Get display formatter for a field type
78
+ */
79
+ export declare function getDisplayFormatter(type: string): DisplayFormatter | undefined;
80
+ /**
81
+ * Check if a field type is filterable
82
+ */
83
+ export declare function isFilterable(type: string): boolean;
84
+ /**
85
+ * Get value type for a field type
86
+ */
87
+ export declare function getValueType(type: string): ValueType | undefined;
88
+ /**
89
+ * Clear registry (testing)
90
+ */
91
+ export declare function clearFieldTypeRegistry(): void;
92
+ //# sourceMappingURL=fieldTypeRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldTypeRegistry.d.ts","sourceRoot":"","sources":["../src/fieldTypeRegistry.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,aAAa,CAAC;AAElB;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,WAAW,EACnB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,EACzD,OAAO,CAAC,EAAE,uBAAuB,KAC9B,MAAM,GAAG,YAAY,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CACtD;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,yBAAyB;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oBAAoB;IACpB,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC;AAOD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAmB1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GACX,iBAAiB,GAAG,SAAS,CAE/B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GACX,gBAAgB,GAAG,SAAS,CAE9B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -0,0 +1 @@
1
+ "use client";import{getFieldRegistry as i}from"./FieldRegistry";const t=new Map;function a(e){const{type:r,components:n}=e;n&&i().registerComponent(r,n.controlled,n.uncontrolled),t.set(r,e)}function l(e){return t.get(e)}function o(e){return t.get(e)?.filterType}function s(e){return t.get(e)?.displayFormatter}function u(e){return t.get(e)?.filterable??!1}function c(e){return t.get(e)?.valueType}function p(){t.clear()}export{p as clearFieldTypeRegistry,s as getDisplayFormatter,l as getFieldTypeMetadata,o as getFilterType,c as getValueType,u as isFilterable,a as registerBuiltinFieldType};
@@ -1 +1 @@
1
- import{useEntityForm as e}from"./useEntityForm";import{useEntityField as m}from"./useEntityField";import{useController as i}from"./useController";export{i as useController,m as useEntityField,e as useEntityForm};
1
+ import{useEntityForm as t}from"./useEntityForm";import{useEntityField as o}from"./useEntityField";import{useController as r}from"./useController";export{r as useController,o as useEntityField,t as useEntityForm};
@@ -1 +1 @@
1
- "use client";import{useController as e}from"react-hook-form";function t(r){return e(r)}export{t as useController};
1
+ "use client";import{useController as r}from"react-hook-form";function o(e){return r(e)}export{o as useController};
@@ -1 +1 @@
1
- "use client";import{useMemo as s}from"react";import{useController as m}from"./useController";import{isFieldEditable as p}from"../utils";function g(l,e){const{entity:a,operation:o,viewerRole:c,fields:u}=l,r=a.fields[e],t=s(()=>r?{...r,name:r.name||e,label:r.label||e}:{name:e,type:"text",label:e,visibility:"user"},[e,r]),n=s(()=>u.some(f=>f.name===e),[u,e]),b=s(()=>!n||o==="edit"&&t.visibility==="technical"&&t.editable===void 0?!1:p(t.editable,c,o),[n,o,t.visibility,t.editable,c]),{field:d,fieldState:i}=m({name:e,control:l.control}),y=s(()=>({error:i.error?.message,touched:i.isTouched,isDirty:i.isDirty}),[i.error?.message,i.isTouched,i.isDirty]);return{field:d,meta:y,config:t,isEditable:b,isVisible:n}}export{g as useEntityField};
1
+ "use client";import{useMemo as o}from"react";import{useController as y}from"./useController";import{isFieldEditable as p}from"../utils";function v(a,i){const{entity:m,operation:r,viewerRole:n,fields:d}=a,s=m.fields[i],e=o(()=>s?{...s,name:s.name||i,label:s.label||i}:{name:i,type:"text",label:i,visibility:"user"},[i,s]),l=o(()=>d.some(f=>f.name===i),[d,i]),b=o(()=>!l||r==="edit"&&e.visibility==="technical"&&e.editable===void 0?!1:p(e.editable,n,r),[l,r,e.visibility,e.editable,n]),{field:c,fieldState:t}=y({name:i,control:a.control}),u=o(()=>({error:t.error?.message,touched:t.isTouched,isDirty:t.isDirty}),[t.error?.message,t.isTouched,t.isDirty]);return{field:c,meta:u,config:e,isEditable:b,isVisible:l}}export{v as useEntityField};
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityForm.d.ts","sourceRoot":"","sources":["../../../src/forms/hooks/useEntityForm.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACpC,gBAAgB,CAAC,CAAC,CAAC,CAiarB"}
1
+ {"version":3,"file":"useEntityForm.d.ts","sourceRoot":"","sources":["../../../src/forms/hooks/useEntityForm.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AAElB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACpC,gBAAgB,CAAC,CAAC,CAAC,CAwdrB"}
@@ -1 +1 @@
1
- "use client";import{valibotResolver as B}from"@hookform/resolvers/valibot";import{useMemo as l,useEffect as O,useRef as g,useCallback as w}from"react";import{useForm as ee,useWatch as te}from"react-hook-form";import{useLocalStorage as re,BACKEND_GENERATED_FIELD_NAMES as se,createSchemas as oe}from"@donotdev/core";import{useFormStore as V,useFormStatus as ne,useUploadProgress as ae}from"../../stores";import{useUploadStore as L}from"../../stores/UploadStore";import{checkForBlobUrls as x}from"../../utils/uploadValidation";import{getFieldsForOperation as ue}from"../utils";function be(i,N={}){const{formId:e,operation:_,defaultValues:a,viewerRole:F="admin",mode:C="onBlur",t:J,autoSave:m=!1}=N,n=_??(a?"edit":"create"),K=ne(e??""),W=ae(e??""),b=l(()=>oe(i),[i.name]),P=l(()=>B(b.create),[b.create]),U=l(()=>B(b.draft),[b.draft]),q=l(()=>async(t,o,s)=>((t?.status??a?.status)==="draft"?U:P)(t,o,s),[P,U,a?.status]),p=l(()=>{if(!a)return a;const t={...a};return Object.entries(i.fields).forEach(([o,s])=>{if(s.type==="switch"){const r=t[o];if(r==null){const S=s.options?.fieldSpecific;t[o]=S?.uncheckedValue??!1}}}),t},[a,i.fields]),u=ee({defaultValues:p,mode:C,resolver:q,shouldUnregister:!1,shouldFocusError:!0}),v=g(null);O(()=>{if(n==="edit"&&p){const t=p.id??null;t&&t!==v.current?(u.reset(p),v.current=t):!t&&v.current===null&&(u.reset(p),v.current="initialized")}},[n,p,u]);const G=l(()=>`${i.name.toLowerCase()}-form-draft`,[i.name]),{value:D,setValue:j,removeValue:k}=re(G,{defaultValue:null,syncAcrossTabs:!0}),R=g(!1);O(()=>{!m||n!=="create"||a||R.current||(D&&u.reset(D),R.current=!0)},[m,n,a,D,u]);const c=te({control:u.control}),E=g(!1),h=g(null),y=g(void 0),I=g(!0);O(()=>{if(I.current){I.current=!1,y.current=c?JSON.stringify(c):void 0;return}if(!m||n!=="create"||E.current||!R.current)return;const t=c?JSON.stringify(c):void 0;if(y.current!==t)return y.current=t,h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{if(!c)return;Object.values(c).some(s=>s!=null&&s!=="")&&j(c)},3e3),()=>{h.current&&clearTimeout(h.current)}},[c,m,n,j]);const M=w(async()=>{if(!e)return!0;const t=L.getState(),o=V.getState();if(!t.hasPendingUploads(e))return!0;try{o.setUploading(e,0),await t.uploadAll(e),await new Promise(d=>setTimeout(d,50));let s=u.getValues(),r=x(s),S=0;const f=5;for(;r.length>0&&S<f;)S++,await new Promise(d=>setTimeout(d,100)),s=u.getValues(),r=x(s);if(r.length>0){const d=`Upload incomplete: files still pending at ${r.join(", ")}`;return o.setError(e,d),!1}return!0}catch(s){const r=s instanceof Error?s.message:"File upload failed";return V.getState().setError(e,r),!1}},[e,u]),A=w(t=>n!=="create"?t:Object.fromEntries(Object.entries(t).filter(([o])=>!se.includes(o))),[n]),$=w(t=>{if(typeof window>"u")return;const o=Object.keys(t).find(r=>r!=="root"&&t[r]);if(!o)return;const s=document.querySelector(`input[name="${o}"][aria-invalid="true"], textarea[name="${o}"][aria-invalid="true"], select[name="${o}"][aria-invalid="true"]`);s&&(s.scrollIntoView({behavior:"smooth",block:"center"}),s.focus())},[]),z=u.handleSubmit,H=l(()=>((t,o)=>async s=>{s?.preventDefault?.();const r=e?V.getState():null;e&&r&&r.startSubmit(e),E.current=!0;try{if(!await M()){E.current=!1;return}e&&r&&r.setValidating(e),await z(async(f,d)=>{e&&r&&r.setSubmitting(e);const Y=A(f);try{await t(Y,d),m&&n==="create"&&k(),e&&r&&r.setSuccess(e)}catch(T){const Z=T instanceof Error?T.message:"Submission failed";throw e&&r&&r.setError(e,Z),T}},f=>{e&&r&&r.setError(e,"Validation failed"),$(f),o?.(f)})(s)}finally{E.current=!1}}),[z,e,M,A,$,m,n,k]),Q=w(()=>{e&&(V.getState().cleanup(e),L.getState().cleanup(e))},[e]),X=l(()=>ue(i,{operation:n,viewerRole:F,availableFields:n==="edit"&&a?Object.keys(a):void 0}),[i,n,F,a]);return{...u,handleSubmit:H,fields:X,operation:n,entity:i,t:J??(t=>t),viewerRole:F,formId:e,formStatus:e?K:"idle",uploadProgress:e?W:0,cleanup:Q}}export{be as useEntityForm};
1
+ "use client";import{valibotResolver as B}from"@hookform/resolvers/valibot";import{useMemo as m,useEffect as k,useRef as g,useCallback as y}from"react";import{useForm as ee,useWatch as te}from"react-hook-form";import{useLocalStorage as re,BACKEND_GENERATED_FIELD_NAMES as ae,createSchemas as oe}from"@donotdev/core";import{useFormStore as O,useFormStatus as ne,useUploadProgress as se}from"../../stores";import{useUploadStore as C}from"../../stores/UploadStore";import{checkForBlobUrls as L}from"../../utils/uploadValidation";import{getFieldsForOperation as ie}from"../utils";function ue(l,_={}){const{formId:e,operation:J,defaultValues:u,viewerRole:U="admin",mode:M="onBlur",t:q,autoSave:f=!1}=_,n=J??(u?"edit":"create"),z=ne(e??""),G=se(e??""),b=m(()=>oe(l),[l.name]),D=m(()=>B(b.create),[b.create]),N=m(()=>B(b.draft),[b.draft]),K=m(()=>async(t,a,o)=>((t?.status??u?.status)==="draft"?N:D)(t,a,o),[D,N,u?.status]),i=m(()=>{if(!u)return u;const t={...u};return Object.entries(l.fields).forEach(([a,o])=>{const r=t[a],c=!(a in u)||r===null||r===void 0;if(o.type==="switch"){if(r==null){const v=o.options?.fieldSpecific;t[a]=v?.uncheckedValue??!1}}else c&&(o.type==="price"?t[a]={amount:0,currency:"EUR",vatIncluded:!0,discountPercent:0}:(o.type==="checkbox"||o.type==="boolean")&&(t[a]=!1))}),t},[u,l.fields]),s=ee({defaultValues:i,mode:M,resolver:K,shouldUnregister:!1,shouldFocusError:!0}),h=g(null);k(()=>{if(n==="edit"&&i){const t=i.id??null;t&&t!==h.current?(s.reset(i),h.current=t):!t&&h.current===null&&(s.reset(i),h.current="initialized")}},[n,i,s]);const W=m(()=>`${l.name.toLowerCase()}-form-draft`,[l.name]),{value:R,setValue:P,removeValue:E}=re(W,{defaultValue:null,syncAcrossTabs:!0}),w=g(!1);k(()=>{!f||n!=="create"||u||w.current||(R&&s.reset(R),w.current=!0)},[f,n,u,R,s]);const d=te({control:s.control}),F=g(!1),S=g(null),V=g(void 0),T=g(!0);k(()=>{if(T.current){T.current=!1,V.current=d?JSON.stringify(d):void 0;return}if(!f||n!=="create"||F.current||!w.current)return;const t=d?JSON.stringify(d):void 0;if(V.current!==t)return V.current=t,S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{d&&Object.values(d).some(a=>a!=null&&a!=="")&&P(d)},3e3),()=>{S.current&&clearTimeout(S.current)}},[d,f,n,P]);const A=y(async()=>{if(!e)return!0;const t=C.getState(),a=O.getState();if(!t.hasPendingUploads(e))return!0;try{a.setUploading(e,0),await t.uploadAll(e),await new Promise(p=>setTimeout(p,50));let o=s.getValues(),r=L(o),c=0;const v=5;for(;r.length>0&&c<v;)c++,await new Promise(p=>setTimeout(p,100)),o=s.getValues(),r=L(o);if(r.length>0){const p=`Upload incomplete: files still pending at ${r.join(", ")}`;return a.setError(e,p),!1}return!0}catch(o){const r=o instanceof Error?o.message:"File upload failed";return O.getState().setError(e,r),!1}},[e,s]),I=y(t=>n!=="create"?t:Object.fromEntries(Object.entries(t).filter(([a])=>!ae.includes(a))),[n]),$=y(t=>{if(typeof window>"u")return;const a=Object.keys(t).find(r=>r!=="root"&&t[r]);if(!a)return;const o=document.querySelector(`input[name="${a}"][aria-invalid="true"], textarea[name="${a}"][aria-invalid="true"], select[name="${a}"][aria-invalid="true"]`);o&&(o.scrollIntoView({behavior:"smooth",block:"center"}),o.focus())},[]),x=s.handleSubmit,H=m(()=>((t,a)=>async o=>{o?.preventDefault?.();const r=e?O.getState():null;e&&r&&r.startSubmit(e),F.current=!0;try{if(!await A()){F.current=!1;return}e&&r&&r.setValidating(e),await x(async(c,v)=>{e&&r&&r.setSubmitting(e);const p=I(c);try{await t(p,v),f&&n==="create"&&E(),e&&r&&r.setSuccess(e)}catch(j){const Z=j instanceof Error?j.message:"Submission failed";throw e&&r&&r.setError(e,Z),j}},c=>{e&&r&&r.setError(e,"Validation failed"),$(c),a?.(c)})(o)}finally{F.current=!1}}),[x,e,A,I,$,f,n,E]),Q=y(()=>{f&&n==="create"&&E(),s.reset(i),V.current=i?JSON.stringify(i):void 0,T.current=!0,w.current=!1},[f,n,E,s,i]),X=y(()=>{e&&(O.getState().cleanup(e),C.getState().cleanup(e))},[e]),Y=m(()=>ie(l,{operation:n,viewerRole:U,availableFields:void 0}),[l,n,U]);return{...s,handleSubmit:H,fields:Y,operation:n,entity:l,t:q??(t=>t),viewerRole:U,formId:e,formStatus:e?z:"idle",uploadProgress:e?G:0,cleanup:X,isDirty:s.formState.isDirty,resetForm:Q,originalValues:i}}export{ue as useEntityForm};
@@ -33,7 +33,7 @@ export { useEntityForm } from './hooks/useEntityForm';
33
33
  export { useEntityField } from './hooks/useEntityField';
34
34
  export { useController } from './hooks/useController';
35
35
  export type { UseControllerProps, UseControllerReturn, ControllerRenderProps, ControllerFieldState, } from './hooks/useController';
36
- export { isFieldEditable, getFieldsForOperation, validateEntity, translateFieldLabel, translateLabel, yearOptions, rangeOptions, } from './utils';
37
- export type { ViewerRole, RenderableField, GetFieldsForOperationOptions, EntityFieldsInput, SchemaOperation, ValidationIssue, ValidationResult, SelectOption, } from './utils';
36
+ export { isFieldEditable, getFieldsForOperation, validateEntity, translateFieldLabel, translateLabel, } from './utils';
37
+ export type { ViewerRole, RenderableField, GetFieldsForOperationOptions, EntityFieldsInput, SchemaOperation, ValidationIssue, ValidationResult, } from './utils';
38
38
  export type { InferEntityData, InferEntityInput, InferEntityOutput, UseEntityFormOptions, EntityFormReturn, EntityFieldReturn, Entity, EntityField, FieldType, Visibility, Editable, ValidationRules, dndevSchema, } from './types';
39
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,cAAc,EAEd,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,YAAY,EAEV,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,YAAY,EAEV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAEjB,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,eAAe,EACf,WAAW,GACZ,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,YAAY,EAEV,UAAU,EACV,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAEV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAEjB,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,eAAe,EACf,WAAW,GACZ,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- import{useEntityForm as r}from"./hooks/useEntityForm";import{useEntityField as i}from"./hooks/useEntityField";import{useController as l}from"./hooks/useController";import{isFieldEditable as s,getFieldsForOperation as p,validateEntity as d,translateFieldLabel as F,translateLabel as m,yearOptions as f,rangeOptions as x}from"./utils";export{p as getFieldsForOperation,s as isFieldEditable,x as rangeOptions,F as translateFieldLabel,m as translateLabel,l as useController,i as useEntityField,r as useEntityForm,d as validateEntity,f as yearOptions};
1
+ import{useEntityForm as a}from"./hooks/useEntityForm";import{useEntityField as t}from"./hooks/useEntityField";import{useController as e}from"./hooks/useController";import{isFieldEditable as s,getFieldsForOperation as i,validateEntity as l,translateFieldLabel as r,translateLabel as o}from"./utils";export{i as getFieldsForOperation,s as isFieldEditable,r as translateFieldLabel,o as translateLabel,e as useController,t as useEntityField,a as useEntityForm,l as validateEntity};
@@ -171,6 +171,21 @@ export interface EntityFormReturn<E extends Entity> extends UseFormReturn<InferE
171
171
  * Cleans up FormStore and UploadStore state for this form.
172
172
  */
173
173
  cleanup: () => void;
174
+ /**
175
+ * Whether the form has unsaved changes.
176
+ * True if any field value differs from original/default values.
177
+ */
178
+ isDirty: boolean;
179
+ /**
180
+ * Reset form to original values and clear any saved draft.
181
+ * Use this for "Cancel" button functionality.
182
+ */
183
+ resetForm: () => void;
184
+ /**
185
+ * Original values the form was initialized with.
186
+ * Undefined for create mode, the defaultValues for edit mode.
187
+ */
188
+ originalValues: Partial<InferEntityData<E>> | undefined;
174
189
  }
175
190
  /**
176
191
  * Return type for useEntityField hook.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/forms/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/forms/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{isFieldEditable as b}from"./isFieldEditable";function p(e,c){const{operation:l,viewerRole:f="admin",availableFields:o}=c,a=e&&typeof e=="object"&&"fields"in e&&"name"in e?e.fields:e,r=Object.entries(a),t=[];for(const[s,u]of r){const i=u,n=i.visibility||"user";if(l==="create"){if(n==="technical"||n==="hidden")continue}else if(n==="hidden"||o&&!o.includes(s))continue;let d=b(i.editable,f,l);l==="edit"&&n==="technical"&&i.editable===void 0&&(d=!1),t.push({name:s,config:i,editable:d})}return t}export{p as getFieldsForOperation};
1
+ import{isFieldEditable as u}from"./isFieldEditable";function p(i,s){const{operation:n,viewerRole:c="admin",availableFields:o}=s,r=i&&typeof i=="object"&&"fields"in i&&"name"in i?i.fields:i,f=Object.entries(r),l=[];for(const[a,b]of f){const e=b,t=e.visibility||"user";if(n==="create"){if(t==="technical"||t==="hidden")continue}else if(t==="hidden"||o&&!o.includes(a))continue;let d=u(e.editable,c,n);n==="edit"&&t==="technical"&&e.editable===void 0&&(d=!1),l.push({name:a,config:e,editable:d})}return l}export{p as getFieldsForOperation};
@@ -13,6 +13,4 @@ export type { RenderableField, GetFieldsForOperationOptions, EntityFieldsInput,
13
13
  export { validateEntity } from './validateEntity';
14
14
  export type { ValidationIssue, ValidationResult, SchemaOperation, } from './validateEntity';
15
15
  export { translateFieldLabel, translateLabel } from './translateFieldLabel';
16
- export { yearOptions, rangeOptions } from './optionHelpers';
17
- export type { SelectOption } from './optionHelpers';
18
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- import{isFieldEditable as r}from"./isFieldEditable";import{getFieldsForOperation as a}from"./getFieldsForOperation";import{validateEntity as l}from"./validateEntity";import{translateFieldLabel as n,translateLabel as s}from"./translateFieldLabel";import{yearOptions as f,rangeOptions as m}from"./optionHelpers";export{a as getFieldsForOperation,r as isFieldEditable,m as rangeOptions,n as translateFieldLabel,s as translateLabel,l as validateEntity,f as yearOptions};
1
+ import{isFieldEditable as a}from"./isFieldEditable";import{getFieldsForOperation as t}from"./getFieldsForOperation";import{validateEntity as e}from"./validateEntity";import{translateFieldLabel as i,translateLabel as l}from"./translateFieldLabel";export{t as getFieldsForOperation,a as isFieldEditable,i as translateFieldLabel,l as translateLabel,e as validateEntity};
@@ -1 +1 @@
1
- import{hasRoleAccess as t,USER_ROLES as u}from"@donotdev/core";function i(r,e,n){return r===void 0||r===!0?!0:r===!1?!1:r==="admin"?t(e,u.ADMIN):r==="create-only"?n==="create":!0}export{i as isFieldEditable};
1
+ import{hasRoleAccess as t,USER_ROLES as o}from"@donotdev/core";function s(e,a,i){return e===void 0||e===!0?!0:e===!1?!1:e==="admin"?t(a,o.ADMIN):e==="create-only"?i==="create":!0}export{s as isFieldEditable};
@@ -1 +1 @@
1
- function o(t,n){if(typeof t=="string"&&t.includes(":")){const e=t.split(":"),r=e[1]??t,s=e[0];return n(r,{ns:s})}return n(t)}function c(t,n,e){const r=n?.label||t;return o(r,e)}export{c as translateFieldLabel,o as translateLabel};
1
+ function t(e,n){if(typeof e=="string"&&e.includes(":")){const r=e.split(":"),s=r[1]??e,a=r[0];return n(s,{ns:a})}return n(e)}function l(e,n,r){const s=n?.label||e;return t(s,r)}export{l as translateFieldLabel,t as translateLabel};
@@ -1 +1 @@
1
- import*as o from"valibot";import{createSchemas as p}from"@donotdev/core";function h(a,c,r="create"){const s=p(a),u={create:s.create,draft:s.draft,update:s.update,full:s.get}[r],e=o.safeParse(u,c);return e.success?{success:!0,data:e.output}:{success:!1,issues:e.issues.map(t=>({path:t.path?.map(m=>m.key).join(".")||"",message:t.message}))}}export{h as validateEntity};
1
+ import*as o from"valibot";import{createSchemas as m}from"@donotdev/core";function i(t,r,c="create"){const e=m(t),u={create:e.create,draft:e.draft,update:e.update,full:e.get}[c],s=o.safeParse(u,r);return s.success?{success:!0,data:s.output}:{success:!1,issues:s.issues.map(a=>({path:a.path?.map(p=>p.key).join(".")||"",message:a.message}))}}export{i as validateEntity};
@@ -1,3 +1,8 @@
1
1
  export { useFileUpload } from './useFileUpload';
2
2
  export type { FileMetadata, UseFileUploadOptions } from './useFileUpload';
3
+ export { useUnsavedChangesWarning, useConfirmNavigation, } from './useUnsavedChangesWarning';
4
+ export { useEntityFavorites } from './useEntityFavorites';
5
+ export type { UseEntityFavoritesOptions, UseEntityFavoritesReturn, } from './useEntityFavorites';
6
+ export { useRelatedItems } from './useRelatedItems';
7
+ export type { UseRelatedItemsOptions, UseRelatedItemsReturn, } from './useRelatedItems';
3
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- import{useFileUpload as l}from"./useFileUpload";export{l as useFileUpload};
1
+ import{useFileUpload as s}from"./useFileUpload";import{useUnsavedChangesWarning as a,useConfirmNavigation as e}from"./useUnsavedChangesWarning";import{useEntityFavorites as i}from"./useEntityFavorites";import{useRelatedItems as o}from"./useRelatedItems";export{e as useConfirmNavigation,i as useEntityFavorites,s as useFileUpload,o as useRelatedItems,a as useUnsavedChangesWarning};
@@ -0,0 +1,53 @@
1
+ export interface UseEntityFavoritesOptions {
2
+ /** Storage key (default: 'entity-favorites') */
3
+ storageKey?: string;
4
+ /** Entity collection name (e.g., 'cars', 'products') - used to namespace favorites */
5
+ collection?: string;
6
+ }
7
+ export interface UseEntityFavoritesReturn {
8
+ /** Array of favorited entity IDs */
9
+ favorites: string[];
10
+ /** Check if an entity is favorited */
11
+ isFavorite: (id: string) => boolean;
12
+ /** Toggle favorite status for an entity */
13
+ toggleFavorite: (id: string) => void;
14
+ /** Add entity to favorites */
15
+ addFavorite: (id: string) => void;
16
+ /** Remove entity from favorites */
17
+ removeFavorite: (id: string) => void;
18
+ /** Clear all favorites */
19
+ clearFavorites: () => void;
20
+ /** Filter function for use with EntityCardList/EntityList (from @donotdev/ui) filter prop */
21
+ favoritesFilter: (item: {
22
+ id: string;
23
+ }) => boolean;
24
+ /** Whether favorites are loaded from localStorage */
25
+ isLoaded: boolean;
26
+ }
27
+ /**
28
+ * Hook for managing entity favorites
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * // In detail page
33
+ * const { isFavorite, toggleFavorite } = useEntityFavorites({ collection: 'cars' });
34
+ *
35
+ * <Button onClick={() => toggleFavorite(carId)}>
36
+ * {isFavorite(carId) ? 'Saved' : 'Save'}
37
+ * </Button>
38
+ * ```
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * // In list page with filter (EntityCardList from @donotdev/ui)
43
+ * const { favoritesFilter } = useEntityFavorites({ collection: 'cars' });
44
+ * const [showFavoritesOnly, setShowFavoritesOnly] = useState(false);
45
+ *
46
+ * <EntityCardList
47
+ * entity={carEntity}
48
+ * filter={showFavoritesOnly ? favoritesFilter : undefined}
49
+ * />
50
+ * ```
51
+ */
52
+ export declare function useEntityFavorites(options?: UseEntityFavoritesOptions): UseEntityFavoritesReturn;
53
+ //# sourceMappingURL=useEntityFavorites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEntityFavorites.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityFavorites.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,yBAAyB;IACxC,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sCAAsC;IACtC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,2CAA2C;IAC3C,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,8BAA8B;IAC9B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,mCAAmC;IACnC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,0BAA0B;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,6FAA6F;IAC7F,eAAe,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IACnD,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CA8E1B"}
@@ -0,0 +1 @@
1
+ import{useCallback as o}from"react";import{useLocalStorage as p}from"@donotdev/core";function y(s={}){const{storageKey:l,collection:u="entities"}=s,d=l||`favorites-${u}`,{value:t,setValue:a,isLoaded:c}=p(d,{defaultValue:[]}),v=o(e=>t.includes(e),[t]),n=o(e=>{a(i=>i.includes(e)?i.filter(r=>r!==e):[...i,e])},[a]),f=o(e=>{a(i=>i.includes(e)?i:[...i,e])},[a]),F=o(e=>{a(i=>i.filter(r=>r!==e))},[a]),m=o(()=>{a([])},[a]),g=o(e=>t.includes(e.id),[t]);return{favorites:t,isFavorite:v,toggleFavorite:n,addFavorite:f,removeFavorite:F,clearFavorites:m,favoritesFilter:g,isLoaded:c}}export{y as useEntityFavorites};
@@ -1 +1 @@
1
- {"version":3,"file":"useFileUpload.d.ts","sourceRoot":"","sources":["../../src/hooks/useFileUpload.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK9C,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,oCAAoC;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACrF;AA6DD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,QAAa,EACb,OAA0B,EAC1B,MAAW,EACX,WAAuB,EACvB,QAAQ,GACT,EAAE,oBAAoB;IA4YnB,yCAAyC;;IAEzC,4CAA4C;yBArGjC,IAAI,EAAE;IAuGjB,0BAA0B;qBA9BrB,MAAM;IAgCX,2CAA2C;;IAE3C,oCAAoC;;IAEpC,6BAA6B;;IAE7B,qDAAqD;;IAErD,sFAAsF;;EAGzF"}
1
+ {"version":3,"file":"useFileUpload.d.ts","sourceRoot":"","sources":["../../src/hooks/useFileUpload.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK9C,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,oCAAoC;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,KACnC,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AA4DD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,QAAa,EACb,OAA0B,EAC1B,MAAW,EACX,WAAuB,EACvB,QAAQ,GACT,EAAE,oBAAoB;IAwZnB,yCAAyC;;IAEzC,4CAA4C;yBAvGjC,IAAI,EAAE;IAyGjB,0BAA0B;qBAhCrB,MAAM;IAkCX,2CAA2C;;IAE3C,oCAAoC;;IAEpC,6BAA6B;;IAE7B,qDAAqD;;IAErD,sFAAsF;;EAGzF"}