@verbb/formie-browser 1.0.10 → 1.0.12
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 +17 -0
- package/dist/chunks/{api-BYe9YPko.js → api-DqpfkZWL.js} +15 -2
- package/dist/chunks/{bpoint-C0VOftX9.js → bpoint-Dlq34XH1.js} +1 -1
- package/dist/chunks/{calculations-HAZ8wUrT.js → calculations-DERi2xaC.js} +8 -8
- package/dist/chunks/{conditions-BiA_uANV.js → conditions-65kBcFWW.js} +1 -1
- package/dist/chunks/{dist-BaHXfvBO.js → dist-BdUy8m_p.js} +2 -2
- package/dist/chunks/{eway-CS6Y1Yvo.js → eway-D9_m8ooj.js} +1 -1
- package/dist/chunks/{go-cardless-BTPD668l.js → go-cardless-DAT3ZaQf.js} +1 -1
- package/dist/chunks/{mollie-CXgBwvo6.js → mollie-Bibhl67p.js} +1 -1
- package/dist/chunks/{moneris-B6oLu7nj.js → moneris-H2wSqk9h.js} +1 -1
- package/dist/chunks/opayo-CR0DtsLa.js +179 -0
- package/dist/chunks/{paddle-GRlsm5mm.js → paddle-DkvIxQdG.js} +1 -1
- package/dist/chunks/{password-validation-D5AirwUM.js → password-validation-T0vDQPCr.js} +1 -1
- package/dist/chunks/{paypal-CdcZnf6r.js → paypal-CQpAF7Ua.js} +32 -31
- package/dist/chunks/{payway-CfmYOS__.js → payway-CwDkC7YZ.js} +1 -1
- package/dist/chunks/{square-BY--5M-X.js → square-DwdcOI1G.js} +1 -1
- package/dist/chunks/{stripe-uusYjWty.js → stripe-DaoG2FT1.js} +1 -1
- package/dist/chunks/{text-limit-nSATKyhp.js → text-limit-Bn18WrPU.js} +1 -1
- package/dist/css/theme/fields/_check-radio.css +3 -1
- package/dist/css/theme/integrations/_opayo.css +9 -0
- package/dist/index.js +16 -16
- package/dist/js/modules/payments/factories.d.ts +5 -1
- package/dist/js/modules/payments/factories.d.ts.map +1 -1
- package/dist/js/modules/payments/opayo.d.ts +17 -2
- package/dist/js/modules/payments/opayo.d.ts.map +1 -1
- package/dist/js/modules/payments/paypal.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/css/theme/fields/_check-radio.css +3 -1
- package/src/css/theme/integrations/_opayo.css +9 -0
- package/src/js/modules/payments/factories.ts +27 -2
- package/src/js/modules/payments/opayo.ts +256 -69
- package/src/js/modules/payments/paypal.ts +23 -3
- package/dist/chunks/opayo-DPUA5CKr.js +0 -113
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 1.0.12 - 2026-07-02
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Add Opayo **Drop-in Checkout** support to the `opayo` payment module via `sagepayCheckout`, including iframe mount on field init, `tokenise()` on authorize, and merchant session key refresh on tokenisation failure. **Own Form** mode continues to use `sagepayOwnForm`.
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Hide PayPal buttons after successful authorization so users are not prompted to pay again before submitting the form. Buttons are restored automatically when authorization is cleared after a failed submit.
|
|
12
|
+
|
|
13
|
+
## 1.0.11 - 2026-06-26
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- Add Radio field **Other** choice support with free-text input, show/hide behaviour, and client-side validation when the Other option is selected. ([#1875](https://github.com/verbb/formie/issues/1875))
|
|
17
|
+
- Add the `password-validation` field module for Password fields, enforcing minimum length and uppercase, lowercase, and special character requirements on the front-end. ([#1880](https://github.com/verbb/formie/issues/1880))
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- Insert CSRF hidden inputs during token refresh when cached or statically rendered forms omit them via the `csrfInput: false` render option. ([#2121](https://github.com/verbb/formie/discussions/2121))
|
|
21
|
+
|
|
5
22
|
## 1.0.10 - 2026-06-26
|
|
6
23
|
|
|
7
24
|
### Changed
|
|
@@ -810,13 +810,26 @@ function Ie(e) {
|
|
|
810
810
|
}), t.abort(o.transport.errorMessage));
|
|
811
811
|
},
|
|
812
812
|
onAfterStage: async (t, r) => {
|
|
813
|
-
t.stage !== "dispatch" || !e.onAfterSubmit
|
|
813
|
+
if (!(t.stage !== "dispatch" || !e.onAfterSubmit) && !(!(await e.onAfterSubmit({
|
|
814
814
|
field: n.target,
|
|
815
815
|
services: s,
|
|
816
816
|
options: o,
|
|
817
817
|
provider: o.provider,
|
|
818
818
|
result: r
|
|
819
|
-
})
|
|
819
|
+
}))?.remount || !e.mount)) {
|
|
820
|
+
if (d && e.unmount) {
|
|
821
|
+
let t = await m();
|
|
822
|
+
await e.unmount({
|
|
823
|
+
api: t,
|
|
824
|
+
widget: d,
|
|
825
|
+
field: n.target,
|
|
826
|
+
services: s,
|
|
827
|
+
options: o,
|
|
828
|
+
provider: o.provider
|
|
829
|
+
});
|
|
830
|
+
}
|
|
831
|
+
d = null, await h();
|
|
832
|
+
}
|
|
820
833
|
}
|
|
821
834
|
};
|
|
822
835
|
}
|
|
@@ -2,7 +2,7 @@ import { t as e } from "./debug-BV0DvdHx.js";
|
|
|
2
2
|
import { r as t, t as n } from "./field-references.keys-58ZSTrCW.js";
|
|
3
3
|
import { n as r, r as i } from "./field-references.resolver-CHwn0G0L.js";
|
|
4
4
|
import { r as a, t as o } from "./shared-Bx9s0i0P.js";
|
|
5
|
-
import { c as s,
|
|
5
|
+
import { c as s, i as c, r as l, s as u, t as d } from "./dist-BdUy8m_p.js";
|
|
6
6
|
//#region src/js/utils/field-references.row-scope.ts
|
|
7
7
|
var f = new Set([
|
|
8
8
|
"first",
|
|
@@ -159,10 +159,10 @@ function w(e, t, n) {
|
|
|
159
159
|
return t.forEach(([e, t]) => {
|
|
160
160
|
let n = x(t);
|
|
161
161
|
if (String(n.scope || "").trim()) {
|
|
162
|
-
o[e] =
|
|
162
|
+
o[e] = l(t, y(t.sourceKey || "", n, a).value);
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
|
-
o[e] =
|
|
165
|
+
o[e] = l(t, r(t.sourceKey || "", a).value);
|
|
166
166
|
}), d(o, n.formatting);
|
|
167
167
|
}
|
|
168
168
|
function T(e, r) {
|
|
@@ -187,12 +187,12 @@ function T(e, r) {
|
|
|
187
187
|
}), o;
|
|
188
188
|
}
|
|
189
189
|
function E(e, t, n, r) {
|
|
190
|
-
let i = s(r), a =
|
|
191
|
-
|
|
190
|
+
let i = s(r), a = c(r), l = /* @__PURE__ */ new Map(), d = null, f = !1, p = !1, m = !1, h = () => {
|
|
191
|
+
l.forEach((e, t) => {
|
|
192
192
|
e.forEach((e, n) => {
|
|
193
193
|
t.removeEventListener(n, e);
|
|
194
194
|
});
|
|
195
|
-
}),
|
|
195
|
+
}), l.clear();
|
|
196
196
|
}, g = (e) => {
|
|
197
197
|
!e || f || queueMicrotask(() => {
|
|
198
198
|
f || (n.dispatchEvent(new Event("input", { bubbles: !0 })), n.dispatchEvent(new Event("change", { bubbles: !0 })));
|
|
@@ -257,8 +257,8 @@ function E(e, t, n, r) {
|
|
|
257
257
|
};
|
|
258
258
|
["input", "change"].forEach((t) => {
|
|
259
259
|
e.addEventListener(t, r);
|
|
260
|
-
let n =
|
|
261
|
-
n.set(t, r),
|
|
260
|
+
let n = l.get(e) || /* @__PURE__ */ new Map();
|
|
261
|
+
n.set(t, r), l.set(e, n);
|
|
262
262
|
});
|
|
263
263
|
}, b = () => {
|
|
264
264
|
m || f || (m = !0, queueMicrotask(() => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as e } from "./debug-BV0DvdHx.js";
|
|
2
2
|
import { t } from "./field-references.keys-58ZSTrCW.js";
|
|
3
3
|
import { n } from "./shared-Bx9s0i0P.js";
|
|
4
|
-
import { a as r, o as i } from "./dist-
|
|
4
|
+
import { a as r, o as i } from "./dist-BdUy8m_p.js";
|
|
5
5
|
//#region src/js/modules/fields/conditions/config.ts
|
|
6
6
|
var a = "[data-formie-conditions]";
|
|
7
7
|
function o(e) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region ../formie-core/dist/index.js
|
|
2
2
|
var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (t || (e((t = { exports: {} }).exports, t), e = null), t.exports), s = (e, i, o, s) => {
|
|
3
3
|
if (i && typeof i == "object" || typeof i == "function") for (var c = r(i), l = 0, u = c.length, d; l < u; l++) d = c[l], !a.call(e, d) && d !== o && t(e, d, {
|
|
4
4
|
get: ((e) => i[e]).bind(null, d),
|
|
@@ -2656,4 +2656,4 @@ function P(e) {
|
|
|
2656
2656
|
};
|
|
2657
2657
|
}
|
|
2658
2658
|
//#endregion
|
|
2659
|
-
export { g as a, x as c,
|
|
2659
|
+
export { g as a, x as c, S as i, P as n, h as o, T as r, E as s, C as t };
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { s as e } from "./event-names-BCI2FLD8.js";
|
|
2
|
+
import { t } from "./api-DqpfkZWL.js";
|
|
3
|
+
import { t as n } from "./debug-BV0DvdHx.js";
|
|
4
|
+
import { r } from "./scripts-CbQ7agX3.js";
|
|
5
|
+
import { t as i } from "./styles-BfoIZwJp.js";
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/js/modules/payments/opayo.ts
|
|
8
|
+
i("opayo", ["@layer formie-theme{.formie-opayo-drop-in{box-sizing:border-box;width:100%;min-height:10rem}}"]);
|
|
9
|
+
var a = "FORMIE_OPAYO_SCRIPT", o = "https://live.opayo.eu.elavon.com/api/v1/js/sagepay.js", s = "https://sandbox.opayo.eu.elavon.com/api/v1/js/sagepay.js", c = "[data-formie-opayo-drop-in]", l = n("payments", "opayo"), u = e("opayo", "challenge"), d = "formie:payment:opayo:challenge:response";
|
|
10
|
+
function f(e) {
|
|
11
|
+
return e.checkoutMode === "dropIn";
|
|
12
|
+
}
|
|
13
|
+
async function p(e) {
|
|
14
|
+
let { form: t, handle: n, sessionToken: r, services: i } = e, a = new FormData();
|
|
15
|
+
a.append("action", "formie/payment-webhooks/process-callback"), a.append("merchantSessionKey", "true"), a.append("handle", n), a.append("sessionToken", r);
|
|
16
|
+
try {
|
|
17
|
+
let e = await fetch(t.action, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
body: a
|
|
20
|
+
});
|
|
21
|
+
return e.status < 200 || e.status >= 300 ? (i.addError(`${e.status}: ${e.statusText}`), l.warn("Merchant session request failed.", {
|
|
22
|
+
status: e.status,
|
|
23
|
+
statusText: e.statusText
|
|
24
|
+
}), null) : (await e.json()).merchantSessionKey || (i.addError("Unable to get merchant session."), l.warn("merchantSessionKey missing in callback response."), null);
|
|
25
|
+
} catch {
|
|
26
|
+
return i.addError("Network error. Please try again."), l.warn("Network error requesting merchant session."), null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function m(e) {
|
|
30
|
+
return e.id ||= `formie-opayo-drop-in-${Math.random().toString(36).slice(2, 9)}`, e.id;
|
|
31
|
+
}
|
|
32
|
+
var h = t({
|
|
33
|
+
id: "opayo",
|
|
34
|
+
defaultRequiredInputSuffixes: ["opayoTokenId"],
|
|
35
|
+
load: async (e) => {
|
|
36
|
+
let { provider: t } = e.options, n = t.useSandbox ? s : o;
|
|
37
|
+
return await r(f(t) ? "sagepayCheckout" : "sagepayOwnForm", {
|
|
38
|
+
id: a,
|
|
39
|
+
src: n,
|
|
40
|
+
timeoutMs: 1e4
|
|
41
|
+
}), null;
|
|
42
|
+
},
|
|
43
|
+
mount: async ({ field: e, services: t, provider: n }) => {
|
|
44
|
+
if (!f(n)) return null;
|
|
45
|
+
let r = t.form, i = window.sagepayCheckout, a = e.querySelector(c);
|
|
46
|
+
if (!r?.action) return t.addError("Form action is missing."), l.warn("Missing form action before drop-in mount."), null;
|
|
47
|
+
if (!i) return t.addError("Opayo script failed to load."), l.warn("sagepayCheckout global not available."), null;
|
|
48
|
+
if (!a) return t.addError("Opayo drop-in container is missing."), l.warn("Drop-in container not found in payment field."), null;
|
|
49
|
+
let o = n.handle || "opayo", s = await p({
|
|
50
|
+
form: r,
|
|
51
|
+
handle: o,
|
|
52
|
+
sessionToken: n.sessionToken || "",
|
|
53
|
+
services: t
|
|
54
|
+
});
|
|
55
|
+
if (!s) return null;
|
|
56
|
+
let u = m(a), d = {
|
|
57
|
+
checkout: null,
|
|
58
|
+
merchantSessionKey: s,
|
|
59
|
+
pendingAuthorize: null,
|
|
60
|
+
retriedTokenise: !1
|
|
61
|
+
};
|
|
62
|
+
return d.checkout = i({
|
|
63
|
+
merchantSessionKey: s,
|
|
64
|
+
containerSelector: `#${u}`,
|
|
65
|
+
onTokenise: (e) => {
|
|
66
|
+
let i = d.pendingAuthorize;
|
|
67
|
+
if (d.pendingAuthorize = null, !i) {
|
|
68
|
+
l.warn("Drop-in tokenisation completed without a pending authorize step.");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (e.success && e.cardIdentifier) {
|
|
72
|
+
t.updateInputs("opayoTokenId", e.cardIdentifier), t.updateInputs("opayoSessionKey", d.merchantSessionKey), l.log("Drop-in tokenization succeeded.", { hasCardIdentifier: !!e.cardIdentifier }), i(!0);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (!d.retriedTokenise) {
|
|
76
|
+
d.retriedTokenise = !0, p({
|
|
77
|
+
form: r,
|
|
78
|
+
handle: o,
|
|
79
|
+
sessionToken: n.sessionToken || "",
|
|
80
|
+
services: t
|
|
81
|
+
}).then((n) => {
|
|
82
|
+
if (!n) {
|
|
83
|
+
t.addError(e.errors?.[0]?.message || "Tokenization failed."), l.warn("Drop-in tokenization failed after session refresh.", e), i(!1);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
d.merchantSessionKey = n, d.pendingAuthorize = i, d.checkout.tokenise({ newMerchantSessionKey: n });
|
|
87
|
+
});
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
t.addError(e.errors?.[0]?.message || "Tokenization failed."), l.warn("Drop-in tokenization failed.", e), i(!1);
|
|
91
|
+
}
|
|
92
|
+
}), l.log("Drop-in checkout mounted.", { containerId: u }), d;
|
|
93
|
+
},
|
|
94
|
+
unmount: async ({ widget: e }) => {
|
|
95
|
+
e?.checkout?.destroy?.();
|
|
96
|
+
},
|
|
97
|
+
onBeforeAuthorize: async (e) => {
|
|
98
|
+
let { field: t, services: n, options: r, provider: i, widget: a } = e, o = i.handle || "opayo", s = n.form;
|
|
99
|
+
if (!s?.action) return n.addError("Form action is missing."), l.warn("Missing form action before authorize."), !1;
|
|
100
|
+
if (f(i)) return a ? (a.retriedTokenise = !1, new Promise((e) => {
|
|
101
|
+
a.pendingAuthorize = e, a.checkout.tokenise();
|
|
102
|
+
})) : (n.addError("Opayo drop-in checkout is not ready."), l.warn("Drop-in authorize requested before widget mount."), !1);
|
|
103
|
+
let c = window.sagepayOwnForm;
|
|
104
|
+
if (!c) return n.addError("Opayo script failed to load."), l.warn("sagepayOwnForm global not available."), !1;
|
|
105
|
+
let u = t.querySelector("[data-opayo-card=\"cardholder-name\"]")?.value ?? "", d = t.querySelector("[data-opayo-card=\"card-number\"]")?.value ?? "", m = t.querySelector("[data-opayo-card=\"expiry-date\"]")?.value ?? "", h = t.querySelector("[data-opayo-card=\"security-code\"]")?.value ?? "";
|
|
106
|
+
d = d.replace(/[\s/]/g, ""), m = m.replace(/[\s/]/g, "");
|
|
107
|
+
let g = await p({
|
|
108
|
+
form: s,
|
|
109
|
+
handle: o,
|
|
110
|
+
sessionToken: i.sessionToken || "",
|
|
111
|
+
services: n
|
|
112
|
+
});
|
|
113
|
+
return g ? new Promise((e) => {
|
|
114
|
+
c({ merchantSessionKey: g }).tokeniseCardDetails({
|
|
115
|
+
cardDetails: {
|
|
116
|
+
cardholderName: u,
|
|
117
|
+
cardNumber: d,
|
|
118
|
+
expiryDate: m,
|
|
119
|
+
securityCode: h
|
|
120
|
+
},
|
|
121
|
+
onTokenised: (t) => {
|
|
122
|
+
t.success && t.cardIdentifier ? (n.updateInputs("opayoTokenId", t.cardIdentifier), n.updateInputs("opayoSessionKey", g), l.log("Tokenization succeeded.", { hasCardIdentifier: !!t.cardIdentifier }), e(!0)) : (n.addError(t.errors?.[0]?.message || "Tokenization failed."), l.warn("Tokenization failed.", t), e(!1));
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}) : !1;
|
|
126
|
+
},
|
|
127
|
+
setup: async (e) => {
|
|
128
|
+
let { services: t } = e;
|
|
129
|
+
e.target;
|
|
130
|
+
let n = null, r = !1, i = () => {
|
|
131
|
+
n?.parentNode && n.parentNode.removeChild(n), n = null;
|
|
132
|
+
}, a = t.events.onForm(u, ((e) => {
|
|
133
|
+
let a = e.detail?.data;
|
|
134
|
+
if (!a?.acsUrl || !a?.creq) return;
|
|
135
|
+
r = !1, l.log("Received payment challenge event.", {
|
|
136
|
+
hasAcsUrl: !!a.acsUrl,
|
|
137
|
+
hasCreq: !!a.creq
|
|
138
|
+
});
|
|
139
|
+
let o = t.form?.querySelector("input[name*=\"opayoSessionKey\"]")?.value || "", s = document.createElement("div");
|
|
140
|
+
s.className = "formie-modal", s.id = `formie-opayo-dialog-${Math.random().toString(36).slice(2, 9)}`, s.innerHTML = "\n <div class=\"formie-modal-backdrop\" data-dialog-close></div>\n <div class=\"formie-modal-content\">\n <div class=\"formie-loading formie-loading-large\" style=\"--formie-loading-width: 3rem; --formie-loading-height: 3rem; top: 50%; margin-top: -1.5rem;\"></div>\n <iframe width=\"100%\" height=\"100%\" style=\"width: 100%; height: 100%; position: relative; z-index: 1;\"></iframe>\n </div>\n ";
|
|
141
|
+
let c = s.querySelector("iframe"), u = (e) => e.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<"), d = a.returnUrl || a.redirectUrl || "", f = `<form action="${u(a.acsUrl)}" method="post">
|
|
142
|
+
<input type="hidden" name="creq" value="${u(a.creq || "")}" />
|
|
143
|
+
<input type="hidden" name="threeDSSessionData" value="${u(a.threeDSSessionData || "")}" />
|
|
144
|
+
<input type="hidden" name="MD" value="${u(o)}" />
|
|
145
|
+
<input type="hidden" name="TermUrl" value="${u(d)}" />
|
|
146
|
+
<input type="hidden" name="ThreeDSNotificationURL" value="${u(d)}" />
|
|
147
|
+
</form><script>document.forms[0].submit();<\/script>`;
|
|
148
|
+
i(), document.body.appendChild(s), n = s, c?.contentWindow && (c.contentWindow.document.open(), c.contentWindow.document.write(f), c.contentWindow.document.close());
|
|
149
|
+
})), o = (e) => {
|
|
150
|
+
if (e.data?.message === d) {
|
|
151
|
+
if (!n) {
|
|
152
|
+
l.log("Ignoring 3DS response without active dialog.");
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (r) {
|
|
156
|
+
l.warn("Ignoring duplicate 3DS response while processing.");
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (r = !0, l.log("Received payment challenge response message.", e.data?.value), i(), t.removeError(), e.data?.value?.error) {
|
|
160
|
+
t.addError(e.data.value.error.message), t.releaseSubmitLoading(), r = !1;
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
t.updateInputs("opayo3DSComplete", e.data.value?.transactionId ?? ""), t.triggerSubmit();
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
return window.addEventListener("message", o), { destroy: () => {
|
|
167
|
+
a(), window.removeEventListener("message", o), i(), r = !1;
|
|
168
|
+
} };
|
|
169
|
+
},
|
|
170
|
+
onAfterSubmit: async ({ services: e }) => {
|
|
171
|
+
e.updateInputs([
|
|
172
|
+
"opayoTokenId",
|
|
173
|
+
"opayoSessionKey",
|
|
174
|
+
"opayo3DSComplete"
|
|
175
|
+
], "");
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
//#endregion
|
|
179
|
+
export { h as opayoModule };
|
|
@@ -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-DqpfkZWL.js";
|
|
3
3
|
import { r as n } from "./scripts-CbQ7agX3.js";
|
|
4
4
|
//#region src/js/modules/payments/paddle.ts
|
|
5
5
|
var r = "FORMIE_PADDLE_SCRIPT", i = e("paddle", "initialize"), a = t({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as e, i as t, l as n } from "./shared-Bx9s0i0P.js";
|
|
2
|
-
import {
|
|
2
|
+
import { n as r } from "./dist-BdUy8m_p.js";
|
|
3
3
|
//#region src/js/modules/fields/password-validation.ts
|
|
4
4
|
var i = "input[data-formie-password-input]", a = [
|
|
5
5
|
"passwordMinLength",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./api-
|
|
1
|
+
import { t as e } from "./api-DqpfkZWL.js";
|
|
2
2
|
import { r as t } from "./scripts-CbQ7agX3.js";
|
|
3
3
|
import { t as n } from "./styles-BfoIZwJp.js";
|
|
4
4
|
//#endregion
|
|
@@ -11,49 +11,52 @@ function i(e) {
|
|
|
11
11
|
return String(n[0]?.id || r[0]?.id || "").trim();
|
|
12
12
|
}
|
|
13
13
|
function a(e, t) {
|
|
14
|
+
e?.close && e.close(), t.removeAttribute("data-formie-paypal-rendered"), t.innerHTML = "";
|
|
15
|
+
}
|
|
16
|
+
function o(e, t) {
|
|
14
17
|
return `https://www.paypal.com/sdk/js?${[
|
|
15
18
|
"intent=authorize",
|
|
16
19
|
`currency=${encodeURIComponent(t)}`,
|
|
17
20
|
`client-id=${encodeURIComponent(e)}`
|
|
18
21
|
].join("&")}`;
|
|
19
22
|
}
|
|
20
|
-
var
|
|
23
|
+
var s = e({
|
|
21
24
|
id: "paypal",
|
|
22
25
|
defaultRequiredInputSuffixes: ["paypalOrderId", "paypalAuthId"],
|
|
23
26
|
load: async (e) => {
|
|
24
27
|
let { provider: n } = e.options, i = n.clientId;
|
|
25
28
|
return i?.trim() ? (await t("paypal", {
|
|
26
29
|
id: r,
|
|
27
|
-
src:
|
|
30
|
+
src: o(i, n.currency || "AUD")
|
|
28
31
|
}), window.paypal) : (console.error("[formie] Missing clientId for PayPal."), null);
|
|
29
32
|
},
|
|
30
33
|
mount: async (e) => {
|
|
31
|
-
let { api: t, field: n, services: r, options:
|
|
32
|
-
if (!
|
|
33
|
-
|
|
34
|
-
let
|
|
35
|
-
value:
|
|
34
|
+
let { api: t, field: n, services: r, options: o, provider: s } = e, c = n.querySelector("[data-formie-paypal-button]");
|
|
35
|
+
if (!c || !t || c.getAttribute("data-formie-paypal-rendered") === "true") return null;
|
|
36
|
+
c.innerHTML = "";
|
|
37
|
+
let l = !!s.useSandbox, u = r.resolveCurrency({
|
|
38
|
+
value: s.currency,
|
|
36
39
|
defaultCurrency: "AUD"
|
|
37
40
|
});
|
|
38
|
-
if (!
|
|
39
|
-
let
|
|
40
|
-
layout:
|
|
41
|
-
color:
|
|
42
|
-
shape:
|
|
43
|
-
label:
|
|
44
|
-
width:
|
|
45
|
-
height:
|
|
41
|
+
if (!u.ok) return r.addError("error" in u ? u.error : "Invalid PayPal currency."), null;
|
|
42
|
+
let d = u.value, f = {
|
|
43
|
+
layout: s.buttonLayout || "vertical",
|
|
44
|
+
color: s.buttonColor || "gold",
|
|
45
|
+
shape: s.buttonShape || "rect",
|
|
46
|
+
label: s.buttonLabel || "paypal",
|
|
47
|
+
width: s.buttonWidth || 250,
|
|
48
|
+
height: s.buttonHeight || 35
|
|
46
49
|
};
|
|
47
|
-
|
|
48
|
-
let
|
|
49
|
-
env:
|
|
50
|
-
style:
|
|
50
|
+
f.layout === "horizontal" && (f.tagline = s.buttonTagline ?? !0);
|
|
51
|
+
let p = null, m = {
|
|
52
|
+
env: l ? "sandbox" : "production",
|
|
53
|
+
style: f,
|
|
51
54
|
createOrder: (e, t) => {
|
|
52
55
|
r.removeError();
|
|
53
56
|
let n = r.resolveAmount({
|
|
54
|
-
type:
|
|
55
|
-
fixed:
|
|
56
|
-
variable:
|
|
57
|
+
type: s.amountType,
|
|
58
|
+
fixed: s.amountFixed,
|
|
59
|
+
variable: s.amountVariable
|
|
57
60
|
});
|
|
58
61
|
if (!n.ok) {
|
|
59
62
|
let e = "error" in n ? n.error : "Invalid PayPal amount.";
|
|
@@ -63,7 +66,7 @@ var o = e({
|
|
|
63
66
|
intent: "AUTHORIZE",
|
|
64
67
|
application_context: { user_action: "CONTINUE" },
|
|
65
68
|
purchase_units: [{ amount: {
|
|
66
|
-
currency_code:
|
|
69
|
+
currency_code: d,
|
|
67
70
|
value: String(n.value)
|
|
68
71
|
} }]
|
|
69
72
|
});
|
|
@@ -74,22 +77,20 @@ var o = e({
|
|
|
74
77
|
onApprove: async (e, t) => {
|
|
75
78
|
try {
|
|
76
79
|
let n = i(await t.order.authorize());
|
|
77
|
-
r.updateInputs("paypalOrderId", e.orderID), r.updateInputs("paypalAuthId", n || ""), n ? r.addSuccess("Payment authorized. Finalize the form to complete payment.") : r.addSuccess("PayPal approval received. Finalizing payment on submit.");
|
|
80
|
+
r.updateInputs("paypalOrderId", e.orderID), r.updateInputs("paypalAuthId", n || ""), n ? r.addSuccess("Payment authorized. Finalize the form to complete payment.") : r.addSuccess("PayPal approval received. Finalizing payment on submit."), a(p, c);
|
|
78
81
|
} catch {
|
|
79
82
|
r.addError("Unable to authorize payment. Please try again.");
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
|
-
},
|
|
83
|
-
return
|
|
85
|
+
}, h = t.Buttons(m);
|
|
86
|
+
return c.setAttribute("data-formie-paypal-rendered", "true"), p = h.render(c), p;
|
|
84
87
|
},
|
|
85
88
|
unmount: async (e) => {
|
|
86
89
|
e.widget?.close && e.widget.close();
|
|
87
90
|
let t = e.field.querySelector("[data-formie-paypal-button]");
|
|
88
91
|
t && (t.removeAttribute("data-formie-paypal-rendered"), t.innerHTML = "");
|
|
89
92
|
},
|
|
90
|
-
onAfterSubmit: async ({ services: e }) => {
|
|
91
|
-
e.updateInputs(["paypalOrderId", "paypalAuthId"], ""), e.removeSuccess(), e.removeError();
|
|
92
|
-
}
|
|
93
|
+
onAfterSubmit: async ({ services: e, result: t }) => (e.updateInputs(["paypalOrderId", "paypalAuthId"], ""), e.removeSuccess(), e.removeError(), !t?.ok || t?.nextPage ? { remount: !0 } : {})
|
|
93
94
|
});
|
|
94
95
|
//#endregion
|
|
95
|
-
export {
|
|
96
|
+
export { s as paypalModule };
|
|
@@ -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-DqpfkZWL.js";
|
|
3
3
|
import { r as n, t as r } from "./theme-classes-Tv7q7ToE.js";
|
|
4
4
|
import { r as i } from "./scripts-CbQ7agX3.js";
|
|
5
5
|
import { t as a } from "./styles-BfoIZwJp.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i as e } from "./i18n-BY1ds1BL.js";
|
|
2
2
|
import { t } from "./styles-BfoIZwJp.js";
|
|
3
3
|
import { c as n, i as r, l as i } from "./shared-Bx9s0i0P.js";
|
|
4
|
-
import {
|
|
4
|
+
import { n as a } from "./dist-BdUy8m_p.js";
|
|
5
5
|
//#region src/css/theme/fields/_text-limit.css?inline
|
|
6
6
|
var o = "@layer formie-theme{.formie-limit-number{font-weight:var(--formie-font-weight-semibold);color:var(--formie-color-text)}.formie-limit-number-error{color:var(--formie-color-danger)}}", s = "input[data-formie-single-line-text-input], textarea[data-formie-multi-line-text-input]", c = [
|
|
7
7
|
"textMinCharacterLimit",
|
|
@@ -116,8 +116,10 @@
|
|
|
116
116
|
|
|
117
117
|
.formie-field-option:has(> input[data-formie-other-option]),
|
|
118
118
|
.formie-other-option {
|
|
119
|
+
display: flex;
|
|
119
120
|
flex-wrap: wrap;
|
|
120
|
-
align-items:
|
|
121
|
+
align-items: center;
|
|
122
|
+
width: 100%;
|
|
121
123
|
}
|
|
122
124
|
|
|
123
125
|
.formie-field-option:has(> input[data-formie-other-option]:checked) > .formie-other-option-text,
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as e, d as t, l as n, o as r, r as i, t as a, u as o } from "./chunks/event-names-BCI2FLD8.js";
|
|
2
|
-
import { a as s, c, d as l, f as u, i as d, l as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y } from "./chunks/api-
|
|
2
|
+
import { a as s, c, d as l, f as u, i as d, l as f, n as p, o as m, p as h, r as g, s as _, t as v, u as y } from "./chunks/api-DqpfkZWL.js";
|
|
3
3
|
import { a as b, i as x, n as ee, r as te, t as S } from "./chunks/debug-BV0DvdHx.js";
|
|
4
4
|
import { n as ne, r as C, t as w } from "./chunks/theme-classes-Tv7q7ToE.js";
|
|
5
5
|
import { t as T } from "./chunks/http-D-JExro7.js";
|
|
@@ -1382,10 +1382,10 @@ var L = class {
|
|
|
1382
1382
|
snaptcha: () => import("./chunks/snaptcha-DKx98oon.js").then((e) => e.snaptchaModule),
|
|
1383
1383
|
turnstile: () => import("./chunks/turnstile-DJakPzQD.js").then((e) => e.turnstileModule)
|
|
1384
1384
|
}, Xt = {
|
|
1385
|
-
calculations: () => import("./chunks/calculations-
|
|
1385
|
+
calculations: () => import("./chunks/calculations-DERi2xaC.js").then((e) => e.calculationsModule),
|
|
1386
1386
|
"checkbox-radio": () => import("./chunks/checkbox-radio-BY2aTCOG.js").then((e) => e.checkboxRadioModule),
|
|
1387
1387
|
combobox: () => import("./chunks/combobox-C0EuExSI.js").then((e) => e.comboboxModule),
|
|
1388
|
-
conditions: () => import("./chunks/conditions-
|
|
1388
|
+
conditions: () => import("./chunks/conditions-65kBcFWW.js").then((e) => e.conditionsModule),
|
|
1389
1389
|
"custom-google-maps": () => import("./chunks/custom-google-maps-BsaSirEZ.js").then((e) => e.customGoogleMapsModule),
|
|
1390
1390
|
"custom-link": () => import("./chunks/custom-link-CJ1-FjEM.js").then((e) => e.customLinkModule),
|
|
1391
1391
|
"custom-maps": () => import("./chunks/custom-maps-DYW_pBid.js").then((e) => e.customMapsModule),
|
|
@@ -1394,7 +1394,7 @@ var L = class {
|
|
|
1394
1394
|
"upload-manager": () => import("./chunks/upload-manager-W-QDgxKD.js").then((e) => e.uploadManagerModule),
|
|
1395
1395
|
hidden: () => import("./chunks/hidden-D7_Ch-QN.js").then((e) => e.hiddenModule),
|
|
1396
1396
|
"phone-country": () => import("./chunks/phone-country-D3ayr60L.js").then((e) => e.phoneCountryModule),
|
|
1397
|
-
"password-validation": () => import("./chunks/password-validation-
|
|
1397
|
+
"password-validation": () => import("./chunks/password-validation-T0vDQPCr.js").then((e) => e.passwordValidationModule),
|
|
1398
1398
|
"address-country": () => import("./chunks/address-country-Rx6GQTND.js").then((e) => e.addressCountryModule),
|
|
1399
1399
|
"address-state": () => import("./chunks/address-state-BwE01m2_.js").then((e) => e.addressStateModule),
|
|
1400
1400
|
repeater: () => import("./chunks/repeater-BVnPUqTj.js").then((e) => e.repeaterModule),
|
|
@@ -1405,19 +1405,19 @@ var L = class {
|
|
|
1405
1405
|
"survey-rank": () => import("./chunks/survey-rank-DN6x4IZM.js").then((e) => e.surveyRankModule),
|
|
1406
1406
|
"survey-rating": () => import("./chunks/survey-rating-BnsNL9U5.js").then((e) => e.surveyRatingModule),
|
|
1407
1407
|
table: () => import("./chunks/table-CAjCJHrL.js").then((e) => e.tableModule),
|
|
1408
|
-
"text-limit": () => import("./chunks/text-limit-
|
|
1408
|
+
"text-limit": () => import("./chunks/text-limit-Bn18WrPU.js").then((e) => e.textLimitModule)
|
|
1409
1409
|
}, Zt = {
|
|
1410
|
-
bpoint: () => import("./chunks/bpoint-
|
|
1411
|
-
eway: () => import("./chunks/eway-
|
|
1412
|
-
"go-cardless": () => import("./chunks/go-cardless-
|
|
1413
|
-
mollie: () => import("./chunks/mollie-
|
|
1414
|
-
moneris: () => import("./chunks/moneris-
|
|
1415
|
-
opayo: () => import("./chunks/opayo-
|
|
1416
|
-
paddle: () => import("./chunks/paddle-
|
|
1417
|
-
paypal: () => import("./chunks/paypal-
|
|
1418
|
-
payway: () => import("./chunks/payway-
|
|
1419
|
-
square: () => import("./chunks/square-
|
|
1420
|
-
stripe: () => import("./chunks/stripe-
|
|
1410
|
+
bpoint: () => import("./chunks/bpoint-Dlq34XH1.js").then((e) => e.bpointModule),
|
|
1411
|
+
eway: () => import("./chunks/eway-D9_m8ooj.js").then((e) => e.ewayModule),
|
|
1412
|
+
"go-cardless": () => import("./chunks/go-cardless-DAT3ZaQf.js").then((e) => e.goCardlessModule),
|
|
1413
|
+
mollie: () => import("./chunks/mollie-Bibhl67p.js").then((e) => e.mollieModule),
|
|
1414
|
+
moneris: () => import("./chunks/moneris-H2wSqk9h.js").then((e) => e.monerisModule),
|
|
1415
|
+
opayo: () => import("./chunks/opayo-CR0DtsLa.js").then((e) => e.opayoModule),
|
|
1416
|
+
paddle: () => import("./chunks/paddle-DkvIxQdG.js").then((e) => e.paddleModule),
|
|
1417
|
+
paypal: () => import("./chunks/paypal-CQpAF7Ua.js").then((e) => e.paypalModule),
|
|
1418
|
+
payway: () => import("./chunks/payway-CwDkC7YZ.js").then((e) => e.paywayModule),
|
|
1419
|
+
square: () => import("./chunks/square-DwdcOI1G.js").then((e) => e.squareModule),
|
|
1420
|
+
stripe: () => import("./chunks/stripe-DaoG2FT1.js").then((e) => e.stripeModule)
|
|
1421
1421
|
}, Qt = {
|
|
1422
1422
|
...Xt,
|
|
1423
1423
|
...Jt,
|
|
@@ -8,6 +8,10 @@ type PaymentSetupResult = {
|
|
|
8
8
|
destroy?: () => void | Promise<void>;
|
|
9
9
|
onBeforeStage?: (stageCtx: import('#contracts/modules').SubmitHookContext) => void | Promise<void>;
|
|
10
10
|
};
|
|
11
|
+
export type PaymentAfterSubmitResult = {
|
|
12
|
+
/** Tear down the current widget and mount again (for example after a failed payment). */
|
|
13
|
+
remount?: boolean;
|
|
14
|
+
};
|
|
11
15
|
export type ManagedPaymentModuleAdapter<TProvider extends Record<string, unknown>, TApi, TWidget> = {
|
|
12
16
|
id: string;
|
|
13
17
|
defaultRequiredInputSuffixes?: string[];
|
|
@@ -47,7 +51,7 @@ export type ManagedPaymentModuleAdapter<TProvider extends Record<string, unknown
|
|
|
47
51
|
options: NormalizedPaymentModuleOptions<TProvider>;
|
|
48
52
|
provider: TProvider;
|
|
49
53
|
result?: import('#contracts/schema').FormSubmitResult;
|
|
50
|
-
}) => void | Promise<void>;
|
|
54
|
+
}) => void | Promise<void> | PaymentAfterSubmitResult | Promise<PaymentAfterSubmitResult>;
|
|
51
55
|
};
|
|
52
56
|
export declare function createManagedPaymentModule<TProvider extends Record<string, unknown>, TApi, TWidget>(adapter: ManagedPaymentModuleAdapter<TProvider, TApi, TWidget>): FormieModuleDefinition;
|
|
53
57
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../../src/js/modules/payments/factories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,sBAAsB,EAEtB,kBAAkB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEH,KAAK,8BAA8B,EACnC,KAAK,mBAAmB,EAE3B,MAAM,wBAAwB,CAAC;AAchC,MAAM,MAAM,yBAAyB,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IACrH,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACnD,QAAQ,EAAE,mBAAmB,CAAC;CACjC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,oBAAoB,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtG,CAAC;AAEF,MAAM,MAAM,2BAA2B,CACnC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,IAAI,EACJ,OAAO,IACP;IACA,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,yBAAyB,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,uGAAuG;IACvG,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,CAAC,SAAS,CAAC,GAAG;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3G,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QACX,GAAG,EAAE,IAAI,CAAC;QACV,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACnD,QAAQ,EAAE,SAAS,CAAC;KACvB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QACb,GAAG,EAAE,IAAI,CAAC;QACV,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACnD,QAAQ,EAAE,SAAS,CAAC;KACvB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,GAAG,EAAE,IAAI,CAAC;QACV,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;QACvB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACnD,QAAQ,EAAE,SAAS,CAAC;QACpB,QAAQ,EAAE,OAAO,oBAAoB,EAAE,iBAAiB,CAAC;KAC5D,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjC,mFAAmF;IACnF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACnB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACnD,QAAQ,EAAE,SAAS,CAAC;QACpB,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,CAAC;KACzD,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../../src/js/modules/payments/factories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,sBAAsB,EAEtB,kBAAkB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEH,KAAK,8BAA8B,EACnC,KAAK,mBAAmB,EAE3B,MAAM,wBAAwB,CAAC;AAchC,MAAM,MAAM,yBAAyB,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,GAAG;IACrH,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACnD,QAAQ,EAAE,mBAAmB,CAAC;CACjC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,oBAAoB,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtG,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACnC,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,CACnC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,IAAI,EACJ,OAAO,IACP;IACA,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B,CAAC,EAAE,MAAM,EAAE,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,yBAAyB,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,uGAAuG;IACvG,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,CAAC,SAAS,CAAC,GAAG;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3G,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QACX,GAAG,EAAE,IAAI,CAAC;QACV,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACnD,QAAQ,EAAE,SAAS,CAAC;KACvB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QACb,GAAG,EAAE,IAAI,CAAC;QACV,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACnD,QAAQ,EAAE,SAAS,CAAC;KACvB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QACvB,GAAG,EAAE,IAAI,CAAC;QACV,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;QACvB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACnD,QAAQ,EAAE,SAAS,CAAC;QACpB,QAAQ,EAAE,OAAO,oBAAoB,EAAE,iBAAiB,CAAC;KAC5D,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjC,mFAAmF;IACnF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE;QACnB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,OAAO,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;QACnD,QAAQ,EAAE,SAAS,CAAC;QACpB,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,CAAC;KACzD,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CAC7F,CAAC;AAEF,wBAAgB,0BAA0B,CACtC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,IAAI,EACJ,OAAO,EACT,OAAO,EAAE,2BAA2B,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,sBAAsB,CA4QxF"}
|