@verbb/formie-browser 1.0.13 → 1.0.14

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 (381) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/chunks/{address-country-Rx6GQTND.js → address-country-Dn71jroa.js} +10 -4
  3. package/dist/chunks/{address-finder-k7_BXaRe.js → address-finder-O49uDRoR.js} +2 -2
  4. package/dist/chunks/{address-state-BwE01m2_.js → address-state-ByYatUur.js} +154 -143
  5. package/dist/chunks/{api-DqpfkZWL.js → api-D6kJ7kXZ.js} +183 -179
  6. package/dist/chunks/{api-BUb6P-xu.js → api-DYYsVIub.js} +77 -47
  7. package/dist/chunks/{api-sPqGbOww.js → api-ghNr2uxX.js} +15 -9
  8. package/dist/chunks/{bpoint-Dlq34XH1.js → bpoint-D0RKFM4F.js} +3 -3
  9. package/dist/chunks/calculations-YEoVCG2q.js +310 -0
  10. package/dist/chunks/{captcha-eu-CGm8Lbrj.js → captcha-eu-DERJbXnH.js} +5 -4
  11. package/dist/chunks/{checkbox-radio-BY2aTCOG.js → checkbox-radio-gsm8QPJg.js} +74 -75
  12. package/dist/chunks/{combobox-C0EuExSI.js → combobox-CWNdx4Fk.js} +290 -279
  13. package/dist/chunks/conditions-DqNHLTbN.js +464 -0
  14. package/dist/chunks/country-from-ip-DDj_mFki.js +29 -0
  15. package/dist/chunks/csrf-DxHg_ZYt.js +61 -0
  16. package/dist/chunks/{custom-google-maps-BsaSirEZ.js → custom-google-maps-C4l2S3GO.js} +9 -3
  17. package/dist/chunks/{custom-link-CJ1-FjEM.js → custom-link-CLazgKYH.js} +8 -2
  18. package/dist/chunks/{custom-maps-DYW_pBid.js → custom-maps-DqcAlD0v.js} +10 -4
  19. package/dist/chunks/{date-picker-F9BUBDSW.js → date-picker-RUnevF7l.js} +455 -432
  20. package/dist/chunks/{dist-D6i-VNgM.js → dist-ZLeW0zZ3.js} +1281 -453
  21. package/dist/chunks/{eway-D9_m8ooj.js → eway-or6dtjoT.js} +3 -3
  22. package/dist/chunks/field-references.resolver-Ca8MguFv.js +104 -0
  23. package/dist/chunks/{file-upload-rqfZNqlH.js → file-upload-Bm-TXyNB.js} +104 -96
  24. package/dist/chunks/friendly-captcha-v1-GFqCt1Mh.js +34 -0
  25. package/dist/chunks/{friendly-captcha-v2-CLSAbkqx.js → friendly-captcha-v2-WoW246JG.js} +6 -5
  26. package/dist/chunks/{friendly-challenge-8uPatWqk.js → friendly-challenge-DPG9MJb1.js} +111 -102
  27. package/dist/chunks/{go-cardless-DAT3ZaQf.js → go-cardless-DzJ-0FKg.js} +2 -2
  28. package/dist/chunks/google-address-C1P1nTDM.js +163 -0
  29. package/dist/chunks/{hcaptcha-CGLAmgjO.js → hcaptcha-D0T8aIHz.js} +3 -3
  30. package/dist/chunks/{hidden-D7_Ch-QN.js → hidden-BZhXnNPe.js} +8 -2
  31. package/dist/chunks/http-C2QdHuWO.js +27 -0
  32. package/dist/chunks/{leaflet-src-j-lHNmhR.js → leaflet-src-DE6rv6M-.js} +42 -46
  33. package/dist/chunks/{loqate-CJPzBmSm.js → loqate-DD1S7PY9.js} +2 -2
  34. package/dist/chunks/{mollie-Bibhl67p.js → mollie-DG8Ju83x.js} +2 -2
  35. package/dist/chunks/{moneris-H2wSqk9h.js → moneris-C8m3Fvqu.js} +3 -3
  36. package/dist/chunks/opayo-B3EvrVxw.js +188 -0
  37. package/dist/chunks/{paddle-DkvIxQdG.js → paddle-BIYR9Um3.js} +3 -3
  38. package/dist/chunks/{password-validation-D06uH9va.js → password-validation-C8_uO_c_.js} +18 -12
  39. package/dist/chunks/{paypal-CQpAF7Ua.js → paypal-B_yxIo2d.js} +7 -5
  40. package/dist/chunks/{payway-CwDkC7YZ.js → payway-CeOzS0sL.js} +3 -3
  41. package/dist/chunks/{phone-country-D3ayr60L.js → phone-country-bAqje17P.js} +80 -63
  42. package/dist/chunks/{place-kit-BGHklIZ-.js → place-kit-BE5gi3vo.js} +3 -3
  43. package/dist/chunks/{placekit-autocomplete.esm-DWVabQlq.js → placekit-autocomplete.esm-CZZERYur.js} +11 -15
  44. package/dist/chunks/{recaptcha-enterprise-XPId5-bS.js → recaptcha-enterprise-CruXddZq.js} +4 -4
  45. package/dist/chunks/{recaptcha-shared-CLYJvojk.js → recaptcha-shared-AQRMDMme.js} +1 -1
  46. package/dist/chunks/{recaptcha-v2-checkbox-Cy-0PEPc.js → recaptcha-v2-checkbox-CCnJYCnG.js} +4 -4
  47. package/dist/chunks/{recaptcha-v2-invisible-BwRH540O.js → recaptcha-v2-invisible-BuVqRRYn.js} +4 -4
  48. package/dist/chunks/{recaptcha-v3-No4Ykrhk.js → recaptcha-v3-CloqhO2A.js} +4 -4
  49. package/dist/chunks/{repeater-BVnPUqTj.js → repeater-DwE27jI1.js} +25 -19
  50. package/dist/chunks/request-profile-DhwkeCpS.js +10 -0
  51. package/dist/chunks/rich-text-uV4o_pGk.js +361 -0
  52. package/dist/chunks/{chunk-3b4jIN3o.js → rolldown-runtime-DtPi1Y-2.js} +2 -2
  53. package/dist/chunks/{sdk-BhHAYgga.js → sdk-lkwSvlpM.js} +282 -234
  54. package/dist/chunks/{shared-Bx9s0i0P.js → shared-OKhSay59.js} +27 -21
  55. package/dist/chunks/{signature-IOhuicje.js → signature-7cldFbqj.js} +138 -112
  56. package/dist/chunks/{snaptcha-DKx98oon.js → snaptcha-C04kNGYQ.js} +2 -2
  57. package/dist/chunks/{square-DwdcOI1G.js → square-DEzxv9D9.js} +8 -6
  58. package/dist/chunks/{stripe-DaoG2FT1.js → stripe-CVPQGDz3.js} +10 -11
  59. package/dist/chunks/{summary-Dks0gXS3.js → summary-BF_8mrXI.js} +47 -45
  60. package/dist/chunks/{survey-likert-DkE6bR7B.js → survey-likert-fk1hUPff.js} +7 -1
  61. package/dist/chunks/{survey-rank-DN6x4IZM.js → survey-rank-BsLGl2LX.js} +37 -25
  62. package/dist/chunks/{survey-rating-BnsNL9U5.js → survey-rating-DVS6e6fM.js} +17 -5
  63. package/dist/chunks/{table-CAjCJHrL.js → table-DnIBdeKF.js} +21 -15
  64. package/dist/chunks/{text-limit-BGaY0jhI.js → text-limit-LGMPhFuC.js} +40 -34
  65. package/dist/chunks/{theme-classes-Tv7q7ToE.js → theme-classes-DAQuEqdP.js} +1 -1
  66. package/dist/chunks/{turnstile-DJakPzQD.js → turnstile-n9DNyPxi.js} +3 -3
  67. package/dist/chunks/{upload-manager-W-QDgxKD.js → upload-manager-BbiUosZq.js} +410 -350
  68. package/dist/chunks/{utils-Vqp8i_RM.js → utils-DpUBPadZ.js} +20 -14
  69. package/dist/css/formie-base.css +104 -1
  70. package/dist/css/theme/_messages.css +2 -0
  71. package/dist/css/theme/_tokens.css +31 -25
  72. package/dist/css/theme/forms/_form.css +5 -1
  73. package/dist/index.d.ts +5 -4
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +1778 -1427
  76. package/dist/js/contracts/client.d.ts +5 -3
  77. package/dist/js/contracts/client.d.ts.map +1 -1
  78. package/dist/js/contracts/common.d.ts +2 -2
  79. package/dist/js/contracts/common.d.ts.map +1 -1
  80. package/dist/js/contracts/modules.d.ts +37 -12
  81. package/dist/js/contracts/modules.d.ts.map +1 -1
  82. package/dist/js/contracts/schema.d.ts +20 -38
  83. package/dist/js/contracts/schema.d.ts.map +1 -1
  84. package/dist/js/contracts/theme.d.ts +4 -1
  85. package/dist/js/contracts/theme.d.ts.map +1 -1
  86. package/dist/js/core/client-rendered-modules.d.ts +17 -0
  87. package/dist/js/core/client-rendered-modules.d.ts.map +1 -0
  88. package/dist/js/core/create-formie-client.d.ts.map +1 -1
  89. package/dist/js/core/field-error-aria.d.ts +23 -0
  90. package/dist/js/core/field-error-aria.d.ts.map +1 -0
  91. package/dist/js/core/hydrate-modules.d.ts +10 -8
  92. package/dist/js/core/hydrate-modules.d.ts.map +1 -1
  93. package/dist/js/core/submit-result-state.d.ts.map +1 -1
  94. package/dist/js/core/submit-result-ui.d.ts.map +1 -1
  95. package/dist/js/core/validation-focus.d.ts.map +1 -1
  96. package/dist/js/modules/address/address-finder.d.ts +1 -1
  97. package/dist/js/modules/address/address-finder.d.ts.map +1 -1
  98. package/dist/js/modules/address/factories.d.ts +3 -3
  99. package/dist/js/modules/address/factories.d.ts.map +1 -1
  100. package/dist/js/modules/address/google-address.d.ts +2 -1
  101. package/dist/js/modules/address/google-address.d.ts.map +1 -1
  102. package/dist/js/modules/address/index.d.ts +2 -2
  103. package/dist/js/modules/address/index.d.ts.map +1 -1
  104. package/dist/js/modules/address/loqate.d.ts +1 -1
  105. package/dist/js/modules/address/loqate.d.ts.map +1 -1
  106. package/dist/js/modules/address/place-kit.d.ts +1 -1
  107. package/dist/js/modules/address/place-kit.d.ts.map +1 -1
  108. package/dist/js/modules/captchas/captcha-eu.d.ts +1 -1
  109. package/dist/js/modules/captchas/captcha-eu.d.ts.map +1 -1
  110. package/dist/js/modules/captchas/factories.d.ts +11 -11
  111. package/dist/js/modules/captchas/factories.d.ts.map +1 -1
  112. package/dist/js/modules/captchas/friendly-captcha-v1.d.ts +1 -1
  113. package/dist/js/modules/captchas/friendly-captcha-v1.d.ts.map +1 -1
  114. package/dist/js/modules/captchas/friendly-captcha-v2.d.ts +1 -1
  115. package/dist/js/modules/captchas/friendly-captcha-v2.d.ts.map +1 -1
  116. package/dist/js/modules/captchas/hcaptcha.d.ts +1 -1
  117. package/dist/js/modules/captchas/hcaptcha.d.ts.map +1 -1
  118. package/dist/js/modules/captchas/index.d.ts +2 -2
  119. package/dist/js/modules/captchas/index.d.ts.map +1 -1
  120. package/dist/js/modules/captchas/recaptcha-enterprise.d.ts +1 -1
  121. package/dist/js/modules/captchas/recaptcha-enterprise.d.ts.map +1 -1
  122. package/dist/js/modules/captchas/recaptcha-v2-checkbox.d.ts +1 -1
  123. package/dist/js/modules/captchas/recaptcha-v2-checkbox.d.ts.map +1 -1
  124. package/dist/js/modules/captchas/recaptcha-v2-invisible.d.ts +1 -1
  125. package/dist/js/modules/captchas/recaptcha-v2-invisible.d.ts.map +1 -1
  126. package/dist/js/modules/captchas/recaptcha-v3.d.ts +1 -1
  127. package/dist/js/modules/captchas/recaptcha-v3.d.ts.map +1 -1
  128. package/dist/js/modules/captchas/snaptcha.d.ts +1 -1
  129. package/dist/js/modules/captchas/snaptcha.d.ts.map +1 -1
  130. package/dist/js/modules/captchas/turnstile.d.ts +1 -1
  131. package/dist/js/modules/captchas/turnstile.d.ts.map +1 -1
  132. package/dist/js/modules/fields/address-country.d.ts +2 -2
  133. package/dist/js/modules/fields/address-country.d.ts.map +1 -1
  134. package/dist/js/modules/fields/address-state.d.ts +2 -2
  135. package/dist/js/modules/fields/address-state.d.ts.map +1 -1
  136. package/dist/js/modules/fields/calculations.d.ts +2 -2
  137. package/dist/js/modules/fields/calculations.d.ts.map +1 -1
  138. package/dist/js/modules/fields/checkbox-radio.d.ts +2 -2
  139. package/dist/js/modules/fields/checkbox-radio.d.ts.map +1 -1
  140. package/dist/js/modules/fields/combobox.d.ts +2 -2
  141. package/dist/js/modules/fields/combobox.d.ts.map +1 -1
  142. package/dist/js/modules/fields/conditions/config.d.ts.map +1 -1
  143. package/dist/js/modules/fields/conditions/effects.d.ts +1 -0
  144. package/dist/js/modules/fields/conditions/effects.d.ts.map +1 -1
  145. package/dist/js/modules/fields/conditions/evaluator.d.ts +4 -1
  146. package/dist/js/modules/fields/conditions/evaluator.d.ts.map +1 -1
  147. package/dist/js/modules/fields/conditions/references.d.ts.map +1 -1
  148. package/dist/js/modules/fields/conditions/submission-context.d.ts +15 -0
  149. package/dist/js/modules/fields/conditions/submission-context.d.ts.map +1 -0
  150. package/dist/js/modules/fields/conditions/types.d.ts +3 -1
  151. package/dist/js/modules/fields/conditions/types.d.ts.map +1 -1
  152. package/dist/js/modules/fields/conditions/values.d.ts +1 -1
  153. package/dist/js/modules/fields/conditions/values.d.ts.map +1 -1
  154. package/dist/js/modules/fields/conditions.d.ts +2 -2
  155. package/dist/js/modules/fields/conditions.d.ts.map +1 -1
  156. package/dist/js/modules/fields/custom-google-maps.d.ts +2 -2
  157. package/dist/js/modules/fields/custom-google-maps.d.ts.map +1 -1
  158. package/dist/js/modules/fields/custom-link.d.ts +2 -2
  159. package/dist/js/modules/fields/custom-link.d.ts.map +1 -1
  160. package/dist/js/modules/fields/custom-maps.d.ts +2 -2
  161. package/dist/js/modules/fields/custom-maps.d.ts.map +1 -1
  162. package/dist/js/modules/fields/date-picker.d.ts +2 -2
  163. package/dist/js/modules/fields/date-picker.d.ts.map +1 -1
  164. package/dist/js/modules/fields/file-upload.d.ts +2 -2
  165. package/dist/js/modules/fields/file-upload.d.ts.map +1 -1
  166. package/dist/js/modules/fields/hidden.d.ts +2 -2
  167. package/dist/js/modules/fields/hidden.d.ts.map +1 -1
  168. package/dist/js/modules/fields/index.d.ts +2 -2
  169. package/dist/js/modules/fields/index.d.ts.map +1 -1
  170. package/dist/js/modules/fields/password-validation.d.ts +2 -2
  171. package/dist/js/modules/fields/password-validation.d.ts.map +1 -1
  172. package/dist/js/modules/fields/phone-country.d.ts +2 -2
  173. package/dist/js/modules/fields/phone-country.d.ts.map +1 -1
  174. package/dist/js/modules/fields/repeater.d.ts +2 -2
  175. package/dist/js/modules/fields/repeater.d.ts.map +1 -1
  176. package/dist/js/modules/fields/rich-text.d.ts +2 -2
  177. package/dist/js/modules/fields/rich-text.d.ts.map +1 -1
  178. package/dist/js/modules/fields/shared.d.ts +1 -0
  179. package/dist/js/modules/fields/shared.d.ts.map +1 -1
  180. package/dist/js/modules/fields/signature.d.ts +2 -2
  181. package/dist/js/modules/fields/signature.d.ts.map +1 -1
  182. package/dist/js/modules/fields/summary.d.ts +2 -2
  183. package/dist/js/modules/fields/summary.d.ts.map +1 -1
  184. package/dist/js/modules/fields/survey-likert.d.ts +2 -2
  185. package/dist/js/modules/fields/survey-likert.d.ts.map +1 -1
  186. package/dist/js/modules/fields/survey-rank.d.ts +2 -2
  187. package/dist/js/modules/fields/survey-rank.d.ts.map +1 -1
  188. package/dist/js/modules/fields/survey-rating.d.ts +2 -2
  189. package/dist/js/modules/fields/survey-rating.d.ts.map +1 -1
  190. package/dist/js/modules/fields/table.d.ts +2 -2
  191. package/dist/js/modules/fields/table.d.ts.map +1 -1
  192. package/dist/js/modules/fields/text-limit.d.ts +2 -2
  193. package/dist/js/modules/fields/text-limit.d.ts.map +1 -1
  194. package/dist/js/modules/fields/upload-manager.d.ts +2 -2
  195. package/dist/js/modules/fields/upload-manager.d.ts.map +1 -1
  196. package/dist/js/modules/loader.d.ts +10 -4
  197. package/dist/js/modules/loader.d.ts.map +1 -1
  198. package/dist/js/modules/payments/bpoint.d.ts +1 -1
  199. package/dist/js/modules/payments/bpoint.d.ts.map +1 -1
  200. package/dist/js/modules/payments/eway.d.ts +1 -1
  201. package/dist/js/modules/payments/eway.d.ts.map +1 -1
  202. package/dist/js/modules/payments/factories.d.ts +7 -7
  203. package/dist/js/modules/payments/factories.d.ts.map +1 -1
  204. package/dist/js/modules/payments/go-cardless.d.ts +1 -1
  205. package/dist/js/modules/payments/go-cardless.d.ts.map +1 -1
  206. package/dist/js/modules/payments/index.d.ts +2 -2
  207. package/dist/js/modules/payments/index.d.ts.map +1 -1
  208. package/dist/js/modules/payments/mollie.d.ts +1 -1
  209. package/dist/js/modules/payments/mollie.d.ts.map +1 -1
  210. package/dist/js/modules/payments/moneris.d.ts +1 -1
  211. package/dist/js/modules/payments/moneris.d.ts.map +1 -1
  212. package/dist/js/modules/payments/opayo.d.ts +1 -1
  213. package/dist/js/modules/payments/opayo.d.ts.map +1 -1
  214. package/dist/js/modules/payments/paddle.d.ts +1 -1
  215. package/dist/js/modules/payments/paddle.d.ts.map +1 -1
  216. package/dist/js/modules/payments/paypal.d.ts +1 -1
  217. package/dist/js/modules/payments/paypal.d.ts.map +1 -1
  218. package/dist/js/modules/payments/payway.d.ts +1 -1
  219. package/dist/js/modules/payments/payway.d.ts.map +1 -1
  220. package/dist/js/modules/payments/square.d.ts +1 -1
  221. package/dist/js/modules/payments/square.d.ts.map +1 -1
  222. package/dist/js/modules/payments/stripe.d.ts +1 -1
  223. package/dist/js/modules/payments/stripe.d.ts.map +1 -1
  224. package/dist/js/modules/payments/utils.d.ts +6 -0
  225. package/dist/js/modules/payments/utils.d.ts.map +1 -1
  226. package/dist/js/modules/registry.d.ts +6 -4
  227. package/dist/js/modules/registry.d.ts.map +1 -1
  228. package/dist/js/submit/pipeline.d.ts.map +1 -1
  229. package/dist/js/theme/browser-theme-state.generated.d.ts +24 -0
  230. package/dist/js/theme/browser-theme-state.generated.d.ts.map +1 -0
  231. package/dist/js/theme/theme-classes.d.ts +3 -3
  232. package/dist/js/theme/theme-classes.d.ts.map +1 -1
  233. package/dist/js/transport/forms-api.d.ts +5 -3
  234. package/dist/js/transport/forms-api.d.ts.map +1 -1
  235. package/dist/js/utils/country-from-ip.d.ts +2 -2
  236. package/dist/js/utils/country-from-ip.d.ts.map +1 -1
  237. package/dist/js/utils/csrf.d.ts +17 -0
  238. package/dist/js/utils/csrf.d.ts.map +1 -0
  239. package/dist/js/utils/field-references.parser.d.ts +1 -0
  240. package/dist/js/utils/field-references.parser.d.ts.map +1 -1
  241. package/dist/js/utils/field-references.resolver.d.ts.map +1 -1
  242. package/dist/js/utils/field-references.types.d.ts +1 -0
  243. package/dist/js/utils/field-references.types.d.ts.map +1 -1
  244. package/dist/js/utils/http.d.ts +3 -1
  245. package/dist/js/utils/http.d.ts.map +1 -1
  246. package/dist/js/utils/request-profile.d.ts +4 -0
  247. package/dist/js/utils/request-profile.d.ts.map +1 -0
  248. package/dist/js/utils/unload-warning.d.ts.map +1 -1
  249. package/dist/js/validation/rules/email.d.ts.map +1 -1
  250. package/dist/js/validation/rules/match.d.ts.map +1 -1
  251. package/dist/js/validation/rules/number.d.ts.map +1 -1
  252. package/dist/js/validation/rules/required.d.ts.map +1 -1
  253. package/dist/js/validation/rules/shared.d.ts.map +1 -1
  254. package/dist/js/validation/rules/url.d.ts.map +1 -1
  255. package/dist/js/validation/skip.d.ts +7 -0
  256. package/dist/js/validation/skip.d.ts.map +1 -0
  257. package/dist/js/validation/submit-readiness.d.ts.map +1 -1
  258. package/dist/js/validation/validator.d.ts.map +1 -1
  259. package/package.json +43 -12
  260. package/src/css/formie-base.css +104 -1
  261. package/src/css/theme/_messages.css +2 -0
  262. package/src/css/theme/_tokens.css +31 -25
  263. package/src/css/theme/forms/_form.css +5 -1
  264. package/src/index.ts +13 -8
  265. package/src/js/contracts/client.ts +5 -3
  266. package/src/js/contracts/common.ts +5 -6
  267. package/src/js/contracts/modules.ts +41 -12
  268. package/src/js/contracts/schema.ts +21 -43
  269. package/src/js/contracts/theme.ts +6 -1
  270. package/src/js/core/client-rendered-modules.ts +69 -0
  271. package/src/js/core/create-formie-client.ts +116 -77
  272. package/src/js/core/field-error-aria.ts +93 -0
  273. package/src/js/core/hydrate-modules.ts +54 -29
  274. package/src/js/core/submit-result-state.ts +34 -45
  275. package/src/js/core/submit-result-ui.ts +21 -65
  276. package/src/js/core/validation-focus.ts +20 -20
  277. package/src/js/modules/address/address-finder.ts +1 -1
  278. package/src/js/modules/address/factories.ts +15 -13
  279. package/src/js/modules/address/google-address.ts +10 -6
  280. package/src/js/modules/address/index.ts +2 -2
  281. package/src/js/modules/address/loqate.ts +1 -1
  282. package/src/js/modules/address/place-kit.ts +1 -1
  283. package/src/js/modules/captchas/captcha-eu.ts +2 -2
  284. package/src/js/modules/captchas/factories.ts +66 -42
  285. package/src/js/modules/captchas/friendly-captcha-v1.ts +12 -2
  286. package/src/js/modules/captchas/friendly-captcha-v2.ts +4 -2
  287. package/src/js/modules/captchas/hcaptcha.ts +5 -5
  288. package/src/js/modules/captchas/index.ts +2 -2
  289. package/src/js/modules/captchas/recaptcha-enterprise.ts +2 -2
  290. package/src/js/modules/captchas/recaptcha-v2-checkbox.ts +3 -3
  291. package/src/js/modules/captchas/recaptcha-v2-invisible.ts +2 -2
  292. package/src/js/modules/captchas/recaptcha-v3.ts +2 -2
  293. package/src/js/modules/captchas/snaptcha.ts +1 -1
  294. package/src/js/modules/captchas/turnstile.ts +3 -3
  295. package/src/js/modules/fields/address-country.ts +6 -4
  296. package/src/js/modules/fields/address-state.ts +20 -12
  297. package/src/js/modules/fields/calculations.ts +5 -3
  298. package/src/js/modules/fields/checkbox-radio.ts +24 -42
  299. package/src/js/modules/fields/combobox.ts +25 -9
  300. package/src/js/modules/fields/conditions/config.ts +17 -20
  301. package/src/js/modules/fields/conditions/effects.ts +23 -26
  302. package/src/js/modules/fields/conditions/evaluator.ts +21 -29
  303. package/src/js/modules/fields/conditions/references.ts +16 -5
  304. package/src/js/modules/fields/conditions/submission-context.ts +80 -0
  305. package/src/js/modules/fields/conditions/types.ts +3 -1
  306. package/src/js/modules/fields/conditions/values.ts +31 -6
  307. package/src/js/modules/fields/conditions.ts +59 -18
  308. package/src/js/modules/fields/custom-google-maps.ts +5 -3
  309. package/src/js/modules/fields/custom-link.ts +5 -3
  310. package/src/js/modules/fields/custom-maps.ts +5 -3
  311. package/src/js/modules/fields/date-picker.ts +34 -4
  312. package/src/js/modules/fields/file-upload.ts +19 -10
  313. package/src/js/modules/fields/hidden.ts +5 -3
  314. package/src/js/modules/fields/index.ts +2 -2
  315. package/src/js/modules/fields/password-validation.ts +5 -3
  316. package/src/js/modules/fields/phone-country.ts +33 -6
  317. package/src/js/modules/fields/repeater.ts +5 -3
  318. package/src/js/modules/fields/rich-text.ts +20 -4
  319. package/src/js/modules/fields/shared.ts +13 -0
  320. package/src/js/modules/fields/signature.ts +24 -4
  321. package/src/js/modules/fields/summary.ts +8 -20
  322. package/src/js/modules/fields/survey-likert.ts +5 -3
  323. package/src/js/modules/fields/survey-rank.ts +21 -3
  324. package/src/js/modules/fields/survey-rating.ts +17 -3
  325. package/src/js/modules/fields/table.ts +5 -3
  326. package/src/js/modules/fields/text-limit.ts +5 -3
  327. package/src/js/modules/fields/upload-manager.ts +190 -49
  328. package/src/js/modules/loader.ts +345 -281
  329. package/src/js/modules/payments/bpoint.ts +2 -2
  330. package/src/js/modules/payments/eway.ts +2 -2
  331. package/src/js/modules/payments/factories.ts +53 -52
  332. package/src/js/modules/payments/go-cardless.ts +1 -1
  333. package/src/js/modules/payments/index.ts +2 -2
  334. package/src/js/modules/payments/mollie.ts +1 -1
  335. package/src/js/modules/payments/moneris.ts +2 -2
  336. package/src/js/modules/payments/opayo.ts +21 -8
  337. package/src/js/modules/payments/paddle.ts +10 -6
  338. package/src/js/modules/payments/payment.ts +22 -18
  339. package/src/js/modules/payments/paypal.ts +1 -1
  340. package/src/js/modules/payments/payway.ts +2 -2
  341. package/src/js/modules/payments/square.ts +2 -2
  342. package/src/js/modules/payments/stripe.ts +5 -5
  343. package/src/js/modules/payments/utils.ts +14 -0
  344. package/src/js/modules/registry.ts +19 -11
  345. package/src/js/submit/pipeline.ts +10 -11
  346. package/src/js/theme/browser-theme-state.generated.ts +25 -0
  347. package/src/js/theme/theme-classes.ts +3 -3
  348. package/src/js/transport/forms-api.ts +66 -67
  349. package/src/js/utils/country-from-ip.ts +14 -9
  350. package/src/js/utils/csrf.ts +136 -0
  351. package/src/js/utils/field-references.parser.ts +13 -113
  352. package/src/js/utils/field-references.resolver.ts +27 -64
  353. package/src/js/utils/field-references.row-scope.ts +1 -1
  354. package/src/js/utils/field-references.types.ts +1 -0
  355. package/src/js/utils/http.ts +5 -5
  356. package/src/js/utils/request-profile.ts +10 -0
  357. package/src/js/utils/unload-warning.ts +12 -4
  358. package/src/js/validation/rules/email.ts +3 -5
  359. package/src/js/validation/rules/match.ts +2 -1
  360. package/src/js/validation/rules/minmax.ts +4 -43
  361. package/src/js/validation/rules/number.ts +3 -47
  362. package/src/js/validation/rules/pattern.ts +3 -8
  363. package/src/js/validation/rules/required.ts +2 -1
  364. package/src/js/validation/rules/shared.ts +5 -1
  365. package/src/js/validation/rules/url.ts +3 -10
  366. package/src/js/validation/skip.ts +9 -0
  367. package/src/js/validation/submit-readiness.ts +9 -2
  368. package/src/js/validation/validator.ts +35 -59
  369. package/dist/chunks/calculations-Dv3hYb8_.js +0 -299
  370. package/dist/chunks/conditions-CPH1snCx.js +0 -424
  371. package/dist/chunks/country-from-ip-BwxKaBuJ.js +0 -26
  372. package/dist/chunks/field-references.resolver-CHwn0G0L.js +0 -145
  373. package/dist/chunks/friendly-captcha-v1-C_2reOXr.js +0 -31
  374. package/dist/chunks/google-address-BH3Zhi06.js +0 -161
  375. package/dist/chunks/http-D-JExro7.js +0 -27
  376. package/dist/chunks/opayo-CR0DtsLa.js +0 -179
  377. package/dist/chunks/rich-text-Bg_--4TG.js +0 -349
  378. package/dist/js/modules/fields/conditions/transforms.d.ts +0 -3
  379. package/dist/js/modules/fields/conditions/transforms.d.ts.map +0 -1
  380. package/src/js/modules/fields/conditions/transforms.ts +0 -206
  381. package/src/js/modules/payments/stub-payment-module.ts +0 -87
