@verbb/formie-browser 1.0.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 (490) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE.md +40 -0
  3. package/README.md +34 -0
  4. package/dist/chunks/address-finder-DfMCiW89.js +47 -0
  5. package/dist/chunks/api-CbqEMQT5.js +181 -0
  6. package/dist/chunks/api-DE7LfK-R.js +960 -0
  7. package/dist/chunks/api-DOfDzYC_.js +538 -0
  8. package/dist/chunks/async-B3DUf1GZ.js +26 -0
  9. package/dist/chunks/bpoint-Ciy3yY9Q.js +34 -0
  10. package/dist/chunks/calculations-CkYAqO_-.js +197 -0
  11. package/dist/chunks/captcha-eu-DnOWhMwr.js +43 -0
  12. package/dist/chunks/checkbox-radio-0x7Tc0br.js +197 -0
  13. package/dist/chunks/chunk-K6L4z4UQ.js +24 -0
  14. package/dist/chunks/conditions-4fXKhEJS.js +609 -0
  15. package/dist/chunks/date-picker-B6iZkjHS.js +6204 -0
  16. package/dist/chunks/debug-KnZeKYBI.js +39 -0
  17. package/dist/chunks/dist-D09GnXMW.js +2663 -0
  18. package/dist/chunks/event-names-DamGPtXR.js +51 -0
  19. package/dist/chunks/eway-DEAYcwT0.js +86 -0
  20. package/dist/chunks/field-references.keys-BpBZ_quS.js +24 -0
  21. package/dist/chunks/field-references.resolver-Ba6xhiJC.js +183 -0
  22. package/dist/chunks/file-upload-Bh63PQSE.js +430 -0
  23. package/dist/chunks/friendly-captcha-v1-CqO4WVre.js +40 -0
  24. package/dist/chunks/friendly-captcha-v2-CyykcJcM.js +47 -0
  25. package/dist/chunks/friendly-challenge-Dg8XkStd.js +1101 -0
  26. package/dist/chunks/go-cardless-CuND59rR.js +26 -0
  27. package/dist/chunks/google-address--uR8WDSm.js +208 -0
  28. package/dist/chunks/hcaptcha-CmaFUesv.js +72 -0
  29. package/dist/chunks/hidden-CYnZYple.js +36 -0
  30. package/dist/chunks/http-18nn97DZ.js +29 -0
  31. package/dist/chunks/i18n-vUh-KGiH.js +55 -0
  32. package/dist/chunks/loqate-BICNJlVK.js +97 -0
  33. package/dist/chunks/mollie-DwlsgHZ1.js +26 -0
  34. package/dist/chunks/moneris-B_IFZFTx.js +159 -0
  35. package/dist/chunks/opayo-U2x_TOII.js +192 -0
  36. package/dist/chunks/paddle-BqXFrc79.js +75 -0
  37. package/dist/chunks/paypal-Cn_DYGDb.js +121 -0
  38. package/dist/chunks/payway-Rnq796eC.js +75 -0
  39. package/dist/chunks/phone-country-B6Me4lK0.js +3317 -0
  40. package/dist/chunks/place-kit-ldUl-u9w.js +56 -0
  41. package/dist/chunks/placekit-autocomplete.esm-D-lGeaZl.js +1771 -0
  42. package/dist/chunks/recaptcha-enterprise-DPJNyv1X.js +72 -0
  43. package/dist/chunks/recaptcha-shared-DTI4qWVR.js +22 -0
  44. package/dist/chunks/recaptcha-v2-checkbox-zFjpvJ5c.js +49 -0
  45. package/dist/chunks/recaptcha-v2-invisible-CnYtkNvz.js +62 -0
  46. package/dist/chunks/recaptcha-v3-EAlWhnkX.js +33 -0
  47. package/dist/chunks/repeater-CXD1eLSn.js +151 -0
  48. package/dist/chunks/rich-text-DkmZRhGj.js +442 -0
  49. package/dist/chunks/scripts-BGD_iU_6.js +41 -0
  50. package/dist/chunks/sdk-B7u9fTlP.js +2103 -0
  51. package/dist/chunks/shared-DC6_1u8X.js +85 -0
  52. package/dist/chunks/signature-E9KyYXS1.js +765 -0
  53. package/dist/chunks/snaptcha-CCDunGeb.js +8 -0
  54. package/dist/chunks/square-BLqK51rS.js +61 -0
  55. package/dist/chunks/stripe-B8gHpZNC.js +273 -0
  56. package/dist/chunks/styles-BIh6g7V_.js +22 -0
  57. package/dist/chunks/summary-EcNE0cvg.js +191 -0
  58. package/dist/chunks/table-yxEDL6kA.js +124 -0
  59. package/dist/chunks/text-limit-D0H_Ca2c.js +179 -0
  60. package/dist/chunks/theme-classes-vSHpdCUO.js +59 -0
  61. package/dist/chunks/turnstile-DP0bdR7T.js +68 -0
  62. package/dist/chunks/utils-ByrEVYrJ.js +49584 -0
  63. package/dist/css/formie-base.css +78 -0
  64. package/dist/css/formie-theme.css +19 -0
  65. package/dist/css/formie.css +2 -0
  66. package/dist/css/theme/_buttons.css +249 -0
  67. package/dist/css/theme/_loading.css +37 -0
  68. package/dist/css/theme/_messages.css +39 -0
  69. package/dist/css/theme/_progress.css +62 -0
  70. package/dist/css/theme/_tokens.css +361 -0
  71. package/dist/css/theme/_typography.css +70 -0
  72. package/dist/css/theme/fields/_address.css +17 -0
  73. package/dist/css/theme/fields/_check-radio.css +108 -0
  74. package/dist/css/theme/fields/_file.css +58 -0
  75. package/dist/css/theme/fields/_group.css +13 -0
  76. package/dist/css/theme/fields/_input.css +48 -0
  77. package/dist/css/theme/fields/_nested.css +19 -0
  78. package/dist/css/theme/fields/_repeater.css +69 -0
  79. package/dist/css/theme/fields/_rich-text.css +201 -0
  80. package/dist/css/theme/fields/_select.css +37 -0
  81. package/dist/css/theme/fields/_signature.css +39 -0
  82. package/dist/css/theme/fields/_summary.css +53 -0
  83. package/dist/css/theme/fields/_table.css +121 -0
  84. package/dist/css/theme/fields/_text-limit.css +10 -0
  85. package/dist/css/theme/forms/_field.css +62 -0
  86. package/dist/css/theme/forms/_form.css +166 -0
  87. package/dist/css/theme/integrations/_payment-modal.css +32 -0
  88. package/dist/css/theme/integrations/_paypal.css +10 -0
  89. package/dist/css/theme/integrations/_payway.css +10 -0
  90. package/dist/css/theme/integrations/_stripe.css +24 -0
  91. package/dist/css/theme/utilities/_accessibility.css +13 -0
  92. package/dist/css/theme-base/_controls.css +41 -0
  93. package/dist/css/theme-base/_primitives.css +34 -0
  94. package/dist/index.d.ts +30 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +3206 -0
  97. package/dist/js/compatibility/dom-adapter.d.ts +12 -0
  98. package/dist/js/compatibility/dom-adapter.d.ts.map +1 -0
  99. package/dist/js/compatibility/event-map.d.ts +25 -0
  100. package/dist/js/compatibility/event-map.d.ts.map +1 -0
  101. package/dist/js/compatibility/validator-adapter.d.ts +17 -0
  102. package/dist/js/compatibility/validator-adapter.d.ts.map +1 -0
  103. package/dist/js/contracts/client.d.ts +40 -0
  104. package/dist/js/contracts/client.d.ts.map +1 -0
  105. package/dist/js/contracts/common.d.ts +5 -0
  106. package/dist/js/contracts/common.d.ts.map +1 -0
  107. package/dist/js/contracts/modules.d.ts +47 -0
  108. package/dist/js/contracts/modules.d.ts.map +1 -0
  109. package/dist/js/contracts/schema.d.ts +79 -0
  110. package/dist/js/contracts/schema.d.ts.map +1 -0
  111. package/dist/js/contracts/theme.d.ts +2 -0
  112. package/dist/js/contracts/theme.d.ts.map +1 -0
  113. package/dist/js/core/create-formie-client.d.ts +3 -0
  114. package/dist/js/core/create-formie-client.d.ts.map +1 -0
  115. package/dist/js/core/dom-events.d.ts +2 -0
  116. package/dist/js/core/dom-events.d.ts.map +1 -0
  117. package/dist/js/core/formie.d.ts +27 -0
  118. package/dist/js/core/formie.d.ts.map +1 -0
  119. package/dist/js/core/hydrate-modules.d.ts +22 -0
  120. package/dist/js/core/hydrate-modules.d.ts.map +1 -0
  121. package/dist/js/core/page-client-event.d.ts +9 -0
  122. package/dist/js/core/page-client-event.d.ts.map +1 -0
  123. package/dist/js/core/page-tab-errors.d.ts +2 -0
  124. package/dist/js/core/page-tab-errors.d.ts.map +1 -0
  125. package/dist/js/core/submit-flow.d.ts +21 -0
  126. package/dist/js/core/submit-flow.d.ts.map +1 -0
  127. package/dist/js/core/submit-result-state.d.ts +8 -0
  128. package/dist/js/core/submit-result-state.d.ts.map +1 -0
  129. package/dist/js/core/submit-result-ui.d.ts +10 -0
  130. package/dist/js/core/submit-result-ui.d.ts.map +1 -0
  131. package/dist/js/events/event-bus.d.ts +21 -0
  132. package/dist/js/events/event-bus.d.ts.map +1 -0
  133. package/dist/js/modules/address/address-finder.d.ts +2 -0
  134. package/dist/js/modules/address/address-finder.d.ts.map +1 -0
  135. package/dist/js/modules/address/api.d.ts +8 -0
  136. package/dist/js/modules/address/api.d.ts.map +1 -0
  137. package/dist/js/modules/address/constants.d.ts +15 -0
  138. package/dist/js/modules/address/constants.d.ts.map +1 -0
  139. package/dist/js/modules/address/factories.d.ts +35 -0
  140. package/dist/js/modules/address/factories.d.ts.map +1 -0
  141. package/dist/js/modules/address/google-address.d.ts +2 -0
  142. package/dist/js/modules/address/google-address.d.ts.map +1 -0
  143. package/dist/js/modules/address/host.d.ts +30 -0
  144. package/dist/js/modules/address/host.d.ts.map +1 -0
  145. package/dist/js/modules/address/index.d.ts +3 -0
  146. package/dist/js/modules/address/index.d.ts.map +1 -0
  147. package/dist/js/modules/address/loqate.d.ts +2 -0
  148. package/dist/js/modules/address/loqate.d.ts.map +1 -0
  149. package/dist/js/modules/address/place-kit.d.ts +2 -0
  150. package/dist/js/modules/address/place-kit.d.ts.map +1 -0
  151. package/dist/js/modules/captchas/api.d.ts +9 -0
  152. package/dist/js/modules/captchas/api.d.ts.map +1 -0
  153. package/dist/js/modules/captchas/captcha-eu.d.ts +2 -0
  154. package/dist/js/modules/captchas/captcha-eu.d.ts.map +1 -0
  155. package/dist/js/modules/captchas/constants.d.ts +5 -0
  156. package/dist/js/modules/captchas/constants.d.ts.map +1 -0
  157. package/dist/js/modules/captchas/factories.d.ts +63 -0
  158. package/dist/js/modules/captchas/factories.d.ts.map +1 -0
  159. package/dist/js/modules/captchas/friendly-captcha-v1.d.ts +2 -0
  160. package/dist/js/modules/captchas/friendly-captcha-v1.d.ts.map +1 -0
  161. package/dist/js/modules/captchas/friendly-captcha-v2.d.ts +2 -0
  162. package/dist/js/modules/captchas/friendly-captcha-v2.d.ts.map +1 -0
  163. package/dist/js/modules/captchas/hcaptcha.d.ts +2 -0
  164. package/dist/js/modules/captchas/hcaptcha.d.ts.map +1 -0
  165. package/dist/js/modules/captchas/host.d.ts +78 -0
  166. package/dist/js/modules/captchas/host.d.ts.map +1 -0
  167. package/dist/js/modules/captchas/index.d.ts +3 -0
  168. package/dist/js/modules/captchas/index.d.ts.map +1 -0
  169. package/dist/js/modules/captchas/recaptcha-enterprise.d.ts +2 -0
  170. package/dist/js/modules/captchas/recaptcha-enterprise.d.ts.map +1 -0
  171. package/dist/js/modules/captchas/recaptcha-shared.d.ts +26 -0
  172. package/dist/js/modules/captchas/recaptcha-shared.d.ts.map +1 -0
  173. package/dist/js/modules/captchas/recaptcha-v2-checkbox.d.ts +2 -0
  174. package/dist/js/modules/captchas/recaptcha-v2-checkbox.d.ts.map +1 -0
  175. package/dist/js/modules/captchas/recaptcha-v2-invisible.d.ts +2 -0
  176. package/dist/js/modules/captchas/recaptcha-v2-invisible.d.ts.map +1 -0
  177. package/dist/js/modules/captchas/recaptcha-v3.d.ts +2 -0
  178. package/dist/js/modules/captchas/recaptcha-v3.d.ts.map +1 -0
  179. package/dist/js/modules/captchas/snaptcha.d.ts +2 -0
  180. package/dist/js/modules/captchas/snaptcha.d.ts.map +1 -0
  181. package/dist/js/modules/captchas/turnstile.d.ts +2 -0
  182. package/dist/js/modules/captchas/turnstile.d.ts.map +1 -0
  183. package/dist/js/modules/captchas/utils.d.ts +13 -0
  184. package/dist/js/modules/captchas/utils.d.ts.map +1 -0
  185. package/dist/js/modules/fields/calculations.d.ts +3 -0
  186. package/dist/js/modules/fields/calculations.d.ts.map +1 -0
  187. package/dist/js/modules/fields/checkbox-radio.d.ts +3 -0
  188. package/dist/js/modules/fields/checkbox-radio.d.ts.map +1 -0
  189. package/dist/js/modules/fields/conditions/config.d.ts +5 -0
  190. package/dist/js/modules/fields/conditions/config.d.ts.map +1 -0
  191. package/dist/js/modules/fields/conditions/effects.d.ts +2 -0
  192. package/dist/js/modules/fields/conditions/effects.d.ts.map +1 -0
  193. package/dist/js/modules/fields/conditions/evaluator.d.ts +6 -0
  194. package/dist/js/modules/fields/conditions/evaluator.d.ts.map +1 -0
  195. package/dist/js/modules/fields/conditions/references.d.ts +5 -0
  196. package/dist/js/modules/fields/conditions/references.d.ts.map +1 -0
  197. package/dist/js/modules/fields/conditions/transforms.d.ts +3 -0
  198. package/dist/js/modules/fields/conditions/transforms.d.ts.map +1 -0
  199. package/dist/js/modules/fields/conditions/types.d.ts +30 -0
  200. package/dist/js/modules/fields/conditions/types.d.ts.map +1 -0
  201. package/dist/js/modules/fields/conditions/values.d.ts +5 -0
  202. package/dist/js/modules/fields/conditions/values.d.ts.map +1 -0
  203. package/dist/js/modules/fields/conditions.d.ts +3 -0
  204. package/dist/js/modules/fields/conditions.d.ts.map +1 -0
  205. package/dist/js/modules/fields/date-picker.d.ts +3 -0
  206. package/dist/js/modules/fields/date-picker.d.ts.map +1 -0
  207. package/dist/js/modules/fields/file-upload.d.ts +3 -0
  208. package/dist/js/modules/fields/file-upload.d.ts.map +1 -0
  209. package/dist/js/modules/fields/hidden.d.ts +3 -0
  210. package/dist/js/modules/fields/hidden.d.ts.map +1 -0
  211. package/dist/js/modules/fields/index.d.ts +3 -0
  212. package/dist/js/modules/fields/index.d.ts.map +1 -0
  213. package/dist/js/modules/fields/phone-country.d.ts +3 -0
  214. package/dist/js/modules/fields/phone-country.d.ts.map +1 -0
  215. package/dist/js/modules/fields/repeater.d.ts +3 -0
  216. package/dist/js/modules/fields/repeater.d.ts.map +1 -0
  217. package/dist/js/modules/fields/rich-text.d.ts +3 -0
  218. package/dist/js/modules/fields/rich-text.d.ts.map +1 -0
  219. package/dist/js/modules/fields/shared.d.ts +20 -0
  220. package/dist/js/modules/fields/shared.d.ts.map +1 -0
  221. package/dist/js/modules/fields/signature.d.ts +3 -0
  222. package/dist/js/modules/fields/signature.d.ts.map +1 -0
  223. package/dist/js/modules/fields/summary.d.ts +3 -0
  224. package/dist/js/modules/fields/summary.d.ts.map +1 -0
  225. package/dist/js/modules/fields/table.d.ts +3 -0
  226. package/dist/js/modules/fields/table.d.ts.map +1 -0
  227. package/dist/js/modules/fields/text-limit.d.ts +3 -0
  228. package/dist/js/modules/fields/text-limit.d.ts.map +1 -0
  229. package/dist/js/modules/loader.d.ts +11 -0
  230. package/dist/js/modules/loader.d.ts.map +1 -0
  231. package/dist/js/modules/payments/api.d.ts +8 -0
  232. package/dist/js/modules/payments/api.d.ts.map +1 -0
  233. package/dist/js/modules/payments/bpoint.d.ts +2 -0
  234. package/dist/js/modules/payments/bpoint.d.ts.map +1 -0
  235. package/dist/js/modules/payments/constants.d.ts +5 -0
  236. package/dist/js/modules/payments/constants.d.ts.map +1 -0
  237. package/dist/js/modules/payments/eway.d.ts +9 -0
  238. package/dist/js/modules/payments/eway.d.ts.map +1 -0
  239. package/dist/js/modules/payments/factories.d.ts +54 -0
  240. package/dist/js/modules/payments/factories.d.ts.map +1 -0
  241. package/dist/js/modules/payments/go-cardless.d.ts +2 -0
  242. package/dist/js/modules/payments/go-cardless.d.ts.map +1 -0
  243. package/dist/js/modules/payments/host.d.ts +70 -0
  244. package/dist/js/modules/payments/host.d.ts.map +1 -0
  245. package/dist/js/modules/payments/index.d.ts +3 -0
  246. package/dist/js/modules/payments/index.d.ts.map +1 -0
  247. package/dist/js/modules/payments/mollie.d.ts +2 -0
  248. package/dist/js/modules/payments/mollie.d.ts.map +1 -0
  249. package/dist/js/modules/payments/moneris.d.ts +2 -0
  250. package/dist/js/modules/payments/moneris.d.ts.map +1 -0
  251. package/dist/js/modules/payments/opayo.d.ts +25 -0
  252. package/dist/js/modules/payments/opayo.d.ts.map +1 -0
  253. package/dist/js/modules/payments/paddle.d.ts +2 -0
  254. package/dist/js/modules/payments/paddle.d.ts.map +1 -0
  255. package/dist/js/modules/payments/paypal.d.ts +2 -0
  256. package/dist/js/modules/payments/paypal.d.ts.map +1 -0
  257. package/dist/js/modules/payments/payway.d.ts +2 -0
  258. package/dist/js/modules/payments/payway.d.ts.map +1 -0
  259. package/dist/js/modules/payments/square.d.ts +2 -0
  260. package/dist/js/modules/payments/square.d.ts.map +1 -0
  261. package/dist/js/modules/payments/stripe.d.ts +2 -0
  262. package/dist/js/modules/payments/stripe.d.ts.map +1 -0
  263. package/dist/js/modules/payments/utils.d.ts +17 -0
  264. package/dist/js/modules/payments/utils.d.ts.map +1 -0
  265. package/dist/js/modules/registry.d.ts +9 -0
  266. package/dist/js/modules/registry.d.ts.map +1 -0
  267. package/dist/js/modules/styles.d.ts +2 -0
  268. package/dist/js/modules/styles.d.ts.map +1 -0
  269. package/dist/js/submit/pipeline.d.ts +18 -0
  270. package/dist/js/submit/pipeline.d.ts.map +1 -0
  271. package/dist/js/theme/theme-classes.d.ts +10 -0
  272. package/dist/js/theme/theme-classes.d.ts.map +1 -0
  273. package/dist/js/transport/forms-api.d.ts +11 -0
  274. package/dist/js/transport/forms-api.d.ts.map +1 -0
  275. package/dist/js/utils/async.d.ts +8 -0
  276. package/dist/js/utils/async.d.ts.map +1 -0
  277. package/dist/js/utils/debug.d.ts +10 -0
  278. package/dist/js/utils/debug.d.ts.map +1 -0
  279. package/dist/js/utils/event-names.d.ts +13 -0
  280. package/dist/js/utils/event-names.d.ts.map +1 -0
  281. package/dist/js/utils/field-references.d.ts +6 -0
  282. package/dist/js/utils/field-references.d.ts.map +1 -0
  283. package/dist/js/utils/field-references.keys.d.ts +4 -0
  284. package/dist/js/utils/field-references.keys.d.ts.map +1 -0
  285. package/dist/js/utils/field-references.parser.d.ts +3 -0
  286. package/dist/js/utils/field-references.parser.d.ts.map +1 -0
  287. package/dist/js/utils/field-references.registry.d.ts +3 -0
  288. package/dist/js/utils/field-references.registry.d.ts.map +1 -0
  289. package/dist/js/utils/field-references.resolver.d.ts +4 -0
  290. package/dist/js/utils/field-references.resolver.d.ts.map +1 -0
  291. package/dist/js/utils/field-references.types.d.ts +27 -0
  292. package/dist/js/utils/field-references.types.d.ts.map +1 -0
  293. package/dist/js/utils/fields.d.ts +5 -0
  294. package/dist/js/utils/fields.d.ts.map +1 -0
  295. package/dist/js/utils/http.d.ts +9 -0
  296. package/dist/js/utils/http.d.ts.map +1 -0
  297. package/dist/js/utils/i18n.d.ts +7 -0
  298. package/dist/js/utils/i18n.d.ts.map +1 -0
  299. package/dist/js/utils/scripts.d.ts +13 -0
  300. package/dist/js/utils/scripts.d.ts.map +1 -0
  301. package/dist/js/utils/unload-warning.d.ts +10 -0
  302. package/dist/js/utils/unload-warning.d.ts.map +1 -0
  303. package/dist/js/validation/rules/email.d.ts +4 -0
  304. package/dist/js/validation/rules/email.d.ts.map +1 -0
  305. package/dist/js/validation/rules/match.d.ts +4 -0
  306. package/dist/js/validation/rules/match.d.ts.map +1 -0
  307. package/dist/js/validation/rules/number.d.ts +4 -0
  308. package/dist/js/validation/rules/number.d.ts.map +1 -0
  309. package/dist/js/validation/rules/required.d.ts +4 -0
  310. package/dist/js/validation/rules/required.d.ts.map +1 -0
  311. package/dist/js/validation/rules/shared.d.ts +7 -0
  312. package/dist/js/validation/rules/shared.d.ts.map +1 -0
  313. package/dist/js/validation/rules/url.d.ts +4 -0
  314. package/dist/js/validation/rules/url.d.ts.map +1 -0
  315. package/dist/js/validation/rules.d.ts +10 -0
  316. package/dist/js/validation/rules.d.ts.map +1 -0
  317. package/dist/js/validation/types.d.ts +44 -0
  318. package/dist/js/validation/types.d.ts.map +1 -0
  319. package/dist/js/validation/validator.d.ts +53 -0
  320. package/dist/js/validation/validator.d.ts.map +1 -0
  321. package/package.json +78 -0
  322. package/src/css/formie-base.css +78 -0
  323. package/src/css/formie-theme.css +19 -0
  324. package/src/css/formie.css +2 -0
  325. package/src/css/theme/_buttons.css +249 -0
  326. package/src/css/theme/_loading.css +37 -0
  327. package/src/css/theme/_messages.css +39 -0
  328. package/src/css/theme/_progress.css +62 -0
  329. package/src/css/theme/_tokens.css +361 -0
  330. package/src/css/theme/_typography.css +70 -0
  331. package/src/css/theme/fields/_address.css +17 -0
  332. package/src/css/theme/fields/_check-radio.css +108 -0
  333. package/src/css/theme/fields/_file.css +58 -0
  334. package/src/css/theme/fields/_group.css +13 -0
  335. package/src/css/theme/fields/_input.css +48 -0
  336. package/src/css/theme/fields/_nested.css +19 -0
  337. package/src/css/theme/fields/_repeater.css +69 -0
  338. package/src/css/theme/fields/_rich-text.css +201 -0
  339. package/src/css/theme/fields/_select.css +37 -0
  340. package/src/css/theme/fields/_signature.css +39 -0
  341. package/src/css/theme/fields/_summary.css +53 -0
  342. package/src/css/theme/fields/_table.css +121 -0
  343. package/src/css/theme/fields/_text-limit.css +10 -0
  344. package/src/css/theme/forms/_field.css +62 -0
  345. package/src/css/theme/forms/_form.css +166 -0
  346. package/src/css/theme/integrations/_payment-modal.css +32 -0
  347. package/src/css/theme/integrations/_paypal.css +10 -0
  348. package/src/css/theme/integrations/_payway.css +10 -0
  349. package/src/css/theme/integrations/_stripe.css +24 -0
  350. package/src/css/theme/utilities/_accessibility.css +13 -0
  351. package/src/css/theme-base/_controls.css +41 -0
  352. package/src/css/theme-base/_primitives.css +34 -0
  353. package/src/icons/rich-text/aligncenter.svg +6 -0
  354. package/src/icons/rich-text/alignleft.svg +6 -0
  355. package/src/icons/rich-text/alignright.svg +6 -0
  356. package/src/icons/rich-text/bold.svg +4 -0
  357. package/src/icons/rich-text/clear.svg +6 -0
  358. package/src/icons/rich-text/code.svg +4 -0
  359. package/src/icons/rich-text/heading1.svg +3 -0
  360. package/src/icons/rich-text/heading2.svg +3 -0
  361. package/src/icons/rich-text/image.svg +6 -0
  362. package/src/icons/rich-text/italic.svg +5 -0
  363. package/src/icons/rich-text/line.svg +3 -0
  364. package/src/icons/rich-text/link.svg +4 -0
  365. package/src/icons/rich-text/olist.svg +8 -0
  366. package/src/icons/rich-text/paragraph.svg +3 -0
  367. package/src/icons/rich-text/quote.svg +4 -0
  368. package/src/icons/rich-text/strikethrough.svg +4 -0
  369. package/src/icons/rich-text/ulist.svg +8 -0
  370. package/src/icons/rich-text/underline.svg +4 -0
  371. package/src/index.ts +125 -0
  372. package/src/js/compatibility/dom-adapter.ts +129 -0
  373. package/src/js/compatibility/event-map.ts +72 -0
  374. package/src/js/compatibility/validator-adapter.ts +105 -0
  375. package/src/js/contracts/client.ts +43 -0
  376. package/src/js/contracts/common.ts +14 -0
  377. package/src/js/contracts/modules.ts +53 -0
  378. package/src/js/contracts/schema.ts +83 -0
  379. package/src/js/contracts/theme.ts +1 -0
  380. package/src/js/core/create-formie-client.ts +1519 -0
  381. package/src/js/core/dom-events.ts +8 -0
  382. package/src/js/core/formie.ts +242 -0
  383. package/src/js/core/hydrate-modules.ts +102 -0
  384. package/src/js/core/page-client-event.ts +129 -0
  385. package/src/js/core/page-tab-errors.ts +37 -0
  386. package/src/js/core/submit-flow.ts +120 -0
  387. package/src/js/core/submit-result-state.ts +597 -0
  388. package/src/js/core/submit-result-ui.ts +448 -0
  389. package/src/js/events/event-bus.ts +109 -0
  390. package/src/js/modules/address/address-finder.ts +85 -0
  391. package/src/js/modules/address/api.ts +22 -0
  392. package/src/js/modules/address/constants.ts +15 -0
  393. package/src/js/modules/address/factories.ts +203 -0
  394. package/src/js/modules/address/google-address.ts +345 -0
  395. package/src/js/modules/address/host.ts +137 -0
  396. package/src/js/modules/address/index.ts +10 -0
  397. package/src/js/modules/address/loqate.ts +128 -0
  398. package/src/js/modules/address/place-kit.ts +94 -0
  399. package/src/js/modules/captchas/api.ts +25 -0
  400. package/src/js/modules/captchas/captcha-eu.ts +86 -0
  401. package/src/js/modules/captchas/constants.ts +4 -0
  402. package/src/js/modules/captchas/factories.ts +485 -0
  403. package/src/js/modules/captchas/friendly-captcha-v1.ts +65 -0
  404. package/src/js/modules/captchas/friendly-captcha-v2.ts +84 -0
  405. package/src/js/modules/captchas/hcaptcha.ts +153 -0
  406. package/src/js/modules/captchas/host.ts +448 -0
  407. package/src/js/modules/captchas/index.ts +16 -0
  408. package/src/js/modules/captchas/recaptcha-enterprise.ts +138 -0
  409. package/src/js/modules/captchas/recaptcha-shared.ts +69 -0
  410. package/src/js/modules/captchas/recaptcha-v2-checkbox.ts +72 -0
  411. package/src/js/modules/captchas/recaptcha-v2-invisible.ts +108 -0
  412. package/src/js/modules/captchas/recaptcha-v3.ts +62 -0
  413. package/src/js/modules/captchas/snaptcha.ts +10 -0
  414. package/src/js/modules/captchas/turnstile.ts +131 -0
  415. package/src/js/modules/captchas/utils.ts +85 -0
  416. package/src/js/modules/fields/calculations.ts +273 -0
  417. package/src/js/modules/fields/checkbox-radio.ts +295 -0
  418. package/src/js/modules/fields/conditions/config.ts +79 -0
  419. package/src/js/modules/fields/conditions/effects.ts +166 -0
  420. package/src/js/modules/fields/conditions/evaluator.ts +44 -0
  421. package/src/js/modules/fields/conditions/references.ts +165 -0
  422. package/src/js/modules/fields/conditions/transforms.ts +206 -0
  423. package/src/js/modules/fields/conditions/types.ts +33 -0
  424. package/src/js/modules/fields/conditions/values.ts +115 -0
  425. package/src/js/modules/fields/conditions.ts +229 -0
  426. package/src/js/modules/fields/date-picker.ts +272 -0
  427. package/src/js/modules/fields/file-upload.ts +628 -0
  428. package/src/js/modules/fields/hidden.ts +58 -0
  429. package/src/js/modules/fields/index.ts +19 -0
  430. package/src/js/modules/fields/phone-country.ts +226 -0
  431. package/src/js/modules/fields/repeater.ts +231 -0
  432. package/src/js/modules/fields/rich-text.ts +217 -0
  433. package/src/js/modules/fields/shared.ts +238 -0
  434. package/src/js/modules/fields/signature.ts +202 -0
  435. package/src/js/modules/fields/summary.ts +272 -0
  436. package/src/js/modules/fields/table.ts +197 -0
  437. package/src/js/modules/fields/text-limit.ts +280 -0
  438. package/src/js/modules/loader.ts +331 -0
  439. package/src/js/modules/payments/api.ts +20 -0
  440. package/src/js/modules/payments/bpoint.ts +48 -0
  441. package/src/js/modules/payments/constants.ts +17 -0
  442. package/src/js/modules/payments/eway.ts +132 -0
  443. package/src/js/modules/payments/factories.ts +332 -0
  444. package/src/js/modules/payments/go-cardless.ts +37 -0
  445. package/src/js/modules/payments/host.ts +459 -0
  446. package/src/js/modules/payments/index.ts +17 -0
  447. package/src/js/modules/payments/mollie.ts +38 -0
  448. package/src/js/modules/payments/moneris.ts +216 -0
  449. package/src/js/modules/payments/opayo.ts +272 -0
  450. package/src/js/modules/payments/paddle.ts +111 -0
  451. package/src/js/modules/payments/payment.ts +183 -0
  452. package/src/js/modules/payments/paypal.ts +214 -0
  453. package/src/js/modules/payments/payway.ts +114 -0
  454. package/src/js/modules/payments/square.ts +106 -0
  455. package/src/js/modules/payments/stripe.ts +426 -0
  456. package/src/js/modules/payments/stub-payment-module.ts +87 -0
  457. package/src/js/modules/payments/utils.ts +60 -0
  458. package/src/js/modules/registry.ts +38 -0
  459. package/src/js/modules/styles.ts +29 -0
  460. package/src/js/submit/pipeline.ts +514 -0
  461. package/src/js/theme/theme-classes.ts +106 -0
  462. package/src/js/transport/forms-api.ts +345 -0
  463. package/src/js/utils/async.ts +81 -0
  464. package/src/js/utils/debug.ts +59 -0
  465. package/src/js/utils/event-names.ts +60 -0
  466. package/src/js/utils/field-references.keys.ts +47 -0
  467. package/src/js/utils/field-references.parser.ts +121 -0
  468. package/src/js/utils/field-references.registry.ts +50 -0
  469. package/src/js/utils/field-references.resolver.ts +115 -0
  470. package/src/js/utils/field-references.ts +11 -0
  471. package/src/js/utils/field-references.types.ts +31 -0
  472. package/src/js/utils/fields.ts +58 -0
  473. package/src/js/utils/http.ts +51 -0
  474. package/src/js/utils/i18n.ts +98 -0
  475. package/src/js/utils/scripts.ts +84 -0
  476. package/src/js/utils/unload-warning.ts +190 -0
  477. package/src/js/validation/rules/email.ts +18 -0
  478. package/src/js/validation/rules/match.ts +26 -0
  479. package/src/js/validation/rules/minmax.ts +47 -0
  480. package/src/js/validation/rules/number.ts +55 -0
  481. package/src/js/validation/rules/pattern.ts +29 -0
  482. package/src/js/validation/rules/required.ts +30 -0
  483. package/src/js/validation/rules/shared.ts +47 -0
  484. package/src/js/validation/rules/url.ts +23 -0
  485. package/src/js/validation/rules.ts +16 -0
  486. package/src/js/validation/types.ts +50 -0
  487. package/src/js/validation/validator.ts +643 -0
  488. package/src/vendor.d.ts +100 -0
  489. package/src/vite-env.d.ts +22 -0
  490. package/vite-dev.mjs +22 -0
