(() => {
"use strict";
const e = e => Math.abs(parseInt(e, 10)),
t = (e, t) => {
const a = new Map([
["init", "init"],
["validation_failed", "invalid"],
["acceptance_missing", "unaccepted"],
["spam", "spam"],
["aborted", "aborted"],
["mail_sent", "sent"],
["mail_failed", "failed"],
["submitting", "submitting"],
["resetting", "resetting"],
["validating", "validating"],
["payment_required", "payment-required"]
]);
a.has(t) && (t = a.get(t)), Array.from(a.values()).includes(t) || (t = `custom-${t=(t=t.replace(/[^0-9a-z]+/i," ").trim()).replace(/\s+/,"-")}`);
const r = e.getAttribute("data-status");
return e.wpcf7.status = t, e.setAttribute("data-status", t), e.classList.add(t), r && r !== t && e.classList.remove(r), t
},
a = (e, t, a) => {
const r = new CustomEvent(`wpcf7${t}`, {
bubbles: !0,
detail: a
});
"string" == typeof e && (e = document.querySelector(e)), e.dispatchEvent(r)
},
r = e => {
const {
root: t,
namespace: a = "contact-form-7/v1"
} = wpcf7.api;
return n.reduceRight(((e, t) => a => t(a, e)), (e => {
let r, n, {
url: o,
path: c,
endpoint: i,
headers: s,
body: l,
data: d,
...u
} = e;
"string" == typeof i && (r = a.replace(/^\/|\/$/g, ""), n = i.replace(/^\//, ""), c = n ? r + "/" + n : r), "string" == typeof c && (-1 !== t.indexOf("?") && (c = c.replace("?", "&")), c = c.replace(/^\//, ""), o = t + c), s = {
Accept: "application/json, */*;q=0.1",
...s
}, delete s["X-WP-Nonce"], d && (l = JSON.stringify(d), s["Content-Type"] = "application/json");
const p = {
code: "fetch_error",
message: "You are probably offline."
},
f = {
code: "invalid_json",
message: "The response is not a valid JSON response."
};
return window.fetch(o || c || window.location.href, { ...u,
headers: s,
body: l
}).then((e => Promise.resolve(e).then((e => {
if (e.status >= 200 && e.status < 300) return e;
throw e
})).then((e => {
if (204 === e.status) return null;
if (e && e.json) return e.json().catch((() => {
throw f
}));
throw f
}))), (() => {
throw p
}))
}))(e)
},
n = [];
function o(e) {
var a, r, n, o;
let s = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
const l = e,
d = null === (a = e.wpcf7) || void 0 === a ? void 0 : a.schema;
if (void 0 === d) return;
if (null === (r = s.target) || void 0 === r || !r.closest(".wpcf7-form-control-wrap[data-name]")) return;
if (null !== (n = s.target) && void 0 !== n && n.closest(".novalidate")) return;
const u = new FormData,
p = [];
for (const e of l.querySelectorAll(".wpcf7-form-control-wrap"))
if (!e.closest(".novalidate") && (e.querySelectorAll(":where( input, textarea, select ):enabled").forEach((e => {
if (e.name) switch (e.type) {
case "button":
case "image":
case "reset":
case "submit":
break;
case "checkbox":
case "radio":
e.checked && u.append(e.name, e.value);
break;
case "select-multiple":
for (const t of e.selectedOptions) u.append(e.name, t.value);
break;
case "file":
for (const t of e.files) u.append(e.name, t);
break;
default:
u.append(e.name, e.value)
}
})), e.dataset.name && (p.push(e.dataset.name), e.setAttribute("data-under-validation", "1"), e.dataset.name === s.target.name.replace(/\[.*\]$/, "")))) break;
d.rules = (null !== (o = d.rules) && void 0 !== o ? o : []).filter((e => {
let {
field: t
} = e;
return p.includes(t)
}));
const f = e.getAttribute("data-status");
Promise.resolve(t(e, "validating")).then((t => {
if (void 0 !== swv) {
const t = swv.validate(d, u, s);
for (const [a, {
error: r
}] of t) i(e, a), void 0 !== r && c(e, a, r)
}
})).finally((() => {
t(e, f), e.querySelectorAll(".wpcf7-form-control-wrap[data-under-validation]").forEach((e => {
e.removeAttribute("data-under-validation")
}))
}))
}
r.use = e => {
n.unshift(e)
};
const c = (e, t, a) => {
var r;
const n = `${null===(r=e.wpcf7)||void 0===r?void 0:r.unitTag}-ve-${t}`.replaceAll(/[^0-9a-z_-]+/gi, ""),
o = e.querySelector(`.wpcf7-form-control-wrap[data-name="${t}"] .wpcf7-form-control`);
(() => {
const t = document.createElement("li");
t.setAttribute("id", n), o && o.id ? t.insertAdjacentHTML("beforeend", `${a}`) : t.insertAdjacentText("beforeend", a), e.wpcf7.parent.querySelector(".screen-reader-response ul").appendChild(t)
})(), e.querySelectorAll(`.wpcf7-form-control-wrap[data-name="${t}"]`).forEach((t => {
if ("validating" === e.getAttribute("data-status") && !t.dataset.underValidation) return;
const r = document.createElement("span");
r.classList.add("wpcf7-not-valid-tip"), r.setAttribute("aria-hidden", "true"), r.insertAdjacentText("beforeend", a), t.appendChild(r), t.querySelectorAll("[aria-invalid]").forEach((e => {
e.setAttribute("aria-invalid", "true")
})), t.querySelectorAll(".wpcf7-form-control").forEach((e => {
e.classList.add("wpcf7-not-valid"), e.setAttribute("aria-describedby", n), "function" == typeof e.setCustomValidity && e.setCustomValidity(a), e.closest(".use-floating-validation-tip") && (e.addEventListener("focus", (e => {
r.setAttribute("style", "display: none")
})), r.addEventListener("click", (e => {
r.setAttribute("style", "display: none")
})))
}))
}))
},
i = (e, t) => {
var a, r;
const n = `${null===(a=e.wpcf7)||void 0===a?void 0:a.unitTag}-ve-${t}`.replaceAll(/[^0-9a-z_-]+/gi, "");
null === (r = e.wpcf7.parent.querySelector(`.screen-reader-response ul li#${n}`)) || void 0 === r || r.remove(), e.querySelectorAll(`.wpcf7-form-control-wrap[data-name="${t}"]`).forEach((e => {
var t;
null === (t = e.querySelector(".wpcf7-not-valid-tip")) || void 0 === t || t.remove(), e.querySelectorAll("[aria-invalid]").forEach((e => {
e.setAttribute("aria-invalid", "false")
})), e.querySelectorAll(".wpcf7-form-control").forEach((e => {
e.removeAttribute("aria-describedby"), e.classList.remove("wpcf7-not-valid"), "function" == typeof e.setCustomValidity && e.setCustomValidity("")
}))
}))
};
function s(e) {
let n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
if (wpcf7.blocked) return l(e), void t(e, "submitting");
const o = new FormData(e);
n.submitter && n.submitter.name && o.append(n.submitter.name, n.submitter.value);
const i = {
contactFormId: e.wpcf7.id,
pluginVersion: e.wpcf7.pluginVersion,
contactFormLocale: e.wpcf7.locale,
unitTag: e.wpcf7.unitTag,
containerPostId: e.wpcf7.containerPost,
status: e.wpcf7.status,
inputs: Array.from(o, (e => {
const t = e[0],
a = e[1];
return !t.match(/^_/) && {
name: t,
value: a
}
})).filter((e => !1 !== e)),
formData: o
};
r({
endpoint: `contact-forms/${e.wpcf7.id}/feedback`,
method: "POST",
body: o,
wpcf7: {
endpoint: "feedback",
form: e,
detail: i
}
}).then((r => {
const n = t(e, r.status);
return i.status = r.status, i.apiResponse = r, ["invalid", "unaccepted", "spam", "aborted"].includes(n) ? a(e, n, i) : ["sent", "failed"].includes(n) && a(e, `mail${n}`, i), a(e, "submit", i), r
})).then((t => {
t.posted_data_hash && (e.querySelector('input[name="_wpcf7_posted_data_hash"]').value = t.posted_data_hash), "mail_sent" === t.status && (e.reset(), e.wpcf7.resetOnMailSent = !0), t.invalid_fields && t.invalid_fields.forEach((t => {
c(e, t.field, t.message)
})), e.wpcf7.parent.querySelector('.screen-reader-response [role="status"]').insertAdjacentText("beforeend", t.message), e.querySelectorAll(".wpcf7-response-output").forEach((e => {
e.innerText = t.message
}))
})).catch((e => console.error(e)))
}
r.use(((e, r) => {
if (e.wpcf7 && "feedback" === e.wpcf7.endpoint) {
const {
form: r,
detail: n
} = e.wpcf7;
l(r), a(r, "beforesubmit", n), t(r, "submitting")
}
return r(e)
}));
const l = e => {
e.querySelectorAll(".wpcf7-form-control-wrap").forEach((t => {
t.dataset.name && i(e, t.dataset.name)
})), e.wpcf7.parent.querySelector('.screen-reader-response [role="status"]').innerText = "", e.querySelectorAll(".wpcf7-response-output").forEach((e => {
e.innerText = ""
}))
};
function d(e) {
const n = new FormData(e),
o = {
contactFormId: e.wpcf7.id,
pluginVersion: e.wpcf7.pluginVersion,
contactFormLocale: e.wpcf7.locale,
unitTag: e.wpcf7.unitTag,
containerPostId: e.wpcf7.containerPost,
status: e.wpcf7.status,
inputs: Array.from(n, (e => {
const t = e[0],
a = e[1];
return !t.match(/^_/) && {
name: t,
value: a
}
})).filter((e => !1 !== e)),
formData: n
};
r({
endpoint: `contact-forms/${e.wpcf7.id}/refill`,
method: "GET",
wpcf7: {
endpoint: "refill",
form: e,
detail: o
}
}).then((r => {
e.wpcf7.resetOnMailSent ? (delete e.wpcf7.resetOnMailSent, t(e, "mail_sent")) : t(e, "init"), o.apiResponse = r, a(e, "reset", o)
})).catch((e => console.error(e)))
}
r.use(((e, a) => {
if (e.wpcf7 && "refill" === e.wpcf7.endpoint) {
const {
form: a,
detail: r
} = e.wpcf7;
l(a), t(a, "resetting")
}
return a(e)
}));
const u = (e, t) => {
for (const a in t) {
const r = t[a];
e.querySelectorAll(`input[name="${a}"]`).forEach((e => {
e.value = ""
})), e.querySelectorAll(`img.wpcf7-captcha-${a.replaceAll(":","")}`).forEach((e => {
e.setAttribute("src", r)
}));
const n = /([0-9]+)\.(png|gif|jpeg)$/.exec(r);
n && e.querySelectorAll(`input[name="_wpcf7_captcha_challenge_${a}"]`).forEach((e => {
e.value = n[1]
}))
}
},
p = (e, t) => {
for (const a in t) {
const r = t[a][0],
n = t[a][1];
e.querySelectorAll(`.wpcf7-form-control-wrap[data-name="${a}"]`).forEach((e => {
e.querySelector(`input[name="${a}"]`).value = "", e.querySelector(".wpcf7-quiz-label").textContent = r, e.querySelector(`input[name="_wpcf7_quiz_answer_${a}"]`).value = n
}))
}
};
function f(t) {
const a = new FormData(t);
t.wpcf7 = {
id: e(a.get("_wpcf7")),
status: t.getAttribute("data-status"),
pluginVersion: a.get("_wpcf7_version"),
locale: a.get("_wpcf7_locale"),
unitTag: a.get("_wpcf7_unit_tag"),
containerPost: e(a.get("_wpcf7_container_post")),
parent: t.closest(".wpcf7"),
schema: {}
}, t.querySelectorAll(".has-spinner").forEach((e => {
e.insertAdjacentHTML("afterend", '')
})), (e => {
e.querySelectorAll(".wpcf7-exclusive-checkbox").forEach((t => {
t.addEventListener("change", (t => {
const a = t.target.getAttribute("name");
e.querySelectorAll(`input[type="checkbox"][name="${a}"]`).forEach((e => {
e !== t.target && (e.checked = !1)
}))
}))
}))
})(t), (e => {
e.querySelectorAll(".has-free-text").forEach((t => {
const a = t.querySelector("input.wpcf7-free-text"),
r = t.querySelector('input[type="checkbox"], input[type="radio"]');
a.disabled = !r.checked, e.addEventListener("change", (e => {
a.disabled = !r.checked, e.target === r && r.checked && a.focus()
}))
}))
})(t), (e => {
e.querySelectorAll(".wpcf7-validates-as-url").forEach((e => {
e.addEventListener("change", (t => {
let a = e.value.trim();
a && !a.match(/^[a-z][a-z0-9.+-]*:/i) && -1 !== a.indexOf(".") && (a = a.replace(/^\/+/, ""), a = "http://" + a), e.value = a
}))
}))
})(t), (e => {
if (!e.querySelector(".wpcf7-acceptance") || e.classList.contains("wpcf7-acceptance-as-validation")) return;
const t = () => {
let t = !0;
e.querySelectorAll(".wpcf7-acceptance").forEach((e => {
if (!t || e.classList.contains("optional")) return;
const a = e.querySelector('input[type="checkbox"]');
(e.classList.contains("invert") && a.checked || !e.classList.contains("invert") && !a.checked) && (t = !1)
})), e.querySelectorAll(".wpcf7-submit").forEach((e => {
e.disabled = !t
}))
};
t(), e.addEventListener("change", (e => {
t()
})), e.addEventListener("wpcf7reset", (e => {
t()
}))
})(t), (t => {
const a = (t, a) => {
const r = e(t.getAttribute("data-starting-value")),
n = e(t.getAttribute("data-maximum-value")),
o = e(t.getAttribute("data-minimum-value")),
c = t.classList.contains("down") ? r - a.value.length : a.value.length;
t.setAttribute("data-current-value", c), t.innerText = c, n && n < a.value.length ? t.classList.add("too-long") : t.classList.remove("too-long"), o && a.value.length < o ? t.classList.add("too-short") : t.classList.remove("too-short")
},
r = e => {
e = {
init: !1,
...e
}, t.querySelectorAll(".wpcf7-character-count").forEach((r => {
const n = r.getAttribute("data-target-name"),
o = t.querySelector(`[name="${n}"]`);
o && (o.value = o.defaultValue, a(r, o), e.init && o.addEventListener("keyup", (e => {
a(r, o)
})))
}))
};
r({
init: !0
}), t.addEventListener("wpcf7reset", (e => {
r()
}))
})(t), window.addEventListener("load", (e => {
wpcf7.cached && t.reset()
})), t.addEventListener("reset", (e => {
wpcf7.reset(t)
})), t.addEventListener("submit", (e => {
wpcf7.submit(t, {
submitter: e.submitter
}), e.preventDefault()
})), t.addEventListener("wpcf7submit", (e => {
e.detail.apiResponse.captcha && u(t, e.detail.apiResponse.captcha), e.detail.apiResponse.quiz && p(t, e.detail.apiResponse.quiz)
})), t.addEventListener("wpcf7reset", (e => {
e.detail.apiResponse.captcha && u(t, e.detail.apiResponse.captcha), e.detail.apiResponse.quiz && p(t, e.detail.apiResponse.quiz)
})), r({
endpoint: `contact-forms/${t.wpcf7.id}/feedback/schema`,
method: "GET"
}).then((e => {
t.wpcf7.schema = e
})), t.addEventListener("change", (e => {
e.target.closest(".wpcf7-form-control") && wpcf7.validate(t, {
target: e.target
})
}))
}
document.addEventListener("DOMContentLoaded", (e => {
var t;
if ("undefined" == typeof wpcf7) return void console.error("wpcf7 is not defined.");
if (void 0 === wpcf7.api) return void console.error("wpcf7.api is not defined.");
if ("function" != typeof window.fetch) return void console.error("Your browser does not support window.fetch().");
if ("function" != typeof window.FormData) return void console.error("Your browser does not support window.FormData().");
const a = document.querySelectorAll(".wpcf7 > form");
"function" == typeof a.forEach ? (wpcf7 = {
init: f,
submit: s,
reset: d,
validate: o,
...null !== (t = wpcf7) && void 0 !== t ? t : {}
}, a.forEach((e => wpcf7.init(e)))) : console.error("Your browser does not support NodeList.forEach().")
}))
})();