@@ -1,4 +1,4 @@
1
- import { t as e } from "./api-DqpfkZWL.js";
1
+ import { t as e } from "./api-D6kJ7kXZ.js";
2
2
  import { r as t } from "./async-nPFRNQ06.js";
3
3
  import { r as n } from "./scripts-CbQ7agX3.js";
4
4
  //#region src/js/modules/payments/eway.ts
@@ -34,13 +34,13 @@ async function i() {
34
34
  throw e || /* @__PURE__ */ Error("Eway encryption script failed to load.");
35
35
  }
36
36
  var a = e({
37
- id: "eway",
37
+ moduleId: "formie:eway",
38
38
  defaultRequiredInputSuffixes: ["ewayTokenData"],
39
39
  load: async (e) => {
40
40
  let { provider: t } = e.options;
41
41
  return t.cseKey?.trim() ? i() : (console.error("[formie] Missing cseKey for Eway."), null);
42
42
  },
43
- onBeforeAuthorize: async (e) => {
43
+ onBeforePayment: async (e) => {
44
44
  let { field: t, services: n, provider: r, api: a } = e, o = r.cseKey;
45
45
  if (!o?.trim()) return n.addError("Missing cseKey for Eway."), !1;
46
46
  let s = a;
@@ -0,0 +1,104 @@
1
+ import { f as e, u as t } from "./dist-ZLeW0zZ3.js";
2
+ import { n, r, t as i } from "./field-references.keys-58ZSTrCW.js";
3
+ //#region src/js/utils/field-references.parser.ts
4
+ function a(t) {
5
+ let n = String(t || "").trim(), i = e(n), a = n.startsWith("{"), o = i.isValid && i.target === "field";
6
+ return {
7
+ raw: n,
8
+ target: o ? "field" : "",
9
+ key: o ? r(i.identifier) : a ? "" : r(n),
10
+ selector: i.selector,
11
+ defaultValue: i.default,
12
+ transforms: i.transformerId ? [{
13
+ id: i.transformerId,
14
+ params: i.transformerParams
15
+ }] : [],
16
+ isToken: a,
17
+ isValid: a ? o : n !== ""
18
+ };
19
+ }
20
+ //#endregion
21
+ //#region src/js/utils/field-references.registry.ts
22
+ function o(e) {
23
+ return e instanceof HTMLInputElement || e instanceof HTMLTextAreaElement || e instanceof HTMLSelectElement;
24
+ }
25
+ function s(e, t, n) {
26
+ let r = t.trim(), i = String(n.name || "").trim();
27
+ if (!r || !i) return;
28
+ let a = e.get(r) || {
29
+ key: r,
30
+ names: [],
31
+ inputs: []
32
+ };
33
+ a.names.includes(i) || a.names.push(i), a.inputs.includes(n) || a.inputs.push(n), e.set(r, a);
34
+ }
35
+ function c(e) {
36
+ let t = /* @__PURE__ */ new Map();
37
+ return Array.from(e.querySelectorAll("[name]")).filter((e) => o(e)).forEach((e) => {
38
+ let r = n(e.name);
39
+ r && s(t, r, e);
40
+ }), t;
41
+ }
42
+ //#endregion
43
+ //#region src/js/utils/field-references.resolver.ts
44
+ function l(e) {
45
+ if (!e.length) return "";
46
+ let t = e[0];
47
+ if (t instanceof HTMLSelectElement && t.multiple) return Array.from(t.selectedOptions).map((e) => e.value);
48
+ if (e.some((e) => e instanceof HTMLInputElement && (e.type === "checkbox" || e.type === "radio"))) {
49
+ let t = e.flatMap((e) => !(e instanceof HTMLInputElement) || !e.checked ? [] : [e.value]);
50
+ return t.length > 1 ? t : t[0] || "";
51
+ }
52
+ return t.value;
53
+ }
54
+ function u(e, t) {
55
+ return e.get(r(t)) || null;
56
+ }
57
+ function d(n, r, i) {
58
+ let a = n.trim().startsWith("{") ? n : `{field:${encodeURIComponent(r)}}`, o = e(a), s = `field:${o.identifier}`, c = o.selector ? `${s}:${o.selector}` : s, l = t(a, {
59
+ definitions: { [s]: {
60
+ id: s,
61
+ selectors: o.selector ? [o.selector] : [],
62
+ availability: {
63
+ server: !0,
64
+ browser: !0
65
+ }
66
+ } },
67
+ values: { [c]: i }
68
+ });
69
+ return {
70
+ key: r,
71
+ value: l.diagnostic ? "" : l.value,
72
+ found: !l.diagnostic,
73
+ diagnostic: l.diagnostic
74
+ };
75
+ }
76
+ function f(e, t) {
77
+ let n = a(e), r = n.key, i = n.selector ? `${r}.${n.selector.replace(/:/g, ".")}` : r, o = n.isValid ? u(t, i) : null;
78
+ return o ? d(e, r, l(o.inputs)) : {
79
+ key: r,
80
+ value: "",
81
+ found: !1,
82
+ diagnostic: n.isValid ? n.selector ? "invalidSelector" : "missingField" : "invalidExpression"
83
+ };
84
+ }
85
+ function p(e, t, n) {
86
+ let r = a(e), o = r.key, s = r.selector ? `${o}.${r.selector.replace(/:/g, ".")}` : o, c = n ? u(n, s) : null;
87
+ if (!r.isValid || n && !c) return {
88
+ key: o,
89
+ value: "",
90
+ found: !1,
91
+ diagnostic: r.isValid ? "missingField" : "invalidExpression"
92
+ };
93
+ let l = c?.names?.length ? c.names : [i(s)];
94
+ if (!(c || l.some((e) => t.has(e) || t.has(`${e}[]`)))) return {
95
+ key: o,
96
+ value: "",
97
+ found: !1,
98
+ diagnostic: "missingField"
99
+ };
100
+ let f = l.flatMap((e) => [...t.getAll(e), ...t.getAll(`${e}[]`)]).map((e) => String(e ?? ""));
101
+ return d(e, o, f.length > 1 ? f : f[0] ?? "");
102
+ }
103
+ //#endregion
104
+ export { a as i, f as n, c as r, p as t };
@@ -1,130 +1,130 @@
1
1
  import { a as e, i as t, r as n } from "./event-names-BCI2FLD8.js";
2
- import { t as r } from "./http-D-JExro7.js";
2
+ import { n as r } from "./http-C2QdHuWO.js";
3
3
  import { t as i } from "./styles-BfoIZwJp.js";
4
- import { c as a, l as o, t as s } from "./shared-Bx9s0i0P.js";
4
+ import { l as a, n as o, u as s } from "./shared-OKhSay59.js";
5
5
  //#region src/css/theme/fields/_file.css?inline
6
- var c = "@layer formie-theme{.formie-file-input{padding:var(--formie-space-1);line-height:var(--formie-line-height-base);cursor:pointer}.formie-file-input::file-selector-button{appearance:none;padding:calc(var(--formie-control-padding-y) - 1px) var(--formie-space-2);min-height:calc(var(--formie-control-height) - (var(--formie-space-1) * 2));border:var(--formie-border-width) solid var(--formie-color-border-control);border-radius:calc(var(--formie-radius-sm) - 1px);background:var(--formie-color-surface-subtle);color:var(--formie-color-heading);font-weight:var(--formie-font-weight-normal);font-size:var(--formie-font-size-xs);white-space:nowrap;cursor:pointer;margin-inline-end:var(--formie-space-2);line-height:1.1;transition:border-color .15s,background-color .15s,color .15s,box-shadow .15s}.formie-file-input::-webkit-file-upload-button{appearance:none;padding:calc(var(--formie-control-padding-y) - 1px) var(--formie-space-2);min-height:calc(var(--formie-control-height) - (var(--formie-space-1) * 2));border:var(--formie-border-width) solid var(--formie-color-border-control);border-radius:calc(var(--formie-radius-sm) - 1px);background:var(--formie-color-surface-subtle);color:var(--formie-color-heading);font-weight:var(--formie-font-weight-normal);font-size:var(--formie-font-size-xs);white-space:nowrap;cursor:pointer;margin-inline-end:var(--formie-space-2);line-height:1.1;transition:border-color .15s,background-color .15s,color .15s,box-shadow .15s}.formie-file-input:hover::file-selector-button{border-color:color-mix(in srgb, var(--formie-color-border-control) 70%, var(--formie-color-heading) 30%);background:var(--formie-color-surface-muted)}.formie-file-input:hover::-webkit-file-upload-button{border-color:color-mix(in srgb, var(--formie-color-border-control) 70%, var(--formie-color-heading) 30%);background:var(--formie-color-surface-muted)}.formie-file-input:focus{outline:0}.formie-file-input:focus-visible::file-selector-button{border-color:var(--formie-color-focus-ring)}.formie-file-input:focus-visible::-webkit-file-upload-button{border-color:var(--formie-color-focus-ring)}.formie-field-has-error .formie-file-input::file-selector-button{border-color:var(--formie-color-danger)}.formie-field-has-error .formie-file-input::-webkit-file-upload-button{border-color:var(--formie-color-danger)}.formie-file-summary{padding:var(--formie-file-summary-padding);gap:var(--formie-gap-file-summary);border:var(--formie-border-width) solid var(--formie-color-border-control);border-radius:var(--formie-radius-sm)}.formie-file-summary-container{padding-left:var(--formie-list-indent);margin:0}}", l = "input[type=\"file\"][data-formie-file-input]", u = t("uploaded"), d = e("reset"), f = "data-formie-file-upload-key", p = "data-formie-file-upload-hydrate-endpoint", m = "data-formie-file-upload-anchor", h = "data-formie-file-upload-asset-id", g = [
6
+ var c = "@layer formie-theme{.formie-file-input{padding:var(--formie-space-1);line-height:var(--formie-line-height-base);cursor:pointer}.formie-file-input::file-selector-button{appearance:none;padding:calc(var(--formie-control-padding-y) - 1px) var(--formie-space-2);min-height:calc(var(--formie-control-height) - (var(--formie-space-1) * 2));border:var(--formie-border-width) solid var(--formie-color-border-control);border-radius:calc(var(--formie-radius-sm) - 1px);background:var(--formie-color-surface-subtle);color:var(--formie-color-heading);font-weight:var(--formie-font-weight-normal);font-size:var(--formie-font-size-xs);white-space:nowrap;cursor:pointer;margin-inline-end:var(--formie-space-2);line-height:1.1;transition:border-color .15s,background-color .15s,color .15s,box-shadow .15s}.formie-file-input::-webkit-file-upload-button{appearance:none;padding:calc(var(--formie-control-padding-y) - 1px) var(--formie-space-2);min-height:calc(var(--formie-control-height) - (var(--formie-space-1) * 2));border:var(--formie-border-width) solid var(--formie-color-border-control);border-radius:calc(var(--formie-radius-sm) - 1px);background:var(--formie-color-surface-subtle);color:var(--formie-color-heading);font-weight:var(--formie-font-weight-normal);font-size:var(--formie-font-size-xs);white-space:nowrap;cursor:pointer;margin-inline-end:var(--formie-space-2);line-height:1.1;transition:border-color .15s,background-color .15s,color .15s,box-shadow .15s}.formie-file-input:hover::file-selector-button{border-color:color-mix(in srgb, var(--formie-color-border-control) 70%, var(--formie-color-heading) 30%);background:var(--formie-color-surface-muted)}.formie-file-input:hover::-webkit-file-upload-button{border-color:color-mix(in srgb, var(--formie-color-border-control) 70%, var(--formie-color-heading) 30%);background:var(--formie-color-surface-muted)}.formie-file-input:focus{outline:0}.formie-file-input:focus-visible::file-selector-button{border-color:var(--formie-color-focus-ring)}.formie-file-input:focus-visible::-webkit-file-upload-button{border-color:var(--formie-color-focus-ring)}.formie-field-has-error .formie-file-input::file-selector-button{border-color:var(--formie-color-danger)}.formie-field-has-error .formie-file-input::-webkit-file-upload-button{border-color:var(--formie-color-danger)}.formie-file-summary{padding:var(--formie-file-summary-padding);gap:var(--formie-gap-file-summary);border:var(--formie-border-width) solid var(--formie-color-border-control);border-radius:var(--formie-radius-sm)}.formie-file-summary-container{padding-left:var(--formie-list-indent);margin:0}}", l = "input[type=\"file\"][data-formie-file-input]", u = t("uploaded"), d = e("reset"), f = "data-formie-file-upload-key", p = "data-formie-file-upload-hydrate-endpoint", m = "data-formie-file-upload-anchor", h = "data-formie-file-upload-asset-id", g = "data-formie-file-upload-entry", _ = [
7
7
  "fileLimit",
8
8
  "fileSizeMinLimit",
9
9
  "fileSizeMaxLimit"
10
- ], _ = "file-upload", v = "file-upload", y = n("repeater", "init-row"), b = "[data-formie-field-handle]";
11
- i(v, [c]);
12
- function x(e) {
10
+ ], v = "file-upload", y = "file-upload", b = n("repeater", "init-row"), x = "[data-formie-field-handle]";
11
+ i(y, [c]);
12
+ function S(e) {
13
13
  return !!e && typeof e == "object" && !Array.isArray(e);
14
14
  }
15
- function S(e) {
15
+ function C(e) {
16
16
  let t = Number(e);
17
17
  return Number.isInteger(t) && t > 0 ? t : null;
18
18
  }
19
- function C(e) {
20
- return typeof e == "string" ? e.trim() : "";
21
- }
22
19
  function w(e) {
23
- return e.getAttribute("data-formie-field-handle")?.trim() || "";
20
+ return typeof e == "string" ? e.trim() : "";
24
21
  }
25
22
  function T(e) {
26
- return e.name.endsWith("[]") ? e.name.slice(0, -2) : e.name;
23
+ return e.getAttribute("data-formie-field-handle")?.trim() || "";
27
24
  }
28
25
  function E(e) {
29
- return `${T(e)}[]`;
26
+ return e.name.endsWith("[]") ? e.name.slice(0, -2) : e.name;
30
27
  }
31
28
  function D(e) {
32
- return e.getAttribute(f)?.trim() || e.getAttribute("data-formie-input-id")?.trim() || "";
29
+ return `${E(e)}[]`;
33
30
  }
34
31
  function O(e) {
35
- return Array.from(e.querySelectorAll("input[type=\"hidden\"]")).filter((e) => e instanceof HTMLInputElement);
32
+ return e.getAttribute(f)?.trim() || e.getAttribute("data-formie-input-id")?.trim() || "";
36
33
  }
37
- function k(e, t) {
38
- let n = E(t);
39
- return O(e).filter((e) => e.name === n && e.value.trim() !== "");
34
+ function k(e) {
35
+ return Array.from(e.querySelectorAll("input[type=\"hidden\"]")).filter((e) => e instanceof HTMLInputElement);
40
36
  }
41
37
  function A(e, t) {
42
- let n = T(t), r = O(e).find((e) => e.hasAttribute(m) || e.name === n && e.value === "");
38
+ let n = D(t);
39
+ return k(e).filter((e) => e.hasAttribute(h) || e.name === n && e.value.trim() !== "");
40
+ }
41
+ function j(e, t) {
42
+ let n = E(t), r = k(e).find((e) => e.hasAttribute(m) || e.name === n && e.value === "");
43
43
  if (r) return r.setAttribute(m, "true"), r.name = n, r.value = "", r;
44
44
  let i = document.createElement("input");
45
45
  return i.type = "hidden", i.name = n, i.value = "", i.setAttribute(m, "true"), t.insertAdjacentElement("afterend", i), i;
46
46
  }
47
- function j(e) {
47
+ function M(e) {
48
48
  if (Array.isArray(e)) return null;
49
- let t = S(e);
49
+ let t = C(e);
50
50
  if (t) return {
51
51
  assetId: t,
52
52
  filename: ""
53
53
  };
54
- if (!x(e)) return null;
55
- let n = S(e.assetId ?? e.id ?? e.value), r = C(e.filename ?? e.title ?? e.label ?? e.name), i = C(e.url) || null;
54
+ if (!S(e)) return null;
55
+ let n = C(e.assetId ?? e.id ?? e.value), r = w(e.filename ?? e.title ?? e.label ?? e.name), i = w(e.url) || null;
56
56
  return !n && !r ? null : {
57
57
  assetId: n,
58
58
  filename: r,
59
59
  url: i
60
60
  };
61
61
  }
62
- function M(e) {
62
+ function N(e) {
63
63
  if (!Array.isArray(e)) {
64
- let t = j(e);
64
+ let t = M(e);
65
65
  return t ? [t] : [];
66
66
  }
67
67
  return e.flatMap((e) => {
68
- if (Array.isArray(e)) return M(e);
69
- let t = j(e);
68
+ if (Array.isArray(e)) return N(e);
69
+ let t = M(e);
70
70
  return t ? [t] : [];
71
71
  });
72
72
  }
73
- function N(e) {
73
+ function P(e) {
74
74
  return e ? Array.from(e.querySelectorAll("[data-formie-file-summary-item]")).map((e) => ({
75
75
  assetId: null,
76
76
  filename: e.textContent?.trim() || ""
77
77
  })).filter((e) => e.filename !== "") : [];
78
78
  }
79
- function P(e, t) {
80
- return k(e, t).map((e) => ({
81
- assetId: S(e.value),
79
+ function F(e, t) {
80
+ return A(e, t).map((e) => ({
81
+ assetId: C(e.getAttribute(h)) ?? C(e.value),
82
82
  filename: ""
83
83
  })).filter((e) => e.assetId !== null);
84
84
  }
85
- function F(e, t) {
85
+ function I(e, t) {
86
86
  return e.length ? e.map((e, n) => ({
87
87
  assetId: e.assetId,
88
88
  filename: t[n]?.filename || ""
89
89
  })) : t;
90
90
  }
91
- function I(e) {
91
+ function L(e) {
92
92
  return e.map((e) => e.trim().toLowerCase()).filter(Boolean);
93
93
  }
94
- function L(e, t) {
95
- let n = I(e.map((e) => e.filename)), r = I(t);
94
+ function R(e, t) {
95
+ let n = L(e.map((e) => e.filename)), r = L(t);
96
96
  return !n.length || !r.length ? !1 : n.every((e) => r.includes(e));
97
97
  }
98
- function R(e) {
99
- o(e, _, (e) => {
98
+ function z(e) {
99
+ s(e, v, (e) => {
100
100
  e.addValidator("fileLimit", ({ input: e }) => {
101
101
  let t = parseInt(e.getAttribute("data-formie-file-limit") || "", 10);
102
- return e.type !== "file" || !t || !("files" in e) || !e.files?.length ? !0 : e.files.length <= t;
102
+ return e.type !== "file" || !t || !("files" in e) || !e.files?.length || e.files.length <= t;
103
103
  }, ({ input: e, t }) => e.getAttribute("data-formie-validation-max-files-message") ?? t("Choose up to {files} files.", { files: e.getAttribute("data-formie-file-limit") || "" })), e.addValidator("fileSizeMinLimit", ({ input: e }) => {
104
104
  let t = parseFloat(e.getAttribute("data-formie-size-min-limit") || "") * 1e3 * 1e3;
105
- return e.type !== "file" || !t || !("files" in e) || !e.files?.length ? !0 : Array.from(e.files).every((e) => e.size >= t);
105
+ return e.type !== "file" || !t || !("files" in e) || !e.files?.length || Array.from(e.files).every((e) => e.size >= t);
106
106
  }, ({ input: e, t }) => e.getAttribute("data-formie-validation-min-file-size-message") ?? t("File must be larger than {filesize} MB.", { filesize: e.getAttribute("data-formie-size-min-limit") || "" })), e.addValidator("fileSizeMaxLimit", ({ input: e }) => {
107
107
  let t = parseFloat(e.getAttribute("data-formie-size-max-limit") || "") * 1e3 * 1e3;
108
- return e.type !== "file" || !t || !("files" in e) || !e.files?.length ? !0 : Array.from(e.files).every((e) => e.size <= t);
108
+ return e.type !== "file" || !t || !("files" in e) || !e.files?.length || Array.from(e.files).every((e) => e.size <= t);
109
109
  }, ({ input: e, t }) => e.getAttribute("data-formie-validation-max-file-size-message") ?? t("File must be smaller than {filesize} MB.", { filesize: e.getAttribute("data-formie-size-max-limit") || "" }));
110
110
  });
111
111
  }
112
- function z(e) {
113
- a(e, _, g);
112
+ function B(e) {
113
+ a(e, v, _);
114
114
  }
115
- function B(e, t) {
115
+ function V(e, t) {
116
116
  let n = e.querySelector("[data-formie-file-summary]");
117
117
  if (n) return n;
118
118
  let r = document.createElement("div");
119
119
  return r.className = "formie-file-summary", r.setAttribute("data-formie-file-summary", "true"), t.insertAdjacentElement("afterend", r), r;
120
120
  }
121
- function V(e) {
121
+ function H(e) {
122
122
  let t = e.pendingFiles.length ? e.pendingFiles : e.uploadedAssets.map((e) => e.filename || (e.assetId ? `Asset #${e.assetId}` : "")).filter(Boolean), n = e.summaryRoot || e.field.querySelector("[data-formie-file-summary]");
123
123
  if (!t.length) {
124
124
  n && (n.replaceChildren(), n.hidden = !0), e.summaryRoot = n;
125
125
  return;
126
126
  }
127
- let r = n || B(e.field, e.input);
127
+ let r = n || V(e.field, e.input);
128
128
  if (!r) return;
129
129
  r.hidden = !1, e.summaryRoot = r;
130
130
  let i = document.createElement("ul");
@@ -133,41 +133,42 @@ function V(e) {
133
133
  t.className = "formie-file-summary-item", t.setAttribute("data-formie-file-summary-item", "true"), t.textContent = e, i.appendChild(t);
134
134
  }), r.replaceChildren(i);
135
135
  }
136
- function H(e, t, n) {
137
- let r = A(e, t), i = E(t);
138
- k(e, t).forEach((e) => {
136
+ function U(e, t, n) {
137
+ let r = j(e, t), i = E(t);
138
+ k(e).filter((e) => e.hasAttribute(g) || e.name === `${i}[]` && e.value.trim() !== "").forEach((e) => {
139
139
  e.remove();
140
- }), n.forEach((e) => {
140
+ }), n.forEach((e, t) => {
141
141
  if (!e.assetId) return;
142
- let t = document.createElement("input");
143
- t.type = "hidden", t.name = i, t.value = String(e.assetId), t.setAttribute(h, "true"), r.insertAdjacentElement("afterend", t), r = t;
142
+ let n = document.createElement("input");
143
+ n.type = "hidden", n.name = `${i}[${t}][assetId]`, n.value = String(e.assetId), n.setAttribute(g, "true"), n.setAttribute(h, String(e.assetId)), r.insertAdjacentElement("afterend", n), r = n;
144
144
  }), t.value = "";
145
145
  }
146
- function U(e) {
146
+ function W(e) {
147
147
  if (!e) return "";
148
148
  let t = e.querySelector("input[name=\"handle\"]");
149
149
  return t instanceof HTMLInputElement && t.value.trim() ? t.value.trim() : e.getAttribute("data-formie-handle")?.trim() || "";
150
150
  }
151
- function W(e, t, n) {
152
- let r = t.form, i = new FormData(), a = U(r), o = w(e);
151
+ function G(e, t, n) {
152
+ let r = t.form, i = new FormData(), a = W(r), o = T(e);
153
153
  a && i.append("handle", a), o && i.append("fieldHandle", o);
154
154
  let s = r?.querySelector("input[name=\"submissionUid\"]");
155
155
  return s instanceof HTMLInputElement && s.value.trim() && i.append("submissionUid", s.value.trim()), n.forEach((e) => {
156
156
  i.append("assetIds[]", String(e));
157
157
  }), i;
158
158
  }
159
- async function G(e, t, n) {
159
+ async function K(e, t, n) {
160
160
  let i = n.map((e) => e.assetId).filter((e) => e !== null);
161
161
  if (!i.length) return n;
162
- let a = M((await r(t.getAttribute(p)?.trim() || "/actions/formie/file-upload/hydrate", {
162
+ let a = t.getAttribute(p)?.trim() || "/actions/formie/file-upload/hydrate", o = N((await r(a, {
163
+ profile: e.closest("form")?.dataset.formieRequestProfile,
163
164
  method: "POST",
164
- body: W(e, t, i)
165
+ body: G(e, t, i)
165
166
  })).assets);
166
- if (!a.length) return n;
167
- let o = new Map(a.map((e) => [e.assetId, e]));
167
+ if (!o.length) return n;
168
+ let s = new Map(o.map((e) => [e.assetId, e]));
168
169
  return n.map((e) => {
169
- if (!e.assetId || !o.has(e.assetId)) return e;
170
- let t = o.get(e.assetId);
170
+ if (!e.assetId || !s.has(e.assetId)) return e;
171
+ let t = s.get(e.assetId);
171
172
  return {
172
173
  assetId: e.assetId,
173
174
  filename: t.filename || e.filename,
@@ -175,10 +176,10 @@ async function G(e, t, n) {
175
176
  };
176
177
  });
177
178
  }
178
- function K(e, t) {
179
+ function q(e, t) {
179
180
  let n = e.detail;
180
- if (!x(n)) return [];
181
- let r = C(n.fieldHandle), i = C(n.inputKey), a = C(n.inputName ?? n.name), o = x(n.data) ? n.data : null, s = C(o?.fieldHandle), c = C(o?.inputKey), l = C(o?.inputName ?? o?.name), u = [], d = !1, f = !1, p = !1;
181
+ if (!S(n)) return [];
182
+ let r = w(n.fieldHandle), i = w(n.inputKey), a = w(n.inputName ?? n.name), o = S(n.data) ? n.data : null, s = w(o?.fieldHandle), c = w(o?.inputKey), l = w(o?.inputName ?? o?.name), u = [], d = !1, f = !1, p = !1;
182
183
  if (i !== "" && i === t.inputKey && (d = !0, u.push(n.assets, n.assetIds, n.data)), a !== "" && a === t.inputName && (f = !0, u.push(n.assets, n.assetIds, n.data)), r === t.fieldHandle && (p = !0, u.push(n.assets, n.assetIds, n.data)), o) {
183
184
  let e = [
184
185
  o.assets,
@@ -193,95 +194,102 @@ function K(e, t) {
193
194
  n.assetIds,
194
195
  n.data
195
196
  ].forEach((e) => {
196
- x(e) && (t.inputKey && t.inputKey in e && (d = !0, u.push(e[t.inputKey])), t.inputName in e && (f = !0, u.push(e[t.inputName])), t.fieldHandle in e && u.push(e[t.fieldHandle]));
197
+ S(e) && (t.inputKey && t.inputKey in e && (d = !0, u.push(e[t.inputKey])), t.inputName in e && (f = !0, u.push(e[t.inputName])), t.fieldHandle in e && u.push(e[t.fieldHandle]));
197
198
  });
198
199
  for (let e of u) {
199
- let n = M(e);
200
- if (n.length && (d || f || p || L(n, t.pendingFiles))) return n;
200
+ let n = N(e);
201
+ if (n.length && (d || f || p || R(n, t.pendingFiles))) return n;
201
202
  }
202
203
  return [];
203
204
  }
204
- function q(e) {
205
- let t = e.closest(b);
205
+ function J(e) {
206
+ let t = e.closest(x);
206
207
  return t instanceof HTMLElement ? t : null;
207
208
  }
208
- function J(e) {
209
+ function Y(e) {
209
210
  return Array.from(e.querySelectorAll(l)).filter((e) => e instanceof HTMLInputElement);
210
211
  }
211
- function Y(e, t, n) {
212
+ function X(e, t, n) {
212
213
  let r = {
213
214
  field: e,
214
215
  input: t,
215
- summaryRoot: B(e, t),
216
- uploadedAssets: F(P(e, t), N(e.querySelector("[data-formie-file-summary]"))),
216
+ summaryRoot: V(e, t),
217
+ uploadedAssets: I(F(e, t), P(e.querySelector("[data-formie-file-summary]"))),
217
218
  pendingFiles: [],
218
219
  hydrationToken: 0
219
220
  }, i = () => {
220
- r.pendingFiles = Array.from(t.files || []).map((e) => e.name), V(r);
221
+ r.pendingFiles = Array.from(t.files || []).map((e) => e.name), H(r);
221
222
  }, a = async (n) => {
222
223
  r.hydrationToken += 1;
223
224
  let i = r.hydrationToken;
224
- r.pendingFiles = [], r.uploadedAssets = n, H(e, t, n), V(r);
225
+ r.pendingFiles = [], r.uploadedAssets = n, U(e, t, n), H(r);
225
226
  try {
226
- let a = await G(e, t, n);
227
+ let a = await K(e, t, n);
227
228
  if (i !== r.hydrationToken) return;
228
- r.uploadedAssets = a, V(r), s(e, v, "uploaded-assets-sync", {
229
+ r.uploadedAssets = a, H(r), o(e, y, "uploaded-assets-sync", {
229
230
  fileUpload: e,
230
231
  assets: a
231
232
  });
232
233
  } catch (e) {
233
234
  console.error("[formie] Failed to hydrate uploaded file details.", e);
234
235
  }
235
- }, o = () => {
236
- r.hydrationToken += 1, r.pendingFiles = [], r.uploadedAssets = [], H(e, t, []), V(r);
236
+ }, s = () => {
237
+ r.hydrationToken += 1, r.pendingFiles = [], r.uploadedAssets = [], U(e, t, []), H(r);
237
238
  }, c = (n) => {
238
- let i = w(e);
239
+ let i = T(e);
239
240
  if (!i) return;
240
- let o = K(n, {
241
+ let o = q(n, {
241
242
  fieldHandle: i,
242
- inputKey: D(t),
243
+ inputKey: O(t),
243
244
  inputName: t.name,
244
245
  pendingFiles: r.pendingFiles
245
246
  });
246
247
  o.length && a(o);
247
248
  }, l = () => {
248
- o();
249
+ s();
249
250
  };
250
251
  return t.addEventListener("change", i), n?.addEventListener(u, c), n?.addEventListener(d, l), (() => {
251
- if (r.uploadedAssets = F(P(e, t), N(r.summaryRoot)), r.uploadedAssets.some((e) => e.assetId && !e.filename)) {
252
+ let n = F(e, t), i = P(r.summaryRoot);
253
+ if (r.uploadedAssets = I(n, i), r.uploadedAssets.some((e) => e.assetId && !e.filename)) {
252
254
  a(r.uploadedAssets);
253
255
  return;
254
256
  }
255
- V(r);
257
+ H(r);
256
258
  })(), () => {
257
259
  t.removeEventListener("change", i), n?.removeEventListener(u, c), n?.removeEventListener(d, l);
258
260
  };
259
261
  }
260
- var X = {
261
- id: v,
262
+ var Z = {
263
+ moduleId: `formie:${y}`,
264
+ version: 2,
265
+ surfaces: [
266
+ "server-rendered",
267
+ "client-rendered",
268
+ "cp-edit"
269
+ ],
262
270
  kind: "field",
263
271
  match: (e) => !!e.target.querySelector(l),
264
272
  setup: async (e) => {
265
273
  let t = e.form, n = /* @__PURE__ */ new WeakSet(), r = [], i = (e) => {
266
- J(e).forEach((e) => {
274
+ Y(e).forEach((e) => {
267
275
  if (n.has(e)) return;
268
- let i = q(e);
269
- i && (n.add(e), r.push(Y(i, e, t)));
276
+ let i = J(e);
277
+ i && (n.add(e), r.push(X(i, e, t)));
270
278
  });
271
279
  };
272
- R(t), i(e.target);
280
+ z(t), i(e.target);
273
281
  let a = (e) => {
274
282
  let t = e.detail;
275
- if (!x(t)) return;
283
+ if (!S(t)) return;
276
284
  let n = t.row;
277
285
  n instanceof HTMLElement && i(n);
278
286
  };
279
- return t?.addEventListener(y, a), await e.emit("formie:module:file-upload:init", { count: r.length }), { destroy: () => {
280
- t?.removeEventListener(y, a), r.forEach((e) => {
287
+ return t?.addEventListener(b, a), await e.emit("formie:module:file-upload:init", { count: r.length }), { destroy: () => {
288
+ t?.removeEventListener(b, a), r.forEach((e) => {
281
289
  e();
282
- }), z(t), e.emit("formie:module:file-upload:destroy", {});
290
+ }), B(t), e.emit("formie:module:file-upload:destroy", {});
283
291
  } };
284
292
  }
285
293
  };
286
294
  //#endregion
287
- export { X as fileUploadModule };
295
+ export { Z as fileUploadModule };
@@ -0,0 +1,34 @@
1
+ import { t as e } from "./api-DYYsVIub.js";
2
+ //#region src/js/modules/captchas/friendly-captcha-v1.ts
3
+ var t = e({
4
+ moduleId: "formie:friendly-captcha-v1",
5
+ defaultPlaceholderSelector: "[data-friendly-captcha-placeholder]",
6
+ defaultTokenFieldNames: ["frc-captcha-solution"],
7
+ load: async () => import("./friendly-challenge-DPG9MJb1.js"),
8
+ mount: ({ api: e, container: t, provider: n, services: r }) => {
9
+ let i = n.theme || "auto", a = window.matchMedia?.("(prefers-color-scheme: dark)").matches ?? !1;
10
+ return (i === "dark" || i === "auto" && a) && t.classList.add("dark"), new e.WidgetInstance(t, {
11
+ sitekey: n.siteKey || "",
12
+ startMode: n.startMode || "none",
13
+ language: n.language || "en",
14
+ solutionFieldName: "frc-captcha-solution",
15
+ doneCallback: (e) => {
16
+ typeof e == "string" && e.trim() !== "" && r.tokens.write(e.trim()), r.errors.clear();
17
+ },
18
+ errorCallback: () => {
19
+ r.tokens.clear();
20
+ }
21
+ });
22
+ },
23
+ challenge: async ({ widget: e, placeholder: t, services: n, stageCtx: r }) => {
24
+ if (!n.tokens.has() && (await e.start(), !await n.tokens.wait())) {
25
+ let e = n.errors.getDefaultMessage();
26
+ n.errors.show(e, t), r.abort(e);
27
+ }
28
+ },
29
+ unmount: ({ widget: e, services: t }) => {
30
+ e.destroy(), t.tokens.clear();
31
+ }
32
+ });
33
+ //#endregion
34
+ export { t as friendlyCaptchaV1Module };
@@ -1,17 +1,18 @@
1
- import { t as e } from "./api-BUb6P-xu.js";
1
+ import { t as e } from "./api-DYYsVIub.js";
2
2
  //#region src/js/modules/captchas/friendly-captcha-v2.ts
3
3
  var t = e({
4
- id: "friendly-captcha-v2",
4
+ moduleId: "formie:friendly-captcha-v2",
5
5
  defaultPlaceholderSelector: "[data-friendly-captcha-placeholder]",
6
6
  defaultTokenFieldNames: ["frc-captcha-response"],
7
- load: async () => import("./sdk-BhHAYgga.js"),
7
+ load: async () => import("./sdk-lkwSvlpM.js"),
8
8
  mount: ({ api: e, container: t, provider: n, services: r }) => {
9
9
  let i = new e.FriendlyCaptchaSDK().createWidget({
10
10
  element: t,
11
11
  sitekey: n.siteKey || "",
12
12
  formFieldName: "frc-captcha-response",
13
13
  language: n.language,
14
- startMode: n.startMode || "none"
14
+ startMode: n.startMode || "none",
15
+ theme: n.theme || "auto"
15
16
  });
16
17
  return i.addEventListener("frc:widget.complete", (e) => {
17
18
  let t = e.detail;
@@ -22,7 +23,7 @@ var t = e({
22
23
  e.detail?.error && r.tokens.clear();
23
24
  }), i;
24
25
  },
25
- screen: async ({ widget: e, placeholder: t, services: n, stageCtx: r }) => {
26
+ challenge: async ({ widget: e, placeholder: t, services: n, stageCtx: r }) => {
26
27
  if (!n.tokens.has() && (e.start(), !await n.tokens.wait())) {
27
28
  let e = n.errors.getDefaultMessage();
28
29
  n.errors.show(e, t), r.abort(e);