@donotdev/crud 0.0.26 → 0.0.28

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 (175) hide show
  1. package/dist/CrudService.js +2 -2
  2. package/dist/CrudStore.js +1 -1
  3. package/dist/FieldRegistry.js +1 -1
  4. package/dist/adapters/FunctionsAdapter.js +1 -1
  5. package/dist/builtinFieldTypes.d.ts +1 -2
  6. package/dist/builtinFieldTypes.d.ts.map +1 -1
  7. package/dist/builtinFieldTypes.js +1 -1
  8. package/dist/components/CrudButton.js +1 -1
  9. package/dist/components/CrudCard.js +1 -1
  10. package/dist/components/DateFilter.js +1 -1
  11. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  12. package/dist/components/DisplayFieldRenderer.js +1 -1
  13. package/dist/components/DisplayThumbnail.js +1 -1
  14. package/dist/components/EntityFilters.js +1 -1
  15. package/dist/components/FormFieldRenderer.js +1 -1
  16. package/dist/components/FormLayout.js +1 -1
  17. package/dist/components/controlled/complex/ControlledAddressField.js +1 -1
  18. package/dist/components/controlled/complex/ControlledDateField.js +1 -1
  19. package/dist/components/controlled/complex/ControlledFieldArrayField.js +1 -1
  20. package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -1
  21. package/dist/components/controlled/complex/ControlledMapField.js +1 -1
  22. package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -1
  23. package/dist/components/controlled/complex/ControlledRichTextField.js +1 -1
  24. package/dist/components/controlled/complex/ControlledTimestampField.js +1 -1
  25. package/dist/components/controlled/complex/index.js +1 -1
  26. package/dist/components/controlled/file/ControlledDocumentField.js +1 -1
  27. package/dist/components/controlled/file/ControlledFileField.js +1 -1
  28. package/dist/components/controlled/file/ControlledImageField.js +1 -1
  29. package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -1
  30. package/dist/components/controlled/file/ControlledMultiFileField.js +1 -1
  31. package/dist/components/controlled/file/ControlledMultiImageField.js +1 -1
  32. package/dist/components/controlled/file/index.js +1 -1
  33. package/dist/components/controlled/index.js +1 -1
  34. package/dist/components/controlled/input/ControlledCheckboxField.js +1 -1
  35. package/dist/components/controlled/input/ControlledCurrencyField.js +1 -1
  36. package/dist/components/controlled/input/ControlledDurationField.js +1 -1
  37. package/dist/components/controlled/input/ControlledGdprConsentField.js +1 -1
  38. package/dist/components/controlled/input/ControlledNumberField.js +1 -1
  39. package/dist/components/controlled/input/ControlledPasswordField.js +1 -1
  40. package/dist/components/controlled/input/ControlledPhoneField.js +1 -1
  41. package/dist/components/controlled/input/ControlledPriceField.js +1 -1
  42. package/dist/components/controlled/input/ControlledRangeField.js +1 -1
  43. package/dist/components/controlled/input/ControlledRatingField.js +1 -1
  44. package/dist/components/controlled/input/ControlledSwitchField.js +1 -1
  45. package/dist/components/controlled/input/ControlledTextField.js +1 -1
  46. package/dist/components/controlled/input/ControlledTextareaField.js +1 -1
  47. package/dist/components/controlled/input/index.js +1 -1
  48. package/dist/components/controlled/select/ControlledComboboxField.js +1 -1
  49. package/dist/components/controlled/select/ControlledDropdownField.js +1 -1
  50. package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -1
  51. package/dist/components/controlled/select/ControlledRadioField.js +1 -1
  52. package/dist/components/controlled/select/ControlledReferenceField.js +1 -1
  53. package/dist/components/controlled/select/ControlledYearField.js +1 -1
  54. package/dist/components/controlled/select/index.js +1 -1
  55. package/dist/components/controlled/types.js +1 -1
  56. package/dist/components/fields/display/AvatarFieldDisplay.js +1 -1
  57. package/dist/components/fields/display/BadgeFieldDisplay.js +1 -1
  58. package/dist/components/fields/display/ButtonFieldDisplay.js +1 -1
  59. package/dist/components/fields/display/CheckboxFieldDisplay.js +1 -1
  60. package/dist/components/fields/display/DateFieldDisplay.js +1 -1
  61. package/dist/components/fields/display/DropdownDisplay.js +1 -1
  62. package/dist/components/fields/display/FileFieldDisplay.js +1 -1
  63. package/dist/components/fields/display/GeoPointFieldDisplay.js +1 -1
  64. package/dist/components/fields/display/HiddenFieldDisplay.js +1 -1
  65. package/dist/components/fields/display/ImageFieldDisplay.js +1 -1
  66. package/dist/components/fields/display/LinkFieldDisplay.js +1 -1
  67. package/dist/components/fields/display/MapFieldDisplay.js +1 -1
  68. package/dist/components/fields/display/MultiDropdownDisplay.js +1 -1
  69. package/dist/components/fields/display/MultiInputTextFieldDisplay.js +1 -1
  70. package/dist/components/fields/display/NumberFieldDisplay.js +1 -1
  71. package/dist/components/fields/display/PasswordFieldDisplay.js +1 -1
  72. package/dist/components/fields/display/PhoneNumberDisplay.js +1 -1
  73. package/dist/components/fields/display/RadioFieldDisplay.js +1 -1
  74. package/dist/components/fields/display/RangeFieldDisplay.js +1 -1
  75. package/dist/components/fields/display/ReferenceFieldDisplay.js +1 -1
  76. package/dist/components/fields/display/RichTextDisplay.js +2 -2
  77. package/dist/components/fields/display/TextAreaDisplay.js +1 -1
  78. package/dist/components/fields/display/TextFieldDisplay.js +1 -1
  79. package/dist/components/fields/display/TimestampFieldDisplay.js +1 -1
  80. package/dist/components/fields/display/index.js +1 -1
  81. package/dist/components/form/fields/AddressFieldComponent.js +1 -1
  82. package/dist/components/form/fields/AvatarFieldComponent.js +1 -1
  83. package/dist/components/form/fields/BadgeFieldComponent.js +1 -1
  84. package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
  85. package/dist/components/form/fields/CheckboxFieldComponent.js +1 -1
  86. package/dist/components/form/fields/ComboboxComponent.js +1 -1
  87. package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
  88. package/dist/components/form/fields/DateFieldComponent.js +1 -1
  89. package/dist/components/form/fields/DocumentFieldComponent.js +1 -1
  90. package/dist/components/form/fields/DropdownComponent.js +1 -1
  91. package/dist/components/form/fields/DurationFieldComponent.js +1 -1
  92. package/dist/components/form/fields/FileFieldComponent.js +1 -1
  93. package/dist/components/form/fields/GdprConsentFieldComponent.js +1 -1
  94. package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
  95. package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
  96. package/dist/components/form/fields/ImageFieldComponent.js +1 -1
  97. package/dist/components/form/fields/MapFieldComponent.js +1 -1
  98. package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
  99. package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
  100. package/dist/components/form/fields/NumberFieldComponent.js +1 -1
  101. package/dist/components/form/fields/PasswordFieldComponent.js +1 -1
  102. package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
  103. package/dist/components/form/fields/PriceFieldComponent.js +1 -1
  104. package/dist/components/form/fields/RadioFieldComponent.js +1 -1
  105. package/dist/components/form/fields/RangeFieldComponent.js +1 -1
  106. package/dist/components/form/fields/RatingFieldComponent.js +1 -1
  107. package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
  108. package/dist/components/form/fields/RichTextComponent.js +1 -1
  109. package/dist/components/form/fields/SwitchFieldComponent.js +1 -1
  110. package/dist/components/form/fields/TextAreaComponent.js +1 -1
  111. package/dist/components/form/fields/TextFieldComponent.js +1 -1
  112. package/dist/components/form/fields/TimestampFieldComponent.js +1 -1
  113. package/dist/components/form/fields/index.js +1 -1
  114. package/dist/components/form/fields/internal/TiptapEditor.js +2 -2
  115. package/dist/components/form/internal/ImageViewerDialog.js +1 -1
  116. package/dist/components/index.js +1 -1
  117. package/dist/contexts/UploadContext.js +1 -1
  118. package/dist/contexts/index.js +1 -1
  119. package/dist/fieldTypeRegistry.d.ts +4 -116
  120. package/dist/fieldTypeRegistry.d.ts.map +1 -1
  121. package/dist/fieldTypeRegistry.js +1 -1
  122. package/dist/fieldTypeRegistry.store.d.ts +17 -0
  123. package/dist/fieldTypeRegistry.store.d.ts.map +1 -0
  124. package/dist/fieldTypeRegistry.store.js +1 -0
  125. package/dist/fieldTypeRegistry.types.d.ts +53 -0
  126. package/dist/fieldTypeRegistry.types.d.ts.map +1 -0
  127. package/dist/fieldTypeRegistry.types.js +1 -0
  128. package/dist/forms/hooks/index.js +1 -1
  129. package/dist/forms/hooks/useController.js +1 -1
  130. package/dist/forms/hooks/useEntityField.js +1 -1
  131. package/dist/forms/hooks/useEntityForm.js +1 -1
  132. package/dist/forms/index.js +1 -1
  133. package/dist/forms/utils/buildInitialValues.js +1 -1
  134. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  135. package/dist/forms/utils/index.js +1 -1
  136. package/dist/forms/utils/isFieldEditable.js +1 -1
  137. package/dist/forms/utils/translateFieldLabel.js +1 -1
  138. package/dist/forms/utils/validateEntity.js +1 -1
  139. package/dist/hooks/index.js +1 -1
  140. package/dist/hooks/useCrudFilters.js +1 -1
  141. package/dist/hooks/useEntityFavorites.js +1 -1
  142. package/dist/hooks/useFieldConditions.js +1 -1
  143. package/dist/hooks/useFileUpload.js +1 -1
  144. package/dist/hooks/useReferenceResolver.js +1 -1
  145. package/dist/hooks/useRelatedItems.js +1 -1
  146. package/dist/hooks/useUnsavedChangesWarning.js +1 -1
  147. package/dist/index.js +1 -1
  148. package/dist/registerBuiltinFieldTypes.d.ts +10 -3
  149. package/dist/registerBuiltinFieldTypes.d.ts.map +1 -1
  150. package/dist/registerBuiltinFieldTypes.js +1 -1
  151. package/dist/stores/FormStore.js +1 -1
  152. package/dist/stores/UploadStore.js +1 -1
  153. package/dist/stores/index.js +1 -1
  154. package/dist/tsconfig.tsbuildinfo +1 -1
  155. package/dist/types.js +1 -1
  156. package/dist/useBaseCrudList.js +1 -1
  157. package/dist/useCrud.js +1 -1
  158. package/dist/useCrudCardList.js +1 -1
  159. package/dist/useCrudList.js +1 -1
  160. package/dist/utils/clientListProcessing.js +1 -1
  161. package/dist/utils/collections.js +1 -1
  162. package/dist/utils/fileStorage.js +1 -1
  163. package/dist/utils/imageProcessing.js +1 -1
  164. package/dist/utils/imageStorage.js +1 -1
  165. package/dist/utils/imageUtils.js +1 -1
  166. package/dist/utils/matchesFilter.js +1 -1
  167. package/dist/utils/mergeWithOptimistic.js +1 -1
  168. package/dist/utils/sanitizeHtml.js +1 -1
  169. package/dist/utils/scopeUtils.js +1 -1
  170. package/dist/utils/uploadValidation.js +1 -1
  171. package/dist/workflows/WorkflowPersistence.js +1 -1
  172. package/dist/workflows/defineWorkflow.js +1 -1
  173. package/dist/workflows/index.js +1 -1
  174. package/dist/workflows/useEntityWorkflow.js +1 -1
  175. package/package.json +5 -5
