@levo-so/site-runtime 0.3.23 → 0.3.25
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/index.d.ts +53 -7
- package/index.js +453 -450
- package/package.json +3 -3
package/index.js
CHANGED
|
@@ -8,22 +8,22 @@ import { Suspense as x, createContext as S, lazy as C, useCallback as w, useCont
|
|
|
8
8
|
import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
9
9
|
import { Dialog as F } from "@base-ui/react/dialog";
|
|
10
10
|
import { keepPreviousData as I, useMutation as L, useQuery as R, useQueryClient as z } from "@tanstack/react-query";
|
|
11
|
-
import {
|
|
12
|
-
import { createLevoInsights as
|
|
13
|
-
import { CalendarPlusIcon as
|
|
14
|
-
import { Popover as
|
|
11
|
+
import { Link as ee, ScriptOnce as te, redirect as ne, useRouterState as B } from "@tanstack/react-router";
|
|
12
|
+
import { createLevoInsights as re } from "@levo-so/insights";
|
|
13
|
+
import { CalendarPlusIcon as ie, CheckIcon as ae, ChevronDownIcon as V, DownloadIcon as oe, LoaderCircleIcon as se, XIcon as ce } from "lucide-react";
|
|
14
|
+
import { Popover as H } from "@base-ui/react/popover";
|
|
15
15
|
import { useRazorpay as le } from "react-razorpay";
|
|
16
16
|
import { EmbeddedCheckout as ue, EmbeddedCheckoutProvider as de } from "@stripe/react-stripe-js";
|
|
17
17
|
//#region src/access/types.ts
|
|
18
|
-
var
|
|
18
|
+
var fe = [
|
|
19
19
|
"otp",
|
|
20
20
|
"magiclink",
|
|
21
21
|
"whatsapp"
|
|
22
|
-
],
|
|
22
|
+
], pe = [
|
|
23
23
|
"google",
|
|
24
24
|
"microsoft",
|
|
25
25
|
"linkedin"
|
|
26
|
-
],
|
|
26
|
+
], me = [...fe, ...pe], he = "otp", U = (e) => typeof e == "object" && !!e && !Array.isArray(e), ge = (e) => fe.includes(e), _e = (e) => pe.includes(e), ve = (e) => Array.isArray(e) ? e.filter((e) => typeof e == "string") : [], ye = (e) => e, be = (e) => {
|
|
27
27
|
if (!U(e)) return null;
|
|
28
28
|
let t = e.enabled === void 0 ? !0 : e.enabled === !0, n = U(e.options) ? e.options : {};
|
|
29
29
|
switch (e.kind) {
|
|
@@ -31,8 +31,8 @@ var H = [
|
|
|
31
31
|
kind: "authentication",
|
|
32
32
|
enabled: t,
|
|
33
33
|
options: {
|
|
34
|
-
methods:
|
|
35
|
-
...
|
|
34
|
+
methods: ve(n.methods).filter((e) => ge(e) || _e(e)),
|
|
35
|
+
...ge(n.primary_method) ? { primary_method: n.primary_method } : {}
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
case "gating": return typeof n.collection != "string" || !n.collection.trim() ? null : {
|
|
@@ -40,42 +40,42 @@ var H = [
|
|
|
40
40
|
enabled: t,
|
|
41
41
|
options: {
|
|
42
42
|
collection: n.collection.trim(),
|
|
43
|
-
...U(n.condition) ? { condition:
|
|
44
|
-
hidden:
|
|
43
|
+
...U(n.condition) ? { condition: ye(n.condition) } : {},
|
|
44
|
+
hidden: ve(n.hidden)
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
47
|
case "profile": return {
|
|
48
48
|
kind: "profile",
|
|
49
49
|
enabled: t,
|
|
50
50
|
options: {
|
|
51
|
-
...U(n.condition) ? { condition:
|
|
52
|
-
hidden:
|
|
51
|
+
...U(n.condition) ? { condition: ye(n.condition) } : {},
|
|
52
|
+
hidden: ve(n.hidden)
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
default: return null;
|
|
56
56
|
}
|
|
57
|
-
},
|
|
57
|
+
}, xe = (e) => {
|
|
58
58
|
if (!Array.isArray(e) || e.length === 0) return {
|
|
59
59
|
rules: [],
|
|
60
60
|
invalid: !1
|
|
61
61
|
};
|
|
62
|
-
let t = e.map(
|
|
62
|
+
let t = e.map(be).filter((e) => e !== null);
|
|
63
63
|
return {
|
|
64
64
|
rules: t.filter((e) => e.enabled !== !1),
|
|
65
65
|
invalid: t.length === 0
|
|
66
66
|
};
|
|
67
|
-
},
|
|
67
|
+
}, Se = (e) => {
|
|
68
68
|
let t = e.find((e) => e.kind === "authentication"), n = t?.kind === "authentication" ? t.options?.methods ?? [] : [];
|
|
69
69
|
return {
|
|
70
|
-
primary: (t?.kind === "authentication" ? t.options?.primary_method : void 0) ?? n.find(
|
|
71
|
-
oauth: n.filter(
|
|
70
|
+
primary: (t?.kind === "authentication" ? t.options?.primary_method : void 0) ?? n.find(ge) ?? he,
|
|
71
|
+
oauth: n.filter(_e)
|
|
72
72
|
};
|
|
73
|
-
},
|
|
73
|
+
}, Ce = (e = null) => ({
|
|
74
74
|
state: "granted",
|
|
75
75
|
code: e,
|
|
76
76
|
message: null,
|
|
77
77
|
rule: null
|
|
78
|
-
}),
|
|
78
|
+
}), we = () => ({
|
|
79
79
|
state: "checking",
|
|
80
80
|
code: null,
|
|
81
81
|
message: null,
|
|
@@ -85,26 +85,26 @@ var H = [
|
|
|
85
85
|
code: e,
|
|
86
86
|
message: t,
|
|
87
87
|
rule: n
|
|
88
|
-
}),
|
|
88
|
+
}), Te = (e, t) => {
|
|
89
89
|
let n = t?.split(".")[0];
|
|
90
90
|
return e.find((e) => e.kind === n) ?? null;
|
|
91
|
-
},
|
|
91
|
+
}, Ee = (e, t) => {
|
|
92
92
|
let n = (e) => t.find((t) => t.kind === e);
|
|
93
|
-
if (e === "granted") return
|
|
93
|
+
if (e === "granted") return Ce();
|
|
94
94
|
if (e === "signed_out") return W("authentication.NOT_LOGGED_IN", "You need to be signed in to view this page.", n("authentication") ?? t[0] ?? null);
|
|
95
95
|
let r = n("gating");
|
|
96
96
|
if (e === "entry_missing" && r) return W("gating.ENTRY_NOT_FOUND", null, r);
|
|
97
97
|
if (e === "entry_under_review" && r) return W("gating.ENTRY_CONDITION_NOT_FULFILLED", "Your submission is being reviewed.", r);
|
|
98
98
|
let i = n("profile");
|
|
99
99
|
return e === "profile_incomplete" && i ? W("profile.CONDITION_NOT_FULFILLED", null, i) : null;
|
|
100
|
-
},
|
|
101
|
-
if (e.length === 0 && !t) return
|
|
100
|
+
}, De = ({ rules: e, invalid: t, pageId: n, hasClient: r, isReady: i, isLoggedIn: a, check: o, preview: s }) => {
|
|
101
|
+
if (e.length === 0 && !t) return Ce();
|
|
102
102
|
if (s) {
|
|
103
|
-
let t =
|
|
103
|
+
let t = Ee(s, e);
|
|
104
104
|
if (t) return t;
|
|
105
105
|
}
|
|
106
|
-
return t ? W("access.CONFIG_INVALID", "This page's access rules could not be read.") : i ? r ? a ? n ? o.isError ? W("access.CHECK_FAILED", "We could not verify your access.") : o.isSuccess ? o.data ? o.data.has_access ?
|
|
107
|
-
},
|
|
106
|
+
return t ? W("access.CONFIG_INVALID", "This page's access rules could not be read.") : i ? r ? a ? n ? o.isError ? W("access.CHECK_FAILED", "We could not verify your access.") : o.isSuccess ? o.data ? o.data.has_access ? Ce(o.data.code ?? null) : W(o.data.code ?? "access.CHECK_FAILED", o.data.message ?? null, Te(e, o.data.code)) : W("access.CHECK_FAILED", "We could not verify your access.") : we() : W("access.PAGE_NOT_IDENTIFIED", "This page is not linked to its access rules yet.") : W("authentication.NOT_LOGGED_IN", "You need to be signed in to view this page.", e.find((e) => e.kind === "authentication") ?? e[0] ?? null) : W("access.UNWIRED", "This site is not connected to an account system.") : we();
|
|
107
|
+
}, Oe = (e) => {
|
|
108
108
|
let t = (e?.apiUrl || "").replace(/\/$/, "");
|
|
109
109
|
return t ? y({
|
|
110
110
|
apiUrl: t,
|
|
@@ -113,15 +113,15 @@ var H = [
|
|
|
113
113
|
NODE_ENV: "",
|
|
114
114
|
APP_MODE: e?.appMode || "production"
|
|
115
115
|
}) : null;
|
|
116
|
-
},
|
|
116
|
+
}, ke = (e) => ({
|
|
117
117
|
apiUrl: e.levo?.api_url || "",
|
|
118
118
|
workspace: e.workspace_id || "",
|
|
119
119
|
siteId: e.id || "",
|
|
120
120
|
insightsUrl: e.levo?.insights_url || null,
|
|
121
121
|
appMode: e.levo?.app_mode || "production"
|
|
122
|
-
}),
|
|
122
|
+
}), Ae = /\{\$([A-Za-z0-9_]+)\}/g, je = (e) => {
|
|
123
123
|
let t = [], n = [], r = 0;
|
|
124
|
-
for (let i of e.matchAll(
|
|
124
|
+
for (let i of e.matchAll(Ae)) n.push(e.slice(r, i.index)), t.push(i[1]), r = i.index + i[0].length;
|
|
125
125
|
n.push(e.slice(r));
|
|
126
126
|
let i = (t) => /* @__PURE__ */ Error(`Levo pattern "${e}" ${t}`);
|
|
127
127
|
if (t.length === 0) throw i("names no variable: write each record as {$name}");
|
|
@@ -132,10 +132,10 @@ var H = [
|
|
|
132
132
|
names: t,
|
|
133
133
|
literals: n
|
|
134
134
|
};
|
|
135
|
-
},
|
|
136
|
-
let r =
|
|
135
|
+
}, Me = (e) => e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), Ne = ({ literals: e }) => RegExp(`^${e.map(Me).join("([^/]+)")}$`), Pe = /* @__PURE__ */ new Set(), Fe = (e, t, n) => {
|
|
136
|
+
let r = je(t), i = Ne(r), a = (e) => {
|
|
137
137
|
let n = e;
|
|
138
|
-
return t.replace(
|
|
138
|
+
return t.replace(Ae, (e, r) => {
|
|
139
139
|
let i = n[r];
|
|
140
140
|
if (!i) throw Error(`Levo pattern "${t}" has no value for {$${r}}`);
|
|
141
141
|
return i;
|
|
@@ -143,9 +143,9 @@ var H = [
|
|
|
143
143
|
};
|
|
144
144
|
return {
|
|
145
145
|
parse: (t) => {
|
|
146
|
-
if (!(e
|
|
146
|
+
if (!Object.hasOwn(t, e)) {
|
|
147
147
|
let n = Object.keys(t).join(", ") || "none";
|
|
148
|
-
return
|
|
148
|
+
return Pe.has(e) || (Pe.add(e), console.error(`levoParams("${e}", …) names a param this route does not have. Its params are: ${n}. The first argument must be the file's $param name.`)), !1;
|
|
149
149
|
}
|
|
150
150
|
let n = t[e], a = n ? i.exec(n) : null;
|
|
151
151
|
if (!a) return !1;
|
|
@@ -161,33 +161,33 @@ var H = [
|
|
|
161
161
|
[e]: a(t)
|
|
162
162
|
})
|
|
163
163
|
};
|
|
164
|
-
},
|
|
164
|
+
}, Ie = (e, t, n) => Object.prototype.hasOwnProperty.call(n, t) ? null : `Record binding "${e}" reads param "${t}", but this route has no such param. Its params are: ${Object.keys(n).join(", ") || "none"}. On a levoParams page, param names a pattern variable (packages, cities), never the segment.`, Le = (e) => [
|
|
165
165
|
"levo-source",
|
|
166
166
|
"list",
|
|
167
167
|
e.module,
|
|
168
168
|
e.identifier,
|
|
169
169
|
e.query ?? null,
|
|
170
170
|
e.options ?? null
|
|
171
|
-
],
|
|
171
|
+
], Re = (e, t) => [
|
|
172
172
|
"levo-source",
|
|
173
173
|
"record",
|
|
174
174
|
e.module,
|
|
175
175
|
e.identifier,
|
|
176
176
|
t ?? null
|
|
177
|
-
],
|
|
177
|
+
], ze = (e) => [
|
|
178
178
|
"levo-source",
|
|
179
179
|
"form",
|
|
180
180
|
e.module,
|
|
181
181
|
e.identifier
|
|
182
|
-
],
|
|
182
|
+
], Be = {
|
|
183
183
|
blog_author: "author",
|
|
184
184
|
blog_category: "category",
|
|
185
185
|
blog_tag: "tag"
|
|
186
|
-
},
|
|
187
|
-
let n = encodeURIComponent(e.identifier), r = t ? `${encodeURIComponent(t)}/get-single` : "list", i =
|
|
186
|
+
}, Ve = (e, t) => {
|
|
187
|
+
let n = encodeURIComponent(e.identifier), r = t ? `${encodeURIComponent(t)}/get-single` : "list", i = Be[e.module];
|
|
188
188
|
return i ? `/v1/blog/${n}/${i}/${r}` : e.module === "community" ? `/v1/community/${n}/post/${r}` : null;
|
|
189
|
-
},
|
|
190
|
-
let n =
|
|
189
|
+
}, He = async (e, t) => {
|
|
190
|
+
let n = Ve(t);
|
|
191
191
|
if (n) {
|
|
192
192
|
let r = await e.fetch.url(n).post(t.query ?? {}).json();
|
|
193
193
|
return {
|
|
@@ -203,16 +203,16 @@ var H = [
|
|
|
203
203
|
data: r.content.data ?? [],
|
|
204
204
|
meta: r.content.meta ?? null
|
|
205
205
|
};
|
|
206
|
-
},
|
|
207
|
-
let r =
|
|
206
|
+
}, Ue = async (e, t, n) => {
|
|
207
|
+
let r = Ve(t, n);
|
|
208
208
|
return r ? (await e.fetch.url(r).get().json()).content.data ?? null : (t.module === "collection" ? await e.collection.getCollectionContent({
|
|
209
209
|
collection_key: t.identifier,
|
|
210
210
|
slug: n
|
|
211
211
|
}) : t.module === "blog" ? await e.blog.getSingleBlog(t.identifier, n, { workspace_id: e.workspace ?? "" }) : await e.event.getSingleEvent(n, { workspace_id: e.workspace ?? "" })).content.data ?? null;
|
|
212
|
-
},
|
|
212
|
+
}, We = async (e, t) => (await e.collection.getCollectionByIDExpanded(t.identifier)).content.data ?? null, Ge = (e) => {
|
|
213
213
|
let t = i(), n = R({
|
|
214
|
-
queryKey:
|
|
215
|
-
queryFn: () =>
|
|
214
|
+
queryKey: Le(e),
|
|
215
|
+
queryFn: () => He(t, e),
|
|
216
216
|
enabled: !!t
|
|
217
217
|
});
|
|
218
218
|
return {
|
|
@@ -225,10 +225,10 @@ var H = [
|
|
|
225
225
|
...e
|
|
226
226
|
}) }
|
|
227
227
|
};
|
|
228
|
-
},
|
|
228
|
+
}, Ke = (e, t) => {
|
|
229
229
|
let n = i(), r = R({
|
|
230
|
-
queryKey:
|
|
231
|
-
queryFn: () =>
|
|
230
|
+
queryKey: Re(e, t),
|
|
231
|
+
queryFn: () => Ue(n, e, t),
|
|
232
232
|
enabled: !!n && !!t
|
|
233
233
|
});
|
|
234
234
|
return {
|
|
@@ -240,10 +240,10 @@ var H = [
|
|
|
240
240
|
...e
|
|
241
241
|
}) }
|
|
242
242
|
};
|
|
243
|
-
},
|
|
243
|
+
}, qe = (e) => {
|
|
244
244
|
let t = i(), n = R({
|
|
245
|
-
queryKey:
|
|
246
|
-
queryFn: () =>
|
|
245
|
+
queryKey: ze(e),
|
|
246
|
+
queryFn: () => We(t, e),
|
|
247
247
|
enabled: !!t
|
|
248
248
|
});
|
|
249
249
|
return {
|
|
@@ -255,35 +255,35 @@ var H = [
|
|
|
255
255
|
...e
|
|
256
256
|
}) }
|
|
257
257
|
};
|
|
258
|
-
},
|
|
258
|
+
}, Je = (e) => {
|
|
259
259
|
let t = Object.values(e ?? {});
|
|
260
260
|
return t.length === 1 ? t[0] : e?.slug;
|
|
261
|
-
},
|
|
262
|
-
let i =
|
|
261
|
+
}, Ye = async ({ queryClient: e, config: t, sources: n, params: r }) => {
|
|
262
|
+
let i = Oe(t);
|
|
263
263
|
if (!i || !n) return {};
|
|
264
264
|
let a = await Promise.all(Object.entries(n).map(async ([t, n]) => {
|
|
265
265
|
if (n.mode === "record") {
|
|
266
|
-
let a = n.param ?
|
|
266
|
+
let a = n.param ? Ie(t, n.param, r ?? {}) : null;
|
|
267
267
|
if (a) {
|
|
268
268
|
if (i.APP_MODE !== "production") throw Error(a);
|
|
269
269
|
return i.logger.error(a), [t, null];
|
|
270
270
|
}
|
|
271
|
-
let o = n.param ? r?.[n.param] :
|
|
271
|
+
let o = n.param ? r?.[n.param] : Je(r);
|
|
272
272
|
return o ? [t, await e.ensureQueryData({
|
|
273
|
-
queryKey:
|
|
274
|
-
queryFn: () =>
|
|
273
|
+
queryKey: Re(n, o),
|
|
274
|
+
queryFn: () => Ue(i, n, o)
|
|
275
275
|
}).catch(() => null)] : [t, null];
|
|
276
276
|
}
|
|
277
277
|
return n.mode === "form" ? [t, await e.ensureQueryData({
|
|
278
|
-
queryKey:
|
|
279
|
-
queryFn: () =>
|
|
278
|
+
queryKey: ze(n),
|
|
279
|
+
queryFn: () => We(i, n)
|
|
280
280
|
}).catch(() => null)] : [t, await e.ensureQueryData({
|
|
281
|
-
queryKey:
|
|
282
|
-
queryFn: () =>
|
|
281
|
+
queryKey: Le(n),
|
|
282
|
+
queryFn: () => He(i, n)
|
|
283
283
|
}).catch(() => null)];
|
|
284
284
|
}));
|
|
285
285
|
return Object.fromEntries(a);
|
|
286
|
-
},
|
|
286
|
+
}, Xe = {
|
|
287
287
|
background: "var(--color-page)",
|
|
288
288
|
foreground: "var(--color-ink)",
|
|
289
289
|
text: "var(--color-ink)",
|
|
@@ -305,10 +305,10 @@ var H = [
|
|
|
305
305
|
input: "var(--color-background1)",
|
|
306
306
|
inputForeground: "var(--color-ink)",
|
|
307
307
|
ring: "var(--color-brand)"
|
|
308
|
-
},
|
|
308
|
+
}, Ze = (e) => O(() => ({
|
|
309
309
|
...a({
|
|
310
310
|
colors: {
|
|
311
|
-
...
|
|
311
|
+
...Xe,
|
|
312
312
|
...e?.colors
|
|
313
313
|
},
|
|
314
314
|
radius: e?.radius ?? "var(--radius-token)",
|
|
@@ -327,7 +327,7 @@ function G() {
|
|
|
327
327
|
}
|
|
328
328
|
//#endregion
|
|
329
329
|
//#region src/access/useLevoAuth.ts
|
|
330
|
-
var K = ["levo-auth", "session"],
|
|
330
|
+
var K = ["levo-auth", "session"], Qe = () => {
|
|
331
331
|
let e = i(), t = z(), n = G(), r = R({
|
|
332
332
|
queryKey: K,
|
|
333
333
|
queryFn: async () => {
|
|
@@ -362,11 +362,11 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
362
362
|
signOut: s,
|
|
363
363
|
isSigningOut: a.isPending
|
|
364
364
|
};
|
|
365
|
-
},
|
|
366
|
-
let c = i(), { account: l } =
|
|
365
|
+
}, $e = ({ collection: e, hidden: n, submitLabel: r = "Submit", onSuccess: a, theme: o, className: s }) => {
|
|
366
|
+
let c = i(), { account: l } = Qe(), { schema: u, isLoading: d } = qe({
|
|
367
367
|
module: "collection",
|
|
368
368
|
identifier: e
|
|
369
|
-
}), f =
|
|
369
|
+
}), f = Ze(o);
|
|
370
370
|
return c ? /* @__PURE__ */ N("div", {
|
|
371
371
|
className: s,
|
|
372
372
|
children: /* @__PURE__ */ N(t, {
|
|
@@ -390,17 +390,17 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
390
390
|
onSuccess: () => a?.()
|
|
391
391
|
})
|
|
392
392
|
}) : null;
|
|
393
|
-
},
|
|
393
|
+
}, et = "so_levo_membership_account", tt = [
|
|
394
394
|
"profile_picture",
|
|
395
395
|
"first_name",
|
|
396
396
|
"last_name",
|
|
397
397
|
"email",
|
|
398
398
|
"username",
|
|
399
399
|
"socials"
|
|
400
|
-
],
|
|
401
|
-
let c = i(), l = G(), { account: u } =
|
|
400
|
+
], nt = ["email", "username"], rt = (e) => tt.includes(e.key) || e.editable === !0, it = ({ hidden: t, submitLabel: n = "Save and continue", onSuccess: r, errorClassName: a = "text-sm text-[var(--color-danger)]", theme: o, className: s }) => {
|
|
401
|
+
let c = i(), l = G(), { account: u } = Qe(), d = Ze(o), [f, p] = A(""), m = R({
|
|
402
402
|
queryKey: ["levo-access", "profile-schema"],
|
|
403
|
-
queryFn: async () => (await c?.collection?.getCollectionByIDExpanded(
|
|
403
|
+
queryFn: async () => (await c?.collection?.getCollectionByIDExpanded(et))?.content?.data ?? null,
|
|
404
404
|
enabled: l && !!c,
|
|
405
405
|
staleTime: 5 * 6e4,
|
|
406
406
|
retry: 1
|
|
@@ -412,14 +412,14 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
412
412
|
...e,
|
|
413
413
|
fields: e.fields?.map((e) => ({
|
|
414
414
|
...e,
|
|
415
|
-
hidden: !
|
|
416
|
-
readonly: e.readonly ||
|
|
415
|
+
hidden: !rt(e) || !!t?.includes(e.key),
|
|
416
|
+
readonly: e.readonly || nt.includes(e.key)
|
|
417
417
|
}))
|
|
418
418
|
}))
|
|
419
419
|
} : null;
|
|
420
420
|
}, [m.data, h]), _ = L({
|
|
421
421
|
mutationFn: async (e) => {
|
|
422
|
-
let n = g?.sections?.flatMap((e) => e?.fields ?? [])?.filter((e) =>
|
|
422
|
+
let n = g?.sections?.flatMap((e) => e?.fields ?? [])?.filter((e) => rt(e) && !nt.includes(e.key) && !t?.includes(e.key))?.map((e) => e?.key) ?? [];
|
|
423
423
|
await c?.membership?.updateMe(Object.fromEntries(Object.entries(e).filter(([e]) => n.includes(e))));
|
|
424
424
|
},
|
|
425
425
|
onMutate: () => p(""),
|
|
@@ -450,15 +450,15 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
450
450
|
onSubmit: (e) => _.mutate(e)
|
|
451
451
|
}) : null]
|
|
452
452
|
}) : null;
|
|
453
|
-
},
|
|
454
|
-
if (
|
|
455
|
-
|
|
456
|
-
for (let e of
|
|
453
|
+
}, at = null, ot = /* @__PURE__ */ new Set(), st = (e) => {
|
|
454
|
+
if (at !== e) {
|
|
455
|
+
at = e;
|
|
456
|
+
for (let e of ot) e();
|
|
457
457
|
}
|
|
458
|
-
},
|
|
459
|
-
|
|
460
|
-
}),
|
|
461
|
-
let t = i(), n = z(), r = G(), { isLoggedIn: a, isLoaded: o } =
|
|
458
|
+
}, ct = (e) => (ot.add(e), () => {
|
|
459
|
+
ot.delete(e);
|
|
460
|
+
}), lt = () => j(ct, () => at, () => null), ut = (e) => {
|
|
461
|
+
let t = i(), n = z(), r = G(), { isLoggedIn: a, isLoaded: o } = Qe(), s = lt(), c = e.id?.trim() || "", { rules: l, invalid: u } = O(() => xe(e.access), [e.access]), d = O(() => Se(l), [l]), f = r && !!t && l.length > 0 && !u && !!c && a && !s, p = R({
|
|
462
462
|
queryKey: ["levo-access", c],
|
|
463
463
|
queryFn: async () => (await t?.fetch.url(`/v1/builder/page/${c}/check-access`).post().json())?.content?.data ?? null,
|
|
464
464
|
enabled: f,
|
|
@@ -476,7 +476,7 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
476
476
|
n.invalidateQueries({ queryKey: K }), n.invalidateQueries({ queryKey: ["levo-access", c] });
|
|
477
477
|
}, [n, c]);
|
|
478
478
|
return {
|
|
479
|
-
...
|
|
479
|
+
...De({
|
|
480
480
|
rules: l,
|
|
481
481
|
invalid: u,
|
|
482
482
|
pageId: c,
|
|
@@ -494,26 +494,26 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
494
494
|
recheck: m,
|
|
495
495
|
isChecking: p.isFetching
|
|
496
496
|
};
|
|
497
|
-
},
|
|
497
|
+
}, dt = "membership.account.ACCOUNT_PENDING_APPROVAL", ft = (e) => e ? e === "membership.account.ACCOUNT_PENDING_APPROVAL" || e.includes("ACCOUNT_PENDING_APPROVAL") : !1, pt = (e) => {
|
|
498
498
|
let t = b(e);
|
|
499
499
|
return {
|
|
500
500
|
code: t?.code || "SOMETHING_WENT_WRONG",
|
|
501
501
|
title: t?.title || "Something went wrong",
|
|
502
502
|
message: t?.message || "Something went wrong. Please try again.",
|
|
503
503
|
fieldErrors: Object.fromEntries((t?.fieldErrors ?? []).map((e) => [e.param, e.message])),
|
|
504
|
-
isPendingApproval:
|
|
504
|
+
isPendingApproval: ft(t?.code)
|
|
505
505
|
};
|
|
506
|
-
},
|
|
506
|
+
}, mt = {
|
|
507
507
|
code: "site.NOT_CONNECTED",
|
|
508
508
|
title: "Sign-in unavailable",
|
|
509
509
|
message: "This site is not connected to an account system yet.",
|
|
510
510
|
fieldErrors: {},
|
|
511
511
|
isPendingApproval: !1
|
|
512
|
-
},
|
|
512
|
+
}, ht = () => {
|
|
513
513
|
let e = i(), t = z(), n = w(async (t, n) => {
|
|
514
514
|
if (!e?.membership) return {
|
|
515
515
|
ok: !1,
|
|
516
|
-
error:
|
|
516
|
+
error: mt
|
|
517
517
|
};
|
|
518
518
|
try {
|
|
519
519
|
return {
|
|
@@ -524,7 +524,7 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
524
524
|
let r = b(n);
|
|
525
525
|
return e.logger?.error(t, { exception: r }), {
|
|
526
526
|
ok: !1,
|
|
527
|
-
error:
|
|
527
|
+
error: pt(r)
|
|
528
528
|
};
|
|
529
529
|
}
|
|
530
530
|
}, [e]), r = w(async ({ identifier: t, medium: n }) => {
|
|
@@ -551,10 +551,10 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
551
551
|
isVerifying: s.isPending,
|
|
552
552
|
isSendingMagicLink: c.isPending
|
|
553
553
|
};
|
|
554
|
-
},
|
|
555
|
-
let n = window.screenX + (window.outerWidth -
|
|
556
|
-
return window.open(e, t, `width=${
|
|
557
|
-
},
|
|
554
|
+
}, gt = 700, _t = 500, vt = 700, yt = (e, t) => {
|
|
555
|
+
let n = window.screenX + (window.outerWidth - _t) / 2, r = window.screenY + (window.outerHeight - vt) / 2.5;
|
|
556
|
+
return window.open(e, t, `width=${_t},height=${vt},left=${n},top=${r}`);
|
|
557
|
+
}, bt = ({ methods: e, title: t = "Sign in", onSuccess: n, onError: r }) => {
|
|
558
558
|
let a = i(), o = z(), s = G(), [c, l] = A(null), [u, d] = A(null), f = k(null), p = k(void 0), m = k({
|
|
559
559
|
onSuccess: n,
|
|
560
560
|
onError: r
|
|
@@ -611,10 +611,10 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
611
611
|
title: t.get("title") || "Sign-in failed",
|
|
612
612
|
message: t.get("message") || "We could not sign you in. Please try again.",
|
|
613
613
|
fieldErrors: {},
|
|
614
|
-
isPendingApproval:
|
|
614
|
+
isPendingApproval: ft(t.get("code"))
|
|
615
615
|
};
|
|
616
616
|
r.isPendingApproval || d(r), m.current.onError?.(r);
|
|
617
|
-
},
|
|
617
|
+
}, gt);
|
|
618
618
|
}, [o, g]), v = O(() => {
|
|
619
619
|
let e = h.data;
|
|
620
620
|
if (!e || typeof window > "u") return {};
|
|
@@ -635,7 +635,7 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
635
635
|
signIn: () => {
|
|
636
636
|
let n = v[e];
|
|
637
637
|
if (n) {
|
|
638
|
-
if (d(null), f.current?.close(), f.current =
|
|
638
|
+
if (d(null), f.current?.close(), f.current = yt(n, t), !f.current) {
|
|
639
639
|
d({
|
|
640
640
|
code: "POPUP_BLOCKED",
|
|
641
641
|
title: "Popup blocked",
|
|
@@ -659,10 +659,10 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
659
659
|
error: u,
|
|
660
660
|
clearError: w(() => d(null), [])
|
|
661
661
|
};
|
|
662
|
-
},
|
|
662
|
+
}, xt = 4, St = (e) => /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(e.trim()), Ct = (e) => (/* @__PURE__ */ RegExp("^\\d{4}$")).test(e.trim()), wt = (e) => {
|
|
663
663
|
let t = e.replace(/\D/g, "").replace(/^0+/, "");
|
|
664
664
|
return t ? `+${t}` : "";
|
|
665
|
-
},
|
|
665
|
+
}, Tt = (e) => /^\+[1-9]\d{7,14}$/.test(wt(e)), Et = ({ value: e, onChange: t, length: n = 4, onComplete: r, autoFocus: i, disabled: a }) => {
|
|
666
666
|
let o = k([]), [s, c] = A(null), l = k(r);
|
|
667
667
|
l.current = r;
|
|
668
668
|
let u = Array.from({ length: n }, (t, n) => e[n] ?? ""), d = w((e) => {
|
|
@@ -746,11 +746,11 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
746
746
|
},
|
|
747
747
|
clear: w(() => f("", 0), [f])
|
|
748
748
|
};
|
|
749
|
-
},
|
|
749
|
+
}, Dt = C(() => import("./kbChat-eFsau7hG.js")), Ot = ({ site: e, path: t }) => {
|
|
750
750
|
let n = G(), r = e.workspace_id || void 0;
|
|
751
751
|
return !n || !r ? null : /* @__PURE__ */ N(x, {
|
|
752
752
|
fallback: null,
|
|
753
|
-
children: /* @__PURE__ */ N(
|
|
753
|
+
children: /* @__PURE__ */ N(Dt, {
|
|
754
754
|
workspaceId: r,
|
|
755
755
|
siteName: e.name || void 0,
|
|
756
756
|
siteLogo: void 0,
|
|
@@ -760,61 +760,61 @@ var K = ["levo-auth", "session"], Ze = () => {
|
|
|
760
760
|
path: t
|
|
761
761
|
})
|
|
762
762
|
});
|
|
763
|
-
},
|
|
763
|
+
}, kt = "(prefers-color-scheme: dark)", At = (e) => {
|
|
764
764
|
try {
|
|
765
765
|
let t = localStorage.getItem(e);
|
|
766
766
|
return t === "light" || t === "dark" || t === "system" ? t : null;
|
|
767
767
|
} catch {
|
|
768
768
|
return null;
|
|
769
769
|
}
|
|
770
|
-
},
|
|
770
|
+
}, jt = (e, t) => {
|
|
771
771
|
try {
|
|
772
772
|
localStorage.setItem(e, t);
|
|
773
773
|
} catch {}
|
|
774
774
|
};
|
|
775
|
-
function
|
|
776
|
-
return `(function(){try{var t=localStorage.getItem(${JSON.stringify(e)});if(t!=='light'&&t!=='dark'&&t!=='system'){t=${JSON.stringify(t)}}var d=matchMedia('${
|
|
775
|
+
function Mt(e, t) {
|
|
776
|
+
return `(function(){try{var t=localStorage.getItem(${JSON.stringify(e)});if(t!=='light'&&t!=='dark'&&t!=='system'){t=${JSON.stringify(t)}}var d=matchMedia('${kt}').matches;var r=t==='system'?(d?'dark':'light'):t;var e=document.documentElement;e.classList.remove('light','dark');e.classList.add(r);e.style.colorScheme=r}catch(e){}})();`;
|
|
777
777
|
}
|
|
778
|
-
var
|
|
779
|
-
function
|
|
778
|
+
var Nt = S(void 0), Pt = (e) => e === "system" ? window.matchMedia(kt).matches ? "dark" : "light" : e;
|
|
779
|
+
function Ft(e) {
|
|
780
780
|
let t = document.documentElement;
|
|
781
781
|
t.classList.remove("light", "dark"), t.classList.add(e), t.style.colorScheme = e;
|
|
782
782
|
}
|
|
783
|
-
var
|
|
783
|
+
var It = ({ children: e, defaultMode: t = "system", storageKey: n = "color-mode" }) => {
|
|
784
784
|
let [r, i] = A(t), [a, o] = A(t === "dark" ? "dark" : "light"), s = G();
|
|
785
785
|
return E(() => {
|
|
786
|
-
i(
|
|
786
|
+
i(At(n) ?? t);
|
|
787
787
|
}, [t, n]), E(() => {
|
|
788
788
|
if (!s) return;
|
|
789
|
-
let e =
|
|
790
|
-
|
|
789
|
+
let e = Pt(r);
|
|
790
|
+
Ft(e), o(e);
|
|
791
791
|
}, [r, s]), E(() => {
|
|
792
792
|
if (!s || r !== "system") return;
|
|
793
|
-
let e = window.matchMedia(
|
|
793
|
+
let e = window.matchMedia(kt), t = () => {
|
|
794
794
|
let t = e.matches ? "dark" : "light";
|
|
795
|
-
|
|
795
|
+
Ft(t), o(t);
|
|
796
796
|
};
|
|
797
797
|
return e.addEventListener("change", t), () => e.removeEventListener("change", t);
|
|
798
|
-
}, [r, s]), /* @__PURE__ */ P(
|
|
798
|
+
}, [r, s]), /* @__PURE__ */ P(Nt.Provider, {
|
|
799
799
|
value: {
|
|
800
800
|
mode: r,
|
|
801
801
|
resolvedMode: a,
|
|
802
802
|
setMode: (e) => {
|
|
803
|
-
|
|
803
|
+
jt(n, e), i(e);
|
|
804
804
|
}
|
|
805
805
|
},
|
|
806
|
-
children: [/* @__PURE__ */ N(
|
|
806
|
+
children: [/* @__PURE__ */ N(te, { children: Mt(n, t) }), e]
|
|
807
807
|
});
|
|
808
808
|
};
|
|
809
|
-
function
|
|
810
|
-
let e = T(
|
|
809
|
+
function Lt() {
|
|
810
|
+
let e = T(Nt);
|
|
811
811
|
if (e === void 0) throw Error("useColorMode must be used within a ColorModeProvider");
|
|
812
812
|
return e;
|
|
813
813
|
}
|
|
814
814
|
//#endregion
|
|
815
815
|
//#region src/form/LevoForm.tsx
|
|
816
|
-
var
|
|
817
|
-
let m = i(), { schema: h, isLoading: g, bind: _ } =
|
|
816
|
+
var Rt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant: a = "default", successConfig: o, theme: s, className: c, defaultValues: l, disabled: u, showSuccessScreen: d = !0, onSuccess: f, onError: p }) => {
|
|
817
|
+
let m = i(), { schema: h, isLoading: g, bind: _ } = qe(e), v = Ze(s);
|
|
818
818
|
return m ? /* @__PURE__ */ N("div", {
|
|
819
819
|
..._,
|
|
820
820
|
className: c,
|
|
@@ -844,28 +844,28 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
844
844
|
onError: p
|
|
845
845
|
})
|
|
846
846
|
}) : null;
|
|
847
|
-
},
|
|
847
|
+
}, zt = 1400, Bt = 12 * 1024 * 1024, Vt = new Set(["transparent", "rgba(0, 0, 0, 0)"]), Ht = {
|
|
848
848
|
imagePlaceholder: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",
|
|
849
849
|
onImageErrorHandler: () => void 0
|
|
850
|
-
}, Ht = (e) => {
|
|
851
|
-
let t = getComputedStyle(e);
|
|
852
|
-
return !Bt.has(t.backgroundColor) || t.backgroundImage !== "none";
|
|
853
850
|
}, Ut = (e) => {
|
|
851
|
+
let t = getComputedStyle(e);
|
|
852
|
+
return !Vt.has(t.backgroundColor) || t.backgroundImage !== "none";
|
|
853
|
+
}, Wt = (e) => {
|
|
854
854
|
for (let t = e; t; t = t.parentElement) {
|
|
855
855
|
let e = getComputedStyle(t).backgroundColor;
|
|
856
|
-
if (!
|
|
856
|
+
if (!Vt.has(e)) return e;
|
|
857
857
|
}
|
|
858
858
|
return "#ffffff";
|
|
859
|
-
},
|
|
860
|
-
let { toPng: n } = await import("./es-CK20DkgT.js"), r = e.getBoundingClientRect(), i = Math.max(r.width, r.height, 1), a = Math.min(2, Math.max(.4,
|
|
861
|
-
...
|
|
859
|
+
}, Gt = async (e, t) => {
|
|
860
|
+
let { toPng: n } = await import("./es-CK20DkgT.js"), r = e.getBoundingClientRect(), i = Math.max(r.width, r.height, 1), a = Math.min(2, Math.max(.4, zt / i)), o = await n(e, {
|
|
861
|
+
...Ht,
|
|
862
862
|
pixelRatio: a,
|
|
863
|
-
backgroundColor:
|
|
863
|
+
backgroundColor: Wt(e),
|
|
864
864
|
filter: (e) => !t.includes(e)
|
|
865
865
|
});
|
|
866
|
-
if (o.length >
|
|
866
|
+
if (o.length > Bt) throw Error("capture too large");
|
|
867
867
|
return o;
|
|
868
|
-
},
|
|
868
|
+
}, Kt = 4, qt = 4e3, Jt = (e, t) => {
|
|
869
869
|
let n = document.elementFromPoint(e.x + e.width / 2, e.y + e.height / 2);
|
|
870
870
|
for (; n && t.includes(n);) n = n.parentElement;
|
|
871
871
|
let r = document.body;
|
|
@@ -876,8 +876,8 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
876
876
|
break;
|
|
877
877
|
}
|
|
878
878
|
}
|
|
879
|
-
let i = window.innerWidth * window.innerHeight *
|
|
880
|
-
for (; !
|
|
879
|
+
let i = window.innerWidth * window.innerHeight * Kt || 2 ** 53 - 1, a = r;
|
|
880
|
+
for (; !Ut(a);) {
|
|
881
881
|
let e = a.parentElement;
|
|
882
882
|
if (!e || e === document.documentElement) break;
|
|
883
883
|
let t = e.getBoundingClientRect();
|
|
@@ -885,13 +885,13 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
885
885
|
a = e;
|
|
886
886
|
}
|
|
887
887
|
return a;
|
|
888
|
-
},
|
|
889
|
-
let { toCanvas: n } = await import("./es-CK20DkgT.js"), r =
|
|
890
|
-
o = Math.min(o,
|
|
888
|
+
}, Yt = async (e, t) => {
|
|
889
|
+
let { toCanvas: n } = await import("./es-CK20DkgT.js"), r = Jt(e, t), i = r.getBoundingClientRect(), a = Math.max(e.width, e.height, 1), o = Math.min(2, Math.max(.4, zt / a)), s = Math.max(i.width, i.height, 1);
|
|
890
|
+
o = Math.min(o, qt / s);
|
|
891
891
|
let c = await n(r, {
|
|
892
|
-
...
|
|
892
|
+
...Ht,
|
|
893
893
|
pixelRatio: o,
|
|
894
|
-
backgroundColor:
|
|
894
|
+
backgroundColor: Wt(r),
|
|
895
895
|
filter: (e) => !t.includes(e)
|
|
896
896
|
}), l = document.createElement("canvas");
|
|
897
897
|
l.width = Math.max(1, Math.round(e.width * o)), l.height = Math.max(1, Math.round(e.height * o));
|
|
@@ -899,7 +899,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
899
899
|
if (!u) throw Error("no 2d context");
|
|
900
900
|
u.drawImage(c, (e.x - i.left) * o, (e.y - i.top) * o, e.width * o, e.height * o, 0, 0, l.width, l.height);
|
|
901
901
|
let d = l.toDataURL("image/png");
|
|
902
|
-
if (d.length >
|
|
902
|
+
if (d.length > Bt) throw Error("capture too large");
|
|
903
903
|
return d;
|
|
904
904
|
}, q = {
|
|
905
905
|
ring: 99997,
|
|
@@ -914,24 +914,24 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
914
914
|
}, Y = (e) => {
|
|
915
915
|
let t = e?.getAttribute("data-tsd-source");
|
|
916
916
|
return t ? t.replace(/^\//, "") : null;
|
|
917
|
-
},
|
|
918
|
-
let n =
|
|
917
|
+
}, Xt = (e) => Array.from(document.querySelectorAll("[data-tsd-source]")).filter((t) => Y(t) === e), Zt = (e, t) => {
|
|
918
|
+
let n = Xt(t).indexOf(e);
|
|
919
919
|
return n < 0 ? 0 : n;
|
|
920
920
|
}, X = (e, t = 0) => {
|
|
921
|
-
let n =
|
|
921
|
+
let n = Xt(e);
|
|
922
922
|
return n[t] ?? n[0] ?? null;
|
|
923
|
-
},
|
|
923
|
+
}, Qt = (e, t) => {
|
|
924
924
|
let n = (e.getAttribute("data-staged-key") || "").split(/\s+/).filter(Boolean);
|
|
925
925
|
n.includes(t) || e.setAttribute("data-staged-key", [...n, t].join(" "));
|
|
926
|
-
},
|
|
926
|
+
}, $t = (e, t) => {
|
|
927
927
|
let n = (e.getAttribute("data-staged-key") || "").split(/\s+/).filter((e) => e && e !== t);
|
|
928
928
|
n.length ? e.setAttribute("data-staged-key", n.join(" ")) : e.removeAttribute("data-staged-key");
|
|
929
|
-
},
|
|
929
|
+
}, en = (e, t) => {
|
|
930
930
|
let n = Object.entries(t.styles).filter(([e]) => /^-?[a-zA-Z][a-zA-Z0-9-]*$/.test(e)).map(([e, t]) => `${e}:${String(t).replace(/[;{}]/g, "")} !important;`).join("");
|
|
931
931
|
if (!n) return "";
|
|
932
932
|
let r = `[data-staged-key~="${CSS.escape(e)}"]{${n}}`, i = t.media?.replace(/[;{}]/g, "").trim();
|
|
933
933
|
return i ? `@media ${i}{${r}}` : r;
|
|
934
|
-
},
|
|
934
|
+
}, tn = (e) => {
|
|
935
935
|
let t = e.tagName.toLowerCase();
|
|
936
936
|
return t === "input" ? {
|
|
937
937
|
checkbox: "Checkbox",
|
|
@@ -973,14 +973,14 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
973
973
|
aside: "Sidebar",
|
|
974
974
|
div: "Container"
|
|
975
975
|
}[t] || `${t.charAt(0).toUpperCase()}${t.slice(1)}`;
|
|
976
|
-
},
|
|
977
|
-
let t =
|
|
978
|
-
return n ? `${t} · ${n.length >
|
|
979
|
-
},
|
|
976
|
+
}, nn = 36, rn = (e) => {
|
|
977
|
+
let t = tn(e), n = ((e) => e.replace(/\s+/g, " ").trim())(e.getAttribute("aria-label") || e.getAttribute("alt") || e.getAttribute("title") || e.getAttribute("name") || "");
|
|
978
|
+
return n ? `${t} · ${n.length > nn ? `${n.slice(0, nn - 1).trimEnd()}…` : n}` : t;
|
|
979
|
+
}, an = (e) => {
|
|
980
980
|
let t = [], n = e;
|
|
981
981
|
for (; n && n.nodeType === 1 && n !== document.body && t.length < 8;) t.unshift(n.tagName.toLowerCase()), n = n.parentElement;
|
|
982
982
|
return t.join(" > ");
|
|
983
|
-
},
|
|
983
|
+
}, on = () => {
|
|
984
984
|
let e = document.createElement("div");
|
|
985
985
|
e.style.cssText = `position:fixed;pointer-events:none;z-index:${q.overlay};background:${J.hoverBg};outline:2px solid ${J.hover};border-radius:2px;display:none`;
|
|
986
986
|
let t = document.createElement("div");
|
|
@@ -994,10 +994,10 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
994
994
|
ring: n,
|
|
995
995
|
ringLabel: r
|
|
996
996
|
};
|
|
997
|
-
},
|
|
997
|
+
}, sn = (e, t, n) => {
|
|
998
998
|
let r = n.getBoundingClientRect();
|
|
999
|
-
e.style.display = "block", e.style.left = `${r.left}px`, e.style.top = `${r.top}px`, e.style.width = `${r.width}px`, e.style.height = `${r.height}px`, t.style.display = "block", t.textContent =
|
|
1000
|
-
},
|
|
999
|
+
e.style.display = "block", e.style.left = `${r.left}px`, e.style.top = `${r.top}px`, e.style.width = `${r.width}px`, e.style.height = `${r.height}px`, t.style.display = "block", t.textContent = rn(n), t.style.left = `${Math.max(4, r.left)}px`, t.style.top = `${r.top > 26 ? r.top - 22 : r.bottom + 4}px`;
|
|
1000
|
+
}, cn = (e) => {
|
|
1001
1001
|
let t = (e instanceof Element ? e : null)?.closest("a[href]");
|
|
1002
1002
|
if (!t || t.target === "_blank") return null;
|
|
1003
1003
|
let n;
|
|
@@ -1007,11 +1007,11 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1007
1007
|
return null;
|
|
1008
1008
|
}
|
|
1009
1009
|
return n.protocol !== "http:" && n.protocol !== "https:" || n.origin === location.origin ? null : n.href;
|
|
1010
|
-
},
|
|
1010
|
+
}, ln = (e) => {
|
|
1011
1011
|
if (!e) return !1;
|
|
1012
1012
|
let t = e.tagName;
|
|
1013
1013
|
return t === "INPUT" || t === "TEXTAREA" || t === "SELECT" || e.isContentEditable === !0;
|
|
1014
|
-
},
|
|
1014
|
+
}, un = (e) => {
|
|
1015
1015
|
if (!e.childNodes.length) return !1;
|
|
1016
1016
|
let t = !1;
|
|
1017
1017
|
for (let n of e.childNodes) {
|
|
@@ -1019,7 +1019,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1019
1019
|
(n.textContent ?? "").trim() && (t = !0);
|
|
1020
1020
|
}
|
|
1021
1021
|
return t;
|
|
1022
|
-
},
|
|
1022
|
+
}, dn = 2e3, fn = (e) => {
|
|
1023
1023
|
let t = [], n = e;
|
|
1024
1024
|
for (; n && n.nodeType === 1 && n !== document.body && t.length < 8;) {
|
|
1025
1025
|
let e = Y(n);
|
|
@@ -1030,22 +1030,22 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1030
1030
|
}), n = n.parentElement;
|
|
1031
1031
|
}
|
|
1032
1032
|
return t;
|
|
1033
|
-
},
|
|
1034
|
-
let t = Y(e), n = t ?
|
|
1033
|
+
}, pn = (e) => {
|
|
1034
|
+
let t = Y(e), n = t ? Xt(t).length : 1, r = t ? Zt(e, t) : 0, i = t && un(e) ? (e.textContent ?? "").replace(/\s+/g, " ").trim().slice(0, dn) : void 0, a = mn(e);
|
|
1035
1035
|
return {
|
|
1036
1036
|
tag: e.tagName.toLowerCase(),
|
|
1037
1037
|
classes: typeof e.className == "string" ? e.className.trim() : "",
|
|
1038
1038
|
text: (e.innerText || "").trim().slice(0, 120),
|
|
1039
|
-
label:
|
|
1040
|
-
path:
|
|
1039
|
+
label: rn(e),
|
|
1040
|
+
path: an(e),
|
|
1041
1041
|
source: t,
|
|
1042
1042
|
index: r,
|
|
1043
1043
|
occurrences: n,
|
|
1044
|
-
ancestors:
|
|
1044
|
+
ancestors: fn(e),
|
|
1045
1045
|
...i === void 0 ? {} : { fullText: i },
|
|
1046
1046
|
...a ? { sourceBinding: a } : {}
|
|
1047
1047
|
};
|
|
1048
|
-
},
|
|
1048
|
+
}, mn = (e) => {
|
|
1049
1049
|
let t = e.closest("[data-levo-source]");
|
|
1050
1050
|
if (!t) return;
|
|
1051
1051
|
let n = t.getAttribute("data-levo-source") ?? "", r = Y(t), i;
|
|
@@ -1058,11 +1058,11 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1058
1058
|
raw: n,
|
|
1059
1059
|
element: {
|
|
1060
1060
|
source: r ?? "",
|
|
1061
|
-
index: r ?
|
|
1061
|
+
index: r ? Zt(t, r) : 0
|
|
1062
1062
|
},
|
|
1063
1063
|
...i === void 0 ? {} : { config: i }
|
|
1064
1064
|
};
|
|
1065
|
-
},
|
|
1065
|
+
}, hn = () => Array.from(document.querySelectorAll("[data-levo-source]")).map((e) => {
|
|
1066
1066
|
let t = e.getAttribute("data-levo-source") ?? "", n = Y(e), r;
|
|
1067
1067
|
try {
|
|
1068
1068
|
r = JSON.parse(t);
|
|
@@ -1073,18 +1073,18 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1073
1073
|
raw: t,
|
|
1074
1074
|
element: {
|
|
1075
1075
|
source: n ?? "",
|
|
1076
|
-
index: n ?
|
|
1076
|
+
index: n ? Zt(e, n) : 0
|
|
1077
1077
|
},
|
|
1078
1078
|
tag: e.tagName.toLowerCase(),
|
|
1079
|
-
label:
|
|
1079
|
+
label: rn(e),
|
|
1080
1080
|
...r === void 0 ? {} : { config: r }
|
|
1081
1081
|
};
|
|
1082
|
-
}),
|
|
1082
|
+
}), gn = 14, _n = 2e3, vn = 100, yn = 48, bn = new Set([
|
|
1083
1083
|
"script",
|
|
1084
1084
|
"style",
|
|
1085
1085
|
"template",
|
|
1086
1086
|
"noscript"
|
|
1087
|
-
]),
|
|
1087
|
+
]), xn = (e, t) => t.includes(e) || e.id === "studio-staged" || bn.has(e.tagName.toLowerCase()), Sn = (e) => {
|
|
1088
1088
|
let t = !1, n = 0, r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
|
|
1089
1089
|
for (let e of Array.from(document.querySelectorAll("[data-tsd-source]"))) {
|
|
1090
1090
|
let t = Y(e);
|
|
@@ -1096,11 +1096,11 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1096
1096
|
for (let t of e.childNodes) {
|
|
1097
1097
|
if (t.nodeType !== 3) continue;
|
|
1098
1098
|
let e = (t.textContent ?? "").replace(/\s+/g, " ").trim();
|
|
1099
|
-
if (e) return e.length >
|
|
1099
|
+
if (e) return e.length > yn ? `${e.slice(0, yn).trimEnd()}…` : e;
|
|
1100
1100
|
}
|
|
1101
1101
|
}, o = (i, s) => {
|
|
1102
1102
|
n++;
|
|
1103
|
-
let c = Y(i), l = a(i), u = Array.from(i.children).filter((t) => !
|
|
1103
|
+
let c = Y(i), l = a(i), u = Array.from(i.children).filter((t) => !xn(t, e)), d = {
|
|
1104
1104
|
tag: i.tagName.toLowerCase(),
|
|
1105
1105
|
...c ? {
|
|
1106
1106
|
source: c,
|
|
@@ -1111,9 +1111,9 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1111
1111
|
childCount: u.length,
|
|
1112
1112
|
children: []
|
|
1113
1113
|
};
|
|
1114
|
-
if (s >=
|
|
1114
|
+
if (s >= gn) return u.length && (t = !0), d;
|
|
1115
1115
|
for (let e of u) {
|
|
1116
|
-
if (d.children.length >=
|
|
1116
|
+
if (d.children.length >= vn || n >= _n) {
|
|
1117
1117
|
t = !0;
|
|
1118
1118
|
break;
|
|
1119
1119
|
}
|
|
@@ -1125,7 +1125,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1125
1125
|
tree: o(document.body, 0),
|
|
1126
1126
|
truncated: t
|
|
1127
1127
|
};
|
|
1128
|
-
},
|
|
1128
|
+
}, Cn = () => {
|
|
1129
1129
|
let e = null;
|
|
1130
1130
|
return {
|
|
1131
1131
|
send: (t) => {
|
|
@@ -1140,7 +1140,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1140
1140
|
return !0;
|
|
1141
1141
|
}
|
|
1142
1142
|
};
|
|
1143
|
-
},
|
|
1143
|
+
}, wn = (e) => {
|
|
1144
1144
|
let t = location.pathname, n = () => {
|
|
1145
1145
|
location.pathname !== t && (t = location.pathname, e.onPathChange());
|
|
1146
1146
|
}, r = !1;
|
|
@@ -1160,19 +1160,19 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1160
1160
|
e.__inspectorPatched && e.__orig && (history.pushState = e.__orig), t.__inspectorPatched && t.__orig && (history.replaceState = t.__orig);
|
|
1161
1161
|
}
|
|
1162
1162
|
} };
|
|
1163
|
-
},
|
|
1164
|
-
if (!
|
|
1165
|
-
|
|
1166
|
-
for (let e of
|
|
1163
|
+
}, Tn = !1, En = /* @__PURE__ */ new Set(), Dn = () => {
|
|
1164
|
+
if (!Tn) {
|
|
1165
|
+
Tn = !0;
|
|
1166
|
+
for (let e of En) e();
|
|
1167
1167
|
}
|
|
1168
|
-
},
|
|
1169
|
-
|
|
1170
|
-
}),
|
|
1168
|
+
}, On = (e) => (En.add(e), () => {
|
|
1169
|
+
En.delete(e);
|
|
1170
|
+
}), kn = () => j(On, () => Tn, () => !1), An = (e) => {
|
|
1171
1171
|
let { channel: t, originals: n, staged: r } = e, i = t.send, a = null;
|
|
1172
1172
|
return { onMessage: (o) => {
|
|
1173
1173
|
let s = o.data;
|
|
1174
1174
|
if (!(!s || s.source !== "web-chat") && t.acceptOrigin(o)) {
|
|
1175
|
-
if (
|
|
1175
|
+
if (Dn(), s.type === "set-access-preview") st(s.stage ?? null);
|
|
1176
1176
|
else if (s.type === "set-inspect") e.setInspect(s.enabled);
|
|
1177
1177
|
else if (s.type === "set-text-edit") e.setTextEdit(s.enabled);
|
|
1178
1178
|
else if (s.type === "revert-text") {
|
|
@@ -1251,7 +1251,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1251
1251
|
behavior: "smooth"
|
|
1252
1252
|
}), i({
|
|
1253
1253
|
type: "element-selected",
|
|
1254
|
-
element:
|
|
1254
|
+
element: pn(r)
|
|
1255
1255
|
});
|
|
1256
1256
|
} else if (s.type === "edit-element") {
|
|
1257
1257
|
let t = String(s.element?.source || ""), n = Number.isInteger(s.element?.index) ? s.element.index : 0, r = t ? X(t, n) : null;
|
|
@@ -1270,7 +1270,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1270
1270
|
behavior: "smooth"
|
|
1271
1271
|
}), i({
|
|
1272
1272
|
type: "element-selected",
|
|
1273
|
-
element:
|
|
1273
|
+
element: pn(r)
|
|
1274
1274
|
}), e.isTextEditing() || e.setTextEdit(!0);
|
|
1275
1275
|
let o = e.editableTarget(r);
|
|
1276
1276
|
o && e.startEditAtEnd(o);
|
|
@@ -1293,7 +1293,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1293
1293
|
}
|
|
1294
1294
|
} else if (s.type === "clear-highlight") a && (a = null, !e.isInspecting() && !e.editingNode() && e.hideTextHover());
|
|
1295
1295
|
else if (s.type === "request-layers") {
|
|
1296
|
-
let { tree: t, truncated: n } =
|
|
1296
|
+
let { tree: t, truncated: n } = Sn(e.ownNodes);
|
|
1297
1297
|
i({
|
|
1298
1298
|
type: "layers-tree",
|
|
1299
1299
|
tree: t,
|
|
@@ -1301,7 +1301,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1301
1301
|
});
|
|
1302
1302
|
} else if (s.type === "request-sources") i({
|
|
1303
1303
|
type: "sources-list",
|
|
1304
|
-
sources:
|
|
1304
|
+
sources: hn()
|
|
1305
1305
|
});
|
|
1306
1306
|
else if (s.type === "capture-selected") {
|
|
1307
1307
|
let t = String(s.requestId || "");
|
|
@@ -1316,7 +1316,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1316
1316
|
});
|
|
1317
1317
|
return;
|
|
1318
1318
|
}
|
|
1319
|
-
|
|
1319
|
+
Gt(n, e.ownNodes).then((e) => {
|
|
1320
1320
|
console.info(`[levo-inspector] element capture ok <${n.tagName.toLowerCase()}> (${Math.round(e.length / 1024)}kB)`), i({
|
|
1321
1321
|
type: "capture-result",
|
|
1322
1322
|
requestId: t,
|
|
@@ -1337,7 +1337,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1337
1337
|
}
|
|
1338
1338
|
}
|
|
1339
1339
|
} };
|
|
1340
|
-
},
|
|
1340
|
+
}, jn = () => {
|
|
1341
1341
|
let e = /* @__PURE__ */ new Map(), t = () => {
|
|
1342
1342
|
if (e.size > 50) {
|
|
1343
1343
|
let t = e.keys().next().value;
|
|
@@ -1357,31 +1357,31 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1357
1357
|
return e.delete(t), n;
|
|
1358
1358
|
}
|
|
1359
1359
|
};
|
|
1360
|
-
},
|
|
1360
|
+
}, Mn = 6, Nn = 12, Pn = 12, Fn = .6, In = (e, t, n, r) => ({
|
|
1361
1361
|
x: Math.min(e, n),
|
|
1362
1362
|
y: Math.min(t, r),
|
|
1363
1363
|
width: Math.abs(n - e),
|
|
1364
1364
|
height: Math.abs(r - t)
|
|
1365
|
-
}),
|
|
1365
|
+
}), Ln = (e, t) => {
|
|
1366
1366
|
let n = e.x + e.width, r = e.y + e.height, i = [];
|
|
1367
1367
|
for (let a of Array.from(document.querySelectorAll("[data-tsd-source]"))) {
|
|
1368
1368
|
if (t.includes(a)) continue;
|
|
1369
1369
|
let o = a.getBoundingClientRect(), s = o.width * o.height;
|
|
1370
|
-
s <= 0 || Math.max(0, Math.min(n, o.right) - Math.max(e.x, o.left)) * Math.max(0, Math.min(r, o.bottom) - Math.max(e.y, o.top)) / s >=
|
|
1370
|
+
s <= 0 || Math.max(0, Math.min(n, o.right) - Math.max(e.x, o.left)) * Math.max(0, Math.min(r, o.bottom) - Math.max(e.y, o.top)) / s >= Fn && i.push(a);
|
|
1371
1371
|
}
|
|
1372
1372
|
let a = new Set(i), o = i.filter((e) => {
|
|
1373
1373
|
for (let t = e.parentElement; t; t = t.parentElement) if (a.has(t)) return !1;
|
|
1374
1374
|
return !0;
|
|
1375
|
-
}), s = o.length >
|
|
1376
|
-
for (let e of o.slice(0,
|
|
1375
|
+
}), s = o.length > Pn, c = [], l = [];
|
|
1376
|
+
for (let e of o.slice(0, Pn)) {
|
|
1377
1377
|
let t = Y(e);
|
|
1378
1378
|
if (!t) continue;
|
|
1379
1379
|
let n = (e.innerText || "").replace(/\s+/g, " ").trim().slice(0, 80);
|
|
1380
1380
|
c.push({
|
|
1381
1381
|
source: t,
|
|
1382
|
-
index:
|
|
1382
|
+
index: Zt(e, t),
|
|
1383
1383
|
tag: e.tagName.toLowerCase(),
|
|
1384
|
-
label:
|
|
1384
|
+
label: rn(e),
|
|
1385
1385
|
...n ? { text: n } : {}
|
|
1386
1386
|
}), l.push(e);
|
|
1387
1387
|
}
|
|
@@ -1390,10 +1390,10 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1390
1390
|
nodes: l,
|
|
1391
1391
|
truncated: s
|
|
1392
1392
|
};
|
|
1393
|
-
},
|
|
1393
|
+
}, Rn = () => Array.from({ length: Pn }, () => {
|
|
1394
1394
|
let e = document.createElement("div");
|
|
1395
1395
|
return e.style.cssText = `position:fixed;pointer-events:none;z-index:${q.ring};outline:1.5px solid ${J.select};outline-offset:1px;border-radius:3px;box-shadow:0 0 0 3px ${J.selectGlow};display:none`, e;
|
|
1396
|
-
}),
|
|
1396
|
+
}), zn = () => {
|
|
1397
1397
|
let e = document.createElement("div");
|
|
1398
1398
|
e.style.cssText = `position:fixed;pointer-events:none;z-index:${q.overlay};border:1.5px dashed ${J.select};background:${J.selectGlow};border-radius:2px;display:none`;
|
|
1399
1399
|
let t = null, n = !1, r = 0, i = 0, a = () => {
|
|
@@ -1410,31 +1410,31 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1410
1410
|
pointerMove: (a, o) => {
|
|
1411
1411
|
if (!t) return;
|
|
1412
1412
|
if (a = Math.min(Math.max(0, a), window.innerWidth), o = Math.min(Math.max(0, o), window.innerHeight), r = a, i = o, !n) {
|
|
1413
|
-
if (Math.abs(a - t.x) <
|
|
1413
|
+
if (Math.abs(a - t.x) < Mn && Math.abs(o - t.y) < Mn) return;
|
|
1414
1414
|
n = !0;
|
|
1415
1415
|
}
|
|
1416
|
-
let s =
|
|
1416
|
+
let s = In(t.x, t.y, a, o);
|
|
1417
1417
|
e.style.display = "block", e.style.left = `${s.x}px`, e.style.top = `${s.y}px`, e.style.width = `${s.width}px`, e.style.height = `${s.height}px`;
|
|
1418
1418
|
},
|
|
1419
1419
|
pointerUp: () => {
|
|
1420
1420
|
let e = n, o = t;
|
|
1421
1421
|
if (t = null, n = !1, a(), !e || !o) return null;
|
|
1422
|
-
let s =
|
|
1423
|
-
return s.width <
|
|
1422
|
+
let s = In(o.x, o.y, r, i);
|
|
1423
|
+
return s.width < Nn || s.height < Nn ? null : s;
|
|
1424
1424
|
},
|
|
1425
1425
|
cancel: () => {
|
|
1426
1426
|
t = null, n = !1, a();
|
|
1427
1427
|
},
|
|
1428
1428
|
isDragging: () => n
|
|
1429
1429
|
};
|
|
1430
|
-
},
|
|
1430
|
+
}, Bn = (e) => {
|
|
1431
1431
|
let { originals: t, editingNode: n } = e, r = /* @__PURE__ */ new Map(), i = () => {
|
|
1432
1432
|
let e = document.getElementById("studio-staged");
|
|
1433
1433
|
return e || (e = document.createElement("style"), e.id = "studio-staged", document.head.appendChild(e)), e;
|
|
1434
1434
|
}, a = () => {
|
|
1435
1435
|
let e = [];
|
|
1436
1436
|
for (let [t, n] of r) if (n.kind === "style") {
|
|
1437
|
-
let r =
|
|
1437
|
+
let r = en(t, n);
|
|
1438
1438
|
r && e.push(r);
|
|
1439
1439
|
}
|
|
1440
1440
|
let t = e.join("\n");
|
|
@@ -1443,7 +1443,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1443
1443
|
n.textContent !== t && (n.textContent = t);
|
|
1444
1444
|
}, o = (e, r) => {
|
|
1445
1445
|
let i = X(r.source, r.index);
|
|
1446
|
-
if (i) if (r.kind === "style")
|
|
1446
|
+
if (i) if (r.kind === "style") Qt(i, e);
|
|
1447
1447
|
else if (r.kind === "image") t.captureOnce(`${r.source}#${r.index}:src`, i.getAttribute("src") ?? ""), t.captureOnce(`${r.source}#${r.index}:srcset`, i.getAttribute("srcset") ?? ""), i.getAttribute("src") !== r.value && i.setAttribute("src", r.value), i.hasAttribute("srcset") && i.removeAttribute("srcset");
|
|
1448
1448
|
else {
|
|
1449
1449
|
if (i === n()) return;
|
|
@@ -1457,7 +1457,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1457
1457
|
if (!n) return;
|
|
1458
1458
|
r.delete(e);
|
|
1459
1459
|
let i = X(n.source, n.index);
|
|
1460
|
-
if (n.kind === "style") i &&
|
|
1460
|
+
if (n.kind === "style") i && $t(i, e), a();
|
|
1461
1461
|
else if (n.kind === "image") {
|
|
1462
1462
|
let e = t.restore(`${n.source}#${n.index}:src`), r = t.restore(`${n.source}#${n.index}:srcset`);
|
|
1463
1463
|
i && (e != null && (e ? i.setAttribute("src", e) : i.removeAttribute("src")), r != null && (r ? i.setAttribute("srcset", r) : i.removeAttribute("srcset")));
|
|
@@ -1486,7 +1486,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1486
1486
|
for (let e of Array.from(document.querySelectorAll("[data-staged-key]"))) e.removeAttribute("data-staged-key");
|
|
1487
1487
|
}
|
|
1488
1488
|
};
|
|
1489
|
-
},
|
|
1489
|
+
}, Vn = (e) => {
|
|
1490
1490
|
let { channel: t, originals: n, clearTextHover: r } = e, i = null, a = "", o = 0, s = (() => {
|
|
1491
1491
|
try {
|
|
1492
1492
|
let e = document.createElement("div");
|
|
@@ -1505,7 +1505,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1505
1505
|
n.selectNodeContents(e), n.collapse(!1), t.removeAllRanges(), t.addRange(n);
|
|
1506
1506
|
}, d = (e, t = !1) => {
|
|
1507
1507
|
if (i === e) return;
|
|
1508
|
-
i && p(i), i = e, a = Y(e) || "", o =
|
|
1508
|
+
i && p(i), i = e, a = Y(e) || "", o = Zt(e, a), r(), n.capture(`${a}#${o}`, e.textContent ?? ""), e.setAttribute("contenteditable", s ? "plaintext-only" : "true");
|
|
1509
1509
|
let d = e;
|
|
1510
1510
|
d.style.outline = `2px solid ${J.hover}`, d.style.outlineOffset = "3px", d.style.borderRadius = "3px", d.focus(), t && u(e), d.addEventListener("blur", c, !0), d.addEventListener("keydown", l, !0);
|
|
1511
1511
|
}, f = (e) => {
|
|
@@ -1524,7 +1524,7 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1524
1524
|
tag: e.tagName.toLowerCase(),
|
|
1525
1525
|
value: c,
|
|
1526
1526
|
previous: s,
|
|
1527
|
-
occurrences: r ?
|
|
1527
|
+
occurrences: r ? Xt(r).length : 1
|
|
1528
1528
|
}
|
|
1529
1529
|
});
|
|
1530
1530
|
}, m = (e) => {
|
|
@@ -1543,16 +1543,16 @@ var Lt = ({ source: e, submitLabel: n = "Submit", hiddenFields: r, formVariant:
|
|
|
1543
1543
|
i && f(i);
|
|
1544
1544
|
}
|
|
1545
1545
|
};
|
|
1546
|
-
},
|
|
1547
|
-
function Hn() {
|
|
1548
|
-
return E(() => Un(), []), null;
|
|
1549
|
-
}
|
|
1546
|
+
}, Hn = "2026-07-24g · element-capture + region-drag + region-highlights (stale-region guard)";
|
|
1550
1547
|
function Un() {
|
|
1551
|
-
|
|
1548
|
+
return E(() => Wn(), []), null;
|
|
1549
|
+
}
|
|
1550
|
+
function Wn() {
|
|
1551
|
+
let e = !1, t = null, n = null, r = !1, i = null, a = jn(), o = Cn(), { overlay: s, label: c, ring: l, ringLabel: u } = on();
|
|
1552
1552
|
document.body.append(s, c, l, u);
|
|
1553
|
-
let d =
|
|
1553
|
+
let d = zn();
|
|
1554
1554
|
document.body.append(d.node);
|
|
1555
|
-
let f =
|
|
1555
|
+
let f = Rn();
|
|
1556
1556
|
document.body.append(...f);
|
|
1557
1557
|
let p = [
|
|
1558
1558
|
s,
|
|
@@ -1582,14 +1582,14 @@ function Un() {
|
|
|
1582
1582
|
}, S = (e) => !e || p.includes(e) || e === document.body || e === document.documentElement, C = (e) => {
|
|
1583
1583
|
if (!e || S(e)) return null;
|
|
1584
1584
|
let t = Y(e) ? e : e.closest("[data-tsd-source]");
|
|
1585
|
-
return !t || S(t) || !
|
|
1586
|
-
}, w = (e) =>
|
|
1585
|
+
return !t || S(t) || !un(t) ? null : t;
|
|
1586
|
+
}, w = (e) => sn(s, c, e), T = () => {
|
|
1587
1587
|
if (n) {
|
|
1588
1588
|
if (!n.isConnected) {
|
|
1589
1589
|
P();
|
|
1590
1590
|
return;
|
|
1591
1591
|
}
|
|
1592
|
-
|
|
1592
|
+
sn(l, u, n);
|
|
1593
1593
|
}
|
|
1594
1594
|
}, E = 0, D = () => {
|
|
1595
1595
|
E || !n || r || (E = requestAnimationFrame(() => {
|
|
@@ -1618,19 +1618,19 @@ function Un() {
|
|
|
1618
1618
|
n = null, O.disconnect(), z(), E &&= (cancelAnimationFrame(E), 0), l.style.display = "none", u.style.display = "none", y(), g();
|
|
1619
1619
|
}, F = (e) => w(e), I = () => {
|
|
1620
1620
|
s.style.display = "none", c.style.display = "none";
|
|
1621
|
-
}, L =
|
|
1621
|
+
}, L = Vn({
|
|
1622
1622
|
channel: o,
|
|
1623
1623
|
originals: a,
|
|
1624
1624
|
clearTextHover: () => {
|
|
1625
1625
|
i = null, I();
|
|
1626
1626
|
}
|
|
1627
|
-
}), R =
|
|
1627
|
+
}), R = Bn({
|
|
1628
1628
|
originals: a,
|
|
1629
1629
|
editingNode: L.editingNode
|
|
1630
1630
|
}), z = () => {
|
|
1631
1631
|
n?.isConnected || R.count() ? j() : M();
|
|
1632
1632
|
}, ee = (n) => {
|
|
1633
|
-
n && r && te(!1), e = !!n, x(e), e || (t = null, s.style.display = "none", c.style.display = "none",
|
|
1633
|
+
n && r && te(!1), e = !!n, x(e), e || (t = null, s.style.display = "none", c.style.display = "none", de()), o.send({
|
|
1634
1634
|
type: "inspect-state",
|
|
1635
1635
|
enabled: e
|
|
1636
1636
|
});
|
|
@@ -1643,9 +1643,9 @@ function Un() {
|
|
|
1643
1643
|
type: "text-edit-state",
|
|
1644
1644
|
enabled: r
|
|
1645
1645
|
});
|
|
1646
|
-
},
|
|
1647
|
-
|
|
1648
|
-
let n = document.elementFromPoint(
|
|
1646
|
+
}, ne = 0, B = 0, re = 0, ie = () => {
|
|
1647
|
+
ne = 0;
|
|
1648
|
+
let n = document.elementFromPoint(B, re);
|
|
1649
1649
|
if (!S(n)) {
|
|
1650
1650
|
if (r) {
|
|
1651
1651
|
let e = C(n);
|
|
@@ -1659,30 +1659,30 @@ function Un() {
|
|
|
1659
1659
|
e && (d.isDragging() || (t = n, n && w(n)));
|
|
1660
1660
|
}
|
|
1661
1661
|
}, ae = (t) => {
|
|
1662
|
-
!e && !r || (
|
|
1663
|
-
},
|
|
1664
|
-
|
|
1665
|
-
},
|
|
1666
|
-
|
|
1667
|
-
},
|
|
1662
|
+
!e && !r || (B = t.clientX, re = t.clientY, ne ||= requestAnimationFrame(ie));
|
|
1663
|
+
}, V = 0, oe = () => {
|
|
1664
|
+
V = 0, e && t && w(t), r && !L.editingNode() && i?.isConnected && F(i), n && !r && T(), m.length > 0 && !r && _();
|
|
1665
|
+
}, se = () => {
|
|
1666
|
+
V ||= requestAnimationFrame(oe);
|
|
1667
|
+
}, ce = (n) => {
|
|
1668
1668
|
n.relatedTarget || (e ? (t = null, s.style.display = "none", c.style.display = "none") : r && !L.editingNode() && (i = null, I(), document.documentElement.style.cursor = ""));
|
|
1669
|
-
},
|
|
1670
|
-
if (
|
|
1669
|
+
}, H = !1, le = null, ue = () => {
|
|
1670
|
+
if (le != null) {
|
|
1671
1671
|
try {
|
|
1672
|
-
document.documentElement.releasePointerCapture(
|
|
1672
|
+
document.documentElement.releasePointerCapture(le);
|
|
1673
1673
|
} catch {}
|
|
1674
|
-
|
|
1674
|
+
le = null;
|
|
1675
1675
|
}
|
|
1676
|
-
},
|
|
1677
|
-
|
|
1676
|
+
}, de = () => {
|
|
1677
|
+
ue(), d.cancel();
|
|
1678
1678
|
}, fe = (t) => {
|
|
1679
|
-
!e || t.button !== 0 || !t.isPrimary || (
|
|
1679
|
+
!e || t.button !== 0 || !t.isPrimary || (H = !1, d.pointerDown(t.clientX, t.clientY));
|
|
1680
1680
|
}, pe = (n) => {
|
|
1681
1681
|
if (!e || !n.isPrimary) return;
|
|
1682
1682
|
let r = d.isDragging();
|
|
1683
1683
|
if (d.pointerMove(n.clientX, n.clientY), d.isDragging()) {
|
|
1684
1684
|
if (!r) {
|
|
1685
|
-
|
|
1685
|
+
le = n.pointerId;
|
|
1686
1686
|
try {
|
|
1687
1687
|
document.documentElement.setPointerCapture(n.pointerId);
|
|
1688
1688
|
} catch {}
|
|
@@ -1691,14 +1691,14 @@ function Un() {
|
|
|
1691
1691
|
}
|
|
1692
1692
|
}, me = (t) => {
|
|
1693
1693
|
if (!e || !t.isPrimary) return;
|
|
1694
|
-
|
|
1694
|
+
ue();
|
|
1695
1695
|
let n = d.pointerUp();
|
|
1696
1696
|
if (!n) return;
|
|
1697
|
-
|
|
1698
|
-
let { elements: r, nodes: i, truncated: a } =
|
|
1697
|
+
H = !0, P();
|
|
1698
|
+
let { elements: r, nodes: i, truncated: a } = Ln(n, p);
|
|
1699
1699
|
console.info(`[levo-inspector] region drag: ${Math.round(n.width)}×${Math.round(n.height)} — ${r.length} element(s)${a ? " (truncated)" : ""}`), v(i);
|
|
1700
1700
|
let s = ++h;
|
|
1701
|
-
|
|
1701
|
+
Yt(n, p).then((e) => {
|
|
1702
1702
|
s === h && (console.info(`[levo-inspector] region capture ok (${Math.round(e.length / 1024)}kB)`), o.send({
|
|
1703
1703
|
type: "region-selected",
|
|
1704
1704
|
rect: n,
|
|
@@ -1715,25 +1715,25 @@ function Un() {
|
|
|
1715
1715
|
dataUrl: null
|
|
1716
1716
|
}));
|
|
1717
1717
|
});
|
|
1718
|
-
},
|
|
1719
|
-
let t =
|
|
1718
|
+
}, he = () => de(), U = (e) => {
|
|
1719
|
+
let t = cn(e.target);
|
|
1720
1720
|
return t ? (e.preventDefault(), e.stopPropagation(), window.open(t, "_blank", "noopener,noreferrer"), !0) : !1;
|
|
1721
1721
|
}, ge = (i) => {
|
|
1722
|
-
if (
|
|
1723
|
-
|
|
1722
|
+
if (H) {
|
|
1723
|
+
H = !1, i.preventDefault(), i.stopPropagation(), i.stopImmediatePropagation();
|
|
1724
1724
|
return;
|
|
1725
1725
|
}
|
|
1726
1726
|
if (r) {
|
|
1727
1727
|
let e = C(document.elementFromPoint(i.clientX, i.clientY) || i.target);
|
|
1728
1728
|
if (!e || e === L.editingNode()) {
|
|
1729
|
-
|
|
1729
|
+
U(i);
|
|
1730
1730
|
return;
|
|
1731
1731
|
}
|
|
1732
1732
|
i.preventDefault(), i.stopPropagation(), i.stopImmediatePropagation(), L.startEdit(e);
|
|
1733
1733
|
return;
|
|
1734
1734
|
}
|
|
1735
1735
|
if (!e) {
|
|
1736
|
-
|
|
1736
|
+
U(i);
|
|
1737
1737
|
return;
|
|
1738
1738
|
}
|
|
1739
1739
|
i.preventDefault(), i.stopPropagation(), i.stopImmediatePropagation();
|
|
@@ -1742,9 +1742,9 @@ function Un() {
|
|
|
1742
1742
|
let s = a.closest("[data-tsd-source]") || a;
|
|
1743
1743
|
y(), g(), n = s, T(), N(), o.send({
|
|
1744
1744
|
type: "element-selected",
|
|
1745
|
-
element:
|
|
1745
|
+
element: pn(s)
|
|
1746
1746
|
});
|
|
1747
|
-
}, _e =
|
|
1747
|
+
}, _e = An({
|
|
1748
1748
|
channel: o,
|
|
1749
1749
|
originals: a,
|
|
1750
1750
|
staged: R,
|
|
@@ -1793,42 +1793,42 @@ function Un() {
|
|
|
1793
1793
|
type: "route",
|
|
1794
1794
|
route: e
|
|
1795
1795
|
});
|
|
1796
|
-
}, Se =
|
|
1796
|
+
}, Se = wn({ onPathChange: () => {
|
|
1797
1797
|
P(), xe();
|
|
1798
1798
|
} }), Ce = (t) => {
|
|
1799
1799
|
if (L.editingNode()) return;
|
|
1800
1800
|
if (t.key === "Escape") {
|
|
1801
1801
|
if (e && d.isDragging()) {
|
|
1802
|
-
t.stopPropagation(),
|
|
1802
|
+
t.stopPropagation(), de();
|
|
1803
1803
|
return;
|
|
1804
1804
|
}
|
|
1805
1805
|
r ? (t.stopPropagation(), te(!1)) : e && (t.stopPropagation(), ee(!1));
|
|
1806
1806
|
return;
|
|
1807
1807
|
}
|
|
1808
|
-
if (t.metaKey || t.ctrlKey || t.altKey || t.shiftKey || t.repeat ||
|
|
1808
|
+
if (t.metaKey || t.ctrlKey || t.altKey || t.shiftKey || t.repeat || ln(document.activeElement)) return;
|
|
1809
1809
|
let n = t.key.toLowerCase();
|
|
1810
1810
|
n === "s" ? (t.preventDefault(), t.stopPropagation(), ee(!e)) : n === "t" && (t.preventDefault(), t.stopPropagation(), te(!r));
|
|
1811
1811
|
};
|
|
1812
|
-
window.addEventListener("mousemove", ae, !0), window.addEventListener("scroll",
|
|
1812
|
+
window.addEventListener("mousemove", ae, !0), window.addEventListener("scroll", se, !0), window.addEventListener("resize", be), window.addEventListener("click", ge, !0), window.addEventListener("keydown", Ce, !0), window.addEventListener("message", _e.onMessage), window.addEventListener("mouseout", ce, !0), window.addEventListener("pointerdown", fe, !0), window.addEventListener("pointermove", pe, !0), window.addEventListener("pointerup", me, !0), window.addEventListener("pointercancel", he, !0);
|
|
1813
1813
|
for (let e of ve) window.addEventListener(e, ye, !0);
|
|
1814
|
-
return console.info(`[levo-inspector] build ${
|
|
1815
|
-
window.removeEventListener("mousemove", ae, !0), window.removeEventListener("keydown", Ce, !0), window.removeEventListener("scroll",
|
|
1814
|
+
return console.info(`[levo-inspector] build ${Hn} — runtime mounted`), xe(), o.send({ type: "ready" }), () => {
|
|
1815
|
+
window.removeEventListener("mousemove", ae, !0), window.removeEventListener("keydown", Ce, !0), window.removeEventListener("scroll", se, !0), window.removeEventListener("resize", be), window.removeEventListener("mouseout", ce, !0), window.removeEventListener("pointerdown", fe, !0), window.removeEventListener("pointermove", pe, !0), window.removeEventListener("pointerup", me, !0), window.removeEventListener("pointercancel", he, !0), window.removeEventListener("click", ge, !0), window.removeEventListener("message", _e.onMessage);
|
|
1816
1816
|
for (let e of ve) window.removeEventListener(e, ye, !0);
|
|
1817
|
-
O.disconnect(), k.disconnect(), E && cancelAnimationFrame(E),
|
|
1817
|
+
O.disconnect(), k.disconnect(), E && cancelAnimationFrame(E), ne && cancelAnimationFrame(ne), V && cancelAnimationFrame(V), R.teardown(), Se.teardown(), L.teardown(), document.documentElement.style.cursor = "", b?.remove(), s.remove(), c.remove(), l.remove(), u.remove(), de(), d.node.remove();
|
|
1818
1818
|
for (let e of f) e.remove();
|
|
1819
1819
|
};
|
|
1820
1820
|
}
|
|
1821
1821
|
//#endregion
|
|
1822
1822
|
//#region src/branding/MadeWithLevo.tsx
|
|
1823
|
-
var
|
|
1824
|
-
.${
|
|
1823
|
+
var Gn = "levo-made-with", Kn = `.${Gn}{opacity:.2;transition:opacity 150ms,transform 150ms}
|
|
1824
|
+
.${Gn}:hover,.${Gn}:focus-visible{opacity:1;transform:translateY(-2px)}`, qn = ({ slug: e }) => {
|
|
1825
1825
|
let t = `utm_source=${encodeURIComponent(e || "website")}&utm_term=Made%20With%20Levo&utm_campaign=footer_branding&utm_medium=organic_footer_branding`;
|
|
1826
1826
|
return /* @__PURE__ */ P(M, { children: [/* @__PURE__ */ N("style", {
|
|
1827
1827
|
href: "levo-made-with",
|
|
1828
1828
|
precedence: "default",
|
|
1829
|
-
children:
|
|
1829
|
+
children: Kn
|
|
1830
1830
|
}), /* @__PURE__ */ P("a", {
|
|
1831
|
-
className:
|
|
1831
|
+
className: Gn,
|
|
1832
1832
|
href: `https://levo.so/?${t}`,
|
|
1833
1833
|
target: "_blank",
|
|
1834
1834
|
rel: "noopener noreferrer",
|
|
@@ -1859,58 +1859,58 @@ var Wn = "levo-made-with", Gn = `.${Wn}{opacity:.2;transition:opacity 150ms,tran
|
|
|
1859
1859
|
}
|
|
1860
1860
|
}), "Made with Levo"]
|
|
1861
1861
|
})] });
|
|
1862
|
-
},
|
|
1862
|
+
}, Jn = "levo:page-id", Yn = () => {
|
|
1863
1863
|
if (typeof document > "u") return null;
|
|
1864
|
-
let e = document.querySelectorAll(`meta[name="${
|
|
1864
|
+
let e = document.querySelectorAll(`meta[name="${Jn}"]`);
|
|
1865
1865
|
return e[e.length - 1]?.getAttribute("content")?.trim() || null;
|
|
1866
|
-
},
|
|
1866
|
+
}, Xn = C(() => import("./dist-DEXGyFeH.js").then((e) => e.n).then((e) => ({ default: e.PopupLoader }))), Zn = ({ siteId: e, pageId: t }) => {
|
|
1867
1867
|
let n = G(), r = i();
|
|
1868
1868
|
return !n || !r ? null : /* @__PURE__ */ N(x, {
|
|
1869
1869
|
fallback: null,
|
|
1870
|
-
children: /* @__PURE__ */ N(
|
|
1870
|
+
children: /* @__PURE__ */ N(Xn, {
|
|
1871
1871
|
pageId: t,
|
|
1872
1872
|
siteId: e
|
|
1873
1873
|
})
|
|
1874
1874
|
});
|
|
1875
|
-
},
|
|
1875
|
+
}, Qn = S(null), $n = Qn.Provider, er = () => T(Qn), tr = () => i(), nr = () => n(), rr = ({ site: e, analytics: t = !0, children: n }) => {
|
|
1876
1876
|
let [i] = A(() => {
|
|
1877
1877
|
if (!e) return null;
|
|
1878
|
-
let n =
|
|
1878
|
+
let n = ke(e), r = Oe(n);
|
|
1879
1879
|
return r ? {
|
|
1880
1880
|
client: r,
|
|
1881
|
-
insights:
|
|
1881
|
+
insights: re(r, {
|
|
1882
1882
|
insightsUrl: t && n.insightsUrl || null,
|
|
1883
1883
|
site: n.siteId || null
|
|
1884
1884
|
}),
|
|
1885
1885
|
site: e
|
|
1886
1886
|
} : null;
|
|
1887
|
-
}), [a, o] = A(null), s = B({ select: (e) => e.location.pathname }), c =
|
|
1887
|
+
}), [a, o] = A(null), s = B({ select: (e) => e.location.pathname }), c = kn();
|
|
1888
1888
|
return E(() => {
|
|
1889
1889
|
i && (window.levo_client = i.client, window.levo_insights = i.insights);
|
|
1890
1890
|
}, [i]), D(() => {
|
|
1891
1891
|
if (!i) return;
|
|
1892
|
-
let e =
|
|
1892
|
+
let e = Yn();
|
|
1893
1893
|
o(e), i.insights.init({ pageId: e });
|
|
1894
1894
|
}, [i, s]), i ? /* @__PURE__ */ P(r, {
|
|
1895
1895
|
client: i.client,
|
|
1896
1896
|
insights: i.insights,
|
|
1897
1897
|
children: [
|
|
1898
|
-
/* @__PURE__ */ N(
|
|
1898
|
+
/* @__PURE__ */ N($n, {
|
|
1899
1899
|
value: i.site,
|
|
1900
1900
|
children: n
|
|
1901
1901
|
}),
|
|
1902
|
-
!c && /* @__PURE__ */ N(
|
|
1902
|
+
!c && /* @__PURE__ */ N(Ot, {
|
|
1903
1903
|
site: i.site,
|
|
1904
1904
|
path: s
|
|
1905
1905
|
}),
|
|
1906
|
-
/* @__PURE__ */ N(
|
|
1906
|
+
/* @__PURE__ */ N(Zn, {
|
|
1907
1907
|
pageId: a ?? void 0,
|
|
1908
1908
|
siteId: i.site.id
|
|
1909
1909
|
}),
|
|
1910
|
-
!c && !!i.site.feature_flag?.branding && /* @__PURE__ */ N(
|
|
1910
|
+
!c && !!i.site.feature_flag?.branding && /* @__PURE__ */ N(qn, { slug: i.site.slug })
|
|
1911
1911
|
]
|
|
1912
1912
|
}) : /* @__PURE__ */ N(M, { children: n });
|
|
1913
|
-
},
|
|
1913
|
+
}, ir = (e, t) => {
|
|
1914
1914
|
let n = h(t);
|
|
1915
1915
|
return ({ location: t }) => {
|
|
1916
1916
|
if (!e.isLocalized) return;
|
|
@@ -1921,12 +1921,12 @@ var Wn = "levo-made-with", Gn = `.${Wn}{opacity:.2;transition:opacity 150ms,tran
|
|
|
1921
1921
|
cookie: typeof document > "u" ? null : document.cookie,
|
|
1922
1922
|
hasRoute: n
|
|
1923
1923
|
});
|
|
1924
|
-
if (r.kind === "redirect" && r.path !== t.pathname) throw
|
|
1924
|
+
if (r.kind === "redirect" && r.path !== t.pathname) throw ne({
|
|
1925
1925
|
search: !0,
|
|
1926
1926
|
to: r.path
|
|
1927
1927
|
});
|
|
1928
1928
|
};
|
|
1929
|
-
},
|
|
1929
|
+
}, ar = (e) => {
|
|
1930
1930
|
let t = e.locales ?? [], n = e.domain?.trim().replace(/^https?:\/\//, "").replace(/\/+$/, "");
|
|
1931
1931
|
return {
|
|
1932
1932
|
locales: t,
|
|
@@ -1934,8 +1934,8 @@ var Wn = "levo-made-with", Gn = `.${Wn}{opacity:.2;transition:opacity 150ms,tran
|
|
|
1934
1934
|
isLocalized: t.length > 1,
|
|
1935
1935
|
origin: n ? `https://${n}` : null
|
|
1936
1936
|
};
|
|
1937
|
-
},
|
|
1938
|
-
let { neutralPath: t, locales: n, activePrefix: r, hasRoute: i } = e, a =
|
|
1937
|
+
}, or = (e) => e.replace(/\/$/, ""), sr = (e) => {
|
|
1938
|
+
let { neutralPath: t, locales: n, activePrefix: r, hasRoute: i } = e, a = or(e.origin), o = `${a}${t}`;
|
|
1939
1939
|
if (n.length <= 1) return [{
|
|
1940
1940
|
rel: "canonical",
|
|
1941
1941
|
href: o
|
|
@@ -1957,11 +1957,14 @@ var Wn = "levo-made-with", Gn = `.${Wn}{opacity:.2;transition:opacity 150ms,tran
|
|
|
1957
1957
|
hrefLang: "x-default",
|
|
1958
1958
|
href: o
|
|
1959
1959
|
}), s;
|
|
1960
|
-
},
|
|
1960
|
+
}, cr = ({ to: e, ...t }) => /* @__PURE__ */ N(ee, {
|
|
1961
|
+
...t,
|
|
1962
|
+
to: e
|
|
1963
|
+
}), lr = ({ config: e, routeTree: t }) => {
|
|
1961
1964
|
let n = B({ select: (e) => e.location.pathname });
|
|
1962
1965
|
if (!e.isLocalized || !e.origin) return null;
|
|
1963
1966
|
let { neutralPath: r } = f(n, e.locales);
|
|
1964
|
-
return /* @__PURE__ */ N(M, { children:
|
|
1967
|
+
return /* @__PURE__ */ N(M, { children: sr({
|
|
1965
1968
|
neutralPath: r,
|
|
1966
1969
|
origin: e.origin,
|
|
1967
1970
|
locales: e.locales,
|
|
@@ -1971,7 +1974,7 @@ var Wn = "levo-made-with", Gn = `.${Wn}{opacity:.2;transition:opacity 150ms,tran
|
|
|
1971
1974
|
hrefLang: e.hrefLang,
|
|
1972
1975
|
rel: e.rel
|
|
1973
1976
|
}, e.hrefLang ?? e.href)) });
|
|
1974
|
-
},
|
|
1977
|
+
}, ur = S(void 0), dr = ({ children: e, locale: t, locales: n, defaultLocale: r, source: i = "default", hasRoute: a }) => {
|
|
1975
1978
|
let o = O(() => {
|
|
1976
1979
|
let e = n?.length ? n : [t];
|
|
1977
1980
|
return {
|
|
@@ -1995,13 +1998,13 @@ var Wn = "levo-made-with", Gn = `.${Wn}{opacity:.2;transition:opacity 150ms,tran
|
|
|
1995
1998
|
i,
|
|
1996
1999
|
a
|
|
1997
2000
|
]);
|
|
1998
|
-
return /* @__PURE__ */ N(
|
|
2001
|
+
return /* @__PURE__ */ N(ur.Provider, {
|
|
1999
2002
|
value: o,
|
|
2000
2003
|
children: e
|
|
2001
2004
|
});
|
|
2002
2005
|
};
|
|
2003
|
-
function
|
|
2004
|
-
return T(
|
|
2006
|
+
function fr() {
|
|
2007
|
+
return T(ur) || {
|
|
2005
2008
|
locale: "en",
|
|
2006
2009
|
locales: ["en"],
|
|
2007
2010
|
defaultLocale: "en",
|
|
@@ -2011,13 +2014,13 @@ function ur() {
|
|
|
2011
2014
|
pathFor: (e) => e
|
|
2012
2015
|
};
|
|
2013
2016
|
}
|
|
2014
|
-
function
|
|
2017
|
+
function pr(e) {
|
|
2015
2018
|
let { prefix: t } = f(B({ select: (e) => e.location.pathname }), e.locales);
|
|
2016
2019
|
return t ?? e.defaultLocale;
|
|
2017
2020
|
}
|
|
2018
|
-
var
|
|
2021
|
+
var mr = ({ config: e, children: t, routeTree: n }) => {
|
|
2019
2022
|
let { prefix: r } = f(B({ select: (e) => e.location.pathname }), e.locales);
|
|
2020
|
-
return /* @__PURE__ */ N(
|
|
2023
|
+
return /* @__PURE__ */ N(dr, {
|
|
2021
2024
|
defaultLocale: e.defaultLocale,
|
|
2022
2025
|
hasRoute: n ? h(n) : void 0,
|
|
2023
2026
|
locale: r ?? e.defaultLocale,
|
|
@@ -2026,8 +2029,8 @@ var fr = ({ config: e, children: t, routeTree: n }) => {
|
|
|
2026
2029
|
children: t
|
|
2027
2030
|
});
|
|
2028
2031
|
};
|
|
2029
|
-
function
|
|
2030
|
-
let { locale: e, locales: t, isMultiLocale: n, setLocale: r, pathFor: i, hasRoute: a } =
|
|
2032
|
+
function hr() {
|
|
2033
|
+
let { locale: e, locales: t, isMultiLocale: n, setLocale: r, pathFor: i, hasRoute: a } = fr(), o = B({ select: (e) => e.location.pathname });
|
|
2031
2034
|
return O(() => {
|
|
2032
2035
|
if (!n) return [];
|
|
2033
2036
|
let { neutralPath: s } = f(o, t), c = t.filter((e) => !a || a(i(s, e)));
|
|
@@ -2054,14 +2057,14 @@ function pr() {
|
|
|
2054
2057
|
}
|
|
2055
2058
|
//#endregion
|
|
2056
2059
|
//#region src/pageHead.tsx
|
|
2057
|
-
var
|
|
2060
|
+
var gr = (e) => JSON.stringify(e).replace(/<\//g, "<\\/"), _r = (e) => {
|
|
2058
2061
|
let t = {}, n = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*("([^"]*)"|'([^']*)'|[^\s"'>]+))?/g;
|
|
2059
2062
|
for (let r = n.exec(e); r; r = n.exec(e)) {
|
|
2060
2063
|
let e = r[1];
|
|
2061
2064
|
!e || /^on/i.test(e) || (t[e] = r[3] ?? r[4] ?? (r[2] ? r[2] : ""));
|
|
2062
2065
|
}
|
|
2063
2066
|
return t;
|
|
2064
|
-
},
|
|
2067
|
+
}, vr = (e) => {
|
|
2065
2068
|
let t = {
|
|
2066
2069
|
meta: [],
|
|
2067
2070
|
links: [],
|
|
@@ -2069,11 +2072,11 @@ var mr = (e) => JSON.stringify(e).replace(/<\//g, "<\\/"), hr = (e) => {
|
|
|
2069
2072
|
};
|
|
2070
2073
|
if (!e?.trim()) return t;
|
|
2071
2074
|
let n = e.replace(/<script\b([^>]*)>([\s\S]*?)<\/script\s*>/gi, (e, n, r) => {
|
|
2072
|
-
let i =
|
|
2075
|
+
let i = _r(n), a = r.trim();
|
|
2073
2076
|
return a && (i.children = a), t.scripts.push(i), "";
|
|
2074
2077
|
});
|
|
2075
|
-
return n = n.replace(/<(meta|link)\b([^>]*?)\/?>/gi, (e, n, r) => ((n.toLowerCase() === "meta" ? t.meta : t.links).push(
|
|
2076
|
-
},
|
|
2078
|
+
return n = n.replace(/<(meta|link)\b([^>]*?)\/?>/gi, (e, n, r) => ((n.toLowerCase() === "meta" ? t.meta : t.links).push(_r(r)), "")), t;
|
|
2079
|
+
}, yr = (e = {}, t = {}) => {
|
|
2077
2080
|
let n = {
|
|
2078
2081
|
meta: [],
|
|
2079
2082
|
links: [],
|
|
@@ -2135,17 +2138,17 @@ var mr = (e) => JSON.stringify(e).replace(/<\//g, "<\\/"), hr = (e) => {
|
|
|
2135
2138
|
let y = e.ldJson ? Array.isArray(e.ldJson) ? e.ldJson : [e.ldJson] : [];
|
|
2136
2139
|
for (let e of y) n.scripts.push({
|
|
2137
2140
|
type: "application/ld+json",
|
|
2138
|
-
children:
|
|
2141
|
+
children: gr(e)
|
|
2139
2142
|
});
|
|
2140
2143
|
for (let r of [t.customHead, e.customHead]) {
|
|
2141
2144
|
if (!r) continue;
|
|
2142
|
-
let e =
|
|
2145
|
+
let e = vr(r);
|
|
2143
2146
|
n.meta.push(...e.meta), n.links.push(...e.links), n.scripts.push(...e.scripts);
|
|
2144
2147
|
}
|
|
2145
2148
|
return n;
|
|
2146
2149
|
};
|
|
2147
|
-
function
|
|
2148
|
-
let n =
|
|
2150
|
+
function br({ meta: e, site: t }) {
|
|
2151
|
+
let n = yr(e, t);
|
|
2149
2152
|
return /* @__PURE__ */ P(M, { children: [
|
|
2150
2153
|
n.meta.map((e, t) => e.title === void 0 ? /* @__PURE__ */ N("meta", { ...e }, `m${t}`) : /* @__PURE__ */ N("title", { children: e.title }, `t${t}`)),
|
|
2151
2154
|
n.links.map((e, t) => /* @__PURE__ */ N("link", { ...e }, `l${t}`)),
|
|
@@ -2157,7 +2160,7 @@ function vr({ meta: e, site: t }) {
|
|
|
2157
2160
|
}
|
|
2158
2161
|
//#endregion
|
|
2159
2162
|
//#region src/registration/ui.tsx
|
|
2160
|
-
var Z = (...e) => e.filter(Boolean).join(" "),
|
|
2163
|
+
var Z = (...e) => e.filter(Boolean).join(" "), xr = ({ open: e, className: t, children: n }) => /* @__PURE__ */ N("div", {
|
|
2161
2164
|
inert: !e,
|
|
2162
2165
|
className: Z("grid transition-[grid-template-rows,opacity] duration-250 ease-[cubic-bezier(0.32,0.72,0,1)] motion-reduce:transition-none", e ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0"),
|
|
2163
2166
|
children: /* @__PURE__ */ N("div", {
|
|
@@ -2167,11 +2170,11 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2167
2170
|
children: n
|
|
2168
2171
|
})
|
|
2169
2172
|
})
|
|
2170
|
-
}),
|
|
2173
|
+
}), Sr = [
|
|
2171
2174
|
{
|
|
2172
2175
|
key: "email",
|
|
2173
2176
|
label: "Email",
|
|
2174
|
-
placeholder: "
|
|
2177
|
+
placeholder: "name@company.com",
|
|
2175
2178
|
type: "email",
|
|
2176
2179
|
inputMode: "email",
|
|
2177
2180
|
autoComplete: "email"
|
|
@@ -2200,7 +2203,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2200
2203
|
inputMode: void 0,
|
|
2201
2204
|
autoComplete: "organization-title"
|
|
2202
2205
|
}
|
|
2203
|
-
],
|
|
2206
|
+
], Cr = [{
|
|
2204
2207
|
key: "name",
|
|
2205
2208
|
label: "Registered company name",
|
|
2206
2209
|
placeholder: "Acme Corporation",
|
|
@@ -2210,7 +2213,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2210
2213
|
label: "Tax ID / GST number",
|
|
2211
2214
|
placeholder: "22AAAAA0000A1Z5",
|
|
2212
2215
|
autoComplete: "off"
|
|
2213
|
-
}],
|
|
2216
|
+
}], wr = [
|
|
2214
2217
|
{
|
|
2215
2218
|
key: "line1",
|
|
2216
2219
|
label: "Billing address",
|
|
@@ -2259,11 +2262,11 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2259
2262
|
wide: !1,
|
|
2260
2263
|
optional: !1
|
|
2261
2264
|
}
|
|
2262
|
-
],
|
|
2265
|
+
], Tr = (e) => Z("w-full rounded-xl border bg-page px-3.5 py-2.5 text-base text-ink outline-none transition placeholder:text-ink-muted/60", e ? "border-danger focus:ring-[3px] focus:ring-danger/15" : "border-border focus:border-brand focus:ring-[3px] focus:ring-brand/20"), Er = "flex items-baseline gap-1.5 font-medium text-ink text-sm", Dr = () => /* @__PURE__ */ N("span", {
|
|
2263
2266
|
"aria-hidden": !0,
|
|
2264
2267
|
className: "text-danger",
|
|
2265
2268
|
children: "*"
|
|
2266
|
-
}),
|
|
2269
|
+
}), Or = ({ values: e, errors: t, touched: n, onChange: r, onBlur: i, showBusinessBilling: a = !1, registrationFields: o, nameInputRef: s }) => {
|
|
2267
2270
|
let c = (t, n) => r("billing_details", {
|
|
2268
2271
|
...e.billing_details,
|
|
2269
2272
|
[t]: n
|
|
@@ -2282,8 +2285,8 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2282
2285
|
children: [
|
|
2283
2286
|
/* @__PURE__ */ P("label", {
|
|
2284
2287
|
htmlFor: "attendee-name",
|
|
2285
|
-
className:
|
|
2286
|
-
children: ["Your name", /* @__PURE__ */ N(
|
|
2288
|
+
className: Er,
|
|
2289
|
+
children: ["Your name", /* @__PURE__ */ N(Dr, {})]
|
|
2287
2290
|
}),
|
|
2288
2291
|
/* @__PURE__ */ N("input", {
|
|
2289
2292
|
ref: s,
|
|
@@ -2291,11 +2294,11 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2291
2294
|
name: "name",
|
|
2292
2295
|
type: "text",
|
|
2293
2296
|
autoComplete: "name",
|
|
2294
|
-
placeholder: "
|
|
2297
|
+
placeholder: "John Doe",
|
|
2295
2298
|
value: e.name,
|
|
2296
2299
|
onChange: (e) => r("name", e.target.value),
|
|
2297
2300
|
onBlur: () => i("name"),
|
|
2298
|
-
className:
|
|
2301
|
+
className: Tr(n.name && !!t.name),
|
|
2299
2302
|
required: !0
|
|
2300
2303
|
}),
|
|
2301
2304
|
n.name && t.name && /* @__PURE__ */ N("p", {
|
|
@@ -2304,7 +2307,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2304
2307
|
})
|
|
2305
2308
|
]
|
|
2306
2309
|
}),
|
|
2307
|
-
|
|
2310
|
+
Sr.map((a) => {
|
|
2308
2311
|
let s = o[a.key];
|
|
2309
2312
|
if (s === "off") return null;
|
|
2310
2313
|
let c = n[a.key] ? t[a.key] : void 0, l = a.key === "email" || a.key === "mobile";
|
|
@@ -2313,8 +2316,8 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2313
2316
|
children: [
|
|
2314
2317
|
/* @__PURE__ */ P("label", {
|
|
2315
2318
|
htmlFor: `attendee-${a.key}`,
|
|
2316
|
-
className:
|
|
2317
|
-
children: [a.label, s === "required" ? /* @__PURE__ */ N(
|
|
2319
|
+
className: Er,
|
|
2320
|
+
children: [a.label, s === "required" ? /* @__PURE__ */ N(Dr, {}) : /* @__PURE__ */ N("span", {
|
|
2318
2321
|
className: "font-normal text-ink-muted text-xs",
|
|
2319
2322
|
children: "Optional"
|
|
2320
2323
|
})]
|
|
@@ -2332,7 +2335,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2332
2335
|
value: e[a.key],
|
|
2333
2336
|
onChange: (e) => r(a.key, e.target.value),
|
|
2334
2337
|
onBlur: () => i(a.key),
|
|
2335
|
-
className:
|
|
2338
|
+
className: Tr(!!c),
|
|
2336
2339
|
required: s === "required"
|
|
2337
2340
|
}),
|
|
2338
2341
|
c && /* @__PURE__ */ N("p", {
|
|
@@ -2361,7 +2364,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2361
2364
|
className: "m-0 px-3.5 pb-3 text-amber-700 text-xs leading-relaxed starting:opacity-0 transition-opacity duration-200 dark:text-amber-400",
|
|
2362
2365
|
children: "Your billing details are still saved — tick the box to apply them."
|
|
2363
2366
|
}),
|
|
2364
|
-
/* @__PURE__ */ N(
|
|
2367
|
+
/* @__PURE__ */ N(xr, {
|
|
2365
2368
|
open: e.is_business_purchase,
|
|
2366
2369
|
className: "px-3.5 pb-3.5",
|
|
2367
2370
|
children: /* @__PURE__ */ P("div", {
|
|
@@ -2371,15 +2374,15 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2371
2374
|
className: "m-0 text-ink-muted text-xs leading-relaxed",
|
|
2372
2375
|
children: "This booking will be billed to your business. The invoice is raised against the details below."
|
|
2373
2376
|
}),
|
|
2374
|
-
|
|
2377
|
+
Cr.map((t) => /* @__PURE__ */ P("div", {
|
|
2375
2378
|
className: "flex flex-col gap-1.5",
|
|
2376
2379
|
children: [/* @__PURE__ */ P("label", {
|
|
2377
2380
|
htmlFor: `billing-${t.key}`,
|
|
2378
|
-
className:
|
|
2379
|
-
children: [t.label, /* @__PURE__ */ N(
|
|
2381
|
+
className: Er,
|
|
2382
|
+
children: [t.label, /* @__PURE__ */ N(Dr, {})]
|
|
2380
2383
|
}), /* @__PURE__ */ N("input", {
|
|
2381
2384
|
id: `billing-${t.key}`,
|
|
2382
|
-
className:
|
|
2385
|
+
className: Tr(),
|
|
2383
2386
|
placeholder: t.placeholder,
|
|
2384
2387
|
autoComplete: t.autoComplete,
|
|
2385
2388
|
value: e.billing_details[t.key],
|
|
@@ -2389,15 +2392,15 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2389
2392
|
}, t.key)),
|
|
2390
2393
|
/* @__PURE__ */ N("div", {
|
|
2391
2394
|
className: "grid grid-cols-2 gap-3",
|
|
2392
|
-
children:
|
|
2395
|
+
children: wr.map((t) => /* @__PURE__ */ P("div", {
|
|
2393
2396
|
className: Z("flex flex-col gap-1.5", t.wide && "col-span-2"),
|
|
2394
2397
|
children: [/* @__PURE__ */ P("label", {
|
|
2395
2398
|
htmlFor: `billing-${t.key}`,
|
|
2396
|
-
className:
|
|
2397
|
-
children: [t.label, !t.optional && /* @__PURE__ */ N(
|
|
2399
|
+
className: Er,
|
|
2400
|
+
children: [t.label, !t.optional && /* @__PURE__ */ N(Dr, {})]
|
|
2398
2401
|
}), /* @__PURE__ */ N("input", {
|
|
2399
2402
|
id: `billing-${t.key}`,
|
|
2400
|
-
className:
|
|
2403
|
+
className: Tr(),
|
|
2401
2404
|
placeholder: t.placeholder,
|
|
2402
2405
|
autoComplete: t.autoComplete,
|
|
2403
2406
|
inputMode: t.key === "postal_code" ? "numeric" : void 0,
|
|
@@ -2414,7 +2417,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2414
2417
|
})
|
|
2415
2418
|
]
|
|
2416
2419
|
});
|
|
2417
|
-
},
|
|
2420
|
+
}, kr = {
|
|
2418
2421
|
USD: "$",
|
|
2419
2422
|
EUR: "€",
|
|
2420
2423
|
GBP: "£",
|
|
@@ -2432,17 +2435,17 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2432
2435
|
maximumFractionDigits: 2
|
|
2433
2436
|
}).format(r);
|
|
2434
2437
|
} catch {
|
|
2435
|
-
return `${
|
|
2438
|
+
return `${kr[n] ?? n} ${r.toLocaleString()}`;
|
|
2436
2439
|
}
|
|
2437
|
-
},
|
|
2440
|
+
}, Ar = (e) => !e.tax_enabled || !e.taxes?.length ? null : e.tax_inclusive ? "incl. taxes" : "+ taxes", jr = (e) => !!e?.taxes?.length && e.tax_amount !== void 0, Mr = (e) => !!e && "subtotal" in e && e.tax_enabled === !0 && !!e.taxes?.length, Nr = (e, t) => t ? t.total_amount ?? t.sale_amount ?? 0 : Mr(e) ? e.total ?? e.unit_amount ?? 0 : e?.unit_amount ?? 0, Pr = (e, t) => {
|
|
2438
2441
|
if (!e) return null;
|
|
2439
|
-
let n =
|
|
2442
|
+
let n = Nr(e, t);
|
|
2440
2443
|
return {
|
|
2441
2444
|
amount: n,
|
|
2442
2445
|
currency: e.currency,
|
|
2443
2446
|
isFree: n === 0
|
|
2444
2447
|
};
|
|
2445
|
-
},
|
|
2448
|
+
}, Fr = (e, t) => t ? t.base_amount ?? 0 : Mr(e) ? e.subtotal ?? e.unit_amount ?? 0 : e?.unit_amount ?? 0, Ir = (e, t) => jr(t) ? t.taxes : !t && Mr(e) ? e.taxes : [], Lr = (e, t) => !t || e.tickets.length === 0 ? !0 : e.tickets.some((e) => typeof e == "string" ? e === t : e._id === t), Rr = (e) => e.kind === "percent" ? `${e.percent_off}% off` : `${kr[e.currency ?? "INR"] ?? ""}${(e.amount_off ?? 0) / 100} off`, zr = ({ couponCode: e, onCouponCodeChange: t, couponError: n, couponLoading: r, onValidateCoupon: i, onRemoveCoupon: a, publicCoupons: o, discount: s, selectedTicket: c }) => {
|
|
2446
2449
|
let [l, u] = A(!1);
|
|
2447
2450
|
if (s) return /* @__PURE__ */ P("div", {
|
|
2448
2451
|
className: "flex starting:scale-95 items-center justify-between gap-2.5 rounded-xl border border-emerald-600/40 bg-emerald-500/10 px-3.5 py-2.5 text-[13px] text-emerald-800 starting:opacity-0 transition-[opacity,scale] duration-200 ease-out dark:bg-emerald-500/15 dark:text-emerald-300",
|
|
@@ -2472,7 +2475,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2472
2475
|
children: /* @__PURE__ */ N(ce, { className: "size-4" })
|
|
2473
2476
|
})]
|
|
2474
2477
|
});
|
|
2475
|
-
let d = o.filter((e) =>
|
|
2478
|
+
let d = o.filter((e) => Lr(e, c?._id));
|
|
2476
2479
|
return /* @__PURE__ */ P("div", {
|
|
2477
2480
|
className: "flex flex-col",
|
|
2478
2481
|
children: [/* @__PURE__ */ N("button", {
|
|
@@ -2481,7 +2484,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2481
2484
|
onClick: () => u((e) => !e),
|
|
2482
2485
|
className: "self-start text-[13px] text-ink-soft underline underline-offset-[3px] hover:text-ink",
|
|
2483
2486
|
children: "Have a code?"
|
|
2484
|
-
}), /* @__PURE__ */ N(
|
|
2487
|
+
}), /* @__PURE__ */ N(xr, {
|
|
2485
2488
|
open: l,
|
|
2486
2489
|
children: /* @__PURE__ */ P("div", {
|
|
2487
2490
|
className: "flex flex-col gap-2 pt-2",
|
|
@@ -2525,7 +2528,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2525
2528
|
children: [
|
|
2526
2529
|
e.code,
|
|
2527
2530
|
" · ",
|
|
2528
|
-
|
|
2531
|
+
Rr(e)
|
|
2529
2532
|
]
|
|
2530
2533
|
}, e._id))
|
|
2531
2534
|
})
|
|
@@ -2533,11 +2536,11 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2533
2536
|
})
|
|
2534
2537
|
})]
|
|
2535
2538
|
});
|
|
2536
|
-
},
|
|
2539
|
+
}, Br = (e) => {
|
|
2537
2540
|
if (e < 60) return `${e} min`;
|
|
2538
2541
|
let t = Math.floor(e / 60), n = e % 60, r = `${t} hr`;
|
|
2539
2542
|
return n ? `${r} ${n} min` : r;
|
|
2540
|
-
},
|
|
2543
|
+
}, Vr = (e, t) => {
|
|
2541
2544
|
if (!e) return null;
|
|
2542
2545
|
let n = new Date(e);
|
|
2543
2546
|
if (Number.isNaN(n.getTime())) return null;
|
|
@@ -2552,26 +2555,26 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2552
2555
|
}).format(n), a = null;
|
|
2553
2556
|
if (t) {
|
|
2554
2557
|
let e = new Date(t), r = Math.round((e.getTime() - n.getTime()) / 6e4);
|
|
2555
|
-
!Number.isNaN(r) && r > 0 && (a =
|
|
2558
|
+
!Number.isNaN(r) && r > 0 && (a = Br(r));
|
|
2556
2559
|
}
|
|
2557
2560
|
return {
|
|
2558
2561
|
day: r,
|
|
2559
2562
|
time: i,
|
|
2560
2563
|
duration: a
|
|
2561
2564
|
};
|
|
2562
|
-
},
|
|
2565
|
+
}, Hr = 60, Ur = (e) => e.toISOString().replace(/[-:]/g, "").replace(/\.\d+/, ""), Wr = (e) => {
|
|
2563
2566
|
if (!e.startsAt) return null;
|
|
2564
2567
|
let t = new Date(e.startsAt);
|
|
2565
2568
|
if (Number.isNaN(t.getTime())) return null;
|
|
2566
2569
|
let n = e.endsAt ? new Date(e.endsAt) : null;
|
|
2567
2570
|
return {
|
|
2568
2571
|
start: t,
|
|
2569
|
-
end: n && !Number.isNaN(n.getTime()) && n > t ? n : new Date(t.getTime() +
|
|
2572
|
+
end: n && !Number.isNaN(n.getTime()) && n > t ? n : new Date(t.getTime() + Hr * 6e4)
|
|
2570
2573
|
};
|
|
2571
|
-
},
|
|
2572
|
-
let t =
|
|
2574
|
+
}, Gr = (e) => {
|
|
2575
|
+
let t = Wr(e);
|
|
2573
2576
|
if (!t) return null;
|
|
2574
|
-
let n =
|
|
2577
|
+
let n = Ur(t.start), r = Ur(t.end), i = [e.description, e.url].filter(Boolean).join("\n\n"), a = `https://calendar.google.com/calendar/render?${new URLSearchParams({
|
|
2575
2578
|
action: "TEMPLATE",
|
|
2576
2579
|
text: e.title,
|
|
2577
2580
|
dates: `${n}/${r}`,
|
|
@@ -2605,10 +2608,10 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2605
2608
|
"END:VCALENDAR"
|
|
2606
2609
|
].filter(Boolean).join("\r\n")
|
|
2607
2610
|
};
|
|
2608
|
-
},
|
|
2609
|
-
let [n, r] = A(!1), i = e?.currency, a =
|
|
2611
|
+
}, Kr = ({ selectedTicket: e, discount: t }) => {
|
|
2612
|
+
let [n, r] = A(!1), i = e?.currency, a = Nr(e, t), o = Fr(e, t), s = Ir(e, t), c = t?.discount ?? 0, l = s.length > 0 || c > 0 || o !== a, u = /* @__PURE__ */ P(M, { children: [/* @__PURE__ */ P("span", {
|
|
2610
2613
|
className: "inline-flex items-center gap-1.5",
|
|
2611
|
-
children: ["Total", l && /* @__PURE__ */ N(
|
|
2614
|
+
children: ["Total", l && /* @__PURE__ */ N(V, { className: Z("size-4 text-ink-muted transition-transform", n && "rotate-180") })]
|
|
2612
2615
|
}), /* @__PURE__ */ N("span", { children: Q({
|
|
2613
2616
|
unit_amount: a,
|
|
2614
2617
|
currency: i
|
|
@@ -2624,7 +2627,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2624
2627
|
}) : /* @__PURE__ */ N("div", {
|
|
2625
2628
|
className: d,
|
|
2626
2629
|
children: u
|
|
2627
|
-
}), l && /* @__PURE__ */ N(
|
|
2630
|
+
}), l && /* @__PURE__ */ N(xr, {
|
|
2628
2631
|
open: n,
|
|
2629
2632
|
children: /* @__PURE__ */ P("div", {
|
|
2630
2633
|
className: "flex flex-col gap-1.5 px-3.5 pb-3 text-[13px] text-ink-soft",
|
|
@@ -2663,7 +2666,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2663
2666
|
})
|
|
2664
2667
|
})]
|
|
2665
2668
|
});
|
|
2666
|
-
},
|
|
2669
|
+
}, qr = (e) => {
|
|
2667
2670
|
let [t, n] = A(null);
|
|
2668
2671
|
return E(() => {
|
|
2669
2672
|
let t = e ? window.visualViewport : null;
|
|
@@ -2676,8 +2679,8 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2676
2679
|
t.removeEventListener("resize", r), t.removeEventListener("scroll", r);
|
|
2677
2680
|
};
|
|
2678
2681
|
}, [e]), t;
|
|
2679
|
-
},
|
|
2680
|
-
let d = k(null), f =
|
|
2682
|
+
}, Jr = ({ open: e, title: t, when: n, onClose: r, onClosed: i, onSubmit: a, footer: o, wide: s, initialFocusRef: c, layers: l, children: u }) => {
|
|
2683
|
+
let d = k(null), f = qr(e), [p, m] = A(!1), h = /* @__PURE__ */ N("div", {
|
|
2681
2684
|
onScroll: (e) => m(e.currentTarget.scrollTop > 2),
|
|
2682
2685
|
className: "min-h-0 flex-1 overflow-y-auto overflow-x-hidden overscroll-contain",
|
|
2683
2686
|
children: /* @__PURE__ */ P("div", {
|
|
@@ -2742,8 +2745,8 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2742
2745
|
]
|
|
2743
2746
|
})] })
|
|
2744
2747
|
});
|
|
2745
|
-
},
|
|
2746
|
-
let d =
|
|
2748
|
+
}, Yr = "block w-full rounded-lg px-2.5 py-2 text-left text-ink text-sm no-underline hover:bg-ink/5", Xr = "transition-[opacity,translate] duration-300 ease-out starting:translate-y-2 starting:opacity-0 motion-reduce:transition-none", Zr = "inline-flex min-h-[46px] w-full items-center justify-center gap-2 rounded-xl border border-border font-medium text-[14.5px] text-ink no-underline transition hover:border-brand active:scale-[0.985]", Qr = ({ email: e, eventTitle: t, startsAt: n, endsAt: r, eventUrl: i, when: a, bookingRef: o, qrImageUrl: s, invoiceUrl: c, onClose: l, onRegisterAnother: u }) => {
|
|
2749
|
+
let d = Gr({
|
|
2747
2750
|
title: t,
|
|
2748
2751
|
startsAt: n,
|
|
2749
2752
|
endsAt: r,
|
|
@@ -2773,11 +2776,11 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2773
2776
|
})
|
|
2774
2777
|
}),
|
|
2775
2778
|
/* @__PURE__ */ N("h3", {
|
|
2776
|
-
className: Z(
|
|
2779
|
+
className: Z(Xr, "m-0 mt-[18px] font-heading font-semibold text-[22px] text-ink tracking-[-0.016em] delay-[260ms]"),
|
|
2777
2780
|
children: "You're in"
|
|
2778
2781
|
}),
|
|
2779
2782
|
a && /* @__PURE__ */ P("p", {
|
|
2780
|
-
className: Z(
|
|
2783
|
+
className: Z(Xr, "m-0 mt-1.5 text-[14.5px] text-ink delay-[320ms]"),
|
|
2781
2784
|
children: [
|
|
2782
2785
|
a.day,
|
|
2783
2786
|
" · ",
|
|
@@ -2785,14 +2788,14 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2785
2788
|
]
|
|
2786
2789
|
}),
|
|
2787
2790
|
/* @__PURE__ */ P("p", {
|
|
2788
|
-
className: Z(
|
|
2791
|
+
className: Z(Xr, "m-0 mt-1 max-w-[300px] text-[13.5px] text-ink-soft leading-relaxed delay-[360ms]"),
|
|
2789
2792
|
children: ["Joining link sent to ", /* @__PURE__ */ N("span", {
|
|
2790
2793
|
className: "text-ink [overflow-wrap:anywhere]",
|
|
2791
2794
|
children: e
|
|
2792
2795
|
})]
|
|
2793
2796
|
}),
|
|
2794
2797
|
/* @__PURE__ */ P("div", {
|
|
2795
|
-
className: Z(
|
|
2798
|
+
className: Z(Xr, "relative mt-5 w-full max-w-[340px] overflow-hidden rounded-2xl border border-border bg-ink/3 px-4 py-3.5 delay-[420ms]"),
|
|
2796
2799
|
children: [
|
|
2797
2800
|
/* @__PURE__ */ N("span", {
|
|
2798
2801
|
"aria-hidden": !0,
|
|
@@ -2826,29 +2829,29 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2826
2829
|
]
|
|
2827
2830
|
}),
|
|
2828
2831
|
/* @__PURE__ */ P("div", {
|
|
2829
|
-
className: Z(
|
|
2832
|
+
className: Z(Xr, "mt-4 flex w-full max-w-[340px] flex-col gap-2 delay-[520ms]"),
|
|
2830
2833
|
children: [
|
|
2831
|
-
d && /* @__PURE__ */ P(
|
|
2832
|
-
className:
|
|
2833
|
-
children: [/* @__PURE__ */ N(
|
|
2834
|
-
}), /* @__PURE__ */ N(
|
|
2834
|
+
d && /* @__PURE__ */ P(H.Root, { children: [/* @__PURE__ */ P(H.Trigger, {
|
|
2835
|
+
className: Zr,
|
|
2836
|
+
children: [/* @__PURE__ */ N(ie, { className: "size-4" }), "Add to calendar"]
|
|
2837
|
+
}), /* @__PURE__ */ N(H.Portal, { children: /* @__PURE__ */ N(H.Positioner, {
|
|
2835
2838
|
sideOffset: 6,
|
|
2836
2839
|
className: "z-[2147483001]",
|
|
2837
|
-
children: /* @__PURE__ */ P(
|
|
2840
|
+
children: /* @__PURE__ */ P(H.Popup, {
|
|
2838
2841
|
className: "flex w-[220px] origin-[var(--transform-origin)] flex-col gap-0.5 rounded-2xl border border-border bg-page p-1.5 font-body text-ink shadow-xl outline-none transition-[opacity,scale] duration-150 ease-out data-[ending-style]:scale-95 data-[starting-style]:scale-95 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none",
|
|
2839
2842
|
children: [
|
|
2840
2843
|
/* @__PURE__ */ N("a", {
|
|
2841
2844
|
href: d.google,
|
|
2842
2845
|
target: "_blank",
|
|
2843
2846
|
rel: "noopener noreferrer",
|
|
2844
|
-
className:
|
|
2847
|
+
className: Yr,
|
|
2845
2848
|
children: "Google Calendar"
|
|
2846
2849
|
}),
|
|
2847
2850
|
/* @__PURE__ */ N("a", {
|
|
2848
2851
|
href: d.outlook,
|
|
2849
2852
|
target: "_blank",
|
|
2850
2853
|
rel: "noopener noreferrer",
|
|
2851
|
-
className:
|
|
2854
|
+
className: Yr,
|
|
2852
2855
|
children: "Outlook"
|
|
2853
2856
|
}),
|
|
2854
2857
|
/* @__PURE__ */ N("button", {
|
|
@@ -2858,7 +2861,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2858
2861
|
let e = new Blob([d.ics], { type: "text/calendar;charset=utf-8" }), n = URL.createObjectURL(e), r = document.createElement("a");
|
|
2859
2862
|
r.href = n, r.download = `${t.replace(/[^\w\s-]/g, "").trim() || "event"}.ics`, r.click(), URL.revokeObjectURL(n);
|
|
2860
2863
|
},
|
|
2861
|
-
className:
|
|
2864
|
+
className: Yr,
|
|
2862
2865
|
children: "Apple Calendar / .ics"
|
|
2863
2866
|
})
|
|
2864
2867
|
]
|
|
@@ -2868,7 +2871,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2868
2871
|
href: c,
|
|
2869
2872
|
target: "_blank",
|
|
2870
2873
|
rel: "noopener noreferrer",
|
|
2871
|
-
className:
|
|
2874
|
+
className: Zr,
|
|
2872
2875
|
children: [/* @__PURE__ */ N(oe, { className: "size-4" }), "Download invoice"]
|
|
2873
2876
|
}),
|
|
2874
2877
|
/* @__PURE__ */ N("button", {
|
|
@@ -2887,41 +2890,41 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2887
2890
|
})
|
|
2888
2891
|
]
|
|
2889
2892
|
});
|
|
2890
|
-
},
|
|
2893
|
+
}, $r = {
|
|
2891
2894
|
email: "required",
|
|
2892
2895
|
mobile: "off",
|
|
2893
2896
|
organization: "off",
|
|
2894
2897
|
designation: "off"
|
|
2895
|
-
},
|
|
2898
|
+
}, ei = (e) => e.replace(/[\s()-]/g, ""), ti = (e) => /^\+?\d{7,15}$/.test(ei(e)), ni = (e, t) => {
|
|
2896
2899
|
let n = {}, r = [
|
|
2897
|
-
["mobile",
|
|
2900
|
+
["mobile", ei(e.mobile)],
|
|
2898
2901
|
["organization", e.organization.trim()],
|
|
2899
2902
|
["designation", e.designation.trim()]
|
|
2900
2903
|
];
|
|
2901
2904
|
for (let [e, i] of r) t[e] !== "off" && i && (n[e] = i);
|
|
2902
2905
|
return n;
|
|
2903
|
-
},
|
|
2906
|
+
}, ri = (e, t) => {
|
|
2904
2907
|
let n = {};
|
|
2905
|
-
e.name.trim() || (n.name = "Please enter your name"), t.email !== "off" && (e.email.trim() ? /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(e.email.trim()) || (n.email = "That email address doesn't look right") : t.email === "required" && (n.email = "Please enter your email")), t.mobile !== "off" && (e.mobile.trim() ?
|
|
2908
|
+
e.name.trim() || (n.name = "Please enter your name"), t.email !== "off" && (e.email.trim() ? /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(e.email.trim()) || (n.email = "That email address doesn't look right") : t.email === "required" && (n.email = "Please enter your email")), t.mobile !== "off" && (e.mobile.trim() ? ti(e.mobile) || (n.mobile = "That doesn't look like a valid phone number") : t.mobile === "required" && (n.mobile = "Please enter your phone number"));
|
|
2906
2909
|
for (let r of ["organization", "designation"]) t[r] === "required" && !e[r].trim() && (n[r] = `Please enter your ${r}`);
|
|
2907
2910
|
return n;
|
|
2908
|
-
},
|
|
2911
|
+
}, ii = (e) => `levo:event-registration:${e}`, ai = (e) => {
|
|
2909
2912
|
if (typeof window > "u") return null;
|
|
2910
2913
|
try {
|
|
2911
|
-
let t = window.localStorage.getItem(
|
|
2914
|
+
let t = window.localStorage.getItem(ii(e));
|
|
2912
2915
|
return t ? JSON.parse(t) : null;
|
|
2913
2916
|
} catch {
|
|
2914
2917
|
return null;
|
|
2915
2918
|
}
|
|
2916
|
-
},
|
|
2919
|
+
}, oi = (e, t) => {
|
|
2917
2920
|
if (!(typeof window > "u")) try {
|
|
2918
|
-
window.localStorage.setItem(
|
|
2921
|
+
window.localStorage.setItem(ii(e), JSON.stringify(t));
|
|
2919
2922
|
} catch {}
|
|
2920
|
-
},
|
|
2923
|
+
}, si = (e) => {
|
|
2921
2924
|
if (!(typeof window > "u")) try {
|
|
2922
|
-
window.localStorage.removeItem(
|
|
2925
|
+
window.localStorage.removeItem(ii(e));
|
|
2923
2926
|
} catch {}
|
|
2924
|
-
},
|
|
2927
|
+
}, ci = ({ tickets: e, selectedTicket: t, onSelect: n, error: r }) => {
|
|
2925
2928
|
let [i, a] = A(!t);
|
|
2926
2929
|
return /* @__PURE__ */ P("fieldset", {
|
|
2927
2930
|
className: "m-0 flex min-w-0 flex-col gap-2 border-0 p-0",
|
|
@@ -2933,8 +2936,8 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2933
2936
|
/* @__PURE__ */ N("div", {
|
|
2934
2937
|
className: "-mb-2 flex flex-col",
|
|
2935
2938
|
children: e.map((r) => {
|
|
2936
|
-
let o = r._id === t?._id, s = i || o, c =
|
|
2937
|
-
return /* @__PURE__ */ N(
|
|
2939
|
+
let o = r._id === t?._id, s = i || o, c = Ar(r);
|
|
2940
|
+
return /* @__PURE__ */ N(xr, {
|
|
2938
2941
|
open: s,
|
|
2939
2942
|
children: /* @__PURE__ */ P("label", {
|
|
2940
2943
|
className: Z("mb-2 flex w-full cursor-pointer items-start gap-2.5 rounded-xl border px-3.5 py-3 transition", o ? "border-brand bg-brand/5" : "border-border hover:border-brand/50"),
|
|
@@ -2980,7 +2983,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2980
2983
|
children: [
|
|
2981
2984
|
e.length - 1,
|
|
2982
2985
|
" more",
|
|
2983
|
-
/* @__PURE__ */ N(
|
|
2986
|
+
/* @__PURE__ */ N(V, {
|
|
2984
2987
|
"aria-hidden": !0,
|
|
2985
2988
|
className: "size-3.5"
|
|
2986
2989
|
})
|
|
@@ -2998,7 +3001,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
2998
3001
|
})
|
|
2999
3002
|
]
|
|
3000
3003
|
});
|
|
3001
|
-
},
|
|
3004
|
+
}, li = {
|
|
3002
3005
|
name: "",
|
|
3003
3006
|
email: "",
|
|
3004
3007
|
mobile: "",
|
|
@@ -3017,14 +3020,14 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3017
3020
|
country: ""
|
|
3018
3021
|
}
|
|
3019
3022
|
}
|
|
3020
|
-
},
|
|
3023
|
+
}, ui = {
|
|
3021
3024
|
name: !0,
|
|
3022
3025
|
email: !0,
|
|
3023
3026
|
mobile: !0,
|
|
3024
3027
|
organization: !0,
|
|
3025
3028
|
designation: !0
|
|
3026
|
-
},
|
|
3027
|
-
let [n, r] = A(
|
|
3029
|
+
}, di = (e, t) => {
|
|
3030
|
+
let [n, r] = A(li), [i, a] = A({}), [o, s] = A(!1), c = k(!1);
|
|
3028
3031
|
E(() => {
|
|
3029
3032
|
c.current || !e || (c.current = !0, r((t) => ({
|
|
3030
3033
|
...t,
|
|
@@ -3032,14 +3035,14 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3032
3035
|
email: t.email || e.email || ""
|
|
3033
3036
|
})));
|
|
3034
3037
|
}, [e]);
|
|
3035
|
-
let l =
|
|
3038
|
+
let l = ri(n, t), u = w((e, t) => r((n) => ({
|
|
3036
3039
|
...n,
|
|
3037
3040
|
[e]: t
|
|
3038
3041
|
})), []), d = w((e) => a((t) => ({
|
|
3039
3042
|
...t,
|
|
3040
3043
|
[e]: !0
|
|
3041
3044
|
})), []), f = w(() => {
|
|
3042
|
-
r(
|
|
3045
|
+
r(li), a({}), s(!1), c.current = !0;
|
|
3043
3046
|
}, []), p = w(() => {
|
|
3044
3047
|
a({}), s(!1);
|
|
3045
3048
|
}, []);
|
|
@@ -3053,9 +3056,9 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3053
3056
|
touchField: d,
|
|
3054
3057
|
reset: f,
|
|
3055
3058
|
resetValidationDisplay: p,
|
|
3056
|
-
touched: o ?
|
|
3059
|
+
touched: o ? ui : i
|
|
3057
3060
|
};
|
|
3058
|
-
},
|
|
3061
|
+
}, fi = ({ eventID: e, selectedTicket: t, enabled: n }) => {
|
|
3059
3062
|
let r = i(), [a, o] = A(""), [s, c] = A(null), [l, u] = A(!1), [d, f] = A(null), [p, m] = A([]);
|
|
3060
3063
|
return E(() => {
|
|
3061
3064
|
!n || !e || !r || r.fetch?.url(`/v1/event/event/${e}/coupon/list-public-coupons`)?.get().json().then((e) => {
|
|
@@ -3106,13 +3109,13 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3106
3109
|
o(""), c(null), f(null);
|
|
3107
3110
|
}, [])
|
|
3108
3111
|
};
|
|
3109
|
-
},
|
|
3112
|
+
}, pi = async (e, t) => {
|
|
3110
3113
|
let n = new URLSearchParams();
|
|
3111
3114
|
return n.append("query", JSON.stringify({ where: { status: "active" } })), (await e.fetch?.url(`/v1/event/event/${t}/ticket/query?${n.toString()}`).get().json())?.content?.data ?? [];
|
|
3112
|
-
},
|
|
3115
|
+
}, mi = ({ eventID: e, external: t }) => {
|
|
3113
3116
|
let n = i(), [r, a] = A([]), [o, s] = A(!t), [c, l] = A(!1), [u, d] = A(null);
|
|
3114
3117
|
return E(() => {
|
|
3115
|
-
t || !e || !n || (s(!0), l(!1),
|
|
3118
|
+
t || !e || !n || (s(!0), l(!1), pi(n, e).then((e) => {
|
|
3116
3119
|
a(e), e.length === 1 && d(e[0] ?? null);
|
|
3117
3120
|
}).catch((e) => {
|
|
3118
3121
|
l(!0), n.logger?.error("Failed to load event tickets", { exception: b(e) });
|
|
@@ -3128,7 +3131,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3128
3131
|
selectedTicket: u,
|
|
3129
3132
|
selectTicket: d
|
|
3130
3133
|
};
|
|
3131
|
-
},
|
|
3134
|
+
}, hi = async (e) => {
|
|
3132
3135
|
let { payment_session_id: t, order_id: n } = e;
|
|
3133
3136
|
if (!t || !n) throw Error("Cashfree payment session missing");
|
|
3134
3137
|
let { load: r } = await import("./script.esm-D4nvz3-k.js"), i = await r({ mode: e.environment || "production" });
|
|
@@ -3144,7 +3147,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3144
3147
|
status: "closed",
|
|
3145
3148
|
message: a.error?.message
|
|
3146
3149
|
};
|
|
3147
|
-
},
|
|
3150
|
+
}, gi = () => typeof window < "u" && "Razorpay" in window, _i = ({ order: e, onSettled: t, onError: n }) => {
|
|
3148
3151
|
let { Razorpay: r, isLoading: i, error: a } = le(), o = k({
|
|
3149
3152
|
onSettled: t,
|
|
3150
3153
|
onError: n
|
|
@@ -3160,7 +3163,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3160
3163
|
s.current = !0, o.current.onError(Error(a));
|
|
3161
3164
|
return;
|
|
3162
3165
|
}
|
|
3163
|
-
if (!r || !
|
|
3166
|
+
if (!r || !gi()) return;
|
|
3164
3167
|
s.current = !0;
|
|
3165
3168
|
let t;
|
|
3166
3169
|
try {
|
|
@@ -3198,7 +3201,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3198
3201
|
a,
|
|
3199
3202
|
e
|
|
3200
3203
|
]), null;
|
|
3201
|
-
},
|
|
3204
|
+
}, vi = ({ stripePromise: e, clientSecret: t, onClose: n, onComplete: r }) => {
|
|
3202
3205
|
let i = k(r);
|
|
3203
3206
|
i.current = r;
|
|
3204
3207
|
let a = O(() => ({
|
|
@@ -3226,9 +3229,9 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3226
3229
|
})]
|
|
3227
3230
|
})] })
|
|
3228
3231
|
});
|
|
3229
|
-
},
|
|
3232
|
+
}, yi = () => {
|
|
3230
3233
|
let [e, t] = A(null), n = w(async (e, n) => {
|
|
3231
|
-
if (e.provider === "cashfree") return
|
|
3234
|
+
if (e.provider === "cashfree") return hi(e);
|
|
3232
3235
|
if (e.provider === "stripe") {
|
|
3233
3236
|
let { client_secret: n, session_id: r } = e;
|
|
3234
3237
|
if (!n || !r) throw Error("Stripe checkout session missing");
|
|
@@ -3262,7 +3265,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3262
3265
|
}, []), r = (e, n) => {
|
|
3263
3266
|
t(null), n instanceof Error ? e.settle.reject(n) : e.settle.resolve(n);
|
|
3264
3267
|
}, i = null;
|
|
3265
|
-
return e?.provider === "stripe" ? i = /* @__PURE__ */ N(
|
|
3268
|
+
return e?.provider === "stripe" ? i = /* @__PURE__ */ N(vi, {
|
|
3266
3269
|
stripePromise: e.stripePromise,
|
|
3267
3270
|
clientSecret: e.clientSecret,
|
|
3268
3271
|
onComplete: () => r(e, {
|
|
@@ -3270,7 +3273,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3270
3273
|
confirmation: { session_id: e.sessionId }
|
|
3271
3274
|
}),
|
|
3272
3275
|
onClose: () => r(e, { status: "closed" })
|
|
3273
|
-
}) : e?.provider === "razorpay" && (i = /* @__PURE__ */ N(
|
|
3276
|
+
}) : e?.provider === "razorpay" && (i = /* @__PURE__ */ N(_i, {
|
|
3274
3277
|
order: e.order,
|
|
3275
3278
|
onSettled: (t) => r(e, t),
|
|
3276
3279
|
onError: (t) => r(e, t)
|
|
@@ -3284,8 +3287,8 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3284
3287
|
providerUnreachable: "We couldn't reach the payment provider. Check your connection and try again.",
|
|
3285
3288
|
confirmationFailed: "We couldn't confirm your payment. Your details are saved — try again.",
|
|
3286
3289
|
generic: "Something went wrong. Please try again."
|
|
3287
|
-
},
|
|
3288
|
-
let r = i(), a =
|
|
3290
|
+
}, bi = (e) => !!e && e.status !== "requires_payment", xi = ({ eventID: e, details: t, onConfirmed: n }) => {
|
|
3291
|
+
let r = i(), a = yi(), [o, s] = A({ kind: "idle" }), c = k({
|
|
3289
3292
|
details: t,
|
|
3290
3293
|
onConfirmed: n
|
|
3291
3294
|
});
|
|
@@ -3301,7 +3304,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3301
3304
|
message: t
|
|
3302
3305
|
}), d = async (e, t) => {
|
|
3303
3306
|
if (!t?.key) {
|
|
3304
|
-
|
|
3307
|
+
bi(e) ? l(e) : s({
|
|
3305
3308
|
kind: "failed",
|
|
3306
3309
|
message: $.registrationFailed
|
|
3307
3310
|
});
|
|
@@ -3335,7 +3338,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3335
3338
|
}
|
|
3336
3339
|
try {
|
|
3337
3340
|
let t = (await r?.fetch?.url(`/v1/event/booking/${e._id}/confirm-booking`)?.post(n.confirmation)?.json())?.content?.data;
|
|
3338
|
-
|
|
3341
|
+
bi(t) ? l(t) : u(e._id, $.paymentAbandoned);
|
|
3339
3342
|
} catch (t) {
|
|
3340
3343
|
r?.logger?.error("Failed to confirm booking after payment", { exception: b(t) }), u(e._id, $.confirmationFailed);
|
|
3341
3344
|
}
|
|
@@ -3374,33 +3377,33 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3374
3377
|
},
|
|
3375
3378
|
reset: () => s({ kind: "idle" })
|
|
3376
3379
|
};
|
|
3377
|
-
},
|
|
3380
|
+
}, Si = "register", Ci = () => {
|
|
3378
3381
|
if (typeof window > "u") return !1;
|
|
3379
|
-
let e = new URLSearchParams(window.location.search).get(
|
|
3382
|
+
let e = new URLSearchParams(window.location.search).get(Si);
|
|
3380
3383
|
return e !== null && e !== "0" && e !== "false";
|
|
3381
|
-
},
|
|
3384
|
+
}, wi = ({ canAutoOpen: e }) => {
|
|
3382
3385
|
let [t, n] = A(!1), r = k(!1), i = w(() => n(!0), []), a = w(() => n(!1), []);
|
|
3383
3386
|
return E(() => {
|
|
3384
|
-
r.current || !e || !
|
|
3387
|
+
r.current || !e || !Ci() || (r.current = !0, n(!0));
|
|
3385
3388
|
}, [e]), {
|
|
3386
3389
|
isOpen: t,
|
|
3387
3390
|
open: i,
|
|
3388
3391
|
close: a
|
|
3389
3392
|
};
|
|
3390
|
-
},
|
|
3391
|
-
let { account: s } =
|
|
3393
|
+
}, Ti = "inline-flex items-center justify-center rounded-lg bg-brand px-4 py-3 font-semibold text-brand-foreground transition hover:opacity-90", Ei = ({ eventID: e, title: t, external: n, buttonText: r = "Register Now", startsAt: i, endsAt: a, eventUrl: o }) => {
|
|
3394
|
+
let { account: s } = Qe(), c = er(), l = mi({
|
|
3392
3395
|
eventID: e,
|
|
3393
3396
|
external: n
|
|
3394
|
-
}), u = l.selectedTicket?.registration_fields ??
|
|
3397
|
+
}), u = l.selectedTicket?.registration_fields ?? $r, d = di(s, u), f = Pr(l.selectedTicket, null)?.isFree === !1, [p, m] = A(null), [h, g] = A(null);
|
|
3395
3398
|
E(() => {
|
|
3396
|
-
let t =
|
|
3399
|
+
let t = ai(e);
|
|
3397
3400
|
t && g({ email: t.email });
|
|
3398
3401
|
}, [e]);
|
|
3399
|
-
let _ =
|
|
3402
|
+
let _ = wi({ canAutoOpen: !n && !l.isLoading && l.tickets.length > 0 && !h }), v = k(null), y = fi({
|
|
3400
3403
|
eventID: e,
|
|
3401
3404
|
selectedTicket: l.selectedTicket,
|
|
3402
3405
|
enabled: _.isOpen && f
|
|
3403
|
-
}), b =
|
|
3406
|
+
}), b = Pr(l.selectedTicket, y.discount), x = !!b && !b.isFree, S = l.tickets.length > 1, C = O(() => Vr(i, a), [i, a]), w = t || "this event", T = S || x, D = xi({
|
|
3404
3407
|
eventID: e,
|
|
3405
3408
|
details: {
|
|
3406
3409
|
merchantName: c?.name || t || "",
|
|
@@ -3408,12 +3411,12 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3408
3411
|
prefill: {
|
|
3409
3412
|
name: d.values.name.trim(),
|
|
3410
3413
|
email: d.values.email.trim(),
|
|
3411
|
-
contact:
|
|
3414
|
+
contact: ei(d.values.mobile)
|
|
3412
3415
|
}
|
|
3413
3416
|
},
|
|
3414
3417
|
onConfirmed: (t) => {
|
|
3415
3418
|
let n = d.values.email.trim();
|
|
3416
|
-
m(t), g({ email: n }),
|
|
3419
|
+
m(t), g({ email: n }), oi(e, {
|
|
3417
3420
|
bookingId: t._id,
|
|
3418
3421
|
email: n,
|
|
3419
3422
|
at: (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -3422,7 +3425,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3422
3425
|
}), { state: j } = D, F = j.kind === "busy", I = (e) => {
|
|
3423
3426
|
y.reset(), D.reset(), l.selectTicket(e);
|
|
3424
3427
|
}, L = () => {
|
|
3425
|
-
|
|
3428
|
+
si(e), g(null), m(null), D.reset(), d.reset();
|
|
3426
3429
|
}, R = (t) => {
|
|
3427
3430
|
t.preventDefault(), d.markSubmitted(), !(!l.selectedTicket || !d.isValid) && D.register({
|
|
3428
3431
|
event: e,
|
|
@@ -3430,7 +3433,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3430
3433
|
attendees: [{
|
|
3431
3434
|
name: d.values.name.trim(),
|
|
3432
3435
|
email: d.values.email.trim(),
|
|
3433
|
-
...
|
|
3436
|
+
...ni(d.values, u),
|
|
3434
3437
|
ticket: l.selectedTicket._id,
|
|
3435
3438
|
details: {}
|
|
3436
3439
|
}],
|
|
@@ -3444,7 +3447,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3444
3447
|
className: "my-2",
|
|
3445
3448
|
children: /* @__PURE__ */ N("button", {
|
|
3446
3449
|
type: "button",
|
|
3447
|
-
className:
|
|
3450
|
+
className: Ti,
|
|
3448
3451
|
onClick: () => window.open(n, "_blank", "noopener,noreferrer"),
|
|
3449
3452
|
children: r
|
|
3450
3453
|
})
|
|
@@ -3465,7 +3468,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3465
3468
|
children: h && !_.isOpen ? /* @__PURE__ */ P("span", {
|
|
3466
3469
|
className: "inline-flex flex-wrap items-center gap-2 rounded-xl border border-border bg-ink/3 px-3.5 py-2.5 text-ink text-sm",
|
|
3467
3470
|
children: [
|
|
3468
|
-
/* @__PURE__ */ N(
|
|
3471
|
+
/* @__PURE__ */ N(ae, { className: "size-4 text-emerald-600 dark:text-emerald-400" }),
|
|
3469
3472
|
"You're registered as ",
|
|
3470
3473
|
h.email,
|
|
3471
3474
|
/* @__PURE__ */ N("button", {
|
|
@@ -3479,10 +3482,10 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3479
3482
|
type: "button",
|
|
3480
3483
|
onClick: _.open,
|
|
3481
3484
|
disabled: l.isLoading,
|
|
3482
|
-
className: Z(
|
|
3485
|
+
className: Z(Ti, "disabled:opacity-60"),
|
|
3483
3486
|
children: r
|
|
3484
3487
|
})
|
|
3485
|
-
}), /* @__PURE__ */ N(
|
|
3488
|
+
}), /* @__PURE__ */ N(Jr, {
|
|
3486
3489
|
open: _.isOpen,
|
|
3487
3490
|
title: p ? w : `Register for ${w}`,
|
|
3488
3491
|
when: C,
|
|
@@ -3516,7 +3519,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3516
3519
|
children: x ? "Secure payment · confirmation sent to your email" : "No card needed · joining link sent to your email"
|
|
3517
3520
|
})
|
|
3518
3521
|
] }),
|
|
3519
|
-
children: p ? /* @__PURE__ */ N(
|
|
3522
|
+
children: p ? /* @__PURE__ */ N(Qr, {
|
|
3520
3523
|
email: d.values.email.trim(),
|
|
3521
3524
|
eventTitle: w,
|
|
3522
3525
|
startsAt: i,
|
|
@@ -3531,16 +3534,16 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3531
3534
|
}) : /* @__PURE__ */ P("div", {
|
|
3532
3535
|
className: "flex flex-col gap-4",
|
|
3533
3536
|
children: [
|
|
3534
|
-
S && /* @__PURE__ */ N(
|
|
3537
|
+
S && /* @__PURE__ */ N(ci, {
|
|
3535
3538
|
tickets: l.tickets,
|
|
3536
3539
|
selectedTicket: l.selectedTicket,
|
|
3537
3540
|
onSelect: I,
|
|
3538
3541
|
error: d.submitAttempted && !l.selectedTicket ? "Choose a ticket to continue" : void 0
|
|
3539
3542
|
}),
|
|
3540
|
-
x && /* @__PURE__ */ P(M, { children: [/* @__PURE__ */ N(
|
|
3543
|
+
x && /* @__PURE__ */ P(M, { children: [/* @__PURE__ */ N(Kr, {
|
|
3541
3544
|
selectedTicket: l.selectedTicket,
|
|
3542
3545
|
discount: y.discount
|
|
3543
|
-
}), /* @__PURE__ */ N(
|
|
3546
|
+
}), /* @__PURE__ */ N(zr, {
|
|
3544
3547
|
couponCode: y.code,
|
|
3545
3548
|
onCouponCodeChange: y.setCode,
|
|
3546
3549
|
couponError: y.error,
|
|
@@ -3556,7 +3559,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3556
3559
|
children: [T && /* @__PURE__ */ N("span", {
|
|
3557
3560
|
className: "font-medium text-ink text-sm",
|
|
3558
3561
|
children: "Your details"
|
|
3559
|
-
}), /* @__PURE__ */ N(
|
|
3562
|
+
}), /* @__PURE__ */ N(Or, {
|
|
3560
3563
|
values: d.values,
|
|
3561
3564
|
errors: d.errors,
|
|
3562
3565
|
touched: d.touched,
|
|
@@ -3570,7 +3573,7 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3570
3573
|
]
|
|
3571
3574
|
})
|
|
3572
3575
|
})] });
|
|
3573
|
-
},
|
|
3576
|
+
}, Di = (e) => e.length > 1 ? e.replace(/\/+$/, "") : e, Oi = (e) => typeof e == "string" && e.trim() ? e : void 0, ki = (e) => typeof e == "string" ? e : e?.location ?? void 0, Ai = (e, t) => {
|
|
3574
3577
|
let n = e.meta ?? {}, r = e.title && t ? `${e.title} | ${t}` : e.title || t || void 0;
|
|
3575
3578
|
return {
|
|
3576
3579
|
title: n.meta_title || r,
|
|
@@ -3580,32 +3583,32 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3580
3583
|
og: {
|
|
3581
3584
|
title: n.og_title || void 0,
|
|
3582
3585
|
description: n.og_description || void 0,
|
|
3583
|
-
image:
|
|
3586
|
+
image: ki(n.og_image),
|
|
3584
3587
|
url: n.og_url || void 0
|
|
3585
3588
|
},
|
|
3586
3589
|
twitter: { card: n.twitter_card || void 0 },
|
|
3587
3590
|
ldJson: n.ld_json || void 0,
|
|
3588
3591
|
customHead: n.head_code || void 0
|
|
3589
3592
|
};
|
|
3590
|
-
},
|
|
3593
|
+
}, ji = (e) => ({
|
|
3591
3594
|
description: e.description || void 0,
|
|
3592
3595
|
customHead: e.settings?.head_code || void 0
|
|
3593
|
-
}),
|
|
3594
|
-
let i =
|
|
3596
|
+
}), Mi = (e) => (t = {}, n) => (r) => {
|
|
3597
|
+
let i = Ai(t, e.name);
|
|
3595
3598
|
if (n) {
|
|
3596
3599
|
let t = r?.loaderData?.[n.source];
|
|
3597
3600
|
if (t) {
|
|
3598
|
-
let r = n.title ?
|
|
3601
|
+
let r = n.title ? Oi(t[n.title]) : void 0;
|
|
3599
3602
|
r && (i.title = e.name ? `${r} | ${e.name}` : r, i.og = {
|
|
3600
3603
|
...i.og,
|
|
3601
3604
|
title: r
|
|
3602
3605
|
});
|
|
3603
|
-
let a = n.description ?
|
|
3606
|
+
let a = n.description ? Oi(t[n.description]) : void 0;
|
|
3604
3607
|
a && (i.description = a, i.og = {
|
|
3605
3608
|
...i.og,
|
|
3606
3609
|
description: a
|
|
3607
3610
|
});
|
|
3608
|
-
let o = n.image ?
|
|
3611
|
+
let o = n.image ? ki(t[n.image]) : void 0;
|
|
3609
3612
|
o && (i.og = {
|
|
3610
3613
|
...i.og,
|
|
3611
3614
|
image: o
|
|
@@ -3614,31 +3617,31 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3614
3617
|
}
|
|
3615
3618
|
if (!i.canonical) {
|
|
3616
3619
|
let t = r?.match?.pathname, n = (e.domain || "").trim();
|
|
3617
|
-
n && t?.startsWith("/") && (i.canonical = (/^https?:\/\//.test(n) ? n : `https://${n}`).replace(/\/+$/, "") +
|
|
3620
|
+
n && t?.startsWith("/") && (i.canonical = (/^https?:\/\//.test(n) ? n : `https://${n}`).replace(/\/+$/, "") + Di(t));
|
|
3618
3621
|
}
|
|
3619
|
-
let a =
|
|
3622
|
+
let a = yr(i, ji(e)), o = t.id?.trim();
|
|
3620
3623
|
return o && a.meta.push({
|
|
3621
|
-
name:
|
|
3624
|
+
name: Jn,
|
|
3622
3625
|
content: o
|
|
3623
3626
|
}), a;
|
|
3624
|
-
},
|
|
3625
|
-
let t =
|
|
3627
|
+
}, Ni = (e) => e.params, Pi = (e) => {
|
|
3628
|
+
let t = ke(e);
|
|
3626
3629
|
return (e, n) => {
|
|
3627
|
-
let { rules: r, invalid: i } =
|
|
3628
|
-
return (
|
|
3629
|
-
queryClient: n.queryClient,
|
|
3630
|
+
let { rules: r, invalid: i } = xe(n?.access), a = r.length > 0 || i;
|
|
3631
|
+
return (n) => a ? Promise.resolve({}) : Ye({
|
|
3632
|
+
queryClient: n.context.queryClient,
|
|
3630
3633
|
config: t,
|
|
3631
3634
|
sources: e,
|
|
3632
|
-
params:
|
|
3635
|
+
params: Ni(n)
|
|
3633
3636
|
});
|
|
3634
3637
|
};
|
|
3635
|
-
},
|
|
3636
|
-
let { limit: t = 20, debounceMs: n = 300, hotkey: r = !0 } = e ?? {}, a = i(), o =
|
|
3638
|
+
}, Fi = 2, Ii = (e) => {
|
|
3639
|
+
let { limit: t = 20, debounceMs: n = 300, hotkey: r = !0 } = e ?? {}, a = i(), o = er(), s = G(), [c, l] = A(""), [u, d] = A(!1), [f, p] = A("");
|
|
3637
3640
|
E(() => {
|
|
3638
3641
|
let e = setTimeout(() => p(c.trim()), n);
|
|
3639
3642
|
return () => clearTimeout(e);
|
|
3640
3643
|
}, [c, n]);
|
|
3641
|
-
let m = f.length >=
|
|
3644
|
+
let m = f.length >= Fi, h = R({
|
|
3642
3645
|
queryKey: [
|
|
3643
3646
|
"levo-search",
|
|
3644
3647
|
o?.id ?? null,
|
|
@@ -3687,4 +3690,4 @@ var Z = (...e) => e.filter(Boolean).join(" "), yr = ({ open: e, className: t, ch
|
|
|
3687
3690
|
};
|
|
3688
3691
|
};
|
|
3689
3692
|
//#endregion
|
|
3690
|
-
export {
|
|
3693
|
+
export { It as ColorModeProvider, Un as Inspector, me as LEVO_AUTH_METHODS, K as LEVO_AUTH_QUERY_KEY, pe as LEVO_OAUTH_METHODS, xt as LEVO_OTP_LENGTH, dt as LEVO_PENDING_APPROVAL_CODE, fe as LEVO_PRIMARY_AUTH_METHODS, m as LOCALE_COOKIE, l as LOCALE_REDIRECT_CACHE_CONTROL, Ot as LevoChat, $e as LevoEntryForm, Ei as LevoEventRegister, Rt as LevoForm, cr as LevoLink, Zn as LevoPopups, it as LevoProfileForm, rr as LevoSiteProvider, lr as LocaleHreflang, dr as LocaleProvider, Jn as PAGE_ID_META, br as PageHead, mr as SiteLocaleProvider, sr as buildHreflangLinks, Mi as createLevoHead, Pi as createLevoLoader, _ as createRouteTreeMatcher, Oe as createSiteClient, De as decideAccess, v as extractGeoAndLanguageData, ft as isPendingApprovalError, St as isValidEmail, Ct as isValidOtp, Tt as isValidPhone, Fe as levoParams, ir as localeBeforeLoad, p as localePath, d as localeRedirectResponse, wt as normalizePhone, yr as pageHead, xe as parseAccess, vr as parseRawHead, Ye as prefetchLevoSources, ar as readLocaleConfig, Yn as readPageId, Se as resolveAuthMethods, g as resolveLocale, u as resolveLocaleRedirect, s as resolveLocaleRequest, ke as siteConfigFromJson, f as splitLocalePrefix, Lt as useColorMode, hr as useLanguageOptions, ut as useLevoAccess, Qe as useLevoAuth, qe as useLevoForm, nr as useLevoInsights, ht as useLevoLogin, bt as useLevoOAuth, Et as useLevoOtpInput, Ke as useLevoRecord, Ii as useLevoSearch, tr as useLevoSite, Ge as useLevoSource, fr as useLocale, pr as useUrlLocale };
|