@verbb/formie-browser 1.0.15 → 1.0.16
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.
- package/CHANGELOG.md +36 -0
- package/dist/chunks/{address-country-BcEQKw0T.js → address-country-DLJF-OkC.js} +4 -8
- package/dist/chunks/{address-finder-BWGINCSA.js → address-finder-QK1m1eyv.js} +1 -1
- package/dist/chunks/{address-state-DI3ndhMU.js → address-state-CHKit8AW.js} +26 -35
- package/dist/chunks/{api-BK9b340y.js → api-BPtH5RBA.js} +152 -120
- package/dist/chunks/{api-Dxl_CKw-.js → api-BR2Gqy37.js} +306 -301
- package/dist/chunks/{api-ghNr2uxX.js → api-CmuOZ0i3.js} +1 -1
- package/dist/chunks/{bpoint-BwtuyN_O.js → bpoint-GvYfyPjD.js} +1 -1
- package/dist/chunks/{calculations-YEoVCG2q.js → calculations-DeEmdUDq.js} +5 -7
- package/dist/chunks/{captcha-eu-DWLoQFKB.js → captcha-eu-eU_M6snp.js} +1 -1
- package/dist/chunks/{checkbox-radio-gsm8QPJg.js → checkbox-radio-CSXo6svm.js} +4 -12
- package/dist/chunks/{combobox-Ba08_cHL.js → combobox-CJh2DoSO.js} +292 -333
- package/dist/chunks/{conditions-Ceeg6ReZ.js → conditions-Dz3068K0.js} +56 -72
- package/dist/chunks/{country-from-ip-DDj_mFki.js → country-from-ip-BqQ-BqLH.js} +1 -1
- package/dist/chunks/{custom-google-maps-C4l2S3GO.js → custom-google-maps-rNm5VFbb.js} +2 -6
- package/dist/chunks/{custom-link-CLazgKYH.js → custom-link-CLqFCssQ.js} +1 -1
- package/dist/chunks/{custom-maps-DqcAlD0v.js → custom-maps-DgjYQDLj.js} +4 -8
- package/dist/chunks/{date-picker-DaPvMrop.js → date-picker-BVJxJVYT.js} +30 -47
- package/dist/chunks/{debug-BV0DvdHx.js → debug-rhzqP1j2.js} +2 -14
- package/dist/chunks/{dist-ZLeW0zZ3.js → dist-CJReDlDK.js} +13 -8
- package/dist/chunks/{eway-uw0DzU-L.js → eway-BZuTBAUW.js} +1 -1
- package/dist/chunks/{field-references.resolver-Ca8MguFv.js → field-references.resolver-uSHf5-NP.js} +1 -1
- package/dist/chunks/{file-upload-B8_mH012.js → file-upload-vEUr_EuP.js} +114 -108
- package/dist/chunks/{friendly-captcha-v1-CVXaXgDO.js → friendly-captcha-v1-C_cF1WD2.js} +2 -2
- package/dist/chunks/{friendly-captcha-v2-DkeIVTKI.js → friendly-captcha-v2-BenESH-n.js} +2 -2
- package/dist/chunks/{friendly-challenge-DPG9MJb1.js → friendly-challenge-BgPBEMXx.js} +21 -35
- package/dist/chunks/{go-cardless-c4wLJdOt.js → go-cardless-DWZeB0Bq.js} +2 -6
- package/dist/chunks/{google-address-JHYvjwgN.js → google-address-DQR6rsbh.js} +2 -2
- package/dist/chunks/{hcaptcha-Dt3ELLlP.js → hcaptcha-COilLmRT.js} +1 -1
- package/dist/chunks/{hidden-BZhXnNPe.js → hidden-Bc2TpcgF.js} +1 -1
- package/dist/chunks/{http-C2QdHuWO.js → http-Dj_skqaa.js} +1 -1
- package/dist/chunks/{leaflet-src-DE6rv6M-.js → leaflet-src-Cg-LUOD8.js} +74 -122
- package/dist/chunks/{loqate-m51iPyO1.js → loqate-ZZClcacr.js} +1 -1
- package/dist/chunks/{mollie-Bn0PX173.js → mollie-8OMXIYa8.js} +2 -6
- package/dist/chunks/{moneris-BRbUvI4t.js → moneris-qYHJ9EFy.js} +1 -1
- package/dist/chunks/opayo-DlWPEnla.js +159 -0
- package/dist/chunks/{paddle-CympHVvd.js → paddle-CArfWih0.js} +1 -1
- package/dist/chunks/{password-validation-C8_uO_c_.js → password-validation-HGOU9kf3.js} +2 -2
- package/dist/chunks/{paypal-h75h6wae.js → paypal-BcaMCMGY.js} +1 -1
- package/dist/chunks/{payway-C9rHTCC_.js → payway-vxC7_bfR.js} +3 -11
- package/dist/chunks/{phone-country-B8fv-L5_.js → phone-country-Bx9EG50h.js} +123 -140
- package/dist/chunks/{place-kit-BnZGQ-L1.js → place-kit-BKk8xDXf.js} +2 -2
- package/dist/chunks/{placekit-autocomplete.esm-CZZERYur.js → placekit-autocomplete.esm-D2A_0iVU.js} +2 -5
- package/dist/chunks/{recaptcha-enterprise-CUs8BO6V.js → recaptcha-enterprise-Cx6HUpMa.js} +6 -12
- package/dist/chunks/recaptcha-shared-CcMI-r8t.js +33 -0
- package/dist/chunks/{recaptcha-v2-checkbox-P1McW4Pv.js → recaptcha-v2-checkbox-DQ9BJzcv.js} +2 -2
- package/dist/chunks/{recaptcha-v2-invisible-FGDqozSP.js → recaptcha-v2-invisible-BP0T8Pan.js} +2 -2
- package/dist/chunks/recaptcha-v3-DKMGQ27K.js +38 -0
- package/dist/chunks/{repeater-CyhDbozO.js → repeater-BR0RUvTs.js} +3 -7
- package/dist/chunks/{rich-text-uV4o_pGk.js → rich-text-H2A6cm1t.js} +33 -11
- package/dist/chunks/{rolldown-runtime-DtPi1Y-2.js → rolldown-runtime-VHNaYcLd.js} +1 -1
- package/dist/chunks/{sdk-lkwSvlpM.js → sdk-_cmrRYgp.js} +4 -16
- package/dist/chunks/{shared-OKhSay59.js → shared-CJ1LIEh3.js} +1 -3
- package/dist/chunks/{signature-7cldFbqj.js → signature-CfKA_poI.js} +9 -41
- package/dist/chunks/{snaptcha-C3QLYxFT.js → snaptcha-P3EoSQud.js} +1 -1
- package/dist/chunks/{square-C1z5DPVw.js → square-Dyz0p_GU.js} +1 -1
- package/dist/chunks/{stripe-Dmkdkq1y.js → stripe-Bfd_jp_k.js} +3 -6
- package/dist/chunks/{summary-Bn-g5SDx.js → summary-B3CAebLV.js} +44 -36
- package/dist/chunks/{survey-likert-fk1hUPff.js → survey-likert-CEtUceag.js} +1 -1
- package/dist/chunks/{survey-rank-BsLGl2LX.js → survey-rank-Dtt97y6s.js} +3 -7
- package/dist/chunks/{survey-rating-DVS6e6fM.js → survey-rating-mlDMI0uq.js} +9 -23
- package/dist/chunks/{table-j7MlLLCc.js → table-0k6Md0IO.js} +1 -1
- package/dist/chunks/{text-limit-LGMPhFuC.js → text-limit-CTVML6s7.js} +10 -10
- package/dist/chunks/{turnstile-ptihQfLl.js → turnstile-Sp4ubowK.js} +1 -1
- package/dist/chunks/{upload-manager-BW7l-BhF.js → upload-manager-Ccg3d_4I.js} +11 -25
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +752 -756
- package/dist/js/core/create-formie-client.d.ts.map +1 -1
- package/dist/js/core/dom-events.d.ts +5 -0
- package/dist/js/core/dom-events.d.ts.map +1 -1
- package/dist/js/core/page-client-event.d.ts.map +1 -1
- package/dist/js/core/submit-result-state.d.ts.map +1 -1
- package/dist/js/core/submit-result-ui.d.ts.map +1 -1
- package/dist/js/core/validation-focus.d.ts.map +1 -1
- package/dist/js/modules/captchas/factories.d.ts.map +1 -1
- package/dist/js/modules/captchas/host.d.ts +4 -1
- package/dist/js/modules/captchas/host.d.ts.map +1 -1
- package/dist/js/modules/captchas/recaptcha-shared.d.ts +1 -1
- package/dist/js/modules/captchas/recaptcha-shared.d.ts.map +1 -1
- package/dist/js/modules/captchas/recaptcha-v3.d.ts.map +1 -1
- package/dist/js/modules/fields/address-state.d.ts.map +1 -1
- package/dist/js/modules/fields/combobox.d.ts +2 -0
- package/dist/js/modules/fields/combobox.d.ts.map +1 -1
- package/dist/js/modules/fields/conditions.d.ts.map +1 -1
- package/dist/js/modules/fields/file-upload.d.ts.map +1 -1
- package/dist/js/modules/fields/phone-country.d.ts.map +1 -1
- package/dist/js/modules/fields/rich-text.d.ts.map +1 -1
- package/dist/js/modules/fields/summary.d.ts.map +1 -1
- package/dist/js/modules/fields/text-limit.d.ts.map +1 -1
- package/dist/js/modules/payments/factories.d.ts.map +1 -1
- package/dist/js/modules/payments/opayo.d.ts.map +1 -1
- package/dist/js/submit/pipeline.d.ts +2 -0
- package/dist/js/submit/pipeline.d.ts.map +1 -1
- package/dist/js/utils/form-started-at.d.ts +1 -0
- package/dist/js/utils/form-started-at.d.ts.map +1 -1
- package/dist/js/utils/unload-warning.d.ts +4 -0
- package/dist/js/utils/unload-warning.d.ts.map +1 -1
- package/dist/js/validation/rules/required.d.ts.map +1 -1
- package/dist/js/validation/submit-readiness.d.ts.map +1 -1
- package/dist/js/validation/validator.d.ts +1 -0
- package/dist/js/validation/validator.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +1 -0
- package/src/js/core/create-formie-client.ts +20 -18
- package/src/js/core/dom-events.ts +30 -1
- package/src/js/core/page-client-event.ts +5 -7
- package/src/js/core/submit-result-state.ts +13 -2
- package/src/js/core/submit-result-ui.ts +21 -0
- package/src/js/core/validation-focus.ts +17 -3
- package/src/js/modules/captchas/factories.ts +241 -101
- package/src/js/modules/captchas/host.ts +16 -0
- package/src/js/modules/captchas/recaptcha-enterprise.ts +1 -1
- package/src/js/modules/captchas/recaptcha-shared.ts +23 -5
- package/src/js/modules/captchas/recaptcha-v3.ts +23 -14
- package/src/js/modules/fields/address-state.ts +6 -4
- package/src/js/modules/fields/combobox.ts +19 -1
- package/src/js/modules/fields/conditions.ts +3 -0
- package/src/js/modules/fields/file-upload.ts +11 -4
- package/src/js/modules/fields/phone-country.ts +23 -0
- package/src/js/modules/fields/rich-text.ts +33 -0
- package/src/js/modules/fields/summary.ts +63 -10
- package/src/js/modules/fields/text-limit.ts +11 -0
- package/src/js/modules/payments/factories.ts +87 -54
- package/src/js/modules/payments/opayo.ts +7 -0
- package/src/js/submit/pipeline.ts +16 -9
- package/src/js/utils/form-started-at.ts +19 -4
- package/src/js/utils/unload-warning.ts +63 -7
- package/src/js/validation/rules/required.ts +6 -0
- package/src/js/validation/submit-readiness.ts +2 -0
- package/src/js/validation/validator.ts +15 -4
- package/src/vendor.d.ts +2 -0
- package/dist/chunks/opayo-BwWdInEP.js +0 -188
- package/dist/chunks/recaptcha-shared-DTbTw-MF.js +0 -27
- package/dist/chunks/recaptcha-v3-CflUHeZD.js +0 -28
|
@@ -1,109 +1,110 @@
|
|
|
1
1
|
import { a as e, i as t, r as n } from "./event-names-BCI2FLD8.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { t as r } from "./csrf-DxHg_ZYt.js";
|
|
3
|
+
import { n as i } from "./http-Dj_skqaa.js";
|
|
4
|
+
import { t as a } from "./styles-BfoIZwJp.js";
|
|
5
|
+
import { l as o, n as s, u as c } from "./shared-CJ1LIEh3.js";
|
|
5
6
|
//#region src/css/theme/fields/_file.css?inline
|
|
6
|
-
var
|
|
7
|
+
var l = "@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}}", u = "input[type=\"file\"][data-formie-file-input]", d = t("uploaded"), f = e("reset"), p = "data-formie-file-upload-key", m = "data-formie-file-upload-hydrate-endpoint", h = "data-formie-file-upload-anchor", g = "data-formie-file-upload-asset-id", _ = "data-formie-file-upload-entry", v = [
|
|
7
8
|
"fileLimit",
|
|
8
9
|
"fileSizeMinLimit",
|
|
9
10
|
"fileSizeMaxLimit"
|
|
10
|
-
],
|
|
11
|
-
|
|
12
|
-
function
|
|
11
|
+
], y = "file-upload", b = "file-upload", x = n("repeater", "init-row"), S = "[data-formie-field-handle]";
|
|
12
|
+
a(b, [l]);
|
|
13
|
+
function C(e) {
|
|
13
14
|
return !!e && typeof e == "object" && !Array.isArray(e);
|
|
14
15
|
}
|
|
15
|
-
function
|
|
16
|
+
function w(e) {
|
|
16
17
|
let t = Number(e);
|
|
17
18
|
return Number.isInteger(t) && t > 0 ? t : null;
|
|
18
19
|
}
|
|
19
|
-
function w(e) {
|
|
20
|
-
return typeof e == "string" ? e.trim() : "";
|
|
21
|
-
}
|
|
22
20
|
function T(e) {
|
|
23
|
-
return e
|
|
21
|
+
return typeof e == "string" ? e.trim() : "";
|
|
24
22
|
}
|
|
25
23
|
function E(e) {
|
|
26
|
-
return e.
|
|
24
|
+
return e.getAttribute("data-formie-field-handle")?.trim() || "";
|
|
27
25
|
}
|
|
28
26
|
function D(e) {
|
|
29
|
-
return
|
|
27
|
+
return e.name.endsWith("[]") ? e.name.slice(0, -2) : e.name;
|
|
30
28
|
}
|
|
31
29
|
function O(e) {
|
|
32
|
-
return
|
|
30
|
+
return `${D(e)}[]`;
|
|
33
31
|
}
|
|
34
32
|
function k(e) {
|
|
35
|
-
return
|
|
33
|
+
return e.getAttribute(p)?.trim() || e.getAttribute("data-formie-input-id")?.trim() || "";
|
|
36
34
|
}
|
|
37
|
-
function A(e
|
|
38
|
-
|
|
39
|
-
return k(e).filter((e) => e.hasAttribute(h) || e.name === n && e.value.trim() !== "");
|
|
35
|
+
function A(e) {
|
|
36
|
+
return Array.from(e.querySelectorAll("input[type=\"hidden\"]")).filter((e) => e instanceof HTMLInputElement);
|
|
40
37
|
}
|
|
41
38
|
function j(e, t) {
|
|
42
|
-
let n =
|
|
43
|
-
|
|
39
|
+
let n = O(t);
|
|
40
|
+
return A(e).filter((e) => e.hasAttribute(g) || e.name === n && e.value.trim() !== "");
|
|
41
|
+
}
|
|
42
|
+
function M(e, t) {
|
|
43
|
+
let n = D(t), r = A(e).find((e) => e.hasAttribute(h) || e.name === n && e.value === "");
|
|
44
|
+
if (r) return r.setAttribute(h, "true"), r.name = n, r.value = "", r;
|
|
44
45
|
let i = document.createElement("input");
|
|
45
|
-
return i.type = "hidden", i.name = n, i.value = "", i.setAttribute(
|
|
46
|
+
return i.type = "hidden", i.name = n, i.value = "", i.setAttribute(h, "true"), t.insertAdjacentElement("afterend", i), i;
|
|
46
47
|
}
|
|
47
|
-
function
|
|
48
|
+
function N(e) {
|
|
48
49
|
if (Array.isArray(e)) return null;
|
|
49
|
-
let t =
|
|
50
|
+
let t = w(e);
|
|
50
51
|
if (t) return {
|
|
51
52
|
assetId: t,
|
|
52
53
|
filename: ""
|
|
53
54
|
};
|
|
54
|
-
if (!
|
|
55
|
-
let n =
|
|
55
|
+
if (!C(e)) return null;
|
|
56
|
+
let n = w(e.assetId ?? e.id ?? e.value), r = T(e.filename ?? e.title ?? e.label ?? e.name), i = T(e.url) || null;
|
|
56
57
|
return !n && !r ? null : {
|
|
57
58
|
assetId: n,
|
|
58
59
|
filename: r,
|
|
59
60
|
url: i,
|
|
60
|
-
uploadUid:
|
|
61
|
-
attachToken:
|
|
62
|
-
viewToken:
|
|
61
|
+
uploadUid: T(e.uploadUid) || null,
|
|
62
|
+
attachToken: T(e.attachToken) || null,
|
|
63
|
+
viewToken: T(e.viewToken ?? e.uploadToken) || null
|
|
63
64
|
};
|
|
64
65
|
}
|
|
65
|
-
function
|
|
66
|
+
function P(e) {
|
|
66
67
|
if (!Array.isArray(e)) {
|
|
67
|
-
let t =
|
|
68
|
+
let t = N(e);
|
|
68
69
|
return t ? [t] : [];
|
|
69
70
|
}
|
|
70
71
|
return e.flatMap((e) => {
|
|
71
|
-
if (Array.isArray(e)) return
|
|
72
|
-
let t =
|
|
72
|
+
if (Array.isArray(e)) return P(e);
|
|
73
|
+
let t = N(e);
|
|
73
74
|
return t ? [t] : [];
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
|
-
function
|
|
77
|
+
function F(e) {
|
|
77
78
|
return e ? Array.from(e.querySelectorAll("[data-formie-file-summary-item]")).map((e) => ({
|
|
78
79
|
assetId: null,
|
|
79
80
|
filename: e.textContent?.trim() || ""
|
|
80
81
|
})).filter((e) => e.filename !== "") : [];
|
|
81
82
|
}
|
|
82
|
-
function
|
|
83
|
-
return
|
|
84
|
-
assetId:
|
|
83
|
+
function I(e, t) {
|
|
84
|
+
return j(e, t).map((t) => ({
|
|
85
|
+
assetId: w(t.getAttribute(g)) ?? w(t.value),
|
|
85
86
|
filename: "",
|
|
86
87
|
viewToken: t.getAttribute("data-formie-file-upload-token"),
|
|
87
88
|
uploadUid: t.name.endsWith("[uploadUid]") ? t.value : null,
|
|
88
|
-
attachToken:
|
|
89
|
+
attachToken: A(e).find((e) => e.name === t.name.replace(/\[uploadUid\]$/, "[attachToken]"))?.value
|
|
89
90
|
})).filter((e) => e.assetId !== null);
|
|
90
91
|
}
|
|
91
|
-
function
|
|
92
|
+
function L(e, t) {
|
|
92
93
|
return e.length ? e.map((e, n) => ({
|
|
93
94
|
...e,
|
|
94
95
|
assetId: e.assetId,
|
|
95
96
|
filename: t[n]?.filename || ""
|
|
96
97
|
})) : t;
|
|
97
98
|
}
|
|
98
|
-
function
|
|
99
|
+
function R(e) {
|
|
99
100
|
return e.map((e) => e.trim().toLowerCase()).filter(Boolean);
|
|
100
101
|
}
|
|
101
|
-
function
|
|
102
|
-
let n =
|
|
102
|
+
function z(e, t) {
|
|
103
|
+
let n = R(e.map((e) => e.filename)), r = R(t);
|
|
103
104
|
return !n.length || !r.length ? !1 : n.every((e) => r.includes(e));
|
|
104
105
|
}
|
|
105
|
-
function
|
|
106
|
-
|
|
106
|
+
function B(e) {
|
|
107
|
+
c(e, y, (e) => {
|
|
107
108
|
e.addValidator("fileLimit", ({ input: e }) => {
|
|
108
109
|
let t = parseInt(e.getAttribute("data-formie-file-limit") || "", 10);
|
|
109
110
|
return e.type !== "file" || !t || !("files" in e) || !e.files?.length || e.files.length <= t;
|
|
@@ -116,22 +117,22 @@ function z(e) {
|
|
|
116
117
|
}, ({ 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") || "" }));
|
|
117
118
|
});
|
|
118
119
|
}
|
|
119
|
-
function
|
|
120
|
-
|
|
120
|
+
function V(e) {
|
|
121
|
+
o(e, y, v);
|
|
121
122
|
}
|
|
122
|
-
function
|
|
123
|
+
function H(e, t) {
|
|
123
124
|
let n = e.querySelector("[data-formie-file-summary]");
|
|
124
125
|
if (n) return n;
|
|
125
126
|
let r = document.createElement("div");
|
|
126
127
|
return r.className = "formie-file-summary", r.setAttribute("data-formie-file-summary", "true"), t.insertAdjacentElement("afterend", r), r;
|
|
127
128
|
}
|
|
128
|
-
function
|
|
129
|
+
function U(e) {
|
|
129
130
|
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]");
|
|
130
131
|
if (!t.length) {
|
|
131
132
|
n && (n.replaceChildren(), n.hidden = !0), e.summaryRoot = n;
|
|
132
133
|
return;
|
|
133
134
|
}
|
|
134
|
-
let r = n ||
|
|
135
|
+
let r = n || H(e.field, e.input);
|
|
135
136
|
if (!r) return;
|
|
136
137
|
r.hidden = !1, e.summaryRoot = r;
|
|
137
138
|
let i = document.createElement("ul");
|
|
@@ -140,40 +141,49 @@ function H(e) {
|
|
|
140
141
|
t.className = "formie-file-summary-item", t.setAttribute("data-formie-file-summary-item", "true"), t.textContent = e, i.appendChild(t);
|
|
141
142
|
}), r.replaceChildren(i);
|
|
142
143
|
}
|
|
143
|
-
function
|
|
144
|
-
let r =
|
|
145
|
-
|
|
144
|
+
function W(e, t, n) {
|
|
145
|
+
let r = M(e, t), i = D(t);
|
|
146
|
+
A(e).filter((e) => e.hasAttribute(_) || e.name === `${i}[]` && e.value.trim() !== "").forEach((e) => {
|
|
146
147
|
e.remove();
|
|
147
148
|
}), n.forEach((e, t) => {
|
|
148
149
|
if (!e.assetId) return;
|
|
149
150
|
let n = document.createElement("input");
|
|
150
151
|
n.type = "hidden";
|
|
151
152
|
let a = e.uploadUid && e.attachToken;
|
|
152
|
-
if (n.name = `${i}[${t}][${a ? "uploadUid" : "assetId"}]`, n.value = a ? e.uploadUid : String(e.assetId), n.setAttribute(
|
|
153
|
+
if (n.name = `${i}[${t}][${a ? "uploadUid" : "assetId"}]`, n.value = a ? e.uploadUid : String(e.assetId), n.setAttribute(_, "true"), n.setAttribute(g, String(e.assetId)), e.viewToken && n.setAttribute("data-formie-file-upload-token", e.viewToken), r.insertAdjacentElement("afterend", n), r = n, a) {
|
|
153
154
|
let n = document.createElement("input");
|
|
154
|
-
n.type = "hidden", n.name = `${i}[${t}][attachToken]`, n.value = e.attachToken, n.setAttribute(
|
|
155
|
+
n.type = "hidden", n.name = `${i}[${t}][attachToken]`, n.value = e.attachToken, n.setAttribute(_, "true"), r.insertAdjacentElement("afterend", n), r = n;
|
|
155
156
|
}
|
|
156
157
|
}), t.value = "";
|
|
157
158
|
}
|
|
158
|
-
function
|
|
159
|
+
function G(e) {
|
|
159
160
|
if (!e) return "";
|
|
160
161
|
let t = e.querySelector("input[name=\"handle\"]");
|
|
161
162
|
return t instanceof HTMLInputElement && t.value.trim() ? t.value.trim() : e.getAttribute("data-formie-handle")?.trim() || "";
|
|
162
163
|
}
|
|
163
|
-
function
|
|
164
|
-
let
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
164
|
+
function K(e, t, n) {
|
|
165
|
+
let i = t.form, a = new FormData(), o = G(i), s = E(e);
|
|
166
|
+
return o && a.append("handle", o), s && a.append("fieldHandle", s), [
|
|
167
|
+
"submissionUid",
|
|
168
|
+
"resumeToken",
|
|
169
|
+
"submissionEditToken",
|
|
170
|
+
"siteId",
|
|
171
|
+
"renderId",
|
|
172
|
+
"draftContext",
|
|
173
|
+
"draftContextToken"
|
|
174
|
+
].forEach((e) => {
|
|
175
|
+
let t = i?.querySelector(`input[name="${e}"]`);
|
|
176
|
+
t instanceof HTMLInputElement && t.value.trim() && a.append(e, t.value.trim());
|
|
177
|
+
}), n.forEach((e) => {
|
|
178
|
+
e.assetId && (a.append("assetIds[]", String(e.assetId)), e.viewToken && a.append(`uploadTokens[${e.assetId}]`, e.viewToken));
|
|
179
|
+
}), r(a, i), a;
|
|
170
180
|
}
|
|
171
|
-
async function
|
|
181
|
+
async function q(e, t, n) {
|
|
172
182
|
if (!n.map((e) => e.assetId).filter((e) => e !== null).length) return n;
|
|
173
|
-
let
|
|
183
|
+
let r = t.getAttribute(m)?.trim() || "/actions/formie/file-upload/hydrate", a = P((await i(r, {
|
|
174
184
|
profile: e.closest("form")?.dataset.formieRequestProfile,
|
|
175
185
|
method: "POST",
|
|
176
|
-
body:
|
|
186
|
+
body: K(e, t, n)
|
|
177
187
|
})).assets);
|
|
178
188
|
if (!a.length) return n;
|
|
179
189
|
let o = new Map(a.map((e) => [e.assetId, e]));
|
|
@@ -188,10 +198,10 @@ async function K(e, t, n) {
|
|
|
188
198
|
};
|
|
189
199
|
});
|
|
190
200
|
}
|
|
191
|
-
function
|
|
201
|
+
function J(e, t) {
|
|
192
202
|
let n = e.detail;
|
|
193
|
-
if (!
|
|
194
|
-
let r =
|
|
203
|
+
if (!C(n)) return [];
|
|
204
|
+
let r = T(n.fieldHandle), i = T(n.inputKey), a = T(n.inputName ?? n.name), o = C(n.data) ? n.data : null, s = T(o?.fieldHandle), c = T(o?.inputKey), l = T(o?.inputName ?? o?.name), u = [], d = !1, f = !1, p = !1;
|
|
195
205
|
if (i !== "" && i === t.inputKey && (d = !0, u.push(n.uploadedAssets, n.assets, n.assetIds, n.data)), a !== "" && a === t.inputName && (f = !0, u.push(n.uploadedAssets, n.assets, n.assetIds, n.data)), r === t.fieldHandle && (p = !0, u.push(n.uploadedAssets, n.assets, n.assetIds, n.data)), o) {
|
|
196
206
|
let e = [
|
|
197
207
|
o.uploadedAssets,
|
|
@@ -206,73 +216,69 @@ function q(e, t) {
|
|
|
206
216
|
n.assetIds,
|
|
207
217
|
n.data
|
|
208
218
|
].forEach((e) => {
|
|
209
|
-
|
|
219
|
+
C(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]));
|
|
210
220
|
});
|
|
211
221
|
for (let e of u) {
|
|
212
|
-
let n =
|
|
213
|
-
if (n.length && (d || f || p ||
|
|
222
|
+
let n = P(e);
|
|
223
|
+
if (n.length && (d || f || p || z(n, t.pendingFiles))) return n;
|
|
214
224
|
}
|
|
215
225
|
return [];
|
|
216
226
|
}
|
|
217
|
-
function
|
|
218
|
-
let t = e.closest(
|
|
227
|
+
function Y(e) {
|
|
228
|
+
let t = e.closest(S);
|
|
219
229
|
return t instanceof HTMLElement ? t : null;
|
|
220
230
|
}
|
|
221
|
-
function
|
|
222
|
-
return Array.from(e.querySelectorAll(
|
|
231
|
+
function X(e) {
|
|
232
|
+
return Array.from(e.querySelectorAll(u)).filter((e) => e instanceof HTMLInputElement);
|
|
223
233
|
}
|
|
224
|
-
function
|
|
234
|
+
function Z(e, t, n) {
|
|
225
235
|
let r = {
|
|
226
236
|
field: e,
|
|
227
237
|
input: t,
|
|
228
|
-
summaryRoot:
|
|
229
|
-
uploadedAssets: I(
|
|
238
|
+
summaryRoot: H(e, t),
|
|
239
|
+
uploadedAssets: L(I(e, t), F(e.querySelector("[data-formie-file-summary]"))),
|
|
230
240
|
pendingFiles: [],
|
|
231
241
|
hydrationToken: 0
|
|
232
242
|
}, i = () => {
|
|
233
|
-
r.pendingFiles = Array.from(t.files || []).map((e) => e.name),
|
|
243
|
+
r.pendingFiles = Array.from(t.files || []).map((e) => e.name), U(r);
|
|
234
244
|
}, a = async (n) => {
|
|
235
245
|
r.hydrationToken += 1;
|
|
236
246
|
let i = r.hydrationToken;
|
|
237
|
-
r.pendingFiles = [], r.uploadedAssets = n,
|
|
247
|
+
r.pendingFiles = [], r.uploadedAssets = n, W(e, t, n), U(r);
|
|
238
248
|
try {
|
|
239
|
-
let a = await
|
|
249
|
+
let a = await q(e, t, n);
|
|
240
250
|
if (i !== r.hydrationToken) return;
|
|
241
|
-
r.uploadedAssets = a,
|
|
251
|
+
r.uploadedAssets = a, U(r), s(e, b, "uploaded-assets-sync", {
|
|
242
252
|
fileUpload: e,
|
|
243
253
|
assets: a
|
|
244
254
|
});
|
|
245
255
|
} catch (e) {
|
|
246
256
|
console.error("[formie] Failed to hydrate uploaded file details.", e);
|
|
247
257
|
}
|
|
248
|
-
},
|
|
249
|
-
r.hydrationToken += 1, r.pendingFiles = [], r.uploadedAssets = [],
|
|
258
|
+
}, o = () => {
|
|
259
|
+
r.hydrationToken += 1, r.pendingFiles = [], r.uploadedAssets = [], W(e, t, []), U(r);
|
|
250
260
|
}, c = (n) => {
|
|
251
|
-
let i =
|
|
261
|
+
let i = E(e);
|
|
252
262
|
if (!i) return;
|
|
253
|
-
let o =
|
|
263
|
+
let o = J(n, {
|
|
254
264
|
fieldHandle: i,
|
|
255
|
-
inputKey:
|
|
265
|
+
inputKey: k(t),
|
|
256
266
|
inputName: t.name,
|
|
257
267
|
pendingFiles: r.pendingFiles
|
|
258
268
|
});
|
|
259
269
|
o.length && a(o);
|
|
260
270
|
}, l = () => {
|
|
261
|
-
|
|
271
|
+
o();
|
|
262
272
|
};
|
|
263
|
-
return t.addEventListener("change", i), n?.addEventListener(
|
|
264
|
-
let n =
|
|
265
|
-
|
|
266
|
-
a(r.uploadedAssets);
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
H(r);
|
|
273
|
+
return t.addEventListener("change", i), n?.addEventListener(d, c), n?.addEventListener(f, l), (() => {
|
|
274
|
+
let n = I(e, t), i = F(r.summaryRoot);
|
|
275
|
+
r.uploadedAssets = L(n, i), r.uploadedAssets.some((e) => e.assetId && !e.filename) ? a(r.uploadedAssets) : U(r);
|
|
270
276
|
})(), () => {
|
|
271
|
-
t.removeEventListener("change", i), n?.removeEventListener(
|
|
277
|
+
t.removeEventListener("change", i), n?.removeEventListener(d, c), n?.removeEventListener(f, l);
|
|
272
278
|
};
|
|
273
279
|
}
|
|
274
|
-
var
|
|
275
|
-
moduleId: `formie:${
|
|
280
|
+
var Q = {
|
|
281
|
+
moduleId: `formie:${b}`,
|
|
276
282
|
version: 2,
|
|
277
283
|
surfaces: [
|
|
278
284
|
"server-rendered",
|
|
@@ -280,28 +286,28 @@ var Z = {
|
|
|
280
286
|
"cp-edit"
|
|
281
287
|
],
|
|
282
288
|
kind: "field",
|
|
283
|
-
match: (e) => !!e.target.querySelector(
|
|
289
|
+
match: (e) => !!e.target.querySelector(u),
|
|
284
290
|
setup: async (e) => {
|
|
285
291
|
let t = e.form, n = /* @__PURE__ */ new WeakSet(), r = [], i = (e) => {
|
|
286
|
-
|
|
292
|
+
X(e).forEach((e) => {
|
|
287
293
|
if (n.has(e)) return;
|
|
288
|
-
let i =
|
|
289
|
-
i && (n.add(e), r.push(
|
|
294
|
+
let i = Y(e);
|
|
295
|
+
i && (n.add(e), r.push(Z(i, e, t)));
|
|
290
296
|
});
|
|
291
297
|
};
|
|
292
|
-
|
|
298
|
+
B(t), i(e.target);
|
|
293
299
|
let a = (e) => {
|
|
294
300
|
let t = e.detail;
|
|
295
|
-
if (!
|
|
301
|
+
if (!C(t)) return;
|
|
296
302
|
let n = t.row;
|
|
297
303
|
n instanceof HTMLElement && i(n);
|
|
298
304
|
};
|
|
299
|
-
return t?.addEventListener(
|
|
300
|
-
t?.removeEventListener(
|
|
305
|
+
return t?.addEventListener(x, a), await e.emit("formie:module:file-upload:init", { count: r.length }), { destroy: () => {
|
|
306
|
+
t?.removeEventListener(x, a), r.forEach((e) => {
|
|
301
307
|
e();
|
|
302
|
-
}),
|
|
308
|
+
}), V(t), e.emit("formie:module:file-upload:destroy", {});
|
|
303
309
|
} };
|
|
304
310
|
}
|
|
305
311
|
};
|
|
306
312
|
//#endregion
|
|
307
|
-
export {
|
|
313
|
+
export { Q as fileUploadModule };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { t as e } from "./api-
|
|
1
|
+
import { t as e } from "./api-BPtH5RBA.js";
|
|
2
2
|
//#region src/js/modules/captchas/friendly-captcha-v1.ts
|
|
3
3
|
var t = e({
|
|
4
4
|
moduleId: "formie:friendly-captcha-v1",
|
|
5
5
|
defaultPlaceholderSelector: "[data-friendly-captcha-placeholder]",
|
|
6
6
|
defaultTokenFieldNames: ["frc-captcha-solution"],
|
|
7
|
-
load: async () => import("./friendly-challenge-
|
|
7
|
+
load: async () => import("./friendly-challenge-BgPBEMXx.js"),
|
|
8
8
|
mount: ({ api: e, container: t, provider: n, services: r }) => {
|
|
9
9
|
let i = n.theme || "auto", a = window.matchMedia?.("(prefers-color-scheme: dark)").matches ?? !1;
|
|
10
10
|
return (i === "dark" || i === "auto" && a) && t.classList.add("dark"), new e.WidgetInstance(t, {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { t as e } from "./api-
|
|
1
|
+
import { t as e } from "./api-BPtH5RBA.js";
|
|
2
2
|
//#region src/js/modules/captchas/friendly-captcha-v2.ts
|
|
3
3
|
var t = e({
|
|
4
4
|
moduleId: "formie:friendly-captcha-v2",
|
|
5
5
|
defaultPlaceholderSelector: "[data-friendly-captcha-placeholder]",
|
|
6
6
|
defaultTokenFieldNames: ["frc-captcha-response"],
|
|
7
|
-
load: async () => import("./sdk-
|
|
7
|
+
load: async () => import("./sdk-_cmrRYgp.js"),
|
|
8
8
|
mount: ({ api: e, container: t, provider: n, services: r }) => {
|
|
9
9
|
let i = new e.FriendlyCaptchaSDK().createWidget({
|
|
10
10
|
element: t,
|
|
@@ -736,11 +736,8 @@ var te = class {
|
|
|
736
736
|
}, t), this.e = e, this.e.friendlyChallengeWidget = this, this.loadLanguage(), e.innerText = this.lang.text_init, this.opts.skipStyleInjection || h(this.opts.styleNonce), this.init(this.opts.startMode === "auto" || this.e.dataset.start === "auto");
|
|
737
737
|
}
|
|
738
738
|
init(e) {
|
|
739
|
-
if (this.hasBeenDestroyed)
|
|
740
|
-
|
|
741
|
-
return;
|
|
742
|
-
}
|
|
743
|
-
if (this.initWorkerGroup(), e) this.start();
|
|
739
|
+
if (this.hasBeenDestroyed) console.error("FriendlyCaptcha widget has been destroyed using destroy(), it can not be used anymore.");
|
|
740
|
+
else if (this.initWorkerGroup(), e) this.start();
|
|
744
741
|
else if (this.e.dataset.start !== "none" && (this.opts.startMode === "focus" || this.e.dataset.start === "focus")) {
|
|
745
742
|
let e = _(this.e);
|
|
746
743
|
e ? v(e, () => this.start()) : console.log("FriendlyCaptcha div seems not to be contained in a form, autostart will not work");
|
|
@@ -794,32 +791,25 @@ var te = class {
|
|
|
794
791
|
return;
|
|
795
792
|
}
|
|
796
793
|
let e = this.opts.sitekey || this.e.dataset.sitekey;
|
|
797
|
-
if (!e)
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
description: e.toString(),
|
|
816
|
-
error: e
|
|
817
|
-
});
|
|
818
|
-
let t = this.e.dataset["callback-error"];
|
|
819
|
-
t && window[t](this);
|
|
820
|
-
return;
|
|
794
|
+
if (!e) console.error("FriendlyCaptcha: sitekey not set on frc-captcha element"), this.e.innerHTML = m(this.opts.solutionFieldName, this.lang, "Website problem: sitekey not set", !1);
|
|
795
|
+
else if (x()) this.e.innerHTML = m(this.opts.solutionFieldName, this.lang, "Browser check failed, try a different browser", !1, !0);
|
|
796
|
+
else if (this.needsReInit) this.needsReInit = !1, this.init(!0);
|
|
797
|
+
else {
|
|
798
|
+
this.hasBeenStarted = !0;
|
|
799
|
+
try {
|
|
800
|
+
this.e.innerHTML = u(this.opts.solutionFieldName, this.lang), this.puzzle = O(await k(this.opts.puzzleEndpoint, e, this.lang)), this.expiryTimeout && clearTimeout(this.expiryTimeout), this.expiryTimeout = setTimeout(() => this.expire(), this.puzzle.expiry - 3e4);
|
|
801
|
+
} catch (e) {
|
|
802
|
+
console.error("[FRC]", e), this.hasBeenStarted = !1, this.expiryTimeout && clearTimeout(this.expiryTimeout), this.e.innerHTML = m(this.opts.solutionFieldName, this.lang, e.message), this.makeButtonStart(), this.opts.errorCallback({
|
|
803
|
+
code: "error_getting_puzzle",
|
|
804
|
+
description: e.toString(),
|
|
805
|
+
error: e
|
|
806
|
+
});
|
|
807
|
+
let t = this.e.dataset["callback-error"];
|
|
808
|
+
t && window[t](this);
|
|
809
|
+
return;
|
|
810
|
+
}
|
|
811
|
+
await this.workerGroup.start(this.puzzle);
|
|
821
812
|
}
|
|
822
|
-
await this.workerGroup.start(this.puzzle);
|
|
823
813
|
}
|
|
824
814
|
handleDone(e) {
|
|
825
815
|
this.valid = !0;
|
|
@@ -830,11 +820,7 @@ var te = class {
|
|
|
830
820
|
this.workerGroup.terminateWorkers(), this.needsReInit = !1, this.hasBeenStarted = !1, this.expiryTimeout && clearTimeout(this.expiryTimeout), this.e && (this.e.remove(), delete this.e), this.hasBeenDestroyed = !0;
|
|
831
821
|
}
|
|
832
822
|
reset() {
|
|
833
|
-
|
|
834
|
-
console.error("FriendlyCaptcha widget has been destroyed, it can not be used anymore");
|
|
835
|
-
return;
|
|
836
|
-
}
|
|
837
|
-
this.workerGroup.terminateWorkers(), this.needsReInit = !1, this.hasBeenStarted = !1, this.expiryTimeout && clearTimeout(this.expiryTimeout), this.init(this.opts.startMode === "auto" || this.e.dataset.start === "auto");
|
|
823
|
+
this.hasBeenDestroyed ? console.error("FriendlyCaptcha widget has been destroyed, it can not be used anymore") : (this.workerGroup.terminateWorkers(), this.needsReInit = !1, this.hasBeenStarted = !1, this.expiryTimeout && clearTimeout(this.expiryTimeout), this.init(this.opts.startMode === "auto" || this.e.dataset.start === "auto"));
|
|
838
824
|
}
|
|
839
825
|
};
|
|
840
826
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { s as e } from "./event-names-BCI2FLD8.js";
|
|
2
|
-
import { t } from "./api-
|
|
2
|
+
import { t } from "./api-BR2Gqy37.js";
|
|
3
3
|
//#region src/js/modules/payments/go-cardless.ts
|
|
4
4
|
var n = e("go-cardless", "redirect"), r = t({
|
|
5
5
|
moduleId: "formie:go-cardless",
|
|
@@ -8,11 +8,7 @@ var n = e("go-cardless", "redirect"), r = t({
|
|
|
8
8
|
setup: async ({ services: e, root: t }) => {
|
|
9
9
|
let r = (t) => {
|
|
10
10
|
let n = t.detail?.data;
|
|
11
|
-
|
|
12
|
-
e.addError("Missing GoCardless redirect URL.");
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
window.location.href = n.redirectUrl;
|
|
11
|
+
n?.redirectUrl ? window.location.href = n.redirectUrl : e.addError("Missing GoCardless redirect URL.");
|
|
16
12
|
};
|
|
17
13
|
return t.addEventListener(n, r), { destroy: () => {
|
|
18
14
|
t.removeEventListener(n, r);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as e } from "./request-profile-DhwkeCpS.js";
|
|
2
|
-
import { t } from "./dist-
|
|
2
|
+
import { t } from "./dist-CJReDlDK.js";
|
|
3
3
|
import { n } from "./event-names-BCI2FLD8.js";
|
|
4
4
|
import { t as r } from "./csrf-DxHg_ZYt.js";
|
|
5
|
-
import { t as i } from "./api-
|
|
5
|
+
import { t as i } from "./api-CmuOZ0i3.js";
|
|
6
6
|
import { n as a, t as o } from "./scripts-DrccjrFv.js";
|
|
7
7
|
//#region src/js/modules/address/google-address.ts
|
|
8
8
|
var s = "FORMIE_GOOGLE_ADDRESS_SCRIPT", c = "formieGoogleMapsReady", l = null;
|