@@ -0,0 +1,26 @@
1
+ import { s as getPaymentProviderActionEventName } from "./event-names-DamGPtXR.js";
2
+ import { t as definePaymentModule } from "./api-DE7LfK-R.js";
3
+ //#region src/js/modules/payments/go-cardless.ts
4
+ /** Event name from PHP addSubmitData – dispatched on form when backend returns GoCardless redirect URL */
5
+ var REDIRECT_EVENT = getPaymentProviderActionEventName("go-cardless", "redirect");
6
+ var goCardlessModule = definePaymentModule({
7
+ id: "go-cardless",
8
+ defaultRequiredInputSuffixes: [],
9
+ load: async () => null,
10
+ setup: async ({ services, root }) => {
11
+ const handler = (event) => {
12
+ const data = event.detail?.data;
13
+ if (!data?.redirectUrl) {
14
+ services.addError("Missing GoCardless redirect URL.");
15
+ return;
16
+ }
17
+ window.location.href = data.redirectUrl;
18
+ };
19
+ root.addEventListener(REDIRECT_EVENT, handler);
20
+ return { destroy: () => {
21
+ root.removeEventListener(REDIRECT_EVENT, handler);
22
+ } };
23
+ }
24
+ });
25
+ //#endregion
26
+ export { goCardlessModule };
@@ -0,0 +1,208 @@
1
+ import { n as getAddressProviderEventName } from "./event-names-DamGPtXR.js";
2
+ import { t as defineAddressModule } from "./api-CbqEMQT5.js";
3
+ import { n as loadExternalScript, t as ensureGlobal } from "./scripts-BGD_iU_6.js";
4
+ //#region src/js/modules/address/google-address.ts
5
+ var SCRIPT_ID = "FORMIE_GOOGLE_ADDRESS_SCRIPT";
6
+ var CALLBACK_NAME = "formieGoogleMapsReady";
7
+ var loadPromise = null;
8
+ /** Load Google Maps with callback; required when using loading=async. */
9
+ async function loadGoogleMapsScript(apiKey) {
10
+ const w = window;
11
+ const existing = w.google;
12
+ if (typeof existing !== "undefined" && existing !== null) {
13
+ const maps = existing.maps;
14
+ if (maps?.places?.PlaceAutocompleteElement) return existing;
15
+ const imp = maps;
16
+ if (typeof imp?.importLibrary === "function") await imp.importLibrary("places");
17
+ return existing;
18
+ }
19
+ if (loadPromise) return loadPromise;
20
+ if (document.getElementById(SCRIPT_ID)) {
21
+ const google = await ensureGlobal("google", 1e4);
22
+ const maps = google?.maps;
23
+ if (typeof maps?.importLibrary === "function") await maps.importLibrary("places");
24
+ return google;
25
+ }
26
+ const url = new URL("https://maps.googleapis.com/maps/api/js");
27
+ url.searchParams.set("key", apiKey);
28
+ url.searchParams.set("loading", "async");
29
+ url.searchParams.set("libraries", "places");
30
+ url.searchParams.set("callback", CALLBACK_NAME);
31
+ loadPromise = (async () => {
32
+ const ready = new Promise((resolve, reject) => {
33
+ const t = setTimeout(() => {
34
+ if (w[CALLBACK_NAME]) {
35
+ delete w[CALLBACK_NAME];
36
+ reject(/* @__PURE__ */ new Error("Google Maps API load timeout"));
37
+ }
38
+ }, 15e3);
39
+ w[CALLBACK_NAME] = () => {
40
+ clearTimeout(t);
41
+ delete w[CALLBACK_NAME];
42
+ resolve(w.google);
43
+ };
44
+ });
45
+ await loadExternalScript({
46
+ id: SCRIPT_ID,
47
+ src: url.toString(),
48
+ async: true,
49
+ defer: true
50
+ });
51
+ const google = await ready;
52
+ const maps = google?.maps;
53
+ if (typeof maps?.importLibrary === "function") await maps.importLibrary("places");
54
+ return google;
55
+ })();
56
+ try {
57
+ return await loadPromise;
58
+ } catch (e) {
59
+ loadPromise = null;
60
+ throw e;
61
+ }
62
+ }
63
+ function setFieldValues(services, data) {
64
+ if (data.formattedAddress) services.input.setValue("autoComplete", data.formattedAddress);
65
+ if (data.address1) services.input.setValue("address1", data.address1);
66
+ if (data.city !== void 0) services.input.setValue("city", data.city);
67
+ if (data.state !== void 0) services.input.setValue("state", data.state);
68
+ if (data.zip !== void 0) services.input.setValue("zip", data.zip);
69
+ if (data.country !== void 0) services.input.setValue("country", data.country);
70
+ }
71
+ function componentMap() {
72
+ return {
73
+ subpremise: "shortText",
74
+ street_number: "shortText",
75
+ route: "longText",
76
+ postal_town: "longText",
77
+ locality: "longText",
78
+ administrative_area_level_1: "shortText",
79
+ country: "shortText",
80
+ postal_code: "shortText"
81
+ };
82
+ }
83
+ function parseAddressComponents(components) {
84
+ const map = componentMap();
85
+ const out = {};
86
+ for (const comp of components) {
87
+ const type = comp.types?.[0];
88
+ if (!type || !map[type]) continue;
89
+ out[type] = comp[map[type]] ?? comp.short_text ?? comp.long_text ?? "";
90
+ }
91
+ return out;
92
+ }
93
+ function buildAddressFromComponents(formData) {
94
+ let address1 = "";
95
+ if (formData.street_number || formData.route) {
96
+ address1 = [formData.street_number, formData.route].filter(Boolean).join(" ");
97
+ if (formData.subpremise) address1 = `${formData.subpremise}/${address1}`;
98
+ }
99
+ return {
100
+ address1,
101
+ city: formData.locality || formData.postal_town || "",
102
+ state: formData.administrative_area_level_1 || "",
103
+ zip: formData.postal_code || "",
104
+ country: formData.country || ""
105
+ };
106
+ }
107
+ var googleAddressModule = defineAddressModule({
108
+ id: "google-address",
109
+ load: async ({ options }) => {
110
+ const apiKey = options.provider.apiKey;
111
+ if (!apiKey) throw new Error("Google Places API key is required");
112
+ return loadGoogleMapsScript(apiKey);
113
+ },
114
+ mount: async ({ api, field, services, provider }) => {
115
+ const input = services.input.getAutocomplete();
116
+ const PlaceAutocompleteElement = api?.maps?.places?.PlaceAutocompleteElement;
117
+ if (!input || typeof PlaceAutocompleteElement !== "function") {
118
+ console.warn("[formie] Google Places API not ready; address autocomplete skipped.");
119
+ return null;
120
+ }
121
+ const autocomplete = new PlaceAutocompleteElement({
122
+ types: ["geocode"],
123
+ ...provider.options || {}
124
+ });
125
+ const inputHeight = window.getComputedStyle(input).height;
126
+ autocomplete.style.height = inputHeight;
127
+ autocomplete.style.boxSizing = "border-box";
128
+ let wrapper = input.parentElement;
129
+ if (!wrapper?.classList.contains("formie-autocomplete-wrapper")) {
130
+ wrapper = document.createElement("div");
131
+ wrapper.classList.add("formie-autocomplete-wrapper");
132
+ input.parentNode?.insertBefore(wrapper, input);
133
+ wrapper.appendChild(input);
134
+ }
135
+ const savedValue = input.value;
136
+ if (savedValue) {
137
+ const overlay = document.createElement("div");
138
+ overlay.classList.add("formie-autocomplete-placeholder");
139
+ overlay.textContent = savedValue;
140
+ wrapper.style.position = "relative";
141
+ overlay.style.cssText = `
142
+ position: absolute; left: 0; top: 0; height: ${inputHeight};
143
+ line-height: ${inputHeight}; width: 100%; padding: 0 2.5rem;
144
+ pointer-events: none; color: #6B7280; font-size: 14px; z-index: 1;
145
+ `;
146
+ wrapper.appendChild(overlay);
147
+ autocomplete.addEventListener("focusin", () => {
148
+ overlay.style.display = "none";
149
+ });
150
+ autocomplete.addEventListener("focusout", () => {
151
+ if (input.value) overlay.style.display = "";
152
+ });
153
+ }
154
+ wrapper.replaceChild(autocomplete, input);
155
+ input.type = "hidden";
156
+ input.name = input.getAttribute("name") || "";
157
+ wrapper.appendChild(input);
158
+ const onSelect = async (ev) => {
159
+ const pred = ev.placePrediction;
160
+ if (!pred) return;
161
+ const place = await pred.toPlace();
162
+ await place.fetchFields({ fields: ["addressComponents", "formattedAddress"] });
163
+ if (!place.addressComponents) return;
164
+ setFieldValues(services, {
165
+ ...buildAddressFromComponents(parseAddressComponents(place.addressComponents)),
166
+ formattedAddress: place.formattedAddress
167
+ });
168
+ field.dispatchEvent(new CustomEvent(getAddressProviderEventName("google", "populate"), {
169
+ bubbles: true,
170
+ detail: {
171
+ addressProvider: "google",
172
+ place,
173
+ formattedAddress: place.formattedAddress,
174
+ addressComponents: place.addressComponents
175
+ }
176
+ }));
177
+ };
178
+ autocomplete.addEventListener("gmp-select", onSelect);
179
+ return autocomplete;
180
+ },
181
+ onCurrentLocation: async (position, { field, services }) => {
182
+ const { latitude, longitude } = position.coords;
183
+ const form = services.form;
184
+ const actionUrl = form?.action || window.location.href;
185
+ const fieldHandle = field.getAttribute("data-formie-field-handle")?.trim();
186
+ const formHandle = (form?.querySelector("[name=\"handle\"]"))?.value?.trim();
187
+ if (!formHandle || !fieldHandle) return;
188
+ try {
189
+ const formData = new FormData();
190
+ formData.append("action", "formie/address/google-places-geocode");
191
+ formData.append("latlng", `${latitude},${longitude}`);
192
+ formData.append("handle", formHandle);
193
+ formData.append("fieldHandle", fieldHandle);
194
+ const data = await (await fetch(actionUrl, {
195
+ method: "POST",
196
+ body: formData,
197
+ credentials: "include",
198
+ headers: {
199
+ "X-Requested-With": "XMLHttpRequest",
200
+ Accept: "application/json"
201
+ }
202
+ })).json();
203
+ if (data?.results?.[0]?.address_components) setFieldValues(services, buildAddressFromComponents(parseAddressComponents(data.results[0].address_components)));
204
+ } catch {}
205
+ }
206
+ });
207
+ //#endregion
208
+ export { googleAddressModule };
@@ -0,0 +1,72 @@
1
+ import { a as CAPTCHA_PROVIDER_LOAD_TIMEOUT_MS, r as getScriptAttributes, t as defineCaptchaModule } from "./api-DOfDzYC_.js";
2
+ import { n as loadExternalScript, t as ensureGlobal } from "./scripts-BGD_iU_6.js";
3
+ //#region src/js/modules/captchas/hcaptcha.ts
4
+ async function loadHcaptchaGlobal(options) {
5
+ const language = typeof options.language === "string" && options.language.trim() !== "" ? options.language.trim() : "en";
6
+ const { async, defer } = getScriptAttributes(options.loadingMethod);
7
+ const callbackName = "FORMIE_HCAPTCHA_ONLOAD";
8
+ const globalWindow = window;
9
+ const existing = globalWindow.hcaptcha;
10
+ if (existing) return existing;
11
+ const callbackPromise = new Promise((resolve) => {
12
+ globalWindow[callbackName] = () => {
13
+ delete globalWindow[callbackName];
14
+ resolve();
15
+ };
16
+ });
17
+ await loadExternalScript({
18
+ id: "FORMIE_HCAPTCHA_SCRIPT",
19
+ src: `https://js.hcaptcha.com/1/api.js?recaptchacompat=off&render=explicit&onload=${encodeURIComponent(callbackName)}&hl=${encodeURIComponent(language)}`,
20
+ async,
21
+ defer
22
+ });
23
+ await callbackPromise;
24
+ return ensureGlobal("hcaptcha", CAPTCHA_PROVIDER_LOAD_TIMEOUT_MS);
25
+ }
26
+ var hcaptchaModule = defineCaptchaModule({
27
+ id: "hcaptcha",
28
+ defaultPlaceholderSelector: "[data-hcaptcha-placeholder]",
29
+ defaultTokenFieldNames: ["h-captcha-response"],
30
+ load: ({ options }) => {
31
+ return loadHcaptchaGlobal(options.provider);
32
+ },
33
+ mount: ({ api, container, provider, services }) => {
34
+ return api.render(container, {
35
+ sitekey: provider.siteKey || "",
36
+ theme: provider.theme || "light",
37
+ size: provider.size || "normal",
38
+ callback: (token) => {
39
+ if (typeof token === "string" && token.trim() !== "") services.tokens.write(token.trim());
40
+ services.errors.clear();
41
+ },
42
+ "expired-callback": () => {
43
+ services.tokens.clear();
44
+ services.errors.clear();
45
+ },
46
+ "chalexpired-callback": () => {
47
+ services.tokens.clear();
48
+ services.errors.clear();
49
+ },
50
+ "error-callback": () => {
51
+ services.tokens.clear();
52
+ }
53
+ });
54
+ },
55
+ screen: ({ api, widget, placeholder, services, stageCtx }) => {
56
+ if (services.tokens.has()) return;
57
+ api.execute(widget);
58
+ return services.tokens.wait().then((hasToken) => {
59
+ if (!hasToken) {
60
+ const message = services.errors.getDefaultMessage();
61
+ services.errors.show(message, placeholder);
62
+ stageCtx.abort(message);
63
+ }
64
+ });
65
+ },
66
+ unmount: ({ api, widget, services }) => {
67
+ api.reset(widget);
68
+ services.tokens.clear();
69
+ }
70
+ });
71
+ //#endregion
72
+ export { hcaptchaModule };
@@ -0,0 +1,36 @@
1
+ import { r as getModuleFieldContainers } from "./shared-DC6_1u8X.js";
2
+ //#region src/js/modules/fields/hidden.ts
3
+ var INPUT_SELECTOR = "input[data-formie-hidden-input]";
4
+ function getCookieValue(name) {
5
+ const cookies = document.cookie ? document.cookie.split("; ") : [];
6
+ for (const cookie of cookies) {
7
+ const parts = cookie.split("=");
8
+ if (decodeURIComponent(parts.shift() || "") === name) return decodeURIComponent(parts.join("="));
9
+ }
10
+ return null;
11
+ }
12
+ var hiddenModule = {
13
+ id: "hidden",
14
+ kind: "field",
15
+ match: (ctx) => {
16
+ return !!ctx.target.querySelector(INPUT_SELECTOR);
17
+ },
18
+ setup: async (ctx) => {
19
+ const options = ctx.options || {};
20
+ const cookieValue = options.cookieName ? getCookieValue(options.cookieName) : null;
21
+ const inputs = getModuleFieldContainers(ctx).map((field) => {
22
+ return field.querySelector(INPUT_SELECTOR);
23
+ }).filter((input) => {
24
+ return input instanceof HTMLInputElement;
25
+ });
26
+ if (cookieValue !== null) inputs.forEach((input) => {
27
+ input.value = cookieValue;
28
+ });
29
+ await ctx.emit("formie:module:hidden:init", { count: inputs.length });
30
+ return { destroy: () => {
31
+ ctx.emit("formie:module:hidden:destroy", {});
32
+ } };
33
+ }
34
+ };
35
+ //#endregion
36
+ export { hiddenModule };
@@ -0,0 +1,29 @@
1
+ //#region src/js/utils/http.ts
2
+ async function request(url, options = {}) {
3
+ const headers = {
4
+ Accept: "application/json",
5
+ ...options.headers || {}
6
+ };
7
+ delete headers["X-Requested-With"];
8
+ delete headers["x-requested-with"];
9
+ return fetch(String(url), {
10
+ method: options.method || "GET",
11
+ body: options.body ?? null,
12
+ signal: options.signal,
13
+ cache: "no-store",
14
+ headers,
15
+ credentials: "same-origin"
16
+ });
17
+ }
18
+ async function requestJson(url, options = {}) {
19
+ const response = await request(url, options);
20
+ if (!response.ok) throw new Error(`Request failed (${response.status}) for ${String(url)}`);
21
+ return response.json();
22
+ }
23
+ async function requestText(url, options = {}) {
24
+ const response = await request(url, options);
25
+ if (!response.ok) throw new Error(`Request failed (${response.status}) for ${String(url)}`);
26
+ return response.text();
27
+ }
28
+ //#endregion
29
+ export { requestText as n, requestJson as t };
@@ -0,0 +1,55 @@
1
+ //#region src/js/utils/i18n.ts
2
+ function getWindowTranslationStore() {
3
+ return window.FormieTranslations || {};
4
+ }
5
+ function hydrateTranslationsFromDom() {
6
+ if (typeof document === "undefined") return;
7
+ const scripts = Array.from(document.querySelectorAll("script[type=\"application/json\"][data-formie-translations]:not([data-formie-translations-loaded=\"true\"])"));
8
+ if (scripts.length === 0) return;
9
+ let nextStore = null;
10
+ for (const script of scripts) {
11
+ script.dataset.formieTranslationsLoaded = "true";
12
+ const payload = script.textContent?.trim();
13
+ if (!payload) continue;
14
+ try {
15
+ const translations = JSON.parse(payload);
16
+ if (!translations || Array.isArray(translations) || typeof translations !== "object") continue;
17
+ nextStore = {
18
+ ...nextStore ?? getWindowTranslationStore(),
19
+ ...translations
20
+ };
21
+ } catch {
22
+ continue;
23
+ }
24
+ }
25
+ if (nextStore) window.FormieTranslations = nextStore;
26
+ }
27
+ function getTranslationStore() {
28
+ hydrateTranslationsFromDom();
29
+ return getWindowTranslationStore();
30
+ }
31
+ function getFormieTranslations() {
32
+ return { ...getTranslationStore() };
33
+ }
34
+ function setFormieTranslations(translations) {
35
+ window.FormieTranslations = { ...translations };
36
+ return getFormieTranslations();
37
+ }
38
+ function mergeFormieTranslations(translations) {
39
+ window.FormieTranslations = {
40
+ ...getTranslationStore(),
41
+ ...translations
42
+ };
43
+ return getFormieTranslations();
44
+ }
45
+ function t(message, replacements = {}) {
46
+ let output = getTranslationStore()[message] || message;
47
+ output = output.replace(/{([a-zA-Z0-9]+)}/g, (match, key) => {
48
+ if (Object.prototype.hasOwnProperty.call(replacements, key)) return String(replacements[key]);
49
+ return match;
50
+ });
51
+ return output;
52
+ }
53
+ var translate = t;
54
+ //#endregion
55
+ export { translate as a, t as i, mergeFormieTranslations as n, setFormieTranslations as r, getFormieTranslations as t };
@@ -0,0 +1,97 @@
1
+ import { n as ADDRESS_SELECTORS, t as defineAddressModule } from "./api-CbqEMQT5.js";
2
+ import { r as loadScriptAndEnsureGlobal } from "./scripts-BGD_iU_6.js";
3
+ //#region src/js/modules/address/loqate.ts
4
+ var SCRIPT_ID = "FORMIE_LOQATE_SCRIPT";
5
+ var loqateModule = defineAddressModule({
6
+ id: "loqate",
7
+ load: async () => {
8
+ await loadScriptAndEnsureGlobal("pca", {
9
+ id: SCRIPT_ID,
10
+ src: "https://services.pcapredict.com/js/address-3.91.min.js",
11
+ async: true,
12
+ defer: true
13
+ });
14
+ const link = document.createElement("link");
15
+ link.href = "https://services.pcapredict.com/css/address-3.91.min.css";
16
+ link.rel = "stylesheet";
17
+ link.type = "text/css";
18
+ if (!document.querySelector(`link[href="${link.href}"]`)) document.body.appendChild(link);
19
+ return window.pca;
20
+ },
21
+ mount: ({ api, field, services, provider }) => {
22
+ const namespace = provider.namespace || "";
23
+ const apiKey = provider.apiKey || "";
24
+ if (!apiKey) throw new Error("Loqate API key is required");
25
+ const handleToSelector = {
26
+ autoComplete: ADDRESS_SELECTORS.autoComplete,
27
+ address1: ADDRESS_SELECTORS.address1,
28
+ address2: ADDRESS_SELECTORS.address2,
29
+ address3: ADDRESS_SELECTORS.address3,
30
+ city: ADDRESS_SELECTORS.city,
31
+ state: ADDRESS_SELECTORS.state,
32
+ zip: ADDRESS_SELECTORS.zip,
33
+ country: ADDRESS_SELECTORS.country
34
+ };
35
+ const getLoqateElementRef = (handle) => {
36
+ if (namespace) return `${namespace}[${handle}]`;
37
+ const cssSelector = handleToSelector[handle];
38
+ const el = cssSelector ? field.querySelector(cssSelector) : null;
39
+ if (el?.name) return el.name;
40
+ if (el?.id) return el.id;
41
+ return "";
42
+ };
43
+ const autoCompleteRef = getLoqateElementRef("autoComplete");
44
+ if (!autoCompleteRef) throw new Error("Loqate: could not find autocomplete input within address field");
45
+ const fields = [
46
+ {
47
+ element: autoCompleteRef,
48
+ field: "",
49
+ mode: api.fieldMode.SEARCH
50
+ },
51
+ {
52
+ element: getLoqateElementRef("address1"),
53
+ field: "Line1",
54
+ mode: api.fieldMode.POPULATE
55
+ },
56
+ {
57
+ element: getLoqateElementRef("address2"),
58
+ field: "Line2",
59
+ mode: api.fieldMode.POPULATE
60
+ },
61
+ {
62
+ element: getLoqateElementRef("address3"),
63
+ field: "Line3",
64
+ mode: api.fieldMode.POPULATE
65
+ },
66
+ {
67
+ element: getLoqateElementRef("city"),
68
+ field: "City",
69
+ mode: api.fieldMode.POPULATE
70
+ },
71
+ {
72
+ element: getLoqateElementRef("state"),
73
+ field: "Province",
74
+ mode: api.fieldMode.POPULATE
75
+ },
76
+ {
77
+ element: getLoqateElementRef("zip"),
78
+ field: "PostalCode",
79
+ mode: api.fieldMode.POPULATE
80
+ },
81
+ {
82
+ element: getLoqateElementRef("country"),
83
+ field: "CountryName",
84
+ mode: api.fieldMode.COUNTRY
85
+ }
86
+ ].filter((f) => f.element);
87
+ const control = new api.Address(fields, {
88
+ key: apiKey,
89
+ simulateReactEvents: true,
90
+ ...provider.reconfigurableOptions || {}
91
+ });
92
+ if (typeof control.load === "function") control.load();
93
+ return control;
94
+ }
95
+ });
96
+ //#endregion
97
+ export { loqateModule };
@@ -0,0 +1,26 @@
1
+ import { s as getPaymentProviderActionEventName } from "./event-names-DamGPtXR.js";
2
+ import { t as definePaymentModule } from "./api-DE7LfK-R.js";
3
+ //#region src/js/modules/payments/mollie.ts
4
+ /** Event name from PHP addSubmitData – dispatched on form when backend returns Mollie checkout URL */
5
+ var REDIRECT_EVENT = getPaymentProviderActionEventName("mollie", "redirect");
6
+ var mollieModule = definePaymentModule({
7
+ id: "mollie",
8
+ defaultRequiredInputSuffixes: [],
9
+ load: async () => null,
10
+ setup: async ({ services, root }) => {
11
+ const handler = (event) => {
12
+ const data = event.detail?.data;
13
+ if (!data?.checkoutUrl) {
14
+ services.addError("Missing Mollie checkout URL.");
15
+ return;
16
+ }
17
+ window.location.href = data.checkoutUrl;
18
+ };
19
+ root.addEventListener(REDIRECT_EVENT, handler);
20
+ return { destroy: () => {
21
+ root.removeEventListener(REDIRECT_EVENT, handler);
22
+ } };
23
+ }
24
+ });
25
+ //#endregion
26
+ export { mollieModule };