@adyen/adyen-web 6.38.0 → 6.40.0

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 (180) hide show
  1. package/dist/cjs/adyen.css +91 -91
  2. package/dist/cjs/adyen.css.map +1 -1
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +91 -75
  6. package/dist/es/adyen.css +91 -91
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/ANCV/components/ANCVInput.js +1 -1
  9. package/dist/es/components/ANCV/components/ANCVInput.js.map +1 -1
  10. package/dist/es/components/Ach/components/AchComponent.js +1 -1
  11. package/dist/es/components/Ach/components/AchComponent.js.map +1 -1
  12. package/dist/es/components/Affirm/Affirm.js +1 -1
  13. package/dist/es/components/Affirm/Affirm.js.map +1 -1
  14. package/dist/es/components/Affirm/config.js +1 -1
  15. package/dist/es/components/Affirm/config.js.map +1 -1
  16. package/dist/es/components/BacsDD/components/BacsInput.js +1 -1
  17. package/dist/es/components/BacsDD/components/BacsInput.js.map +1 -1
  18. package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js +1 -1
  19. package/dist/es/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map +1 -1
  20. package/dist/es/components/Card/components/CardInput/components/StoredCardFields.js +1 -1
  21. package/dist/es/components/Card/components/CardInput/components/StoredCardFields.js.map +1 -1
  22. package/dist/es/components/Dragonpay/components/DragonpayInput/DragonpayInput.js +1 -1
  23. package/dist/es/components/Dragonpay/components/DragonpayInput/DragonpayInput.js.map +1 -1
  24. package/dist/es/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js +1 -1
  25. package/dist/es/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js.map +1 -1
  26. package/dist/es/components/PayPal/Paypal.js +1 -1
  27. package/dist/es/components/PayPal/Paypal.js.map +1 -1
  28. package/dist/es/components/PayPal/constants.js +1 -1
  29. package/dist/es/components/PayPal/constants.js.map +1 -1
  30. package/dist/es/components/PayTo/components/BSBInput.js +1 -1
  31. package/dist/es/components/PayTo/components/BSBInput.js.map +1 -1
  32. package/dist/es/components/PayTo/components/PayIDInput.js +1 -1
  33. package/dist/es/components/PayTo/components/PayIDInput.js.map +1 -1
  34. package/dist/es/components/PayTo/components/PayToNameFields.js +1 -1
  35. package/dist/es/components/PayTo/components/PayToNameFields.js.map +1 -1
  36. package/dist/es/components/Pix/components/PixQRDetails.js +1 -1
  37. package/dist/es/components/Pix/components/PixQRDetails.js.map +1 -1
  38. package/dist/es/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js +1 -1
  39. package/dist/es/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js.map +1 -1
  40. package/dist/es/components/internal/Address/Address.js +1 -1
  41. package/dist/es/components/internal/Address/Address.js.map +1 -1
  42. package/dist/es/components/internal/Address/components/FieldContainer.js +1 -1
  43. package/dist/es/components/internal/Address/components/FieldContainer.js.map +1 -1
  44. package/dist/es/components/internal/Address/constants.js +1 -1
  45. package/dist/es/components/internal/Address/constants.js.map +1 -1
  46. package/dist/es/components/internal/Address/utils.js +1 -1
  47. package/dist/es/components/internal/Address/utils.js.map +1 -1
  48. package/dist/es/components/internal/Button/Button.js +1 -1
  49. package/dist/es/components/internal/Button/Button.js.map +1 -1
  50. package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js +1 -1
  51. package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js.map +1 -1
  52. package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js +1 -1
  53. package/dist/es/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js.map +1 -1
  54. package/dist/es/components/internal/ClickToPay/components/CtPLogin/validate.js +1 -1
  55. package/dist/es/components/internal/ClickToPay/components/CtPLogin/validate.js.map +1 -1
  56. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js +1 -1
  57. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js.map +1 -1
  58. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
  59. package/dist/es/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
  60. package/dist/es/components/internal/CompanyDetails/CompanyDetails.js +1 -1
  61. package/dist/es/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
  62. package/dist/es/components/internal/FormFields/InputBase.js +1 -1
  63. package/dist/es/components/internal/FormFields/InputBase.js.map +1 -1
  64. package/dist/es/components/internal/FormFields/RadioGroup/RadioGroup.js +1 -1
  65. package/dist/es/components/internal/FormFields/RadioGroup/RadioGroup.js.map +1 -1
  66. package/dist/es/components/internal/FormFields/Select/Select.js +1 -1
  67. package/dist/es/components/internal/FormFields/Select/Select.js.map +1 -1
  68. package/dist/es/components/internal/FormFields/Select/components/SelectList.js +1 -1
  69. package/dist/es/components/internal/FormFields/Select/components/SelectList.js.map +1 -1
  70. package/dist/es/components/internal/IbanInput/IbanInput.js +1 -1
  71. package/dist/es/components/internal/IbanInput/IbanInput.js.map +1 -1
  72. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  73. package/dist/es/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  74. package/dist/es/components/internal/PhoneInput/PhoneInputFields.js +1 -1
  75. package/dist/es/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
  76. package/dist/es/components/internal/SendCopyToEmail/SendCopyToEmail.js +1 -1
  77. package/dist/es/components/internal/SendCopyToEmail/SendCopyToEmail.js.map +1 -1
  78. package/dist/es/components/internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.js +1 -1
  79. package/dist/es/components/internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.js.map +1 -1
  80. package/dist/es/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js +1 -1
  81. package/dist/es/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js.map +1 -1
  82. package/dist/es/core/config.js +1 -1
  83. package/dist/es/external/preact/dist/preact.js +1 -1
  84. package/dist/es/external/preact/dist/preact.js.map +1 -1
  85. package/dist/es/index.d.ts +91 -75
  86. package/dist/es/packages/server/translations/en-US.json.js +1 -1
  87. package/dist/es/utils/Validator/ValidationRuleResult.js +1 -1
  88. package/dist/es/utils/Validator/ValidationRuleResult.js.map +1 -1
  89. package/dist/es/utils/Validator/Validator.js +1 -1
  90. package/dist/es/utils/Validator/Validator.js.map +1 -1
  91. package/dist/es/utils/useForm/useForm.js +1 -1
  92. package/dist/es/utils/useForm/useForm.js.map +1 -1
  93. package/dist/es-legacy/adyen.css +91 -91
  94. package/dist/es-legacy/adyen.css.map +1 -1
  95. package/dist/es-legacy/components/ANCV/components/ANCVInput.js +1 -1
  96. package/dist/es-legacy/components/ANCV/components/ANCVInput.js.map +1 -1
  97. package/dist/es-legacy/components/Ach/components/AchComponent.js +1 -1
  98. package/dist/es-legacy/components/Ach/components/AchComponent.js.map +1 -1
  99. package/dist/es-legacy/components/Affirm/Affirm.js +1 -1
  100. package/dist/es-legacy/components/Affirm/Affirm.js.map +1 -1
  101. package/dist/es-legacy/components/Affirm/config.js +1 -1
  102. package/dist/es-legacy/components/Affirm/config.js.map +1 -1
  103. package/dist/es-legacy/components/BacsDD/components/BacsInput.js +1 -1
  104. package/dist/es-legacy/components/BacsDD/components/BacsInput.js.map +1 -1
  105. package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/BankTransferInput.js +1 -1
  106. package/dist/es-legacy/components/BankTransfer/components/BankTransferInput/BankTransferInput.js.map +1 -1
  107. package/dist/es-legacy/components/Card/components/CardInput/components/StoredCardFields.js +1 -1
  108. package/dist/es-legacy/components/Card/components/CardInput/components/StoredCardFields.js.map +1 -1
  109. package/dist/es-legacy/components/Dragonpay/components/DragonpayInput/DragonpayInput.js +1 -1
  110. package/dist/es-legacy/components/Dragonpay/components/DragonpayInput/DragonpayInput.js.map +1 -1
  111. package/dist/es-legacy/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js +1 -1
  112. package/dist/es-legacy/components/Dropin/components/PaymentMethod/OrderPaymentMethods.js.map +1 -1
  113. package/dist/es-legacy/components/PayPal/Paypal.js +1 -1
  114. package/dist/es-legacy/components/PayPal/Paypal.js.map +1 -1
  115. package/dist/es-legacy/components/PayPal/constants.js +1 -1
  116. package/dist/es-legacy/components/PayPal/constants.js.map +1 -1
  117. package/dist/es-legacy/components/PayTo/components/BSBInput.js +1 -1
  118. package/dist/es-legacy/components/PayTo/components/BSBInput.js.map +1 -1
  119. package/dist/es-legacy/components/PayTo/components/PayIDInput.js +1 -1
  120. package/dist/es-legacy/components/PayTo/components/PayIDInput.js.map +1 -1
  121. package/dist/es-legacy/components/PayTo/components/PayToNameFields.js +1 -1
  122. package/dist/es-legacy/components/PayTo/components/PayToNameFields.js.map +1 -1
  123. package/dist/es-legacy/components/Pix/components/PixQRDetails.js +1 -1
  124. package/dist/es-legacy/components/Pix/components/PixQRDetails.js.map +1 -1
  125. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js +1 -1
  126. package/dist/es-legacy/components/PreAuthorizedDebitCanada/components/PreAuthorizedDebitCanadaComponent.js.map +1 -1
  127. package/dist/es-legacy/components/internal/Address/Address.js +1 -1
  128. package/dist/es-legacy/components/internal/Address/Address.js.map +1 -1
  129. package/dist/es-legacy/components/internal/Address/components/FieldContainer.js +1 -1
  130. package/dist/es-legacy/components/internal/Address/components/FieldContainer.js.map +1 -1
  131. package/dist/es-legacy/components/internal/Address/constants.js +1 -1
  132. package/dist/es-legacy/components/internal/Address/constants.js.map +1 -1
  133. package/dist/es-legacy/components/internal/Address/utils.js +1 -1
  134. package/dist/es-legacy/components/internal/Address/utils.js.map +1 -1
  135. package/dist/es-legacy/components/internal/Button/Button.js +1 -1
  136. package/dist/es-legacy/components/internal/Button/Button.js.map +1 -1
  137. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js +1 -1
  138. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLogin.js.map +1 -1
  139. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js +1 -1
  140. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/CtPLoginInput.js.map +1 -1
  141. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/validate.js +1 -1
  142. package/dist/es-legacy/components/internal/ClickToPay/components/CtPLogin/validate.js.map +1 -1
  143. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js +1 -1
  144. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPOneTimePasswordInput.js.map +1 -1
  145. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js +1 -1
  146. package/dist/es-legacy/components/internal/ClickToPay/components/CtPOneTimePassword/CtPOneTimePasswordInput/CtPResendOtpLink.js.map +1 -1
  147. package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js +1 -1
  148. package/dist/es-legacy/components/internal/CompanyDetails/CompanyDetails.js.map +1 -1
  149. package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
  150. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  151. package/dist/es-legacy/components/internal/FormFields/RadioGroup/RadioGroup.js +1 -1
  152. package/dist/es-legacy/components/internal/FormFields/RadioGroup/RadioGroup.js.map +1 -1
  153. package/dist/es-legacy/components/internal/FormFields/Select/Select.js +1 -1
  154. package/dist/es-legacy/components/internal/FormFields/Select/Select.js.map +1 -1
  155. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectList.js +1 -1
  156. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectList.js.map +1 -1
  157. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js +1 -1
  158. package/dist/es-legacy/components/internal/IbanInput/IbanInput.js.map +1 -1
  159. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js +1 -1
  160. package/dist/es-legacy/components/internal/PersonalDetails/PersonalDetails.js.map +1 -1
  161. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js +1 -1
  162. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputFields.js.map +1 -1
  163. package/dist/es-legacy/components/internal/SendCopyToEmail/SendCopyToEmail.js +1 -1
  164. package/dist/es-legacy/components/internal/SendCopyToEmail/SendCopyToEmail.js.map +1 -1
  165. package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.js +1 -1
  166. package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/BrazilPersonalDetail.js.map +1 -1
  167. package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js +1 -1
  168. package/dist/es-legacy/components/internal/SocialSecurityNumberBrazil/SocialSecurityNumberBrazil.js.map +1 -1
  169. package/dist/es-legacy/core/config.js +1 -1
  170. package/dist/es-legacy/external/preact/dist/preact.js +1 -1
  171. package/dist/es-legacy/external/preact/dist/preact.js.map +1 -1
  172. package/dist/es-legacy/packages/server/translations/en-US.json.js +1 -1
  173. package/dist/es-legacy/utils/Validator/ValidationRuleResult.js +1 -1
  174. package/dist/es-legacy/utils/Validator/ValidationRuleResult.js.map +1 -1
  175. package/dist/es-legacy/utils/Validator/Validator.js +1 -1
  176. package/dist/es-legacy/utils/Validator/Validator.js.map +1 -1
  177. package/dist/es-legacy/utils/useForm/useForm.js +1 -1
  178. package/dist/es-legacy/utils/useForm/useForm.js.map +1 -1
  179. package/package.json +17 -17
  180. package/styles/adyen.css +91 -91