@@ -1 +1 @@
1
- "use client";import{jsx as p,jsxs as u}from"react/jsx-runtime";import{Text as m,Stack as h,ImageGallery as I,Rating as $,CopyToClipboard as j}from"@donotdev/components";import{formatCurrency as S,maybeTranslate as N}from"@donotdev/core";import{ControlledCheckboxField as A,ControlledComboboxField as P,ControlledDateField as C,ControlledDropdownField as M,ControlledFileField as R,ControlledMultiFileField as _,ControlledDocumentField as v,ControlledMultiDocumentField as B,ControlledGeoPointField as E,ControlledImageField as O,ControlledMapField as U,ControlledMultiDropdownField as H,ControlledMultiInputField as K,ControlledNumberField as Y,ControlledPasswordField as G,ControlledPhoneField as J,ControlledRangeField as W,ControlledRatingField as q,ControlledDurationField as Q,ControlledRadioField as X,ControlledReferenceField as Z,ControlledYearField as ee,ControlledTextField as g,ControlledTextareaField as te,ControlledRichTextField as re,ControlledTimestampField as ne,ControlledAddressField as oe,ControlledFieldArrayField as le,ControlledSwitchField as ie,ControlledMultiImageField as ae,ControlledGdprConsentField as ce,ControlledCurrencyField as se,ControlledPriceField as pe}from"./components/controlled";import{AvatarFieldComponent as de,BadgeFieldComponent as fe,ButtonFieldComponent as D,HiddenFieldComponent as ue,TextAreaComponent as ye,RichTextComponent as me,TextFieldComponent as F}from"./components/form/fields";import{registerBuiltinFieldType as a}from"./fieldTypeRegistry";import{translateLabel as T}from"./forms/utils";import{sanitizeHtml as ge}from"./utils/sanitizeHtml";function d(e){return e?p("span",{style:{color:"var(--muted-foreground)"},children:"\u2014"}):p(m,{variant:"muted",children:"\u2014"})}const c={timestamp:(e,o,l,t)=>{const r=t?.compact??!1;if(e==null||e==="")return d(r);try{return(e instanceof Date?e:new Date(e)).toLocaleString()}catch{return String(e)}},date:(e,o,l,t)=>{const r=t?.compact??!1;if(e==null||e==="")return d(r);try{return(e instanceof Date?e:new Date(e)).toLocaleDateString()}catch{return String(e)}},"datetime-local":(e,o,l,t)=>{const r=t?.compact??!1;if(e==null||e==="")return d(r);try{return(e instanceof Date?e:new Date(e)).toLocaleString()}catch{return String(e)}},time:(e,o,l,t)=>{const r=t?.compact??!1;if(e==null||e==="")return d(r);try{return(e instanceof Date?e:new Date(e)).toLocaleTimeString()}catch{return String(e)}},week:(e,o,l,t)=>{const r=t?.compact??!1;return e==null||e===""?d(r):String(e)},month:(e,o,l,t)=>{const r=t?.compact??!1;return e==null||e===""?d(r):String(e)},boolean:(e,o,l)=>e?"Yes":"No",checkbox:(e,o,l)=>e?"Yes":"No",switch:(e,o,l)=>{const t=o.options?.fieldSpecific;if(t){const r=t.uncheckedValue??!1,n=t.checkedValue??!0;if(e===n&&t.checkedLabel)return T(t.checkedLabel,l);if(e===r&&t.uncheckedLabel)return T(t.uncheckedLabel,l)}return e?"Yes":"No"},year:(e,o,l)=>String(e),number:(e,o,l)=>{if(e==null||e==="")return"\u2014";const t=o.options?.unit??"",r=N(l,o.options?.suffix);return[(typeof e=="number"?e.toLocaleString():String(e))+t,r].filter(Boolean).join(" ")},currency:(e,o,l)=>{if(e==null||isNaN(e))return"";const n=(o.options||{}).fieldSpecific?.currency||"EUR";return S(e,n)},price:(e,o,l,t)=>{const r=t?.compact??!1,n=t?.asString??!1,i=e!=null&&typeof e=="number"?{amount:e,currency:"EUR",vatIncluded:!0,discountPercent:0}:e;if(i==null||typeof i!="object")return d(r);const s=i.amount;if(s==null||isNaN(s))return d(r);const f=i.currency||"EUR",y=i.vatIncluded??!0,b=i.discountPercent??0,V=b>0?s*(1-b/100):s,x=y?` ${l("crud:price.vatIncluded",{defaultValue:"VAT Incl."})}`:"";if(b>0){const L=S(s,f),w=S(V,f),k=` ${l("crud:price.discountPercent",{percent:Math.round(b),defaultValue:"-{{percent}}%"})}`;return n?`${w}${x}${k}`:r?u(m,{variant:"success",weight:"bold",children:[w,x,k]}):u(h,{direction:"column",gap:"tight",align:"end",children:[p(m,{variant:"muted",style:{textDecoration:"line-through",fontSize:"var(--font-size-sm)"},children:L}),u(m,{variant:"success",weight:"bold",children:[w,x]})]})}return`${S(s,f)}${x}`},range:(e,o,l)=>typeof e=="number"?e.toLocaleString():String(e),rating:(e,o,l,t)=>{const r=t?.compact??!1;if(e==null)return d(r);const n=typeof e=="number"?e:parseFloat(e);if(isNaN(n))return d(r);const i=o.validation?.max??5;return p($,{value:n,max:i,readonly:!0,"aria-label":`${n} out of ${i} stars`})},duration:(e,o,l,t)=>{const r=t?.compact??!1;if(e==null)return d(r);const n=typeof e=="number"?e:parseInt(String(e),10);if(Number.isNaN(n))return d(r);if(n===0)return l("crud:duration.zero",{defaultValue:"\u2014"});if(n<60)return l("crud:duration.minutes",{count:n,defaultValue:`${n} min`});const i=Math.floor(n/60),s=n%60;return l("crud:duration.hoursMinutes",{hours:i,minutes:s,defaultValue:s===0?`${i}h`:`${i}h ${s}min`})},gdprConsent:(e,o,l,t)=>{const r=t?.compact??!1;if(!e||typeof e!="object")return d(r);const n=e.gdprConsent===!0,i=e.gdprConsentDate,s=e.gdprConsentVersion,f=l("crud:gdprConsent.display.yes",{defaultValue:"Consented"}),y=l("crud:gdprConsent.display.no",{defaultValue:"Not consented"});if(!n)return y;const b=[f];if(i)try{const V=new Date(i);b.push(V.toLocaleDateString())}catch{b.push(i)}return s&&b.push(`v${s}`),b.join(" \xB7 ")},select:(e,o,l)=>{const t=o.validation?.options;if(Array.isArray(t)){const n=t.find(i=>i.value===e)?.label;return n?T(n,l):String(e)}return String(e)},radio:(e,o,l)=>{const t=o.validation?.options;if(Array.isArray(t)){const n=t.find(i=>i.value===e)?.label;return n?T(n,l):String(e)}return String(e)},combobox:(e,o,l)=>{const t=o.validation?.options;if(Array.isArray(t)){const n=t.find(i=>i.value===e)?.label;return n?T(n,l):String(e)}return String(e)},multiselect:(e,o,l)=>{if(Array.isArray(e)){const t=o.validation?.options;if(Array.isArray(t))return e.map(n=>{const s=t.find(f=>f.value===n)?.label;return s?T(s,l):n}).join(", ")}return String(e)},image:(e,o,l,t)=>{const r=t?.compact??!1;return e==null||e===""?d(r):typeof e=="string"?p("img",{src:e,alt:o.label||"",style:{width:r?"40px":void 0,height:r?"40px":void 0,maxWidth:r?void 0:"200px",maxHeight:r?void 0:"150px",objectFit:"cover",borderRadius:"var(--radius-sm)"}}):d(r)},images:(e,o,l,t)=>{const r=t?.compact??!1;if(!Array.isArray(e)||e.length===0)return d(r);const n=e[0],i=typeof n=="object"&&n.thumbUrl?n.thumbUrl:n;return r?u("div",{style:{display:"flex",alignItems:"center",gap:"var(--gap-xs)"},children:[p("img",{src:i,alt:"",style:{width:"40px",height:"40px",objectFit:"cover",borderRadius:"var(--radius-sm)"}}),e.length>1&&u("span",{style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:["+",e.length-1]})]}):p(I,{images:e,altPrefix:o.label||"Image"})},files:(e,o,l,t)=>{const r=t?.compact??!1;return!Array.isArray(e)||e.length===0?d(r):p(h,{gap:"tight",children:e.map((n,i)=>u("a",{href:n.url||n,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none",display:"flex",alignItems:"center",fontSize:"var(--font-size-sm)"},children:[n.filename||`File ${i+1}`,n.size&&u(m,{level:"caption",variant:"muted",style:{marginLeft:"var(--gap-sm)"},children:["(",Math.round(n.size/1024)," KB)"]})]},i))})},documents:(e,o,l,t)=>{const r=t?.compact??!1;return!Array.isArray(e)||e.length===0?d(r):p(h,{gap:"tight",children:e.map((n,i)=>u("a",{href:n.url||n,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none",display:"flex",alignItems:"center",fontSize:"var(--font-size-sm)"},children:[n.filename||`File ${i+1}`,n.size&&u(m,{level:"caption",variant:"muted",style:{marginLeft:"var(--gap-sm)"},children:["(",Math.round(n.size/1024)," KB)"]})]},i))})},file:(e,o,l,t)=>{const r=t?.compact??!1;if(!e)return d(r);const n=typeof e=="string"?e:e.url,i=typeof e=="string"?"View file":e.filename||"View file";return u("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none"},children:[i,typeof e=="object"&&e.size&&u("span",{style:{color:"var(--muted-foreground)",marginLeft:"var(--gap-sm)"},children:["(",Math.round(e.size/1024)," KB)"]})]})},document:(e,o,l,t)=>{const r=t?.compact??!1;if(!e)return d(r);const n=typeof e=="string"?e:e.url,i=typeof e=="string"?"View file":e.filename||"View file";return u("a",{href:n,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none"},children:[i,typeof e=="object"&&e.size&&u("span",{style:{color:"var(--muted-foreground)",marginLeft:"var(--gap-sm)"},children:["(",Math.round(e.size/1024)," KB)"]})]})},reference:(e,o,l,t)=>{const r=t?.compact??!1;if(!e)return d(r);const n=o.validation?.reference;if(t?.referenceData&&typeof n=="string"){const i=t.referenceData[n]?.[String(e)];if(i)return i}if(typeof e=="object"&&e!==null){const i=e.displayName||e.name||e.id||String(e);return String(i)}return String(e)},geopoint:(e,o,l,t)=>{const r=t?.compact??!1;return e&&typeof e=="object"&&"lat"in e&&"lng"in e?`${e.lat.toFixed(6)}, ${e.lng.toFixed(6)}`:d(r)},address:(e,o,l)=>e&&typeof e=="object"&&"formatted_address"in e?e.formatted_address:String(e),map:(e,o,l,t)=>{const r=t?.compact??!1;if(e&&typeof e=="object"){const n=Object.entries(e);return n.length===0?d(r):u(h,{direction:"column",gap:"tight",children:[n.slice(0,5).map(([i,s])=>u(m,{style:{fontSize:"var(--font-size-sm)"},children:[u("strong",{children:[i,":"]})," ",String(s)]},i)),n.length>5&&u(m,{variant:"muted",children:["+",n.length-5," more"]})]})}return d(r)},array:(e,o,l,t)=>{const r=t?.compact??!1;return Array.isArray(e)?e.length===0?d(r):e.join(", "):d(r)},"field-array":(e,o,l,t)=>{const r=t?.compact??!1;if(!Array.isArray(e)||e.length===0)return d(r);const n=o.options?.fieldSpecific?.fields;return e.map(i=>{if(typeof i!="object"||i==null)return"";const s=i;return(n?n.map(y=>y.name):Object.keys(s)).map(y=>s[y]).filter(y=>y!=null&&y!=="").map(y=>typeof y=="object"?JSON.stringify(y):String(y)).join(" \xB7 ")}).filter(Boolean).join(", ")},password:()=>"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",email:(e,o,l)=>u(h,{direction:"row",gap:"tight",align:"center",children:[p("a",{href:`mailto:${e}`,style:{color:"var(--primary)",flex:1},onClick:t=>t.stopPropagation(),children:e}),p(j,{text:e,tooltipText:l("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:l("crud:actions.copyEmail",{defaultValue:"Copy email"}),onClick:t=>t.stopPropagation()})]}),tel:(e,o,l)=>u(h,{direction:"row",gap:"tight",align:"center",children:[p("a",{href:`tel:${e}`,style:{color:"var(--primary)",flex:1},onClick:t=>t.stopPropagation(),children:e}),p(j,{text:e,tooltipText:l("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:l("crud:actions.copyPhone",{defaultValue:"Copy phone"}),onClick:t=>t.stopPropagation()})]}),iban:(e,o,l,t)=>{const r=t?.compact??!1;return e?u(h,{direction:"row",gap:"tight",align:"center",children:[p(m,{style:{flex:1},children:e}),p(j,{text:e,tooltipText:l("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:l("crud:actions.copyIban",{defaultValue:"Copy IBAN"}),onClick:n=>n.stopPropagation()})]}):d(r)},url:(e,o,l)=>p("a",{href:e,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)"},children:e}),color:(e,o,l)=>u(h,{direction:"row",gap:"tight",align:"center",children:[p("div",{style:{width:"20px",height:"20px",backgroundColor:e,borderRadius:"var(--radius-sm)",border:"1px solid var(--border)"}}),p(m,{children:e})]}),textarea:(e,o,l)=>String(e),text:(e,o,l)=>String(e),richtext:(e,o,l,t)=>{const r=t?.compact??!1;return e&&typeof e=="string"?r?e.replace(/<[^>]*>/g,"").trim()||p("span",{style:{color:"var(--muted-foreground)"},children:"\u2014"}):p("div",{dangerouslySetInnerHTML:{__html:ge(e)},style:{padding:"var(--gap-sm)",fontSize:"var(--font-size-sm)",lineHeight:"1.6"}}):d(r)}};function be(e){return e.type==="avatar"}function he(e){return e.type==="badge"}let z=!1;function Te(){z||(z=!0,a({type:"text",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.text,components:{controlled:g,uncontrolled:e=>{const{value:o,onChange:l,label:t,error:r,config:n}=e;return p(F,{label:t||"",value:typeof o=="string"?o:"",onChange:s=>{const f=s.target.value;l(f)},error:r,...n.options})}}}),a({type:"email",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.email,components:{controlled:g,uncontrolled:e=>{const{value:o,onChange:l,label:t,error:r,config:n}=e;return p(F,{label:t||"",value:typeof o=="string"?o:"",onChange:s=>{const f=s.target.value;l(f)},error:r,type:"email",...n.options})}}}),a({type:"url",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.url,components:{controlled:g,uncontrolled:e=>{const{value:o,onChange:l,label:t,error:r,config:n}=e;return p(F,{label:t||"",value:typeof o=="string"?o:"",onChange:s=>{const f=s.target.value;l(f)},error:r,type:"url",...n.options})}}}),a({type:"color",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.color,components:{controlled:g,uncontrolled:e=>{const{value:o,onChange:l,label:t,error:r,config:n}=e;return p(F,{label:t||"",value:typeof o=="string"?o:"",onChange:s=>{const f=s.target.value;l(f)},error:r,type:"color",...n.options})}}}),a({type:"textarea",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.textarea,components:{controlled:te,uncontrolled:e=>{const{value:o,onChange:l,label:t,error:r,config:n}=e;return p(ye,{label:t||"",value:typeof o=="string"?o:"",onChange:s=>{const f=s.target.value;l(f)},error:r,...n.options})}}}),a({type:"richtext",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.richtext,components:{controlled:re,uncontrolled:e=>{const{value:o,onChange:l,label:t,error:r,config:n}=e;return p(me,{label:t||"",value:typeof o=="string"?o:"",onChange:s=>{const f=s.target.value;l(f)},error:r,...n.options})}}}),a({type:"password",filterable:!1,filterType:"none",valueType:"string",displayFormatter:c.password,components:{controlled:G}}),a({type:"tel",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.tel,components:{controlled:J}}),a({type:"iban",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.iban,components:{controlled:g,uncontrolled:e=>{const{value:o,onChange:l,label:t,error:r,config:n}=e;return p(F,{label:t||"",value:typeof o=="string"?o:"",onChange:s=>{const f=s.target.value.replace(/\s/g,"").toUpperCase();l(f)},error:r,...n.options})}}}),a({type:"number",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.number,components:{controlled:Y}}),a({type:"currency",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.currency,components:{controlled:se}}),a({type:"price",filterable:!0,filterType:"range",valueType:"object",displayFormatter:c.price,components:{controlled:pe}}),a({type:"range",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.range,components:{controlled:W}}),a({type:"year",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.year,components:{controlled:ee}}),a({type:"rating",filterable:!0,filterType:"rating",valueType:"number",displayFormatter:c.rating,components:{controlled:q}}),a({type:"duration",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.duration,components:{controlled:Q}}),a({type:"boolean",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.boolean,components:{controlled:A}}),a({type:"checkbox",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.checkbox,components:{controlled:A}}),a({type:"gdprConsent",filterable:!0,filterType:"select",valueType:"object",displayFormatter:c.gdprConsent,components:{controlled:ce}}),a({type:"switch",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.switch,components:{controlled:ie}}),a({type:"date",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.date,components:{controlled:C}}),a({type:"datetime-local",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c["datetime-local"],components:{controlled:C}}),a({type:"time",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.time,components:{controlled:C}}),a({type:"week",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.week,components:{controlled:C}}),a({type:"month",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.month,components:{controlled:C}}),a({type:"timestamp",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.timestamp,components:{controlled:ne}}),a({type:"file",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.file,components:{controlled:R}}),a({type:"files",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.files,components:{controlled:_}}),a({type:"document",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.document,components:{controlled:v}}),a({type:"documents",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.documents,components:{controlled:B}}),a({type:"image",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.image,components:{controlled:O}}),a({type:"images",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.images,components:{controlled:ae}}),a({type:"geopoint",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.geopoint,components:{controlled:E}}),a({type:"address",filterable:!0,filterType:"address",valueType:"object",displayFormatter:c.address,components:{controlled:oe}}),a({type:"map",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.map,components:{controlled:U}}),a({type:"array",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.array,components:{controlled:K}}),a({type:"field-array",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c["field-array"],components:{controlled:le}}),a({type:"select",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.select,components:{controlled:M}}),a({type:"combobox",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.combobox,components:{controlled:P}}),a({type:"multiselect",filterable:!0,filterType:"multiselect",valueType:"array",displayFormatter:c.multiselect,components:{controlled:H}}),a({type:"radio",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.radio,components:{controlled:X}}),a({type:"reference",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.reference,components:{controlled:Z}}),a({type:"hidden",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:e=>{const{name:o,value:l}=e;return p(ue,{name:o,value:typeof l=="string"?l:""})}}}),a({type:"avatar",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:e=>{const{value:o,onChange:l,error:t,config:r,t:n}=e;if(!be(r))throw new Error("Invalid config type for avatar field");return p(de,{config:r,value:typeof o=="string"?o:"",onChange:s=>{l(s)},error:!!t,helperText:t||void 0,t:n,...r.options})}}}),a({type:"badge",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:e=>{const{value:o,onChange:l,error:t,config:r,t:n}=e;if(!he(r))throw new Error("Invalid config type for badge field");return p(fe,{config:r,value:typeof o=="string"?o:"",onChange:s=>{l(s)},error:!!t,helperText:t||void 0,t:n,...r.options})}}}),a({type:"submit",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:e=>{const{name:o,label:l,config:t}=e;return p(D,{label:l||o,type:"submit",onClick:()=>{},...t.options})}}}),a({type:"reset",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:e=>{const{name:o,label:l,config:t}=e;return p(D,{label:l||o,type:"reset",onClick:()=>{},...t.options})}}}))}Te();export{Te as registerAllBuiltinFieldTypes};
1
+ "use client";import{jsx as p,jsxs as f}from"react/jsx-runtime";import{Text as m,Stack as b,ImageGallery as V,Rating as L,CopyToClipboard as w}from"@donotdev/components";import{formatCurrency as F,maybeTranslate as $}from"@donotdev/core";import{ControlledCheckboxField as k,ControlledComboboxField as I,ControlledDateField as h,ControlledDropdownField as N,ControlledFileField as M,ControlledMultiFileField as P,ControlledDocumentField as R,ControlledMultiDocumentField as B,ControlledGeoPointField as _,ControlledImageField as E,ControlledMapField as U,ControlledMultiDropdownField as H,ControlledMultiInputField as K,ControlledNumberField as Y,ControlledPasswordField as G,ControlledPhoneField as O,ControlledRangeField as J,ControlledRatingField as W,ControlledDurationField as q,ControlledRadioField as Q,ControlledReferenceField as X,ControlledYearField as Z,ControlledTextField as g,ControlledTextareaField as ee,ControlledRichTextField as te,ControlledTimestampField as re,ControlledAddressField as ne,ControlledFieldArrayField as oe,ControlledSwitchField as le,ControlledMultiImageField as ae,ControlledGdprConsentField as ie,ControlledCurrencyField as ce,ControlledPriceField as se}from"./components/controlled";import{AvatarFieldComponent as pe,BadgeFieldComponent as de,ButtonFieldComponent as A,HiddenFieldComponent as ue,TextAreaComponent as ye,RichTextComponent as fe,TextFieldComponent as T}from"./components/form/fields";import{translateLabel as v}from"./forms/utils";import{sanitizeHtml as me}from"./utils/sanitizeHtml";function d(e){return e?p("span",{style:{color:"var(--muted-foreground)"},children:"\u2014"}):p(m,{variant:"muted",children:"\u2014"})}const i={timestamp:(e,a,r,n)=>{const t=n?.compact??!1;if(e==null||e==="")return d(t);try{return(e instanceof Date?e:new Date(e)).toLocaleString()}catch{return String(e)}},date:(e,a,r,n)=>{const t=n?.compact??!1;if(e==null||e==="")return d(t);try{return(e instanceof Date?e:new Date(e)).toLocaleDateString()}catch{return String(e)}},"datetime-local":(e,a,r,n)=>{const t=n?.compact??!1;if(e==null||e==="")return d(t);try{return(e instanceof Date?e:new Date(e)).toLocaleString()}catch{return String(e)}},time:(e,a,r,n)=>{const t=n?.compact??!1;if(e==null||e==="")return d(t);try{return(e instanceof Date?e:new Date(e)).toLocaleTimeString()}catch{return String(e)}},week:(e,a,r,n)=>{const t=n?.compact??!1;return e==null||e===""?d(t):String(e)},month:(e,a,r,n)=>{const t=n?.compact??!1;return e==null||e===""?d(t):String(e)},boolean:(e,a,r)=>e?"Yes":"No",checkbox:(e,a,r)=>e?"Yes":"No",switch:(e,a,r)=>{const n=a.options?.fieldSpecific;if(n){const t=n.uncheckedValue??!1,o=n.checkedValue??!0;if(e===o&&n.checkedLabel)return v(n.checkedLabel,r);if(e===t&&n.uncheckedLabel)return v(n.uncheckedLabel,r)}return e?"Yes":"No"},year:(e,a,r)=>String(e),number:(e,a,r)=>{if(e==null||e==="")return"\u2014";const n=a.options?.unit??"",t=$(r,a.options?.suffix);return[(typeof e=="number"?e.toLocaleString():String(e))+n,t].filter(Boolean).join(" ")},currency:(e,a,r)=>{if(e==null||isNaN(e))return"";const n=(a.options||{}).fieldSpecific?.currency||"EUR";return F(e,n)},price:(e,a,r,n)=>{const t=n?.compact??!1,o=n?.asString??!1,l=e!=null&&typeof e=="number"?{amount:e,currency:"EUR",vatIncluded:!0,discountPercent:0}:e;if(l==null||typeof l!="object")return d(t);const c=l.amount;if(c==null||isNaN(c))return d(t);const s=l.currency||"EUR",y=l.vatIncluded??!0,u=l.discountPercent??0,x=u>0?c*(1-u/100):c,C=y?` ${r("crud:price.vatIncluded",{defaultValue:"VAT Incl."})}`:"";if(u>0){const z=F(c,s),S=F(x,s),j=` ${r("crud:price.discountPercent",{percent:Math.round(u),defaultValue:"-{{percent}}%"})}`;return o?`${S}${C}${j}`:t?f(m,{variant:"success",weight:"bold",children:[S,C,j]}):f(b,{direction:"column",gap:"tight",align:"end",children:[p(m,{variant:"muted",style:{textDecoration:"line-through",fontSize:"var(--font-size-sm)"},children:z}),f(m,{variant:"success",weight:"bold",children:[S,C]})]})}return`${F(c,s)}${C}`},range:(e,a,r)=>typeof e=="number"?e.toLocaleString():String(e),rating:(e,a,r,n)=>{const t=n?.compact??!1;if(e==null)return d(t);const o=typeof e=="number"?e:parseFloat(e);if(isNaN(o))return d(t);const l=a.validation?.max??5;return p(L,{value:o,max:l,readonly:!0,"aria-label":`${o} out of ${l} stars`})},duration:(e,a,r,n)=>{const t=n?.compact??!1;if(e==null)return d(t);const o=typeof e=="number"?e:parseInt(String(e),10);if(Number.isNaN(o))return d(t);if(o===0)return r("crud:duration.zero",{defaultValue:"\u2014"});if(o<60)return r("crud:duration.minutes",{count:o,defaultValue:`${o} min`});const l=Math.floor(o/60),c=o%60;return r("crud:duration.hoursMinutes",{hours:l,minutes:c,defaultValue:c===0?`${l}h`:`${l}h ${c}min`})},gdprConsent:(e,a,r,n)=>{const t=n?.compact??!1;if(!e||typeof e!="object")return d(t);const o=e.gdprConsent===!0,l=e.gdprConsentDate,c=e.gdprConsentVersion,s=r("crud:gdprConsent.display.yes",{defaultValue:"Consented"}),y=r("crud:gdprConsent.display.no",{defaultValue:"Not consented"});if(!o)return y;const u=[s];if(l)try{const x=new Date(l);u.push(x.toLocaleDateString())}catch{u.push(l)}return c&&u.push(`v${c}`),u.join(" \xB7 ")},select:(e,a,r)=>{const n=a.validation?.options;if(Array.isArray(n)){const t=n.find(o=>o.value===e)?.label;return t?v(t,r):String(e)}return String(e)},radio:(e,a,r)=>{const n=a.validation?.options;if(Array.isArray(n)){const t=n.find(o=>o.value===e)?.label;return t?v(t,r):String(e)}return String(e)},combobox:(e,a,r)=>{const n=a.validation?.options;if(Array.isArray(n)){const t=n.find(o=>o.value===e)?.label;return t?v(t,r):String(e)}return String(e)},multiselect:(e,a,r)=>{if(Array.isArray(e)){const n=a.validation?.options;if(Array.isArray(n))return e.map(t=>{const o=n.find(l=>l.value===t)?.label;return o?v(o,r):t}).join(", ")}return String(e)},image:(e,a,r,n)=>{const t=n?.compact??!1;return e==null||e===""?d(t):typeof e=="string"?p("img",{src:e,alt:a.label||"",style:{width:t?"40px":void 0,height:t?"40px":void 0,maxWidth:t?void 0:"200px",maxHeight:t?void 0:"150px",objectFit:"cover",borderRadius:"var(--radius-sm)"}}):d(t)},images:(e,a,r,n)=>{const t=n?.compact??!1;if(!Array.isArray(e)||e.length===0)return d(t);const o=e[0],l=typeof o=="object"&&o.thumbUrl?o.thumbUrl:o;return t?f("div",{style:{display:"flex",alignItems:"center",gap:"var(--gap-xs)"},children:[p("img",{src:l,alt:"",style:{width:"40px",height:"40px",objectFit:"cover",borderRadius:"var(--radius-sm)"}}),e.length>1&&f("span",{style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:["+",e.length-1]})]}):p(V,{images:e,altPrefix:a.label||"Image"})},files:(e,a,r,n)=>{const t=n?.compact??!1;return!Array.isArray(e)||e.length===0?d(t):p(b,{gap:"tight",children:e.map((o,l)=>f("a",{href:o.url||o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none",display:"flex",alignItems:"center",fontSize:"var(--font-size-sm)"},children:[o.filename||`File ${l+1}`,o.size&&f(m,{level:"caption",variant:"muted",style:{marginLeft:"var(--gap-sm)"},children:["(",Math.round(o.size/1024)," KB)"]})]},l))})},documents:(e,a,r,n)=>{const t=n?.compact??!1;return!Array.isArray(e)||e.length===0?d(t):p(b,{gap:"tight",children:e.map((o,l)=>f("a",{href:o.url||o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none",display:"flex",alignItems:"center",fontSize:"var(--font-size-sm)"},children:[o.filename||`File ${l+1}`,o.size&&f(m,{level:"caption",variant:"muted",style:{marginLeft:"var(--gap-sm)"},children:["(",Math.round(o.size/1024)," KB)"]})]},l))})},file:(e,a,r,n)=>{const t=n?.compact??!1;if(!e)return d(t);const o=typeof e=="string"?e:e.url,l=typeof e=="string"?"View file":e.filename||"View file";return f("a",{href:o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none"},children:[l,typeof e=="object"&&e.size&&f("span",{style:{color:"var(--muted-foreground)",marginLeft:"var(--gap-sm)"},children:["(",Math.round(e.size/1024)," KB)"]})]})},document:(e,a,r,n)=>{const t=n?.compact??!1;if(!e)return d(t);const o=typeof e=="string"?e:e.url,l=typeof e=="string"?"View file":e.filename||"View file";return f("a",{href:o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none"},children:[l,typeof e=="object"&&e.size&&f("span",{style:{color:"var(--muted-foreground)",marginLeft:"var(--gap-sm)"},children:["(",Math.round(e.size/1024)," KB)"]})]})},reference:(e,a,r,n)=>{const t=n?.compact??!1;if(!e)return d(t);const o=a.validation?.reference;if(n?.referenceData&&typeof o=="string"){const l=n.referenceData[o]?.[String(e)];if(l)return l}if(typeof e=="object"&&e!==null){const l=e.displayName||e.name||e.id||String(e);return String(l)}return String(e)},geopoint:(e,a,r,n)=>{const t=n?.compact??!1;return e&&typeof e=="object"&&"lat"in e&&"lng"in e?`${e.lat.toFixed(6)}, ${e.lng.toFixed(6)}`:d(t)},address:(e,a,r)=>e&&typeof e=="object"&&"formatted_address"in e?e.formatted_address:String(e),map:(e,a,r,n)=>{const t=n?.compact??!1;if(e&&typeof e=="object"){const o=Object.entries(e);return o.length===0?d(t):f(b,{direction:"column",gap:"tight",children:[o.slice(0,5).map(([l,c])=>f(m,{style:{fontSize:"var(--font-size-sm)"},children:[f("strong",{children:[l,":"]})," ",String(c)]},l)),o.length>5&&f(m,{variant:"muted",children:["+",o.length-5," more"]})]})}return d(t)},array:(e,a,r,n)=>{const t=n?.compact??!1;return Array.isArray(e)?e.length===0?d(t):e.join(", "):d(t)},"field-array":(e,a,r,n)=>{const t=n?.compact??!1;if(!Array.isArray(e)||e.length===0)return d(t);const o=a.options?.fieldSpecific?.fields;return e.map(l=>{if(typeof l!="object"||l==null)return"";const c=l;return(o?o.map(s=>s.name):Object.keys(c)).map(s=>c[s]).filter(s=>s!=null&&s!=="").map(s=>typeof s=="object"?JSON.stringify(s):String(s)).join(" \xB7 ")}).filter(Boolean).join(", ")},password:()=>"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",email:(e,a,r)=>f(b,{direction:"row",gap:"tight",align:"center",children:[p("a",{href:`mailto:${e}`,style:{color:"var(--primary)",flex:1},onClick:n=>n.stopPropagation(),children:e}),p(w,{text:e,tooltipText:r("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:r("crud:actions.copyEmail",{defaultValue:"Copy email"}),onClick:n=>n.stopPropagation()})]}),tel:(e,a,r)=>f(b,{direction:"row",gap:"tight",align:"center",children:[p("a",{href:`tel:${e}`,style:{color:"var(--primary)",flex:1},onClick:n=>n.stopPropagation(),children:e}),p(w,{text:e,tooltipText:r("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:r("crud:actions.copyPhone",{defaultValue:"Copy phone"}),onClick:n=>n.stopPropagation()})]}),iban:(e,a,r,n)=>{const t=n?.compact??!1;return e?f(b,{direction:"row",gap:"tight",align:"center",children:[p(m,{style:{flex:1},children:e}),p(w,{text:e,tooltipText:r("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:r("crud:actions.copyIban",{defaultValue:"Copy IBAN"}),onClick:o=>o.stopPropagation()})]}):d(t)},url:(e,a,r)=>p("a",{href:e,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)"},children:e}),color:(e,a,r)=>f(b,{direction:"row",gap:"tight",align:"center",children:[p("div",{style:{width:"20px",height:"20px",backgroundColor:e,borderRadius:"var(--radius-sm)",border:"1px solid var(--border)"}}),p(m,{children:e})]}),textarea:(e,a,r)=>String(e),text:(e,a,r)=>String(e),richtext:(e,a,r,n)=>{const t=n?.compact??!1;return e&&typeof e=="string"?t?e.replace(/<[^>]*>/g,"").trim()||p("span",{style:{color:"var(--muted-foreground)"},children:"\u2014"}):p("div",{dangerouslySetInnerHTML:{__html:me(e)},style:{padding:"var(--gap-sm)",fontSize:"var(--font-size-sm)",lineHeight:"1.6"}}):d(t)}};function ge(e){return e.type==="avatar"}function be(e){return e.type==="badge"}let D=!1;function ve(e,a){if(D)return;D=!0;const r=n=>{const{type:t,components:o}=n;o&&a.registerComponent(t,o.controlled,o.uncontrolled),e.set(t,n)};r({type:"text",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.text,components:{controlled:g,uncontrolled:n=>{const{value:t,onChange:o,label:l,error:c,config:s}=n;return p(T,{label:l||"",value:typeof t=="string"?t:"",onChange:y=>{const u=y.target.value;o(u)},error:c,...s.options})}}}),r({type:"email",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.email,components:{controlled:g,uncontrolled:n=>{const{value:t,onChange:o,label:l,error:c,config:s}=n;return p(T,{label:l||"",value:typeof t=="string"?t:"",onChange:y=>{const u=y.target.value;o(u)},error:c,type:"email",...s.options})}}}),r({type:"url",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.url,components:{controlled:g,uncontrolled:n=>{const{value:t,onChange:o,label:l,error:c,config:s}=n;return p(T,{label:l||"",value:typeof t=="string"?t:"",onChange:y=>{const u=y.target.value;o(u)},error:c,type:"url",...s.options})}}}),r({type:"color",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.color,components:{controlled:g,uncontrolled:n=>{const{value:t,onChange:o,label:l,error:c,config:s}=n;return p(T,{label:l||"",value:typeof t=="string"?t:"",onChange:y=>{const u=y.target.value;o(u)},error:c,type:"color",...s.options})}}}),r({type:"textarea",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.textarea,components:{controlled:ee,uncontrolled:n=>{const{value:t,onChange:o,label:l,error:c,config:s}=n;return p(ye,{label:l||"",value:typeof t=="string"?t:"",onChange:y=>{const u=y.target.value;o(u)},error:c,...s.options})}}}),r({type:"richtext",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.richtext,components:{controlled:te,uncontrolled:n=>{const{value:t,onChange:o,label:l,error:c,config:s}=n;return p(fe,{label:l||"",value:typeof t=="string"?t:"",onChange:y=>{const u=y.target.value;o(u)},error:c,...s.options})}}}),r({type:"password",filterable:!1,filterType:"none",valueType:"string",displayFormatter:i.password,components:{controlled:G}}),r({type:"tel",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.tel,components:{controlled:O}}),r({type:"iban",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.iban,components:{controlled:g,uncontrolled:n=>{const{value:t,onChange:o,label:l,error:c,config:s}=n;return p(T,{label:l||"",value:typeof t=="string"?t:"",onChange:y=>{const u=y.target.value.replace(/\s/g,"").toUpperCase();o(u)},error:c,...s.options})}}}),r({type:"number",filterable:!0,filterType:"range",valueType:"number",displayFormatter:i.number,components:{controlled:Y}}),r({type:"currency",filterable:!0,filterType:"range",valueType:"number",displayFormatter:i.currency,components:{controlled:ce}}),r({type:"price",filterable:!0,filterType:"range",valueType:"object",displayFormatter:i.price,components:{controlled:se}}),r({type:"range",filterable:!0,filterType:"range",valueType:"number",displayFormatter:i.range,components:{controlled:J}}),r({type:"year",filterable:!0,filterType:"range",valueType:"number",displayFormatter:i.year,components:{controlled:Z}}),r({type:"rating",filterable:!0,filterType:"rating",valueType:"number",displayFormatter:i.rating,components:{controlled:W}}),r({type:"duration",filterable:!0,filterType:"range",valueType:"number",displayFormatter:i.duration,components:{controlled:q}}),r({type:"boolean",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:i.boolean,components:{controlled:k}}),r({type:"checkbox",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:i.checkbox,components:{controlled:k}}),r({type:"gdprConsent",filterable:!0,filterType:"select",valueType:"object",displayFormatter:i.gdprConsent,components:{controlled:ie}}),r({type:"switch",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:i.switch,components:{controlled:le}}),r({type:"date",filterable:!0,filterType:"range",valueType:"date",displayFormatter:i.date,components:{controlled:h}}),r({type:"datetime-local",filterable:!0,filterType:"range",valueType:"date",displayFormatter:i["datetime-local"],components:{controlled:h}}),r({type:"time",filterable:!0,filterType:"range",valueType:"date",displayFormatter:i.time,components:{controlled:h}}),r({type:"week",filterable:!0,filterType:"range",valueType:"date",displayFormatter:i.week,components:{controlled:h}}),r({type:"month",filterable:!0,filterType:"range",valueType:"date",displayFormatter:i.month,components:{controlled:h}}),r({type:"timestamp",filterable:!0,filterType:"range",valueType:"date",displayFormatter:i.timestamp,components:{controlled:re}}),r({type:"file",filterable:!1,filterType:"none",valueType:"object",displayFormatter:i.file,components:{controlled:M}}),r({type:"files",filterable:!1,filterType:"none",valueType:"array",displayFormatter:i.files,components:{controlled:P}}),r({type:"document",filterable:!1,filterType:"none",valueType:"object",displayFormatter:i.document,components:{controlled:R}}),r({type:"documents",filterable:!1,filterType:"none",valueType:"array",displayFormatter:i.documents,components:{controlled:B}}),r({type:"image",filterable:!1,filterType:"none",valueType:"object",displayFormatter:i.image,components:{controlled:E}}),r({type:"images",filterable:!1,filterType:"none",valueType:"array",displayFormatter:i.images,components:{controlled:ae}}),r({type:"geopoint",filterable:!1,filterType:"none",valueType:"object",displayFormatter:i.geopoint,components:{controlled:_}}),r({type:"address",filterable:!0,filterType:"address",valueType:"object",displayFormatter:i.address,components:{controlled:ne}}),r({type:"map",filterable:!1,filterType:"none",valueType:"object",displayFormatter:i.map,components:{controlled:U}}),r({type:"array",filterable:!1,filterType:"none",valueType:"array",displayFormatter:i.array,components:{controlled:K}}),r({type:"field-array",filterable:!1,filterType:"none",valueType:"array",displayFormatter:i["field-array"],components:{controlled:oe}}),r({type:"select",filterable:!0,filterType:"select",valueType:"string",displayFormatter:i.select,components:{controlled:N}}),r({type:"combobox",filterable:!0,filterType:"select",valueType:"string",displayFormatter:i.combobox,components:{controlled:I}}),r({type:"multiselect",filterable:!0,filterType:"multiselect",valueType:"array",displayFormatter:i.multiselect,components:{controlled:H}}),r({type:"radio",filterable:!0,filterType:"select",valueType:"string",displayFormatter:i.radio,components:{controlled:Q}}),r({type:"reference",filterable:!0,filterType:"text",valueType:"string",displayFormatter:i.reference,components:{controlled:X}}),r({type:"hidden",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:n=>{const{name:t,value:o}=n;return p(ue,{name:t,value:typeof o=="string"?o:""})}}}),r({type:"avatar",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:n=>{const{value:t,onChange:o,error:l,config:c,t:s}=n;if(!ge(c))throw new Error("Invalid config type for avatar field");return p(pe,{config:c,value:typeof t=="string"?t:"",onChange:y=>{o(y)},error:!!l,helperText:l||void 0,t:s,...c.options})}}}),r({type:"badge",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:n=>{const{value:t,onChange:o,error:l,config:c,t:s}=n;if(!be(c))throw new Error("Invalid config type for badge field");return p(de,{config:c,value:typeof t=="string"?t:"",onChange:y=>{o(y)},error:!!l,helperText:l||void 0,t:s,...c.options})}}}),r({type:"submit",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:n=>{const{name:t,label:o,config:l}=n;return p(A,{label:o||t,type:"submit",onClick:()=>{},...l.options})}}}),r({type:"reset",filterable:!1,filterType:"none",valueType:"string",components:{controlled:g,uncontrolled:n=>{const{name:t,label:o,config:l}=n;return p(A,{label:o||t,type:"reset",onClick:()=>{},...l.options})}}})}export{ve as registerAllBuiltinFieldTypes};
@@ -1 +1 @@
1
- "use client";import{createDoNotDevStore as l}from"@donotdev/core";const i={status:"idle",error:null,uploadProgress:0,isDirty:!1},m=l({name:"form-store",createStore:(o,t)=>{const n=new Map;return{forms:{},startSubmit:r=>{o(s=>{const e=s.forms[r]||i;return{forms:{...s.forms,[r]:{...e,status:"uploading",error:null,uploadProgress:0}}}})},setUploading:(r,s)=>{o(e=>{const u=e.forms[r]||i;return{forms:{...e.forms,[r]:{...u,status:"uploading",uploadProgress:Math.min(100,Math.max(0,s))}}}})},setValidating:r=>{o(s=>{const e=s.forms[r]||i;return{forms:{...s.forms,[r]:{...e,status:"validating",uploadProgress:100}}}})},setSubmitting:r=>{o(s=>{const e=s.forms[r]||i;return{forms:{...s.forms,[r]:{...e,status:"submitting"}}}})},setSuccess:r=>{o(u=>{const a=u.forms[r]||i;return{forms:{...u.forms,[r]:{...a,status:"success",error:null}}}});const s=n.get(r);s!==void 0&&clearTimeout(s);const e=setTimeout(()=>{n.delete(r),t().reset(r)},1500);n.set(r,e)},setError:(r,s)=>{o(e=>{const u=e.forms[r]||i;return{forms:{...e.forms,[r]:{...u,status:"error",error:s}}}})},reset:r=>{o(s=>({forms:{...s.forms,[r]:{...i}}}))},setIsDirty:(r,s)=>{o(e=>{const u=e.forms[r]||i;return{forms:{...e.forms,[r]:{...u,isDirty:s}}}})},hasDirtyForms:()=>{const r=t().forms;return Object.values(r).some(s=>s.isDirty)},getDirtyFormIds:()=>{const r=t().forms;return Object.entries(r).filter(([s,e])=>e.isDirty).map(([s])=>s)},cleanup:r=>{const s=n.get(r);s!==void 0&&(clearTimeout(s),n.delete(r)),o(e=>{const{[r]:u,...a}=e.forms;return{forms:a}})},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,getIsDirty:r=>t().forms[r]?.isDirty??!1}}}),c=o=>m(t=>t.forms[o]?.status??"idle"),g=o=>m(t=>{const n=t.forms[o]?.status??"idle";return n==="uploading"||n==="validating"||n==="submitting"}),p=o=>m(t=>t.forms[o]?.uploadProgress??0),d=o=>m(t=>t.forms[o]?.error??null),D=o=>m(t=>t.forms[o]?.isDirty??!1),y=()=>m(o=>Object.values(o.forms).some(t=>t.isDirty));export{d as useFormError,D as useFormIsDirty,g as useFormLoading,c as useFormStatus,m as useFormStore,y as useHasDirtyForms,p as useUploadProgress};
1
+ "use client";import{createDoNotDevStore as f}from"@donotdev/core";const a={status:"idle",error:null,uploadProgress:0,isDirty:!1},i=f({name:"form-store",createStore:(t,o)=>{const m=new Map;return{forms:{},startSubmit:s=>{t(r=>{const e=r.forms[s]||a;return{forms:{...r.forms,[s]:{...e,status:"uploading",error:null,uploadProgress:0}}}})},setUploading:(s,r)=>{t(e=>{const u=e.forms[s]||a;return{forms:{...e.forms,[s]:{...u,status:"uploading",uploadProgress:Math.min(100,Math.max(0,r))}}}})},setValidating:s=>{t(r=>{const e=r.forms[s]||a;return{forms:{...r.forms,[s]:{...e,status:"validating",uploadProgress:100}}}})},setSubmitting:s=>{t(r=>{const e=r.forms[s]||a;return{forms:{...r.forms,[s]:{...e,status:"submitting"}}}})},setSuccess:s=>{t(u=>{const n=u.forms[s]||a;return{forms:{...u.forms,[s]:{...n,status:"success",error:null}}}});const r=m.get(s);r!==void 0&&clearTimeout(r);const e=setTimeout(()=>{m.delete(s),o().reset(s)},1500);m.set(s,e)},setError:(s,r)=>{t(e=>{const u=e.forms[s]||a;return{forms:{...e.forms,[s]:{...u,status:"error",error:r}}}})},reset:s=>{t(r=>({forms:{...r.forms,[s]:{...a}}}))},setIsDirty:(s,r)=>{t(e=>{const u=e.forms[s]||a;return{forms:{...e.forms,[s]:{...u,isDirty:r}}}})},hasDirtyForms:()=>{const s=o().forms;return Object.values(s).some(r=>r.isDirty)},getDirtyFormIds:()=>{const s=o().forms;return Object.entries(s).filter(([r,e])=>e.isDirty).map(([r])=>r)},cleanup:s=>{const r=m.get(s);r!==void 0&&(clearTimeout(r),m.delete(s)),t(e=>{const{[s]:u,...n}=e.forms;return{forms:n}})},getStatus:s=>o().forms[s]?.status??"idle",isLoading:s=>{const r=o().forms[s]?.status??"idle";return r==="uploading"||r==="validating"||r==="submitting"},getUploadProgress:s=>o().forms[s]?.uploadProgress??0,getError:s=>o().forms[s]?.error??null,getIsDirty:s=>o().forms[s]?.isDirty??!1}}}),l=t=>i(o=>o.forms[t]?.status??"idle"),c=t=>i(o=>{const m=o.forms[t]?.status??"idle";return m==="uploading"||m==="validating"||m==="submitting"}),g=t=>i(o=>o.forms[t]?.uploadProgress??0),d=t=>i(o=>o.forms[t]?.error??null),p=t=>i(o=>o.forms[t]?.isDirty??!1),D=()=>i(t=>Object.values(t.forms).some(o=>o.isDirty));export{d as useFormError,p as useFormIsDirty,c as useFormLoading,l as useFormStatus,i as useFormStore,D as useHasDirtyForms,g as useUploadProgress};
@@ -1 +1 @@
1
- "use client";import{createDoNotDevStore as y}from"@donotdev/core";const g={status:"idle",progress:0,error:null},F=y({name:"upload-store",createStore:(u,e)=>({uploads:{},uploadFunctions:{},checkPendingFunctions:{},retryAttempts:{},maxRetries:3,retryDelay:1e3,registerUpload:(n,t,s,o)=>{u(r=>({uploadFunctions:{...r.uploadFunctions,[n]:{...r.uploadFunctions[n]||{},[t]:s}},checkPendingFunctions:{...r.checkPendingFunctions,[n]:{...r.checkPendingFunctions[n]||{},[t]:o||(()=>!1)}}}))},unregisterUpload:(n,t)=>{u(s=>{const o=s.uploadFunctions[n],r=s.checkPendingFunctions[n];if(!o)return s;const{[t]:c,...l}=o,{[t]:p,...a}=r||{},{[t]:d,...h}=s.retryAttempts[n]||{};return{uploadFunctions:{...s.uploadFunctions,[n]:l},checkPendingFunctions:{...s.checkPendingFunctions,[n]:a},retryAttempts:{...s.retryAttempts,[n]:h}}})},startUpload:(n,t)=>{u(s=>({uploads:{...s.uploads,[n]:{...s.uploads[n]||{},[t]:{status:"uploading",progress:0,error:null}}}}))},setProgress:(n,t,s)=>{u(o=>{const r=o.uploads[n]?.[t]||g;return{uploads:{...o.uploads,[n]:{...o.uploads[n]||{},[t]:{...r,progress:Math.min(100,Math.max(0,s))}}}}})},completeUpload:(n,t)=>{u(s=>{const o=s.uploads[n]?.[t]||g;return{uploads:{...s.uploads,[n]:{...s.uploads[n]||{},[t]:{...o,status:"complete",progress:100}}}}})},failUpload:(n,t,s)=>{u(o=>{const r=o.uploads[n]?.[t]||g;return{uploads:{...o.uploads,[n]:{...o.uploads[n]||{},[t]:{...r,status:"error",error:s}}}}})},resetUpload:(n,t)=>{u(s=>({uploads:{...s.uploads,[n]:{...s.uploads[n]||{},[t]:{...g}}}}))},resetForm:n=>{u(t=>({uploads:{...t.uploads,[n]:{}}}))},cleanup:n=>{u(t=>{const{[n]:s,...o}=t.uploads,{[n]:r,...c}=t.uploadFunctions,{[n]:l,...p}=t.checkPendingFunctions,{[n]:a,...d}=t.retryAttempts;return{uploads:o,uploadFunctions:c,checkPendingFunctions:p,retryAttempts:d}})},uploadAll:async n=>{const s=e().uploadFunctions[n];if(!s)return;const o=Object.entries(s);if(o.length===0)return;const r=async(c,l,p=1)=>{e().startUpload(n,c);try{await l(a=>{e().setProgress(n,c,a)}),e().completeUpload(n,c),u(a=>({retryAttempts:{...a.retryAttempts,[n]:{...a.retryAttempts[n]||{},[c]:0}}}))}catch(a){const d=a instanceof Error?a.message:"Upload failed",h=e().maxRetries;if((e().retryAttempts[n]?.[c]??0)<h){u(i=>({retryAttempts:{...i.retryAttempts,[n]:{...i.retryAttempts[n]||{},[c]:(i.retryAttempts[n]?.[c]??0)+1}}}));const P=e().retryDelay*Math.pow(2,p-1);return await new Promise(i=>setTimeout(i,P)),r(c,l,p+1)}else throw e().failUpload(n,c,d),a}};await Promise.all(o.map(async([c,l])=>{await r(c,l)}))},hasPendingUploads:n=>{const t=e(),s=t.uploadFunctions[n],o=t.checkPendingFunctions[n];return s?Object.entries(s).some(([r,c])=>{const l=o?.[r];return l?l():!0}):!1},getStatus:(n,t)=>e().uploads[n]?.[t]?.status??"idle",getProgress:(n,t)=>e().uploads[n]?.[t]?.progress??0,getTotalProgress:n=>{const t=e().uploads[n];if(!t)return 100;const s=Object.values(t);if(s.length===0)return 100;const o=s.reduce((r,c)=>r+c.progress,0);return Math.round(o/s.length)},isUploading:n=>{const t=e().uploads[n];return t?Object.values(t).some(s=>s.status==="uploading"):!1},getError:(n,t)=>e().uploads[n]?.[t]?.error??null})}),k=u=>F(e=>{const n=e.uploads[u];if(!n)return 100;const t=Object.values(n);if(t.length===0)return 100;const s=t.reduce((o,r)=>o+r.progress,0);return Math.round(s/t.length)}),_=u=>F(e=>{const n=e.uploads[u];return n?Object.values(n).some(t=>t.status==="uploading"):!1}),x=(u,e)=>F(n=>n.uploads[u]?.[e]?.progress??0),m=(u,e)=>F(n=>n.uploads[u]?.[e]?.status??"idle");export{x as useFieldProgress,m as useFieldUploadStatus,_ as useIsUploading,k as useTotalProgress,F as useUploadStore};
1
+ "use client";import{createDoNotDevStore as F}from"@donotdev/core";const m={status:"idle",progress:0,error:null},c=F({name:"upload-store",createStore:(u,n)=>({uploads:{},uploadFunctions:{},checkPendingFunctions:{},retryAttempts:{},maxRetries:3,retryDelay:1e3,registerUpload:(t,e,o,r)=>{u(s=>({uploadFunctions:{...s.uploadFunctions,[t]:{...s.uploadFunctions[t]||{},[e]:o}},checkPendingFunctions:{...s.checkPendingFunctions,[t]:{...s.checkPendingFunctions[t]||{},[e]:r||(()=>!1)}}}))},unregisterUpload:(t,e)=>{u(o=>{const r=o.uploadFunctions[t],s=o.checkPendingFunctions[t];if(!r)return o;const{[e]:l,...p}=r,{[e]:a,...i}=s||{},{[e]:g,...h}=o.retryAttempts[t]||{};return{uploadFunctions:{...o.uploadFunctions,[t]:p},checkPendingFunctions:{...o.checkPendingFunctions,[t]:i},retryAttempts:{...o.retryAttempts,[t]:h}}})},startUpload:(t,e)=>{u(o=>({uploads:{...o.uploads,[t]:{...o.uploads[t]||{},[e]:{status:"uploading",progress:0,error:null}}}}))},setProgress:(t,e,o)=>{u(r=>{const s=r.uploads[t]?.[e]||m;return{uploads:{...r.uploads,[t]:{...r.uploads[t]||{},[e]:{...s,progress:Math.min(100,Math.max(0,o))}}}}})},completeUpload:(t,e)=>{u(o=>{const r=o.uploads[t]?.[e]||m;return{uploads:{...o.uploads,[t]:{...o.uploads[t]||{},[e]:{...r,status:"complete",progress:100}}}}})},failUpload:(t,e,o)=>{u(r=>{const s=r.uploads[t]?.[e]||m;return{uploads:{...r.uploads,[t]:{...r.uploads[t]||{},[e]:{...s,status:"error",error:o}}}}})},resetUpload:(t,e)=>{u(o=>({uploads:{...o.uploads,[t]:{...o.uploads[t]||{},[e]:{...m}}}}))},resetForm:t=>{u(e=>({uploads:{...e.uploads,[t]:{}}}))},cleanup:t=>{u(e=>{const{[t]:o,...r}=e.uploads,{[t]:s,...l}=e.uploadFunctions,{[t]:p,...a}=e.checkPendingFunctions,{[t]:i,...g}=e.retryAttempts;return{uploads:r,uploadFunctions:l,checkPendingFunctions:a,retryAttempts:g}})},uploadAll:async t=>{const e=n().uploadFunctions[t];if(!e)return;const o=Object.entries(e);if(o.length===0)return;const r=async(s,l,p=1)=>{n().startUpload(t,s);try{await l(a=>{n().setProgress(t,s,a)}),n().completeUpload(t,s),u(a=>({retryAttempts:{...a.retryAttempts,[t]:{...a.retryAttempts[t]||{},[s]:0}}}))}catch(a){const i=a instanceof Error?a.message:"Upload failed",g=n().maxRetries;if((n().retryAttempts[t]?.[s]??0)<g){u(d=>({retryAttempts:{...d.retryAttempts,[t]:{...d.retryAttempts[t]||{},[s]:(d.retryAttempts[t]?.[s]??0)+1}}}));const h=n().retryDelay*Math.pow(2,p-1);return await new Promise(d=>setTimeout(d,h)),r(s,l,p+1)}else throw n().failUpload(t,s,i),a}};await Promise.all(o.map(async([s,l])=>{await r(s,l)}))},hasPendingUploads:t=>{const e=n(),o=e.uploadFunctions[t],r=e.checkPendingFunctions[t];return o?Object.entries(o).some(([s,l])=>{const p=r?.[s];return p?p():!0}):!1},getStatus:(t,e)=>n().uploads[t]?.[e]?.status??"idle",getProgress:(t,e)=>n().uploads[t]?.[e]?.progress??0,getTotalProgress:t=>{const e=n().uploads[t];if(!e)return 100;const o=Object.values(e);if(o.length===0)return 100;const r=o.reduce((s,l)=>s+l.progress,0);return Math.round(r/o.length)},isUploading:t=>{const e=n().uploads[t];return e?Object.values(e).some(o=>o.status==="uploading"):!1},getError:(t,e)=>n().uploads[t]?.[e]?.error??null})}),y=u=>c(n=>{const t=n.uploads[u];if(!t)return 100;const e=Object.values(t);if(e.length===0)return 100;const o=e.reduce((r,s)=>r+s.progress,0);return Math.round(o/e.length)}),P=u=>c(n=>{const t=n.uploads[u];return t?Object.values(t).some(e=>e.status==="uploading"):!1}),A=(u,n)=>c(t=>t.uploads[u]?.[n]?.progress??0),U=(u,n)=>c(t=>t.uploads[u]?.[n]?.status??"idle");export{A as useFieldProgress,U as useFieldUploadStatus,P as useIsUploading,y as useTotalProgress,c as useUploadStore};
@@ -1 +1 @@
1
- import{useFormStore as o,useFormStatus as e,useFormLoading as u,useUploadProgress as t,useFormError as a,useFormIsDirty as m,useHasDirtyForms as F}from"./FormStore";import{useUploadStore as l,useTotalProgress as i,useIsUploading as p,useFieldProgress as g,useFieldUploadStatus as S}from"./UploadStore";export{g as useFieldProgress,S as useFieldUploadStatus,a as useFormError,m as useFormIsDirty,u as useFormLoading,e as useFormStatus,o as useFormStore,F as useHasDirtyForms,p as useIsUploading,i as useTotalProgress,t as useUploadProgress,l as useUploadStore};
1
+ import{useFormStore as s,useFormStatus as r,useFormLoading as a,useUploadProgress as o,useFormError as e,useFormIsDirty as u,useHasDirtyForms as t}from"./FormStore";import{useUploadStore as m,useTotalProgress as F,useIsUploading as d,useFieldProgress as i,useFieldUploadStatus as l}from"./UploadStore";export{i as useFieldProgress,l as useFieldUploadStatus,e as useFormError,u as useFormIsDirty,a as useFormLoading,r as useFormStatus,s as useFormStore,t as useHasDirtyForms,d as useIsUploading,F as useTotalProgress,o as useUploadProgress,m as useUploadStore};