@@ -1 +1 @@
1
- {"version":3,"file":"useForm.js","sources":["../../../../src/utils/useForm/useForm.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from 'preact/hooks';\nimport Validator from '../Validator';\nimport { getReducer, init } from './reducer';\nimport { Form, FormState, FormProps, Formatter } from './types';\n\nfunction isFormatterObject(formatter: Formatter | Function): formatter is Formatter {\n return formatter && 'formatterFn' in formatter;\n}\n\nfunction useForm<FormSchema>(props: FormProps): Form<FormSchema> {\n const { rules = {}, formatters = {}, defaultData = {}, fieldProblems = {}, schema = [] } = props;\n\n const validator = useMemo(() => new Validator(rules), [rules]);\n\n /** Formats and validates a field */\n const processField = ({ key, value, mode }, fieldContext) => {\n // Find a formatting function either stored under 'key' or a level deeper under a 'formatter' property\n const formatter = formatters?.[key];\n const formatterFn = isFormatterObject(formatter) ? formatter.formatterFn : formatter;\n const formattedValue = formatterFn && typeof formatterFn === 'function' ? formatterFn(value ?? '', fieldContext) : value;\n\n const validationResult = validator.validate({ key, value: formattedValue, mode }, fieldContext);\n return [formattedValue, validationResult];\n };\n\n const [state, dispatch] = useReducer<FormState<FormSchema>, any, any>(\n getReducer(processField),\n { defaultData, schema: schema ?? [], processField, fieldProblems },\n init\n );\n const isValid = useMemo(() => state.schema.reduce((acc, val) => acc && state.valid[val], true), [state.schema, state.valid]);\n\n const getTargetValue = (key, e) => {\n if (!e.target) return e;\n\n if (e.target.type === 'checkbox') {\n return !state.data[key];\n }\n return e.target.value;\n };\n\n /** Formats, validates, and stores a new value for a form field */\n const handleChangeFor = (key, mode) => {\n return e => {\n const value = getTargetValue(key, e);\n dispatch({ type: 'updateField', key, value, mode });\n };\n };\n\n /** Validates every field in the form OR just those in selectedSchema */\n const triggerValidation = useCallback((selectedSchema = null) => {\n dispatch({ type: 'validateForm', selectedSchema });\n }, []);\n\n const setErrors = useCallback((key, value) => dispatch({ type: 'setErrors', key, value }), []);\n const setValid = useCallback((key, value) => dispatch({ type: 'setValid', key, value }), []);\n const setData = useCallback((key, value) => dispatch({ type: 'setData', key, value }), []);\n const mergeData = useCallback(data => dispatch({ type: 'mergeData', data }), []);\n const setSchema = useCallback(schema => dispatch({ type: 'setSchema', schema, defaultData }), [state.schema]);\n const mergeForm = useCallback(formValue => dispatch({ type: 'mergeForm', formValue }), []);\n const setFieldProblems = useCallback(fieldProblems => dispatch({ type: 'setFieldProblems', fieldProblems }), [state.schema]);\n\n // Set reducer fields problems if fieldProblems prop changes\n useEffect(() => {\n setFieldProblems(fieldProblems ?? {});\n }, [JSON.stringify(fieldProblems)]);\n\n return {\n handleChangeFor,\n triggerValidation,\n setSchema,\n setData,\n mergeData,\n setValid,\n setErrors,\n isValid,\n mergeForm,\n setFieldProblems,\n schema: state.schema,\n valid: state.valid,\n errors: state.errors,\n data: state.data,\n fieldProblems: state.fieldProblems\n };\n}\n\nexport default useForm;\n"],"names":["useForm","props","rules","formatters","defaultData","fieldProblems","schema","validator","useMemo","Validator","processField","key","value","mode","fieldContext","formatter","formatterFn","isFormatterObject","formattedValue","validate","state","dispatch","useReducer","getReducer","init","isValid","reduce","acc","val","valid","triggerValidation","useCallback","selectedSchema","type","setErrors","setValid","setData","mergeData","data","setSchema","mergeForm","formValue","setFieldProblems","useEffect","JSON","stringify","handleChangeFor","e","target","getTargetValue","errors"],"mappings":"iNASA,SAASA,EAAoBC,GACzB,MAAMC,MAAEA,EAAQ,GAAEC,WAAEA,EAAa,CAAA,EAAEC,YAAEA,EAAc,CAAA,EAAEC,cAAEA,EAAgB,CAAA,EAAEC,OAAEA,EAAS,IAAOL,EAErFM,EAAYC,EAAQ,IAAM,IAAIC,EAAUP,GAAQ,CAACA,IAGjDQ,EAAe,EAAGC,MAAKC,QAAOC,QAAQC,KAExC,MAAMC,EAAYZ,IAAaQ,GACzBK,EAbd,SAA2BD,GACvB,OAAOA,GAAa,gBAAiBA,CACzC,CAW4BE,CAAkBF,GAAaA,EAAUC,YAAcD,EACrEG,EAAiBF,GAAsC,mBAAhBA,EAA6BA,EAAYJ,GAAS,GAAIE,GAAgBF,EAGnH,MAAO,CAACM,EADiBX,EAAUY,SAAS,CAAER,MAAKC,MAAOM,EAAgBL,QAAQC,MAI/EM,EAAOC,GAAYC,EACtBC,EAAWb,GACX,CAAEN,cAAaE,OAAQA,GAAU,GAAII,eAAcL,iBACnDmB,GAEEC,EAAUjB,EAAQ,IAAMY,EAAMd,OAAOoB,OAAO,CAACC,EAAKC,IAAQD,GAAOP,EAAMS,MAAMD,IAAM,GAAO,CAACR,EAAMd,OAAQc,EAAMS,QAoB/GC,EAAoBC,EAAY,CAACC,EAAiB,QACpDX,EAAS,CAAEY,KAAM,eAAgBD,oBAClC,IAEGE,EAAYH,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,YAAatB,MAAKC,UAAU,IACrFuB,EAAWJ,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,WAAYtB,MAAKC,UAAU,IACnFwB,EAAUL,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,UAAWtB,MAAKC,UAAU,IACjFyB,EAAYN,EAAYO,GAAQjB,EAAS,CAAEY,KAAM,YAAaK,SAAS,IACvEC,EAAYR,EAAYzB,GAAUe,EAAS,CAAEY,KAAM,YAAa3B,SAAQF,gBAAgB,CAACgB,EAAMd,SAC/FkC,EAAYT,EAAYU,GAAapB,EAAS,CAAEY,KAAM,YAAaQ,cAAc,IACjFC,EAAmBX,EAAY1B,GAAiBgB,EAAS,CAAEY,KAAM,mBAAoB5B,kBAAkB,CAACe,EAAMd,SAOpH,OAJAqC,EAAU,KACND,EAAiBrC,GAAiB,KACnC,CAACuC,KAAKC,UAAUxC,KAEZ,CACHyC,gBA1BoB,CAACnC,EAAKE,IACnBkC,IACH,MAAMnC,EAZS,EAACD,EAAKoC,IACpBA,EAAEC,OAEe,aAAlBD,EAAEC,OAAOf,MACDb,EAAMkB,KAAK3B,GAEhBoC,EAAEC,OAAOpC,MALMmC,EAWJE,CAAetC,EAAKoC,GAClC1B,EAAS,CAAEY,KAAM,cAAetB,MAAKC,QAAOC,UAwBhDiB,oBACAS,YACAH,UACAC,YACAF,WACAD,YACAT,UACAe,YACAE,mBACApC,OAAQc,EAAMd,OACduB,MAAOT,EAAMS,MACbqB,OAAQ9B,EAAM8B,OACdZ,KAAMlB,EAAMkB,KACZjC,cAAee,EAAMf,cAE7B"}
1
+ {"version":3,"file":"useForm.js","sources":["../../../../src/utils/useForm/useForm.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from 'preact/hooks';\nimport Validator from '../Validator';\nimport { getReducer, init } from './reducer';\nimport { Form, FormState, FormProps, Formatter } from './types';\nimport { useCoreContext } from '../../core/Context/CoreProvider';\n\nfunction isFormatterObject(formatter: Formatter | Function): formatter is Formatter {\n return formatter && 'formatterFn' in formatter;\n}\n\nfunction useForm<FormSchema>(props: FormProps): Form<FormSchema> {\n const { rules = {}, formatters = {}, defaultData = {}, fieldProblems = {}, schema = [] } = props;\n\n const { i18n } = useCoreContext();\n\n const validator = useMemo(() => new Validator(rules, i18n), [rules]);\n\n /** Formats and validates a field */\n const processField = ({ key, value, mode }, fieldContext) => {\n // Find a formatting function either stored under 'key' or a level deeper under a 'formatter' property\n const formatter = formatters?.[key];\n const formatterFn = isFormatterObject(formatter) ? formatter.formatterFn : formatter;\n const formattedValue = formatterFn && typeof formatterFn === 'function' ? formatterFn(value ?? '', fieldContext) : value;\n\n const validationResult = validator.validate({ key, value: formattedValue, mode }, fieldContext);\n return [formattedValue, validationResult];\n };\n\n const [state, dispatch] = useReducer<FormState<FormSchema>, any, any>(\n getReducer(processField),\n { defaultData, schema: schema ?? [], processField, fieldProblems },\n init\n );\n const isValid = useMemo(() => state.schema.reduce((acc, val) => acc && state.valid[val], true), [state.schema, state.valid]);\n\n const getTargetValue = (key, e) => {\n if (!e.target) return e;\n\n if (e.target.type === 'checkbox') {\n return !state.data[key];\n }\n return e.target.value;\n };\n\n /** Formats, validates, and stores a new value for a form field */\n const handleChangeFor = (key, mode) => {\n return e => {\n const value = getTargetValue(key, e);\n dispatch({ type: 'updateField', key, value, mode });\n };\n };\n\n /** Validates every field in the form OR just those in selectedSchema */\n const triggerValidation = useCallback((selectedSchema = null) => {\n dispatch({ type: 'validateForm', selectedSchema });\n }, []);\n\n const setErrors = useCallback((key, value) => dispatch({ type: 'setErrors', key, value }), []);\n const setValid = useCallback((key, value) => dispatch({ type: 'setValid', key, value }), []);\n const setData = useCallback((key, value) => dispatch({ type: 'setData', key, value }), []);\n const mergeData = useCallback(data => dispatch({ type: 'mergeData', data }), []);\n const setSchema = useCallback(schema => dispatch({ type: 'setSchema', schema, defaultData }), [state.schema]);\n const mergeForm = useCallback(formValue => dispatch({ type: 'mergeForm', formValue }), []);\n const setFieldProblems = useCallback(fieldProblems => dispatch({ type: 'setFieldProblems', fieldProblems }), [state.schema]);\n\n // Set reducer fields problems if fieldProblems prop changes\n useEffect(() => {\n setFieldProblems(fieldProblems ?? {});\n }, [JSON.stringify(fieldProblems)]);\n\n return {\n handleChangeFor,\n triggerValidation,\n setSchema,\n setData,\n mergeData,\n setValid,\n setErrors,\n isValid,\n mergeForm,\n setFieldProblems,\n schema: state.schema,\n valid: state.valid,\n errors: state.errors,\n data: state.data,\n fieldProblems: state.fieldProblems\n };\n}\n\nexport default useForm;\n"],"names":["useForm","props","rules","formatters","defaultData","fieldProblems","schema","i18n","useCoreContext","validator","useMemo","Validator","processField","key","value","mode","fieldContext","formatter","formatterFn","isFormatterObject","formattedValue","validate","state","dispatch","useReducer","getReducer","init","isValid","reduce","acc","val","valid","triggerValidation","useCallback","selectedSchema","type","setErrors","setValid","setData","mergeData","data","setSchema","mergeForm","formValue","setFieldProblems","useEffect","JSON","stringify","handleChangeFor","e","target","getTargetValue","errors"],"mappings":"qRAUA,SAASA,EAAoBC,GACzB,MAAMC,MAAEA,EAAQ,GAAEC,WAAEA,EAAa,CAAA,EAAEC,YAAEA,EAAc,CAAA,EAAEC,cAAEA,EAAgB,CAAA,EAAEC,OAAEA,EAAS,IAAOL,GAErFM,KAAEA,GAASC,IAEXC,EAAYC,EAAQ,IAAM,IAAIC,EAAUT,EAAOK,GAAO,CAACL,IAGvDU,EAAe,EAAGC,MAAKC,QAAOC,QAAQC,KAExC,MAAMC,EAAYd,IAAaU,GACzBK,EAfd,SAA2BD,GACvB,OAAOA,GAAa,gBAAiBA,CACzC,CAa4BE,CAAkBF,GAAaA,EAAUC,YAAcD,EACrEG,EAAiBF,GAAsC,mBAAhBA,EAA6BA,EAAYJ,GAAS,GAAIE,GAAgBF,EAGnH,MAAO,CAACM,EADiBX,EAAUY,SAAS,CAAER,MAAKC,MAAOM,EAAgBL,QAAQC,MAI/EM,EAAOC,GAAYC,EACtBC,EAAWb,GACX,CAAER,cAAaE,OAAQA,GAAU,GAAIM,eAAcP,iBACnDqB,GAEEC,EAAUjB,EAAQ,IAAMY,EAAMhB,OAAOsB,OAAO,CAACC,EAAKC,IAAQD,GAAOP,EAAMS,MAAMD,IAAM,GAAO,CAACR,EAAMhB,OAAQgB,EAAMS,QAoB/GC,EAAoBC,EAAY,CAACC,EAAiB,QACpDX,EAAS,CAAEY,KAAM,eAAgBD,oBAClC,IAEGE,EAAYH,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,YAAatB,MAAKC,UAAU,IACrFuB,EAAWJ,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,WAAYtB,MAAKC,UAAU,IACnFwB,EAAUL,EAAY,CAACpB,EAAKC,IAAUS,EAAS,CAAEY,KAAM,UAAWtB,MAAKC,UAAU,IACjFyB,EAAYN,EAAYO,GAAQjB,EAAS,CAAEY,KAAM,YAAaK,SAAS,IACvEC,EAAYR,EAAY3B,GAAUiB,EAAS,CAAEY,KAAM,YAAa7B,SAAQF,gBAAgB,CAACkB,EAAMhB,SAC/FoC,EAAYT,EAAYU,GAAapB,EAAS,CAAEY,KAAM,YAAaQ,cAAc,IACjFC,EAAmBX,EAAY5B,GAAiBkB,EAAS,CAAEY,KAAM,mBAAoB9B,kBAAkB,CAACiB,EAAMhB,SAOpH,OAJAuC,EAAU,KACND,EAAiBvC,GAAiB,KACnC,CAACyC,KAAKC,UAAU1C,KAEZ,CACH2C,gBA1BoB,CAACnC,EAAKE,IACnBkC,IACH,MAAMnC,EAZS,EAACD,EAAKoC,IACpBA,EAAEC,OAEe,aAAlBD,EAAEC,OAAOf,MACDb,EAAMkB,KAAK3B,GAEhBoC,EAAEC,OAAOpC,MALMmC,EAWJE,CAAetC,EAAKoC,GAClC1B,EAAS,CAAEY,KAAM,cAAetB,MAAKC,QAAOC,UAwBhDiB,oBACAS,YACAH,UACAC,YACAF,WACAD,YACAT,UACAe,YACAE,mBACAtC,OAAQgB,EAAMhB,OACdyB,MAAOT,EAAMS,MACbqB,OAAQ9B,EAAM8B,OACdZ,KAAMlB,EAAMkB,KACZnC,cAAeiB,EAAMjB,cAE7B"}