@inploi/plugin-chatbot 3.28.6 → 3.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3854 @@
1
+ import { g as qe, i as rr, k as Ie, a as nr, b as ie, A as Me, c as Tr, N as ze, _ as E, d as sr, h as Q, e as te, p as oe, F as pt, o as l, f as Fe, y as he, s as V, j as ct, l as fe, m as Nr, n as rt, q as Y, r as Rr, t as ke, u as Dr, v as ar, w as Or, x as ir, z as Pr, B as Le, C as X, D as Br, V as $r, E as or, G as mt, H as Be, I as $e, J as jr, K as Ur, L as qr, M as zr, O as Kr, P as Gr, Q as lr, R as Hr, S as Wr, T as Jr, U as Zr } from "./index-2755147c.js";
2
+ import "@inploi/sdk";
3
+ const Lt = ({
4
+ condition: e,
5
+ context: t,
6
+ submissions: n,
7
+ ifBlock: r
8
+ }) => {
9
+ const [s, ...a] = e.compareKey.split(".");
10
+ if (!s)
11
+ return !1;
12
+ const i = cr({
13
+ context: t,
14
+ key: s,
15
+ path: a,
16
+ submissions: n
17
+ });
18
+ if (!i)
19
+ return !1;
20
+ switch (i.type) {
21
+ case "address": {
22
+ const u = qe(i.value, a.join("."));
23
+ switch (e.compare) {
24
+ case "equals":
25
+ return u === e.compareValue;
26
+ case "contains":
27
+ return u ? u.includes(e.compareValue) : !1;
28
+ case "notEquals":
29
+ return u !== e.compareValue;
30
+ case "notContains":
31
+ return u ? !u.includes(e.compareValue) : !0;
32
+ }
33
+ break;
34
+ }
35
+ case "integration": {
36
+ if (typeof i.value != "object" || Array.isArray(i.value))
37
+ return !1;
38
+ const u = qe(i.value, a.join(".")), c = {
39
+ ...r,
40
+ data: {
41
+ ...r.data,
42
+ compareKey: "_temp"
43
+ }
44
+ };
45
+ switch (typeof u) {
46
+ case "boolean":
47
+ return Ve(c, {
48
+ submissions: {
49
+ _temp: {
50
+ value: u,
51
+ type: "boolean"
52
+ }
53
+ },
54
+ context: t
55
+ });
56
+ case "string":
57
+ return Ve(c, {
58
+ submissions: {
59
+ _temp: {
60
+ value: u,
61
+ type: "string"
62
+ }
63
+ },
64
+ context: t
65
+ });
66
+ case "number":
67
+ return Ve(c, {
68
+ submissions: {
69
+ _temp: {
70
+ value: u,
71
+ type: "number"
72
+ }
73
+ },
74
+ context: t
75
+ });
76
+ case "object":
77
+ return Array.isArray(u) && u.every(rr) ? Ve(c, {
78
+ submissions: {
79
+ _temp: {
80
+ value: u,
81
+ type: "enum"
82
+ }
83
+ },
84
+ context: t
85
+ }) : !1;
86
+ }
87
+ break;
88
+ }
89
+ case "boolean": {
90
+ const u = e.compareValue === "true";
91
+ switch (e.compare) {
92
+ case "equals":
93
+ return i.value === u;
94
+ case "notEquals":
95
+ return i.value !== u;
96
+ }
97
+ break;
98
+ }
99
+ case "string":
100
+ switch (e.compare) {
101
+ case "equals":
102
+ return i.value === e.compareValue;
103
+ case "contains":
104
+ return i.value ? i.value.includes(e.compareValue) : !1;
105
+ case "notEquals":
106
+ return i.value !== e.compareValue;
107
+ case "notContains":
108
+ return i.value ? !i.value.includes(e.compareValue) : !0;
109
+ }
110
+ break;
111
+ case "number": {
112
+ try {
113
+ const u = Number(e.compareValue);
114
+ switch (e.compare) {
115
+ case "equals":
116
+ return i.value === u;
117
+ case "notEquals":
118
+ return i.value !== u;
119
+ case "greaterThan":
120
+ return i.value > u;
121
+ case "greaterThanOrEqualTo":
122
+ return i.value >= u;
123
+ case "lessThan":
124
+ return i.value < u;
125
+ case "lessThanOrEqualTo":
126
+ return i.value <= u;
127
+ }
128
+ } catch {
129
+ return console.error(`Failed to parse number in if-block ${r.id}`, i.value), !1;
130
+ }
131
+ break;
132
+ }
133
+ case "enum":
134
+ switch (e.compare) {
135
+ case "equals":
136
+ return i.value.length === 1 && i.value[0] === e.compareValue;
137
+ case "notEquals":
138
+ return i.value.length === 1 && i.value[0] !== e.compareValue;
139
+ case "contains":
140
+ return i.value.includes(e.compareValue);
141
+ case "notContains":
142
+ return !i.value.includes(e.compareValue);
143
+ }
144
+ break;
145
+ }
146
+ }, Ve = (e, {
147
+ context: t,
148
+ submissions: n
149
+ }) => {
150
+ const r = "combinator" in e.data ? e.data.conditions : [e.data];
151
+ if (("combinator" in e.data ? e.data.combinator : "and") === "or") {
152
+ for (const a of r)
153
+ if (Lt({
154
+ condition: a,
155
+ context: t,
156
+ submissions: n,
157
+ ifBlock: e
158
+ }))
159
+ return !0;
160
+ return !1;
161
+ } else {
162
+ for (const a of r)
163
+ if (!Lt({
164
+ condition: a,
165
+ context: t,
166
+ submissions: n,
167
+ ifBlock: e
168
+ }))
169
+ return !1;
170
+ return !0;
171
+ }
172
+ }, Xr = /{{\s*([^}]+?)\s*(?:\|\s*([^}]+?)\s*)?}}/g, le = (e, {
173
+ context: t,
174
+ submissions: n
175
+ }) => e.replace(Xr, (r, s, a = "") => {
176
+ const [i, ...u] = s.trim().split("."), c = cr({
177
+ key: i,
178
+ path: u,
179
+ submissions: n,
180
+ context: t
181
+ });
182
+ if (!c)
183
+ return a;
184
+ switch (c.type) {
185
+ case "boolean":
186
+ return c.value === !0 ? "true" : "false";
187
+ case "file":
188
+ return c.value.map((g) => `${g.name} (${Ie(g.sizeKb)})`).join(", ");
189
+ case "enum":
190
+ return c.value.join(", ");
191
+ case "address":
192
+ return Object.values(c.value).filter((g) => g && g.trim().length > 0).join(", ");
193
+ case "number":
194
+ case "string":
195
+ return c.value ? c.value.toString() : a;
196
+ case "integration": {
197
+ if (typeof c.value != "object" || Array.isArray(c.value))
198
+ break;
199
+ const g = qe(c.value, u.join("."));
200
+ switch (typeof g) {
201
+ case "boolean":
202
+ return g === !0 ? "true" : "false";
203
+ case "string":
204
+ return g;
205
+ case "number":
206
+ return g.toString();
207
+ case "object":
208
+ if (Array.isArray(g) && g.every(rr))
209
+ return g.join(", ");
210
+ }
211
+ break;
212
+ }
213
+ }
214
+ return a;
215
+ }), ur = ({
216
+ node: e,
217
+ nodes: t,
218
+ stopWhen: n
219
+ }) => {
220
+ if ((n == null ? void 0 : n(e)) === !0)
221
+ return e;
222
+ const r = e.nextId ? t.find((s) => s.id === e.nextId) : void 0;
223
+ if (r)
224
+ return ur({
225
+ node: r,
226
+ nodes: t,
227
+ stopWhen: n
228
+ });
229
+ }, Qr = ({
230
+ childNode: e,
231
+ nodes: t
232
+ }) => {
233
+ const r = t.filter((s) => s.type === "if-block").find((s) => {
234
+ if (!s.branchId)
235
+ return !1;
236
+ const a = t.find((u) => u.id === s.branchId);
237
+ if (!a)
238
+ return !1;
239
+ const i = ur({
240
+ node: a,
241
+ nodes: t,
242
+ stopWhen: (u) => u.id === e.id
243
+ });
244
+ return !(!i || i.id !== e.id);
245
+ });
246
+ if (r != null && r.nextId)
247
+ return t.find((s) => s.id === r.nextId);
248
+ }, Yr = ({
249
+ flow: e,
250
+ analytics: t,
251
+ logger: n,
252
+ context: r,
253
+ apiClient: s,
254
+ getSubmissions: a,
255
+ chatService: i,
256
+ onFlowEnd: u,
257
+ onInterpret: c
258
+ }) => {
259
+ let g = new AbortController();
260
+ const k = {
261
+ ...t.service,
262
+ log: (m) => t.service.log({
263
+ ...m,
264
+ customProperties: {
265
+ ...m.customProperties,
266
+ ...t.customProperties
267
+ }
268
+ })
269
+ }, h = async (m, v) => {
270
+ const S = a();
271
+ c == null || c(m, v);
272
+ try {
273
+ await en({
274
+ flow: e,
275
+ analytics: k,
276
+ logger: n,
277
+ apiClient: s,
278
+ context: r,
279
+ node: m,
280
+ submissions: S,
281
+ chat: {
282
+ sendMessage: async (C) => i.send({
283
+ groupId: m.id,
284
+ message: C,
285
+ signal: g.signal
286
+ }),
287
+ userInput: async (C) => i.input({
288
+ input: C,
289
+ signal: g.signal
290
+ }),
291
+ addToSubmissions: i.addToSubmissions
292
+ },
293
+ next: (C) => {
294
+ const A = C ? e.nodes.find((F) => F.id === C) : Qr({
295
+ childNode: m,
296
+ nodes: e.nodes
297
+ });
298
+ return A ? h(A, m) : u == null ? void 0 : u(m);
299
+ },
300
+ end: () => u == null ? void 0 : u(m)
301
+ });
302
+ } catch (C) {
303
+ if (C instanceof Me)
304
+ return;
305
+ throw C;
306
+ }
307
+ };
308
+ return {
309
+ interpret: async (m) => {
310
+ const v = e.nodes.find((S) => S.id === m) ?? nr(e.nodes);
311
+ return h(v);
312
+ },
313
+ undo: (m) => {
314
+ let v = 1;
315
+ const S = e.nodes.find((A) => A.id === m[m.length - 1]);
316
+ for (let A = m.length - 2; A > 0; A--) {
317
+ const F = m[A], y = e.nodes.find((N) => N.id === F);
318
+ if (!y || (v++, y.type.startsWith("question-")))
319
+ break;
320
+ }
321
+ g.abort(), g = new AbortController();
322
+ const C = e.nodes.find((A) => A.id === m[m.length - v]);
323
+ return ie(C, "Undo failed: new start node not found"), h(C, S), {
324
+ removed: v
325
+ };
326
+ },
327
+ abort: () => {
328
+ g.abort();
329
+ }
330
+ };
331
+ };
332
+ async function en(e) {
333
+ const t = e.node;
334
+ switch (t.type) {
335
+ case "text":
336
+ return ln({
337
+ ...e,
338
+ node: t
339
+ });
340
+ case "image":
341
+ return un({
342
+ ...e,
343
+ node: t
344
+ });
345
+ case "question-text":
346
+ return cn({
347
+ ...e,
348
+ node: t
349
+ });
350
+ case "question-enum":
351
+ return fn({
352
+ ...e,
353
+ node: t
354
+ });
355
+ case "question-number":
356
+ return dn({
357
+ ...e,
358
+ node: t
359
+ });
360
+ case "question-boolean":
361
+ return hn({
362
+ ...e,
363
+ node: t
364
+ });
365
+ case "question-file":
366
+ return mn({
367
+ ...e,
368
+ node: t
369
+ });
370
+ case "question-address":
371
+ return pn({
372
+ ...e,
373
+ node: t
374
+ });
375
+ case "end-flow":
376
+ return gn({
377
+ ...e,
378
+ node: t
379
+ });
380
+ case "if-block":
381
+ return on({
382
+ ...e,
383
+ node: t
384
+ });
385
+ case "jump":
386
+ return rn({
387
+ ...e,
388
+ node: t
389
+ });
390
+ case "link":
391
+ return an({
392
+ ...e,
393
+ node: t
394
+ });
395
+ case "integration-application-submit":
396
+ return sn({
397
+ ...e,
398
+ node: t
399
+ });
400
+ case "add-submission":
401
+ return nn({
402
+ ...e,
403
+ node: t
404
+ });
405
+ case "integration-workflow-get":
406
+ throw Error("Workflow should be unreachable");
407
+ case "identify":
408
+ return tn({
409
+ ...e,
410
+ node: t
411
+ });
412
+ default:
413
+ throw new Error(`Unknown node: ${JSON.stringify(t)}`);
414
+ }
415
+ }
416
+ const Ae = (e, t) => {
417
+ var r;
418
+ const n = (r = e[t]) == null ? void 0 : r.value;
419
+ if (typeof n != "string" && typeof n != "number")
420
+ throw new Error(`Submission at “${t}” is not a string or number`);
421
+ return n;
422
+ };
423
+ async function tn({
424
+ next: e,
425
+ node: t,
426
+ analytics: n,
427
+ submissions: r,
428
+ logger: s
429
+ }) {
430
+ if (!r)
431
+ return e(t.nextId);
432
+ try {
433
+ n.log({
434
+ event: "IDENTIFY",
435
+ properties: {
436
+ identifier: Ae(r, t.data.key).toString(),
437
+ first_name: t.data.firstName ? Ae(r, t.data.firstName).toString() : void 0,
438
+ last_name: t.data.lastName ? Ae(r, t.data.lastName).toString() : void 0,
439
+ email: t.data.email ? Ae(r, t.data.email).toString() : void 0,
440
+ phone_number: t.data.phoneNumber ? Ae(r, t.data.phoneNumber).toString() : void 0,
441
+ custom_traits: t.data.customTraits ? Object.fromEntries(t.data.customTraits.map(({
442
+ key: a,
443
+ value: i
444
+ }) => {
445
+ var u;
446
+ return [a, (u = r[i]) == null ? void 0 : u.value];
447
+ })) : void 0
448
+ }
449
+ });
450
+ } catch (a) {
451
+ s.error(a);
452
+ } finally {
453
+ e(t.nextId);
454
+ }
455
+ }
456
+ async function rn({
457
+ next: e,
458
+ node: t
459
+ }) {
460
+ e(t.data.targetId);
461
+ }
462
+ async function nn({
463
+ next: e,
464
+ node: t,
465
+ logger: n,
466
+ submissions: r,
467
+ context: s
468
+ }) {
469
+ if (!r) {
470
+ n.error("Submissions not found");
471
+ return;
472
+ }
473
+ r[t.data.key] = {
474
+ type: "string",
475
+ value: le(t.data.value, {
476
+ submissions: r,
477
+ context: s
478
+ })
479
+ }, e(t.nextId);
480
+ }
481
+ async function sn({
482
+ chat: e,
483
+ next: t,
484
+ node: n,
485
+ logger: r,
486
+ apiClient: s,
487
+ submissions: a,
488
+ analytics: i,
489
+ flow: u
490
+ }) {
491
+ const c = async (g) => {
492
+ g !== !0 && await e.userInput({
493
+ type: "submit",
494
+ key: void 0,
495
+ config: {
496
+ label: n.data.submitLabel
497
+ }
498
+ }), await e.sendMessage({
499
+ type: "loading"
500
+ });
501
+ const {
502
+ anonymous_id: k,
503
+ session_id: h
504
+ } = i.getSessionInfo(), m = await s.fetch("/flow/submit", {
505
+ method: "POST",
506
+ body: JSON.stringify({
507
+ log_submit: !1,
508
+ integration_id: n.data.integrationId,
509
+ anonymous_id: k,
510
+ session_id: h,
511
+ job: u.job,
512
+ submissions: Tr(a || {})
513
+ })
514
+ }).catch((v) => v);
515
+ n.data.key && e.addToSubmissions(n.data.key, {
516
+ type: "integration",
517
+ value: m
518
+ }), ze(m).with({
519
+ integration_response: E.select(E.union({
520
+ service: E.optional(E.string),
521
+ status: E.number,
522
+ data: E.any
523
+ }, {
524
+ service: E.optional(E.string),
525
+ status: E.number,
526
+ error: {
527
+ message: E.string,
528
+ data: E.any
529
+ }
530
+ }))
531
+ }, (v) => {
532
+ i.log({
533
+ event: "FLOW_SUBMIT",
534
+ properties: {
535
+ flow_id: u.id,
536
+ flow_version: u.version,
537
+ flow_session_id: u.data.flowSessionId,
538
+ flow_build: u.build,
539
+ service: v.service ?? "INVALID_SERVICE",
540
+ response: {
541
+ status: v.status,
542
+ payload: "data" in v ? v.data : v.error.data ?? null
543
+ },
544
+ job: u.job
545
+ }
546
+ });
547
+ }).otherwise(() => {
548
+ }), await ze(m).with(E.union({
549
+ ats_data: E.select("redirect", {
550
+ redirect_url: E.string,
551
+ message: E.optional(E.union(E.string, E.nullish)),
552
+ button_text: E.optional(E.union(E.string, E.nullish))
553
+ })
554
+ }, {
555
+ integration_response: {
556
+ data: E.select("redirect", {
557
+ redirect_url: E.string,
558
+ message: E.optional(E.union(E.string, E.nullish)),
559
+ button_text: E.optional(E.union(E.string, E.nullish))
560
+ })
561
+ }
562
+ }), async (v) => {
563
+ if (v.redirect !== void 0) {
564
+ await e.sendMessage({
565
+ type: "text",
566
+ author: "bot",
567
+ text: v.redirect.message ?? "Almost there! Please complete your submission here:"
568
+ });
569
+ try {
570
+ const S = new URL(v.redirect.redirect_url);
571
+ k && !S.searchParams.has("anonymous_id") && S.searchParams.set("anonymous_id", k), await e.sendMessage({
572
+ type: "link",
573
+ href: S.toString(),
574
+ text: v.redirect.button_text ?? "Complete submission",
575
+ onClick: () => {
576
+ if (!h) {
577
+ r.error("session_id not set, cannot log FLOW_REDIRECT event");
578
+ return;
579
+ }
580
+ i.log({
581
+ event: "FLOW_REDIRECT",
582
+ properties: {
583
+ flow_build: u.build,
584
+ flow_id: u.id,
585
+ flow_session_id: h,
586
+ flow_version: u.version,
587
+ href: S.toString(),
588
+ job: u.job
589
+ }
590
+ });
591
+ }
592
+ });
593
+ } catch (S) {
594
+ r.error(`Invalid redirect URL: ${v.redirect.redirect_url}`, S), e.sendMessage({
595
+ type: "system",
596
+ variant: "error",
597
+ text: "Couldn’t get the redirect URL."
598
+ });
599
+ }
600
+ t(n.nextId);
601
+ }
602
+ }).with({
603
+ success: !0
604
+ }, async () => {
605
+ n.data.skipConfirmation !== !0 && await e.sendMessage({
606
+ type: "system",
607
+ variant: "success",
608
+ text: "Submission completed!"
609
+ }), t(n.nextId);
610
+ }).with(E.union({
611
+ success: !1,
612
+ ats_data: E.select("error", {
613
+ message: E.string
614
+ })
615
+ }, {
616
+ integration_response: {
617
+ error: E.select("error", {
618
+ message: E.string
619
+ })
620
+ }
621
+ }), async (v) => {
622
+ var S;
623
+ r.error(v.error), await e.sendMessage({
624
+ type: "system",
625
+ variant: "error",
626
+ text: ((S = v.error) == null ? void 0 : S.message) || "Failed to submit"
627
+ }), await c(!1);
628
+ }).otherwise(async (v) => {
629
+ r.error(v), await e.sendMessage({
630
+ type: "system",
631
+ variant: "error",
632
+ text: "Failed to submit"
633
+ }), await c(!1);
634
+ });
635
+ };
636
+ await c(n.data.skipConfirmation);
637
+ }
638
+ async function an({
639
+ chat: e,
640
+ next: t,
641
+ node: n,
642
+ submissions: r,
643
+ context: s
644
+ }) {
645
+ await e.sendMessage({
646
+ type: "link",
647
+ href: le(n.data.href, {
648
+ submissions: r,
649
+ context: s
650
+ }),
651
+ text: le(n.data.cta, {
652
+ submissions: r,
653
+ context: s
654
+ })
655
+ }), t(n.nextId);
656
+ }
657
+ async function on({
658
+ submissions: e,
659
+ next: t,
660
+ node: n,
661
+ context: r
662
+ }) {
663
+ t(Ve(n, {
664
+ submissions: e,
665
+ context: r
666
+ }) ? n.branchId : n.nextId);
667
+ }
668
+ async function ln({
669
+ chat: e,
670
+ next: t,
671
+ node: n,
672
+ submissions: r,
673
+ context: s
674
+ }) {
675
+ await e.sendMessage({
676
+ author: "bot",
677
+ type: "text",
678
+ text: le(n.data.text, {
679
+ submissions: r,
680
+ context: s
681
+ })
682
+ }), t(n.nextId);
683
+ }
684
+ async function un({
685
+ chat: e,
686
+ next: t,
687
+ node: n
688
+ }) {
689
+ await e.sendMessage({
690
+ author: "bot",
691
+ type: "image",
692
+ url: n.data.url,
693
+ height: n.data.height,
694
+ width: n.data.width
695
+ }), t(n.nextId);
696
+ }
697
+ async function cn({
698
+ chat: e,
699
+ next: t,
700
+ node: n,
701
+ submissions: r,
702
+ context: s
703
+ }) {
704
+ await e.sendMessage({
705
+ author: "bot",
706
+ type: "text",
707
+ text: le(n.data.question, {
708
+ submissions: r,
709
+ context: s
710
+ })
711
+ });
712
+ const a = n.data.format === "phone" ? await e.userInput({
713
+ key: n.data.key,
714
+ type: "phone",
715
+ config: {
716
+ optional: n.data.optional,
717
+ placeholder: n.data.placeholder,
718
+ maxChars: n.data.maxChars,
719
+ minChars: n.data.minChars
720
+ }
721
+ }) : await e.userInput({
722
+ key: n.data.key,
723
+ type: "text",
724
+ config: {
725
+ optional: n.data.optional,
726
+ placeholder: n.data.placeholder,
727
+ format: n.data.format,
728
+ maxChars: n.data.maxChars,
729
+ minChars: n.data.minChars
730
+ }
731
+ });
732
+ a === null ? await e.sendMessage({
733
+ type: "system",
734
+ variant: "info",
735
+ text: "Skipped"
736
+ }) : await e.sendMessage({
737
+ author: "user",
738
+ type: "text",
739
+ text: a.value
740
+ }), t(n.nextId);
741
+ }
742
+ async function dn({
743
+ chat: e,
744
+ next: t,
745
+ node: n,
746
+ submissions: r,
747
+ context: s
748
+ }) {
749
+ await e.sendMessage({
750
+ author: "bot",
751
+ type: "text",
752
+ text: le(n.data.question, {
753
+ submissions: r,
754
+ context: s
755
+ })
756
+ });
757
+ const a = await e.userInput({
758
+ key: n.data.key,
759
+ type: "number",
760
+ config: {
761
+ max: n.data.max,
762
+ min: n.data.min,
763
+ optional: n.data.optional,
764
+ placeholder: n.data.placeholder,
765
+ decimalCases: n.data.decimalCases
766
+ }
767
+ });
768
+ a === null ? await e.sendMessage({
769
+ type: "system",
770
+ variant: "info",
771
+ text: "Skipped"
772
+ }) : await e.sendMessage({
773
+ author: "user",
774
+ type: "text",
775
+ text: a.value.toString()
776
+ }), t(n.nextId);
777
+ }
778
+ async function fn({
779
+ chat: e,
780
+ next: t,
781
+ node: n,
782
+ submissions: r,
783
+ context: s
784
+ }) {
785
+ await e.sendMessage({
786
+ author: "bot",
787
+ type: "text",
788
+ text: le(n.data.question, {
789
+ submissions: r,
790
+ context: s
791
+ })
792
+ });
793
+ const a = await e.userInput({
794
+ key: n.data.key,
795
+ type: "multiple-choice",
796
+ config: n.data
797
+ });
798
+ a.value.length === 0 ? await e.sendMessage({
799
+ type: "system",
800
+ variant: "info",
801
+ text: "Skipped"
802
+ }) : await e.sendMessage({
803
+ author: "user",
804
+ type: "text",
805
+ text: n.data.options.filter((i) => a.value.includes(i.value)).map((i) => i.label).join(", ")
806
+ }), t(n.nextId);
807
+ }
808
+ async function hn({
809
+ chat: e,
810
+ next: t,
811
+ node: n,
812
+ submissions: r,
813
+ context: s
814
+ }) {
815
+ await e.sendMessage({
816
+ author: "bot",
817
+ type: "text",
818
+ text: le(n.data.question, {
819
+ submissions: r,
820
+ context: s
821
+ })
822
+ });
823
+ const a = await e.userInput({
824
+ key: n.data.key,
825
+ type: "boolean",
826
+ config: {
827
+ optional: n.data.optional,
828
+ labels: {
829
+ true: n.data.trueLabel,
830
+ false: n.data.falseLabel
831
+ }
832
+ }
833
+ });
834
+ a === null ? await e.sendMessage({
835
+ type: "system",
836
+ variant: "info",
837
+ text: "Skipped"
838
+ }) : await e.sendMessage({
839
+ author: "user",
840
+ type: "text",
841
+ text: a.value === !0 ? n.data.trueLabel : n.data.falseLabel
842
+ }), t(n.nextId);
843
+ }
844
+ async function pn({
845
+ chat: e,
846
+ next: t,
847
+ node: n
848
+ }) {
849
+ await e.sendMessage({
850
+ author: "bot",
851
+ type: "text",
852
+ text: n.data.question
853
+ });
854
+ const r = await e.userInput({
855
+ type: "address",
856
+ key: n.data.key,
857
+ config: {
858
+ optional: n.data.optional,
859
+ keys: n.data.keys,
860
+ placeholder: n.data.placeholder
861
+ }
862
+ });
863
+ if (r === null)
864
+ await e.sendMessage({
865
+ type: "system",
866
+ variant: "info",
867
+ text: "Skipped"
868
+ });
869
+ else {
870
+ const s = Object.values(r.value).filter((a) => a && a.trim().length > 0).join(", ");
871
+ await e.sendMessage({
872
+ author: "user",
873
+ type: "text",
874
+ text: s
875
+ });
876
+ }
877
+ return t(n.nextId);
878
+ }
879
+ async function mn({
880
+ node: e,
881
+ chat: t,
882
+ next: n,
883
+ submissions: r,
884
+ context: s
885
+ }) {
886
+ await t.sendMessage({
887
+ author: "bot",
888
+ type: "text",
889
+ text: le(e.data.question, {
890
+ submissions: r,
891
+ context: s
892
+ })
893
+ });
894
+ const a = await t.userInput({
895
+ key: e.data.key,
896
+ type: "file",
897
+ config: {
898
+ optional: e.data.optional,
899
+ extensions: e.data.extensions,
900
+ // default value for fileSizeLimitKib is 10MB
901
+ fileSizeLimitKib: e.data.maxSizeKb ?? 10 * 1024,
902
+ allowMultiple: e.data.multiple === !0
903
+ }
904
+ });
905
+ if (a === null)
906
+ await t.sendMessage({
907
+ type: "system",
908
+ variant: "info",
909
+ text: "Skipped"
910
+ });
911
+ else
912
+ for (const i of a.value)
913
+ await t.sendMessage({
914
+ author: "user",
915
+ type: "file",
916
+ fileName: i.name,
917
+ fileSizeKb: i.sizeKb
918
+ });
919
+ n(e.nextId);
920
+ }
921
+ async function gn({
922
+ chat: e,
923
+ end: t,
924
+ node: n
925
+ }) {
926
+ await e.sendMessage({
927
+ type: "system",
928
+ variant: "info",
929
+ text: n.data.systemMessage
930
+ }), t();
931
+ }
932
+ const cr = ({
933
+ key: e,
934
+ path: t,
935
+ submissions: n,
936
+ context: r
937
+ }) => {
938
+ if (e === "$context") {
939
+ if (!t)
940
+ return;
941
+ const s = qe(r, t.join("."));
942
+ switch (typeof s) {
943
+ case "string":
944
+ return {
945
+ type: "string",
946
+ value: s
947
+ };
948
+ case "number":
949
+ return {
950
+ type: "number",
951
+ value: s
952
+ };
953
+ case "boolean":
954
+ return {
955
+ type: "boolean",
956
+ value: s
957
+ };
958
+ default:
959
+ console.warn(`Unexpected type for $context.${t.join(".")}`, s);
960
+ return;
961
+ }
962
+ }
963
+ return n == null ? void 0 : n[e];
964
+ };
965
+ function dt(e, t, n) {
966
+ var r, s, a, i, u;
967
+ t == null && (t = 100);
968
+ function c() {
969
+ var k = Date.now() - i;
970
+ k < t && k >= 0 ? r = setTimeout(c, t - k) : (r = null, n || (u = e.apply(a, s), a = s = null));
971
+ }
972
+ var g = function() {
973
+ a = this, s = arguments, i = Date.now();
974
+ var k = n && !r;
975
+ return r || (r = setTimeout(c, t)), k && (u = e.apply(a, s), a = s = null), u;
976
+ };
977
+ return g.clear = function() {
978
+ r && (clearTimeout(r), r = null);
979
+ }, g.flush = function() {
980
+ r && (u = e.apply(a, s), a = s = null, clearTimeout(r), r = null);
981
+ }, g;
982
+ }
983
+ dt.debounce = dt;
984
+ var bn = dt;
985
+ const Tt = /* @__PURE__ */ sr(bn);
986
+ function yn(e) {
987
+ let {
988
+ debounce: t,
989
+ scroll: n,
990
+ polyfill: r,
991
+ offsetSize: s
992
+ } = e === void 0 ? {
993
+ debounce: 0,
994
+ scroll: !1,
995
+ offsetSize: !1
996
+ } : e;
997
+ const a = r || (typeof window > "u" ? class {
998
+ } : window.ResizeObserver);
999
+ if (!a)
1000
+ throw new Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");
1001
+ const [i, u] = Q({
1002
+ left: 0,
1003
+ top: 0,
1004
+ width: 0,
1005
+ height: 0,
1006
+ bottom: 0,
1007
+ right: 0,
1008
+ x: 0,
1009
+ y: 0
1010
+ }), c = te({
1011
+ element: null,
1012
+ scrollContainers: null,
1013
+ resizeObserver: null,
1014
+ lastBounds: i
1015
+ }), g = t ? typeof t == "number" ? t : t.scroll : null, k = t ? typeof t == "number" ? t : t.resize : null, h = te(!1);
1016
+ oe(() => (h.current = !0, () => void (h.current = !1)));
1017
+ const [m, v, S] = pt(() => {
1018
+ const y = () => {
1019
+ if (!c.current.element)
1020
+ return;
1021
+ const {
1022
+ left: N,
1023
+ top: z,
1024
+ width: O,
1025
+ height: pe,
1026
+ bottom: ue,
1027
+ right: _e,
1028
+ x: G,
1029
+ y: re
1030
+ } = c.current.element.getBoundingClientRect(), U = {
1031
+ left: N,
1032
+ top: z,
1033
+ width: O,
1034
+ height: pe,
1035
+ bottom: ue,
1036
+ right: _e,
1037
+ x: G,
1038
+ y: re
1039
+ };
1040
+ c.current.element instanceof HTMLElement && s && (U.height = c.current.element.offsetHeight, U.width = c.current.element.offsetWidth), Object.freeze(U), h.current && !kn(c.current.lastBounds, U) && u(c.current.lastBounds = U);
1041
+ };
1042
+ return [y, k ? Tt(y, k) : y, g ? Tt(y, g) : y];
1043
+ }, [u, s, g, k]);
1044
+ function C() {
1045
+ c.current.scrollContainers && (c.current.scrollContainers.forEach((y) => y.removeEventListener("scroll", S, !0)), c.current.scrollContainers = null), c.current.resizeObserver && (c.current.resizeObserver.disconnect(), c.current.resizeObserver = null);
1046
+ }
1047
+ function A() {
1048
+ c.current.element && (c.current.resizeObserver = new a(S), c.current.resizeObserver.observe(c.current.element), n && c.current.scrollContainers && c.current.scrollContainers.forEach((y) => y.addEventListener("scroll", S, {
1049
+ capture: !0,
1050
+ passive: !0
1051
+ })));
1052
+ }
1053
+ const F = (y) => {
1054
+ !y || y === c.current.element || (C(), c.current.element = y, c.current.scrollContainers = dr(y), A());
1055
+ };
1056
+ return xn(S, !!n), vn(v), oe(() => {
1057
+ C(), A();
1058
+ }, [n, S, v]), oe(() => C, []), [F, i, m];
1059
+ }
1060
+ function vn(e) {
1061
+ oe(() => {
1062
+ const t = e;
1063
+ return window.addEventListener("resize", t), () => void window.removeEventListener("resize", t);
1064
+ }, [e]);
1065
+ }
1066
+ function xn(e, t) {
1067
+ oe(() => {
1068
+ if (t) {
1069
+ const n = e;
1070
+ return window.addEventListener("scroll", n, {
1071
+ capture: !0,
1072
+ passive: !0
1073
+ }), () => void window.removeEventListener("scroll", n, !0);
1074
+ }
1075
+ }, [e, t]);
1076
+ }
1077
+ function dr(e) {
1078
+ const t = [];
1079
+ if (!e || e === document.body)
1080
+ return t;
1081
+ const {
1082
+ overflow: n,
1083
+ overflowX: r,
1084
+ overflowY: s
1085
+ } = window.getComputedStyle(e);
1086
+ return [n, r, s].some((a) => a === "auto" || a === "scroll") && t.push(e), [...t, ...dr(e.parentElement)];
1087
+ }
1088
+ const wn = ["x", "y", "top", "bottom", "left", "right", "width", "height"], kn = (e, t) => wn.every((n) => e[n] === t[n]), be = ({
1089
+ class: e,
1090
+ ...t
1091
+ }) => l("button", {
1092
+ class: Fe("bg-accent-9 active:bg-accent-10 pointer-coarse:touch-hitbox fr flex-shrink-0 rounded-full p-2 text-white transition-all disabled:cursor-not-allowed disabled:opacity-50", e),
1093
+ type: "submit",
1094
+ ...t,
1095
+ children: l("svg", {
1096
+ class: "block",
1097
+ width: "16",
1098
+ height: "16",
1099
+ viewBox: "0 0 16 16",
1100
+ fill: "transparent",
1101
+ stroke: "currentColor",
1102
+ "stroke-linecap": "round",
1103
+ "stroke-width": "2",
1104
+ children: [l("title", {
1105
+ children: "Send"
1106
+ }), l("path", {
1107
+ d: "M3.5 7.5L8 3L12.5 7.5"
1108
+ }), l("path", {
1109
+ d: "M8 4V13"
1110
+ })]
1111
+ })
1112
+ }), Sn = 25, ft = ct({
1113
+ instant: () => {
1114
+ },
1115
+ smooth: () => {
1116
+ }
1117
+ }), j = {
1118
+ onSubmitSuccessFn$: ct(() => {
1119
+ }),
1120
+ isBotTyping$: ct(!1),
1121
+ scrollToEnd: {
1122
+ instant: () => ft.value.instant(),
1123
+ smooth: () => ft.value.smooth()
1124
+ }
1125
+ }, _n = () => {
1126
+ const e = te(null);
1127
+ he(() => {
1128
+ ft.value = {
1129
+ instant: () => {
1130
+ var n;
1131
+ return (n = e.current) == null ? void 0 : n.scrollTo({
1132
+ top: e.current.scrollHeight,
1133
+ behavior: "instant"
1134
+ });
1135
+ },
1136
+ smooth: () => {
1137
+ e.current && e.current.scrollHeight - e.current.scrollTop <= e.current.clientHeight * 2 && e.current.scrollTo({
1138
+ top: e.current.scrollHeight,
1139
+ behavior: "smooth"
1140
+ });
1141
+ }
1142
+ };
1143
+ }, [e]);
1144
+ const t = pt(() => ({
1145
+ addToSubmissions: (r, s) => V.setSubmission(r, s),
1146
+ send: async ({
1147
+ message: r,
1148
+ signal: s,
1149
+ groupId: a
1150
+ }) => {
1151
+ if (await ze(r).with({
1152
+ author: "bot",
1153
+ type: "text"
1154
+ }, async (i) => {
1155
+ if (s != null && s.aborted)
1156
+ throw new Me();
1157
+ j.isBotTyping$.value = !0;
1158
+ const u = Math.min(Math.max(20, i.text.length), 100) * Sn;
1159
+ await new Promise((c) => setTimeout(c, u, {
1160
+ signal: s
1161
+ })), j.isBotTyping$.value = !1;
1162
+ }).otherwise(async () => {
1163
+ }), s != null && s.aborted)
1164
+ throw new Me();
1165
+ V.addMessage(r, a);
1166
+ },
1167
+ input: ({
1168
+ input: r,
1169
+ signal: s
1170
+ }) => {
1171
+ if (s != null && s.aborted)
1172
+ throw new Me();
1173
+ return V.setInput(r), new Promise((a) => {
1174
+ const i = (u) => {
1175
+ if (s != null && s.aborted)
1176
+ throw new Me();
1177
+ V.setInput(void 0), r.key && V.setSubmission(r.key, u), a(u);
1178
+ };
1179
+ j.onSubmitSuccessFn$.value = i;
1180
+ });
1181
+ }
1182
+ }), []);
1183
+ return {
1184
+ chatRef: e,
1185
+ chatService: t
1186
+ };
1187
+ }, Se = ({
1188
+ error: e
1189
+ }) => !e || !e.message ? null : l("div", {
1190
+ role: "alert",
1191
+ class: "text-error-11 flex max-w-full items-center gap-1 overflow-hidden rounded-full px-2 py-2",
1192
+ children: [l("svg", {
1193
+ class: "text-error-9 h-4 w-4",
1194
+ viewBox: "0 0 16 16",
1195
+ fill: "none",
1196
+ xmlns: "http://www.w3.org/2000/svg",
1197
+ children: [l("circle", {
1198
+ cx: "8",
1199
+ cy: "8",
1200
+ r: "6.3",
1201
+ stroke: "currentColor",
1202
+ "stroke-width": "1.4"
1203
+ }), l("rect", {
1204
+ x: "7",
1205
+ y: "4",
1206
+ width: "2",
1207
+ height: "5",
1208
+ fill: "currentColor"
1209
+ }), l("rect", {
1210
+ x: "7",
1211
+ y: "10",
1212
+ width: "2",
1213
+ height: "2",
1214
+ fill: "currentColor"
1215
+ })]
1216
+ }), l("p", {
1217
+ class: "truncate pr-1 text-sm",
1218
+ children: e.message
1219
+ })]
1220
+ }), ye = ({
1221
+ class: e,
1222
+ ...t
1223
+ }) => l("button", {
1224
+ type: "button",
1225
+ class: Fe("fr text-neutral-9 flex flex-shrink-0 items-center justify-center gap-1 rounded-full py-[6px] pl-2 pr-3 text-sm underline-offset-2 transition-all", e),
1226
+ ...t,
1227
+ children: [l("svg", {
1228
+ class: "block",
1229
+ width: "16",
1230
+ height: "16",
1231
+ viewBox: "0 0 16 16",
1232
+ fill: "transparent",
1233
+ stroke: "currentColor",
1234
+ "stroke-linecap": "round",
1235
+ "stroke-width": "1.5",
1236
+ children: [l("title", {
1237
+ children: "Skip"
1238
+ }), l("path", {
1239
+ d: "M3.25 11.25A5 5 0 0 1 12 7"
1240
+ }), l("path", {
1241
+ d: "M13.25 4.5V8.25H9.5"
1242
+ })]
1243
+ }), "Skip"]
1244
+ }), gt = {
1245
+ Afghanistan: "93",
1246
+ Albania: "355",
1247
+ Algeria: "213",
1248
+ "American Samoa": "1 684",
1249
+ Andorra: "376",
1250
+ Angola: "244",
1251
+ Anguilla: "1 264",
1252
+ Antarctica: "672",
1253
+ "Antigua and Barbuda": "1 268",
1254
+ Argentina: "54",
1255
+ Armenia: "374",
1256
+ Aruba: "297",
1257
+ Australia: "61",
1258
+ Austria: "43",
1259
+ Azerbaijan: "994",
1260
+ Bahrain: "973",
1261
+ Bangladesh: "880",
1262
+ Barbados: "1 246",
1263
+ Belarus: "375",
1264
+ Belgium: "32",
1265
+ Belize: "501",
1266
+ Benin: "229",
1267
+ Bermuda: "1 441",
1268
+ Bhutan: "975",
1269
+ Bolivia: "591",
1270
+ "Bosnia and Herzegovina": "387",
1271
+ Botswana: "267",
1272
+ "Bouvet Island": "47",
1273
+ Brazil: "55",
1274
+ "British Indian Ocean Territory": "246",
1275
+ "British Virgin Islands": "1 284",
1276
+ Brunei: "673",
1277
+ Bulgaria: "359",
1278
+ "Burkina Faso": "226",
1279
+ Burundi: "257",
1280
+ "Cabo Verde": "238",
1281
+ Cambodia: "855",
1282
+ Cameroon: "237",
1283
+ Canada: "1",
1284
+ "Caribbean Netherlands": "599",
1285
+ "Cayman Islands": "1 345",
1286
+ "Central African Republic": "236",
1287
+ Chad: "235",
1288
+ Chile: "56",
1289
+ China: "86",
1290
+ "Christmas Island": "61",
1291
+ "Cocos (Keeling) Islands": "61",
1292
+ Colombia: "57",
1293
+ Comoros: "269",
1294
+ "Cook Islands": "682",
1295
+ "Costa Rica": "506",
1296
+ Croatia: "385",
1297
+ Cuba: "53",
1298
+ Curaçao: "599",
1299
+ Cyprus: "357",
1300
+ Czechia: "420",
1301
+ "Côte d'Ivoire": "225",
1302
+ "Democratic Republic of the Congo": "243",
1303
+ Denmark: "45",
1304
+ Djibouti: "253",
1305
+ "Dominican Republic": "1 809",
1306
+ Ecuador: "593",
1307
+ Egypt: "20",
1308
+ "El Salvador": "503",
1309
+ "Equatorial Guinea": "240",
1310
+ Eritrea: "291",
1311
+ Estonia: "372",
1312
+ Eswatini: "268",
1313
+ Ethiopia: "251",
1314
+ "Falkland Islands (Islas Malvinas)": "500",
1315
+ "Faroe Islands": "298",
1316
+ Fiji: "679",
1317
+ Finland: "358",
1318
+ France: "33",
1319
+ "French Guiana": "594",
1320
+ "French Polynesia": "689",
1321
+ "French Southern and Antarctic Lands": "262",
1322
+ Gabon: "241",
1323
+ Georgia: "995",
1324
+ Germany: "49",
1325
+ Ghana: "233",
1326
+ Gibraltar: "350",
1327
+ Greece: "30",
1328
+ Greenland: "299",
1329
+ Grenada: "1 473",
1330
+ Guadeloupe: "590",
1331
+ Guam: "1 671",
1332
+ Guatemala: "502",
1333
+ Guernsey: "44",
1334
+ Guinea: "224",
1335
+ "Guinea-Bissau": "245",
1336
+ Guyana: "592",
1337
+ Haiti: "509",
1338
+ Honduras: "504",
1339
+ "Hong Kong": "852",
1340
+ Hungary: "36",
1341
+ Iceland: "354",
1342
+ India: "91",
1343
+ Indonesia: "62",
1344
+ Iran: "98",
1345
+ Iraq: "964",
1346
+ Ireland: "353",
1347
+ "Isle of Man": "44",
1348
+ Israel: "972",
1349
+ Italy: "39",
1350
+ Jamaica: "1 876",
1351
+ Japan: "81",
1352
+ Jersey: "44",
1353
+ Jordan: "962",
1354
+ Kazakhstan: "7",
1355
+ Kenya: "254",
1356
+ Kiribati: "686",
1357
+ Kosovo: "383",
1358
+ Kuwait: "965",
1359
+ Kyrgyzstan: "996",
1360
+ Laos: "856",
1361
+ Latvia: "371",
1362
+ Lebanon: "961",
1363
+ Lesotho: "266",
1364
+ Liberia: "231",
1365
+ Libya: "218",
1366
+ Liechtenstein: "423",
1367
+ Lithuania: "370",
1368
+ Luxembourg: "352",
1369
+ Macao: "853",
1370
+ Madagascar: "261",
1371
+ Malawi: "265",
1372
+ Malaysia: "60",
1373
+ Maldives: "960",
1374
+ Mali: "223",
1375
+ Malta: "356",
1376
+ "Marshall Islands": "692",
1377
+ Martinique: "596",
1378
+ Mauritania: "222",
1379
+ Mauritius: "230",
1380
+ Mayotte: "262",
1381
+ Mexico: "52",
1382
+ Micronesia: "691",
1383
+ Moldova: "373",
1384
+ Monaco: "377",
1385
+ Mongolia: "976",
1386
+ Montenegro: "382",
1387
+ Montserrat: "1 664",
1388
+ Morocco: "212",
1389
+ Mozambique: "258",
1390
+ "Myanmar (Burma)": "95",
1391
+ Namibia: "264",
1392
+ Nauru: "674",
1393
+ Nepal: "977",
1394
+ Netherlands: "31",
1395
+ "New Caledonia": "687",
1396
+ "New Zealand": "64",
1397
+ Nicaragua: "505",
1398
+ Niger: "227",
1399
+ Nigeria: "234",
1400
+ Niue: "683",
1401
+ "Norfolk Island": "672",
1402
+ "North Korea": "850",
1403
+ "North Macedonia": "389",
1404
+ "Northern Mariana Islands": "1 670",
1405
+ Norway: "47",
1406
+ Oman: "968",
1407
+ Pakistan: "92",
1408
+ Palau: "680",
1409
+ Palestine: "970",
1410
+ Panama: "507",
1411
+ "Papua New Guinea": "675",
1412
+ Paraguay: "595",
1413
+ Peru: "51",
1414
+ Philippines: "63",
1415
+ "Pitcairn Islands": "64",
1416
+ Poland: "48",
1417
+ Portugal: "351",
1418
+ "Puerto Rico": "1 787",
1419
+ Qatar: "974",
1420
+ Romania: "40",
1421
+ Russia: "7",
1422
+ Rwanda: "250",
1423
+ Réunion: "262",
1424
+ "Saint Barthélemy": "590",
1425
+ "Saint Helena, Ascension and Tristan da Cunha": "290",
1426
+ "Saint Kitts and Nevis": "1 869",
1427
+ "Saint Lucia": "1 758",
1428
+ "Saint Martin": "590",
1429
+ "Saint Pierre and Miquelon": "508",
1430
+ "Saint Vincent and the Grenadines": "1 784",
1431
+ Samoa: "685",
1432
+ "San Marino": "378",
1433
+ "Saudi Arabia": "966",
1434
+ Senegal: "221",
1435
+ Serbia: "381",
1436
+ Seychelles: "248",
1437
+ "Sierra Leone": "232",
1438
+ Singapore: "65",
1439
+ "Sint Maarten": "1 721",
1440
+ Slovakia: "421",
1441
+ Slovenia: "386",
1442
+ "Solomon Islands": "677",
1443
+ Somalia: "252",
1444
+ "South Africa": "27",
1445
+ "South Georgia and the South Sandwich Islands": "500",
1446
+ "South Korea": "82",
1447
+ "South Sudan": "211",
1448
+ Spain: "34",
1449
+ "Sri Lanka": "94",
1450
+ Sudan: "249",
1451
+ Suriname: "597",
1452
+ "Svalbard and Jan Mayen": "47",
1453
+ Sweden: "46",
1454
+ Switzerland: "41",
1455
+ Syria: "963",
1456
+ "São Tomé and Príncipe": "239",
1457
+ Taiwan: "886",
1458
+ Tajikistan: "992",
1459
+ Tanzania: "255",
1460
+ Thailand: "66",
1461
+ "The Bahamas": "1 242",
1462
+ "The Gambia": "220",
1463
+ "Timor-Leste": "670",
1464
+ Togo: "228",
1465
+ Tokelau: "690",
1466
+ Tonga: "676",
1467
+ "Trinidad and Tobago": "1 868",
1468
+ Tunisia: "216",
1469
+ Turkmenistan: "993",
1470
+ "Turks and Caicos Islands": "1 649",
1471
+ Tuvalu: "688",
1472
+ Türkiye: "90",
1473
+ "U.S. Virgin Islands": "1 340",
1474
+ Uganda: "256",
1475
+ Ukraine: "380",
1476
+ "United Arab Emirates": "971",
1477
+ "United Kingdom": "44",
1478
+ "United States": "1",
1479
+ "United States Minor Outlying Islands": "1",
1480
+ Uruguay: "598",
1481
+ Uzbekistan: "998",
1482
+ Vanuatu: "678",
1483
+ "Vatican City": "379",
1484
+ Venezuela: "58",
1485
+ Vietnam: "84",
1486
+ "Wallis and Futuna": "681",
1487
+ "Western Sahara": "212",
1488
+ Yemen: "967",
1489
+ Zambia: "260",
1490
+ Zimbabwe: "263",
1491
+ "Åland Islands": "358"
1492
+ }, Cn = "https://api.mapbox.com/search/searchbox/v1/suggest", An = "ZzRDWFU0dTZ3SF9aWk9RNGl6QzZaWS5RZmlFak13a0hPbGxXZXlNSGN5RUhObUJ6TXpSV08yUW5OdE5tSTZJU1lpd2lJb1JYYXRObmJ2Tm5iaGhHZWx4V1lpb2pJMUp5ZS5rcA==", En = (e) => atob(e).split("").reverse().join(""), ne = fe({
1493
+ name: Y()
1494
+ }), Mn = fe({
1495
+ suggestions: Nr(fe({
1496
+ full_address: rt(Y()),
1497
+ place_formatted: rt(Y()),
1498
+ name: rt(Y()),
1499
+ mapbox_id: Y(),
1500
+ context: Rr(fe({
1501
+ address: ne,
1502
+ street: ne,
1503
+ neighborhood: ne,
1504
+ locality: ne,
1505
+ district: ne,
1506
+ place: ne,
1507
+ region: ne,
1508
+ postcode: ne,
1509
+ country: ne
1510
+ }))
1511
+ }))
1512
+ }), Vn = ({
1513
+ logger: e
1514
+ }) => pt(() => {
1515
+ var n;
1516
+ const t = (n = V.current$.peek().flow) == null ? void 0 : n.data.flowSessionId;
1517
+ return t ? {
1518
+ enabled: !0,
1519
+ getPredictions: async (r) => {
1520
+ const s = new URL(Cn);
1521
+ s.searchParams.set("q", r), s.searchParams.set("session_token", t), s.searchParams.set("access_token", En(An));
1522
+ const a = await fetch(s);
1523
+ if (!a.ok)
1524
+ return e.error("Failed to get address details", a), {
1525
+ ok: !1,
1526
+ error: "Something went wrong! Plase continue manually."
1527
+ };
1528
+ const i = Dr(Mn, await a.json());
1529
+ if (i.success === !1)
1530
+ return e.error("Failed to parse address details", i.issues), {
1531
+ ok: !1,
1532
+ error: "Something went wrong! Plase continue manually."
1533
+ };
1534
+ const {
1535
+ suggestions: u
1536
+ } = i.output;
1537
+ return {
1538
+ ok: !0,
1539
+ data: u.map((c) => {
1540
+ var g, k, h, m, v, S, C, A, F;
1541
+ return {
1542
+ label: c.full_address ?? c.place_formatted ?? c.name ?? c.mapbox_id,
1543
+ id: c.mapbox_id,
1544
+ address: {
1545
+ line1: ((g = c.context.address) == null ? void 0 : g.name) ?? ((k = c.context.street) == null ? void 0 : k.name),
1546
+ line2: void 0,
1547
+ line3: ((h = c.context.neighborhood) == null ? void 0 : h.name) ?? ((m = c.context.locality) == null ? void 0 : m.name),
1548
+ city: ((v = c.context.place) == null ? void 0 : v.name) ?? ((S = c.context.district) == null ? void 0 : S.name),
1549
+ state: (C = c.context.region) == null ? void 0 : C.name,
1550
+ postcode: (A = c.context.postcode) == null ? void 0 : A.name,
1551
+ country: (F = c.context.country) == null ? void 0 : F.name
1552
+ }
1553
+ };
1554
+ })
1555
+ };
1556
+ }
1557
+ } : {
1558
+ enabled: !1
1559
+ };
1560
+ }, [e]), Nt = (e) => l("button", {
1561
+ type: "button",
1562
+ class: "text-neutral-10 hover:bg-neutral-4 hover:text-neutral-12 hover:border-neutral-5 flex items-center gap-1 rounded-[18px] border border-solid border-transparent px-3 py-1 pl-1.5 text-sm transition-colors",
1563
+ ...e,
1564
+ children: [l("svg", {
1565
+ width: "16",
1566
+ height: "16",
1567
+ viewBox: "0 0 16 16",
1568
+ stroke: "currentColor",
1569
+ "stroke-width": "1.5",
1570
+ fill: "none",
1571
+ xmlns: "http://www.w3.org/2000/svg",
1572
+ children: l("path", {
1573
+ d: "M10 3L5 8L10 13"
1574
+ })
1575
+ }), l("span", {
1576
+ children: "Back"
1577
+ })]
1578
+ }), nt = {
1579
+ label: "Fill in manually",
1580
+ value: ""
1581
+ }, In = ({
1582
+ input: e,
1583
+ onSubmitSuccess: t,
1584
+ logger: n
1585
+ }) => {
1586
+ const [r, s] = Q(), [a, i] = Q([]), {
1587
+ enabled: u,
1588
+ getPredictions: c
1589
+ } = Vn({
1590
+ logger: n
1591
+ }), [g, k] = Q(u ? "query" : "manual"), [h, m] = Q(""), [v, S] = Q(), C = (A) => {
1592
+ ie(u, "Query state should not be enabled"), A = A.trim(), A !== (h == null ? void 0 : h.trim()) && (m(A), A === "" && i([]), S(void 0), c(A).then((F) => {
1593
+ if (F.ok === !1) {
1594
+ i([]), S(F.error);
1595
+ return;
1596
+ }
1597
+ i(F.data);
1598
+ }));
1599
+ };
1600
+ switch (g) {
1601
+ case "query":
1602
+ return ie(u, "Query state should not be enabled"), l(Fn, {
1603
+ input: e,
1604
+ onSkip: () => t(null),
1605
+ onAddressSelect: (A) => {
1606
+ const F = a.find((y) => y.id === A);
1607
+ F && (s(F.address), k("details"));
1608
+ },
1609
+ onAddressSearch: (A) => {
1610
+ C(A);
1611
+ },
1612
+ suggestions: a,
1613
+ query: h,
1614
+ error: v
1615
+ });
1616
+ case "details":
1617
+ return ie(r !== void 0), l(Dt, {
1618
+ input: e,
1619
+ logger: n,
1620
+ onSubmitSuccess: t,
1621
+ addressFields: r,
1622
+ actions: l(Nt, {
1623
+ onClick: () => {
1624
+ k("query");
1625
+ }
1626
+ })
1627
+ });
1628
+ case "manual":
1629
+ return l(Dt, {
1630
+ logger: n,
1631
+ input: e,
1632
+ onSubmitSuccess: t,
1633
+ addressFields: {},
1634
+ actions: u ? l(Nt, {
1635
+ onClick: () => {
1636
+ k("query");
1637
+ }
1638
+ }) : void 0
1639
+ });
1640
+ }
1641
+ }, Fn = ({
1642
+ input: e,
1643
+ onSkip: t,
1644
+ suggestions: n,
1645
+ onAddressSelect: r,
1646
+ query: s,
1647
+ onAddressSearch: a,
1648
+ error: i
1649
+ }) => {
1650
+ const u = te(null);
1651
+ return he(() => {
1652
+ u.current && (u.current.focus(), u.current.select());
1653
+ }, []), l(ke, {
1654
+ children: [l("form", {
1655
+ noValidate: !0,
1656
+ onSubmit: (c) => {
1657
+ c.preventDefault();
1658
+ const k = new FormData(c.currentTarget).get("address");
1659
+ typeof k == "string" && a(k);
1660
+ },
1661
+ class: "flex gap-1 p-2.5",
1662
+ children: [l("div", {
1663
+ class: "group relative flex-1",
1664
+ children: [l("input", {
1665
+ ref: u,
1666
+ name: "address",
1667
+ id: "chat-address",
1668
+ autocomplete: "address-line1 country-name postal-code",
1669
+ autoFocus: !0,
1670
+ class: "outline-divider ease-expo-out placeholder:text-neutral-10 text-neutral-12 focus-visible:outline-accent-7 caret-accent-9 bg-lowest w-full rounded-full px-3 py-1 text-base outline outline-2 transition-all",
1671
+ placeholder: e.config.placeholder || "Type and search for places...",
1672
+ defaultValue: s
1673
+ }), l("button", {
1674
+ type: "submit",
1675
+ class: "touch-hitbox text-neutral-12 hover:bg-neutral-3 fr absolute bottom-0 right-0 top-0 flex cursor-pointer items-center gap-1 rounded-full px-3 transition-all",
1676
+ children: l("svg", {
1677
+ width: "16",
1678
+ height: "16",
1679
+ viewBox: "0 0 16 16",
1680
+ fill: "none",
1681
+ xmlns: "http://www.w3.org/2000/svg",
1682
+ children: [l("g", {
1683
+ id: "inploi",
1684
+ stroke: "currentColor",
1685
+ "stroke-linecap": "round",
1686
+ "stroke-linejoin": "round",
1687
+ strokeWidth: "1.5",
1688
+ children: [l("circle", {
1689
+ cx: "7",
1690
+ cy: "7",
1691
+ r: "4"
1692
+ }), l("path", {
1693
+ d: "M10 10L13 13"
1694
+ })]
1695
+ }), l("span", {
1696
+ class: "sr-only",
1697
+ children: "Search"
1698
+ })]
1699
+ })
1700
+ })]
1701
+ }), e.config.optional && l(ye, {
1702
+ class: "",
1703
+ onClick: t
1704
+ })]
1705
+ }), i ? l(Se, {
1706
+ error: {
1707
+ message: i
1708
+ }
1709
+ }) : null, l("ul", {
1710
+ children: [n.map((c) => l("li", {
1711
+ children: l("button", {
1712
+ class: "text-neutral-11 fr hover:bg-neutral-3 focus-visible:bg-neutral-3 hover:text-neutral-12 border-b-neutral-3 flex w-full items-center border border-b border-solid border-transparent px-4 py-3 text-sm transition-colors duration-100",
1713
+ onClick: () => {
1714
+ r(c.id);
1715
+ },
1716
+ children: [l("span", {
1717
+ class: "flex-grow",
1718
+ children: c.label
1719
+ }), l("svg", {
1720
+ class: "flex-none",
1721
+ width: "16",
1722
+ height: "16",
1723
+ viewBox: "0 0 16 16",
1724
+ stroke: "currentColor",
1725
+ "stroke-width": "1.5",
1726
+ fill: "none",
1727
+ xmlns: "http://www.w3.org/2000/svg",
1728
+ children: l("path", {
1729
+ d: "M6 3L11 8L6 13"
1730
+ })
1731
+ })]
1732
+ })
1733
+ }, c.id)), l("li", {
1734
+ children: l("button", {
1735
+ class: "text-neutral-11 fr hover:bg-neutral-3 focus-visible:bg-neutral-3 hover:text-neutral-12 border-b-neutral-3 flex w-full items-center border border-b border-solid border-transparent px-4 py-3 text-sm transition-colors duration-100",
1736
+ onClick: () => {
1737
+ r(nt.value);
1738
+ },
1739
+ children: l("span", {
1740
+ class: "flex-grow",
1741
+ children: nt.label
1742
+ })
1743
+ })
1744
+ }, nt.label)]
1745
+ })]
1746
+ });
1747
+ }, Ln = {
1748
+ line1: "Line 1",
1749
+ line2: "Line 2",
1750
+ line3: "Line 3",
1751
+ city: "City",
1752
+ state: "State",
1753
+ postcode: "Postcode",
1754
+ country: "Country"
1755
+ }, Rt = ["line1", "line2", "line3", "city", "state", "postcode", "country"], Dt = ({
1756
+ addressFields: e,
1757
+ onSubmitSuccess: t,
1758
+ actions: n,
1759
+ input: r
1760
+ }) => {
1761
+ const s = te(null);
1762
+ he(() => {
1763
+ if (s.current) {
1764
+ const i = s.current.querySelector("input");
1765
+ i && (i.focus(), i.select());
1766
+ }
1767
+ }, []);
1768
+ const a = Object.keys(gt);
1769
+ return l("form", {
1770
+ class: "bg-neutral-1/90 flex flex-col justify-end gap-2 p-2",
1771
+ onSubmit: (i) => {
1772
+ const u = new FormData(i.currentTarget), c = Object.fromEntries(u.entries());
1773
+ t({
1774
+ type: "address",
1775
+ value: c
1776
+ });
1777
+ },
1778
+ children: [l("div", {
1779
+ class: "bg-neutral-3 border-neutral-5 grid items-center gap-1.5 rounded-2xl border pb-2 pl-4 pr-3 pt-3 [grid-template-columns:min-content_1fr]",
1780
+ ref: s,
1781
+ children: Rt.map((i, u) => {
1782
+ const c = `isdk_${i}`, g = r.config.keys[i];
1783
+ return g ? l(ke, {
1784
+ children: [l("label", {
1785
+ for: c,
1786
+ class: "text-neutral-9 [&:has(+*>input:focus)]:text-neutral-11 w-24 pb-2 text-xs uppercase leading-3 tracking-widest transition-colors",
1787
+ children: Ln[i]
1788
+ }), l("div", {
1789
+ class: "flex flex-col items-stretch gap-1.5",
1790
+ children: [i === "country" ? l("div", {
1791
+ class: "relative",
1792
+ children: [l("select", {
1793
+ class: "text-neutral-12 hover:bg-neutral-4 placeholder:text-neutral-8 focus:bg-neutral-5 w-full flex-1 appearance-none rounded-lg border-solid bg-transparent bg-none px-3 py-1.5 text-base transition-colors focus:outline-none",
1794
+ name: g,
1795
+ id: c,
1796
+ defaultValue: e[i],
1797
+ required: !0,
1798
+ children: [e.country && !a.includes(e.country) ? l("option", {
1799
+ value: e[i],
1800
+ children: e[i]
1801
+ }) : l("option", {
1802
+ value: "",
1803
+ children: "Select a country"
1804
+ }), a.map((k) => l("option", {
1805
+ value: k,
1806
+ children: k
1807
+ }, k))]
1808
+ }), l("svg", {
1809
+ class: "text-neutral-12 absolute bottom-2.5 right-2 flex items-center justify-center",
1810
+ width: "16",
1811
+ height: "16",
1812
+ stroke: "currentColor",
1813
+ "stroke-width": "1.5",
1814
+ "stroke-linecap": "round",
1815
+ "stroke-linejoin": "round",
1816
+ viewBox: "0 0 16 16",
1817
+ fill: "none",
1818
+ xmlns: "http://www.w3.org/2000/svg",
1819
+ children: l("path", {
1820
+ d: "M4 6.5L8 10.5L12 6.5"
1821
+ })
1822
+ })]
1823
+ }) : l("input", {
1824
+ autoFocus: u === 0 ? !0 : void 0,
1825
+ class: "text-neutral-12 hover:bg-neutral-4 placeholder:text-neutral-8 focus:bg-neutral-5 flex-1 rounded-lg border-solid bg-transparent px-3 py-1.5 text-base transition-colors autofill:shadow-[inset_0_0_0_1000px_hsl(210_16.7%_97.6%)] focus:outline-none",
1826
+ name: g,
1827
+ id: c,
1828
+ defaultValue: e[i],
1829
+ required: !0
1830
+ }), u === Rt.length - 1 ? l("hr", {
1831
+ class: "m-0 w-full border-b border-b-transparent"
1832
+ }) : l("hr", {
1833
+ class: "border-b-neutral-5 m-0 w-full border-b border-solid"
1834
+ })]
1835
+ })]
1836
+ }) : null;
1837
+ })
1838
+ }), l("div", {
1839
+ class: "flex w-full flex-1 ",
1840
+ children: [l("div", {
1841
+ class: "flex-grow",
1842
+ children: n
1843
+ }), l(be, {
1844
+ class: "flex items-center justify-center"
1845
+ })]
1846
+ })]
1847
+ });
1848
+ }, bt = () => {
1849
+ const e = te(null);
1850
+ return oe(() => {
1851
+ var t;
1852
+ (t = e.current) == null || t.focus();
1853
+ }, []), e;
1854
+ }, fr = ["true", "false"], Tn = Pr(fr), Nn = "answer", hr = "flex items-center gap-2 p-2.5", pr = ar(({
1855
+ label: e,
1856
+ ...t
1857
+ }, n) => l("button", {
1858
+ class: "bg-lowest ease-expo-out ring-divider text-neutral-12 active:ring-accent-7 active:bg-accent-2 active:text-accent-11 fr block w-full overflow-hidden rounded-2xl px-2.5 py-2.5 ring-2 transition-all selection:bg-transparent",
1859
+ ...t,
1860
+ ref: n,
1861
+ children: l("p", {
1862
+ class: "truncate text-center text-base",
1863
+ children: e
1864
+ })
1865
+ })), Rn = ({
1866
+ input: e,
1867
+ onSubmitSuccess: t
1868
+ }) => {
1869
+ const n = bt();
1870
+ return l("form", {
1871
+ noValidate: !0,
1872
+ class: "",
1873
+ onSubmit: (r) => {
1874
+ r.preventDefault();
1875
+ const s = Or(r).value, a = ir(Tn, s);
1876
+ t({
1877
+ type: "boolean",
1878
+ value: a === "true"
1879
+ });
1880
+ },
1881
+ children: [l("ul", {
1882
+ class: hr,
1883
+ children: fr.map((r, s) => l("li", {
1884
+ class: "flex-1",
1885
+ children: l(pr, {
1886
+ ref: s === 0 ? n : null,
1887
+ type: "submit",
1888
+ name: Nn,
1889
+ value: r,
1890
+ label: e.config.labels[r]
1891
+ }, r)
1892
+ }))
1893
+ }), e.config.optional && l("div", {
1894
+ class: "px-2 pb-2",
1895
+ children: l(ye, {
1896
+ class: "w-full",
1897
+ type: "button",
1898
+ onClick: () => t(null)
1899
+ })
1900
+ })]
1901
+ });
1902
+ }, Dn = (e) => new Promise((t, n) => {
1903
+ const r = new FileReader();
1904
+ r.readAsDataURL(e), r.onload = () => r.result ? t(r.result.toString()) : n("No result from reader"), r.onerror = n;
1905
+ }), On = (e) => e.reduce((t, n) => t + n.sizeKb, 0), Pn = Le("file"), Ot = 3, Bn = ({
1906
+ file: e,
1907
+ class: t,
1908
+ ...n
1909
+ }) => {
1910
+ const r = e.name.split(".").pop(), s = e.name.replace(new RegExp(`.${r}$`), "");
1911
+ return l("div", {
1912
+ class: Fe("bg-accent-1 outline-accent-4 flex max-w-full gap-2 overflow-hidden rounded-lg px-3 py-2 text-sm outline", t),
1913
+ ...n,
1914
+ children: [l("p", {
1915
+ "aria-label": "File name",
1916
+ class: "text-accent-12 flex flex-grow overflow-hidden",
1917
+ children: [l("span", {
1918
+ class: "block truncate",
1919
+ children: s
1920
+ }), l("span", {
1921
+ children: [".", r]
1922
+ })]
1923
+ }), l("p", {
1924
+ "aria-label": "File size",
1925
+ class: "text-accent-11",
1926
+ children: Ie(e.sizeKb)
1927
+ })]
1928
+ });
1929
+ }, Pt = ({
1930
+ class: e,
1931
+ ...t
1932
+ }) => l("li", {
1933
+ class: Fe("outline-neutral-6 text-neutral-11 bg-neutral-1 block rounded-md px-1 py-0.5 text-xs outline outline-1", e),
1934
+ ...t
1935
+ }), mr = (e) => {
1936
+ const t = e.split(".").pop();
1937
+ if (!t)
1938
+ throw new Error("No file extension found");
1939
+ return t ? "." + t : "";
1940
+ }, $n = ({
1941
+ allowedExtensions: e,
1942
+ files: t
1943
+ }) => {
1944
+ const n = e.map((r) => r.toLowerCase());
1945
+ return t.every((r) => n.includes(mr(r.name).toLowerCase()));
1946
+ }, jn = (e, t) => {
1947
+ const n = mr(e);
1948
+ return `${e.replace(new RegExp(`${n}$`), "").slice(0, t)}${n}`;
1949
+ }, Un = ({
1950
+ input: e,
1951
+ onSubmitSuccess: t
1952
+ }) => {
1953
+ var k;
1954
+ const n = (k = V.current$.value.flow) == null ? void 0 : k.data.submissions[e.key], [r, s] = Q(Pn(n) ? n.value : []), [a, i] = Q(), u = r.length - Ot, c = On(r), g = bt();
1955
+ return l("form", {
1956
+ class: "flex flex-col gap-1 p-2.5",
1957
+ onSubmit: (h) => (h.preventDefault(), i(void 0), r.length === 0 ? i({
1958
+ type: "required",
1959
+ message: "Please select a file"
1960
+ }) : e.config.extensions.length > 0 && !$n({
1961
+ allowedExtensions: e.config.extensions,
1962
+ files: r
1963
+ }) ? i({
1964
+ type: "validate",
1965
+ message: `Please upload ${e.config.extensions.join(", ")} files only`
1966
+ }) : e.config.fileSizeLimitKib && c > e.config.fileSizeLimitKib ? i({
1967
+ type: "max",
1968
+ message: `File size exceeds limit of ${Ie(e.config.fileSizeLimitKib)}`
1969
+ }) : e.config.allowMultiple === !1 && r.length > 1 ? i({
1970
+ type: "invalid",
1971
+ message: "Only one file is allowed"
1972
+ }) : t({
1973
+ type: "file",
1974
+ value: r
1975
+ })),
1976
+ children: [l("div", {
1977
+ class: "flex items-center gap-2",
1978
+ children: [l("label", {
1979
+ ref: g,
1980
+ for: "dropzone-file",
1981
+ class: "border-neutral-8 bg-neutral-2 flex h-48 w-full cursor-pointer flex-col items-center justify-center overflow-hidden rounded-2xl border border-dashed p-4",
1982
+ children: [r.length > 0 ? l(ke, {
1983
+ children: [l("ul", {
1984
+ class: "flex max-w-full flex-wrap justify-center gap-1 overflow-hidden p-1",
1985
+ children: [r.slice(0, Ot).map((h) => {
1986
+ const m = h.name.split(".").pop(), v = h.name.replace(new RegExp(`.${m}$`), "");
1987
+ return l(Pt, {
1988
+ class: "flex overflow-hidden",
1989
+ children: [l("span", {
1990
+ class: "block truncate",
1991
+ children: v
1992
+ }), l("span", {
1993
+ children: [".", m]
1994
+ })]
1995
+ });
1996
+ }), u > 0 ? l(Pt, {
1997
+ children: ["+", u, " file", u !== 1 ? "s" : ""]
1998
+ }) : null]
1999
+ }), l("p", {
2000
+ class: "text-neutral-11 text-xs",
2001
+ children: [Ie(c), " ", r.length > 1 ? "total" : ""]
2002
+ })]
2003
+ }) : l("div", {
2004
+ class: "flex flex-col justify-center gap-4 pb-6 pt-5",
2005
+ children: [l("header", {
2006
+ class: "flex flex-col items-center gap-0",
2007
+ children: [l("svg", {
2008
+ class: "text-neutral-11 mb-1 h-8 w-8",
2009
+ "aria-hidden": "true",
2010
+ xmlns: "http://www.w3.org/2000/svg",
2011
+ fill: "none",
2012
+ viewBox: "0 0 20 16",
2013
+ children: l("path", {
2014
+ stroke: "currentColor",
2015
+ "stroke-linecap": "round",
2016
+ "stroke-linejoin": "round",
2017
+ "stroke-width": "1.5",
2018
+ d: "M13 13h3a3 3 0 0 0 0-6h-.025A5.56 5.56 0 0 0 16 6.5 5.5 5.5 0 0 0 5.207 5.021C5.137 5.017 5.071 5 5 5a4 4 0 0 0 0 8h2.167M10 15V6m0 0L8 8m2-2 2 2"
2019
+ })
2020
+ }), l("p", {
2021
+ class: "text-neutral-12 tracking-[-0.01em]",
2022
+ children: [e.config.allowMultiple ? "Select files" : "Select a file", " to upload"]
2023
+ }), e.config.fileSizeLimitKib ? l("p", {
2024
+ class: "text-neutral-10 text-xs",
2025
+ children: ["(max ", Ie(e.config.fileSizeLimitKib), ")"]
2026
+ }) : null]
2027
+ }), l("aside", {
2028
+ class: "flex flex-col items-center gap-2",
2029
+ children: [l("p", {
2030
+ id: "accepted-filetypes",
2031
+ class: "sr-only",
2032
+ children: "Accepted file extensions"
2033
+ }), l("ul", {
2034
+ "aria-describedby": "accepted-filetypes",
2035
+ class: "flex flex-wrap justify-center gap-2",
2036
+ children: e.config.extensions.map((h) => l("li", {
2037
+ class: "ring-lowest outline-neutral-6 text-neutral-9 bg-neutral-1 rounded-md px-1 py-0.5 text-[11px] uppercase tracking-wide outline outline-1 ring-2",
2038
+ children: h.replace(".", "")
2039
+ }))
2040
+ })]
2041
+ })]
2042
+ }), l("input", {
2043
+ id: "dropzone-file",
2044
+ onInput: async (h) => {
2045
+ ie(h.target instanceof HTMLInputElement);
2046
+ const m = h.target.files ? Array.from(h.target.files) : [], v = await Promise.allSettled(m.map(async (C) => {
2047
+ const A = await Dn(C);
2048
+ return {
2049
+ name: jn(C.name, 42),
2050
+ data: A,
2051
+ sizeKb: C.size / 1e3
2052
+ };
2053
+ }));
2054
+ if (v.some(({
2055
+ status: C
2056
+ }) => C === "rejected"))
2057
+ return i({
2058
+ type: "invalid",
2059
+ message: "Invalid file"
2060
+ });
2061
+ const S = v.map((C) => C.status === "fulfilled" ? C.value : null).filter(Boolean);
2062
+ s(S);
2063
+ },
2064
+ multiple: e.config.allowMultiple,
2065
+ type: "file",
2066
+ class: "sr-only"
2067
+ })]
2068
+ }), l("div", {
2069
+ class: "flex h-full flex-col items-center gap-2",
2070
+ children: [l(be, {
2071
+ disabled: r.length === 0
2072
+ }), e.config.optional && l(ye, {
2073
+ onClick: () => t(null)
2074
+ })]
2075
+ })]
2076
+ }), l(Se, {
2077
+ error: a
2078
+ })]
2079
+ });
2080
+ };
2081
+ var Te = (e) => e.type === "checkbox", we = (e) => e instanceof Date, q = (e) => e == null;
2082
+ const gr = (e) => typeof e == "object";
2083
+ var B = (e) => !q(e) && !Array.isArray(e) && gr(e) && !we(e), qn = (e) => B(e) && e.target ? Te(e.target) ? e.target.checked : e.target.value : e, zn = (e) => e.substring(0, e.search(/\.\d+(\.|$)/)) || e, Kn = (e, t) => e.has(zn(t)), Gn = (e) => {
2084
+ const t = e.constructor && e.constructor.prototype;
2085
+ return B(t) && t.hasOwnProperty("isPrototypeOf");
2086
+ }, yt = typeof window < "u" && typeof window.HTMLElement < "u" && typeof document < "u";
2087
+ function ae(e) {
2088
+ let t;
2089
+ const n = Array.isArray(e);
2090
+ if (e instanceof Date)
2091
+ t = new Date(e);
2092
+ else if (e instanceof Set)
2093
+ t = new Set(e);
2094
+ else if (!(yt && (e instanceof Blob || e instanceof FileList)) && (n || B(e)))
2095
+ if (t = n ? [] : {}, !n && !Gn(e))
2096
+ t = e;
2097
+ else
2098
+ for (const r in e)
2099
+ e.hasOwnProperty(r) && (t[r] = ae(e[r]));
2100
+ else
2101
+ return e;
2102
+ return t;
2103
+ }
2104
+ var Ne = (e) => Array.isArray(e) ? e.filter(Boolean) : [], D = (e) => e === void 0, x = (e, t, n) => {
2105
+ if (!t || !B(e))
2106
+ return n;
2107
+ const r = Ne(t.split(/[,[\].]+?/)).reduce((s, a) => q(s) ? s : s[a], e);
2108
+ return D(r) || r === e ? D(e[t]) ? n : e[t] : r;
2109
+ }, ce = (e) => typeof e == "boolean";
2110
+ const Bt = {
2111
+ BLUR: "blur",
2112
+ FOCUS_OUT: "focusout",
2113
+ CHANGE: "change"
2114
+ }, J = {
2115
+ onBlur: "onBlur",
2116
+ onChange: "onChange",
2117
+ onSubmit: "onSubmit",
2118
+ onTouched: "onTouched",
2119
+ all: "all"
2120
+ }, se = {
2121
+ max: "max",
2122
+ min: "min",
2123
+ maxLength: "maxLength",
2124
+ minLength: "minLength",
2125
+ pattern: "pattern",
2126
+ required: "required",
2127
+ validate: "validate"
2128
+ };
2129
+ X.createContext(null);
2130
+ var Hn = (e, t, n, r = !0) => {
2131
+ const s = {
2132
+ defaultValues: t._defaultValues
2133
+ };
2134
+ for (const a in e)
2135
+ Object.defineProperty(s, a, {
2136
+ get: () => {
2137
+ const i = a;
2138
+ return t._proxyFormState[i] !== J.all && (t._proxyFormState[i] = !r || J.all), n && (n[i] = !0), e[i];
2139
+ }
2140
+ });
2141
+ return s;
2142
+ }, W = (e) => B(e) && !Object.keys(e).length, Wn = (e, t, n, r) => {
2143
+ n(e);
2144
+ const { name: s, ...a } = e;
2145
+ return W(a) || Object.keys(a).length >= Object.keys(t).length || Object.keys(a).find((i) => t[i] === (!r || J.all));
2146
+ }, st = (e) => Array.isArray(e) ? e : [e];
2147
+ function Jn(e) {
2148
+ const t = X.useRef(e);
2149
+ t.current = e, X.useEffect(() => {
2150
+ const n = !e.disabled && t.current.subject && t.current.subject.subscribe({
2151
+ next: t.current.next
2152
+ });
2153
+ return () => {
2154
+ n && n.unsubscribe();
2155
+ };
2156
+ }, [e.disabled]);
2157
+ }
2158
+ var ee = (e) => typeof e == "string", Zn = (e, t, n, r, s) => ee(e) ? (r && t.watch.add(e), x(n, e, s)) : Array.isArray(e) ? e.map((a) => (r && t.watch.add(a), x(n, a))) : (r && (t.watchAll = !0), n), vt = (e) => /^\w*$/.test(e), br = (e) => Ne(e.replace(/["|']|\]/g, "").split(/\.|\[/));
2159
+ function L(e, t, n) {
2160
+ let r = -1;
2161
+ const s = vt(t) ? [t] : br(t), a = s.length, i = a - 1;
2162
+ for (; ++r < a; ) {
2163
+ const u = s[r];
2164
+ let c = n;
2165
+ if (r !== i) {
2166
+ const g = e[u];
2167
+ c = B(g) || Array.isArray(g) ? g : isNaN(+s[r + 1]) ? {} : [];
2168
+ }
2169
+ e[u] = c, e = e[u];
2170
+ }
2171
+ return e;
2172
+ }
2173
+ var yr = (e, t, n, r, s) => t ? {
2174
+ ...n[e],
2175
+ types: {
2176
+ ...n[e] && n[e].types ? n[e].types : {},
2177
+ [r]: s || !0
2178
+ }
2179
+ } : {}, $t = (e) => ({
2180
+ isOnSubmit: !e || e === J.onSubmit,
2181
+ isOnBlur: e === J.onBlur,
2182
+ isOnChange: e === J.onChange,
2183
+ isOnAll: e === J.all,
2184
+ isOnTouch: e === J.onTouched
2185
+ }), jt = (e, t, n) => !n && (t.watchAll || t.watch.has(e) || [...t.watch].some((r) => e.startsWith(r) && /^\.\w+/.test(e.slice(r.length))));
2186
+ const je = (e, t, n, r) => {
2187
+ for (const s of n || Object.keys(e)) {
2188
+ const a = x(e, s);
2189
+ if (a) {
2190
+ const { _f: i, ...u } = a;
2191
+ if (i) {
2192
+ if (i.refs && i.refs[0] && t(i.refs[0], s) && !r)
2193
+ break;
2194
+ if (i.ref && t(i.ref, i.name) && !r)
2195
+ break;
2196
+ } else
2197
+ B(u) && je(u, t);
2198
+ }
2199
+ }
2200
+ };
2201
+ var Xn = (e, t, n) => {
2202
+ const r = Ne(x(e, n));
2203
+ return L(r, "root", t[n]), L(e, n, r), e;
2204
+ }, xt = (e) => e.type === "file", de = (e) => typeof e == "function", Ke = (e) => {
2205
+ if (!yt)
2206
+ return !1;
2207
+ const t = e ? e.ownerDocument : 0;
2208
+ return e instanceof (t && t.defaultView ? t.defaultView.HTMLElement : HTMLElement);
2209
+ }, Ue = (e) => ee(e), wt = (e) => e.type === "radio", Ge = (e) => e instanceof RegExp;
2210
+ const Ut = {
2211
+ value: !1,
2212
+ isValid: !1
2213
+ }, qt = { value: !0, isValid: !0 };
2214
+ var vr = (e) => {
2215
+ if (Array.isArray(e)) {
2216
+ if (e.length > 1) {
2217
+ const t = e.filter((n) => n && n.checked && !n.disabled).map((n) => n.value);
2218
+ return { value: t, isValid: !!t.length };
2219
+ }
2220
+ return e[0].checked && !e[0].disabled ? (
2221
+ // @ts-expect-error expected to work in the browser
2222
+ e[0].attributes && !D(e[0].attributes.value) ? D(e[0].value) || e[0].value === "" ? qt : { value: e[0].value, isValid: !0 } : qt
2223
+ ) : Ut;
2224
+ }
2225
+ return Ut;
2226
+ };
2227
+ const zt = {
2228
+ isValid: !1,
2229
+ value: null
2230
+ };
2231
+ var xr = (e) => Array.isArray(e) ? e.reduce((t, n) => n && n.checked && !n.disabled ? {
2232
+ isValid: !0,
2233
+ value: n.value
2234
+ } : t, zt) : zt;
2235
+ function Kt(e, t, n = "validate") {
2236
+ if (Ue(e) || Array.isArray(e) && e.every(Ue) || ce(e) && !e)
2237
+ return {
2238
+ type: n,
2239
+ message: Ue(e) ? e : "",
2240
+ ref: t
2241
+ };
2242
+ }
2243
+ var xe = (e) => B(e) && !Ge(e) ? e : {
2244
+ value: e,
2245
+ message: ""
2246
+ }, Gt = async (e, t, n, r, s) => {
2247
+ const { ref: a, refs: i, required: u, maxLength: c, minLength: g, min: k, max: h, pattern: m, validate: v, name: S, valueAsNumber: C, mount: A, disabled: F } = e._f, y = x(t, S);
2248
+ if (!A || F)
2249
+ return {};
2250
+ const N = i ? i[0] : a, z = (I) => {
2251
+ r && N.reportValidity && (N.setCustomValidity(ce(I) ? "" : I || ""), N.reportValidity());
2252
+ }, O = {}, pe = wt(a), ue = Te(a), _e = pe || ue, G = (C || xt(a)) && D(a.value) && D(y) || Ke(a) && a.value === "" || y === "" || Array.isArray(y) && !y.length, re = yr.bind(null, S, n, O), U = (I, M, R, K = se.maxLength, H = se.minLength) => {
2253
+ const Z = I ? M : R;
2254
+ O[S] = {
2255
+ type: I ? K : H,
2256
+ message: Z,
2257
+ ref: a,
2258
+ ...re(I ? K : H, Z)
2259
+ };
2260
+ };
2261
+ if (s ? !Array.isArray(y) || !y.length : u && (!_e && (G || q(y)) || ce(y) && !y || ue && !vr(i).isValid || pe && !xr(i).isValid)) {
2262
+ const { value: I, message: M } = Ue(u) ? { value: !!u, message: u } : xe(u);
2263
+ if (I && (O[S] = {
2264
+ type: se.required,
2265
+ message: M,
2266
+ ref: N,
2267
+ ...re(se.required, M)
2268
+ }, !n))
2269
+ return z(M), O;
2270
+ }
2271
+ if (!G && (!q(k) || !q(h))) {
2272
+ let I, M;
2273
+ const R = xe(h), K = xe(k);
2274
+ if (!q(y) && !isNaN(y)) {
2275
+ const H = a.valueAsNumber || y && +y;
2276
+ q(R.value) || (I = H > R.value), q(K.value) || (M = H < K.value);
2277
+ } else {
2278
+ const H = a.valueAsDate || new Date(y), Z = (Re) => /* @__PURE__ */ new Date((/* @__PURE__ */ new Date()).toDateString() + " " + Re), me = a.type == "time", Ce = a.type == "week";
2279
+ ee(R.value) && y && (I = me ? Z(y) > Z(R.value) : Ce ? y > R.value : H > new Date(R.value)), ee(K.value) && y && (M = me ? Z(y) < Z(K.value) : Ce ? y < K.value : H < new Date(K.value));
2280
+ }
2281
+ if ((I || M) && (U(!!I, R.message, K.message, se.max, se.min), !n))
2282
+ return z(O[S].message), O;
2283
+ }
2284
+ if ((c || g) && !G && (ee(y) || s && Array.isArray(y))) {
2285
+ const I = xe(c), M = xe(g), R = !q(I.value) && y.length > +I.value, K = !q(M.value) && y.length < +M.value;
2286
+ if ((R || K) && (U(R, I.message, M.message), !n))
2287
+ return z(O[S].message), O;
2288
+ }
2289
+ if (m && !G && ee(y)) {
2290
+ const { value: I, message: M } = xe(m);
2291
+ if (Ge(I) && !y.match(I) && (O[S] = {
2292
+ type: se.pattern,
2293
+ message: M,
2294
+ ref: a,
2295
+ ...re(se.pattern, M)
2296
+ }, !n))
2297
+ return z(M), O;
2298
+ }
2299
+ if (v) {
2300
+ if (de(v)) {
2301
+ const I = await v(y, t), M = Kt(I, N);
2302
+ if (M && (O[S] = {
2303
+ ...M,
2304
+ ...re(se.validate, M.message)
2305
+ }, !n))
2306
+ return z(M.message), O;
2307
+ } else if (B(v)) {
2308
+ let I = {};
2309
+ for (const M in v) {
2310
+ if (!W(I) && !n)
2311
+ break;
2312
+ const R = Kt(await v[M](y, t), N, M);
2313
+ R && (I = {
2314
+ ...R,
2315
+ ...re(M, R.message)
2316
+ }, z(R.message), n && (O[S] = I));
2317
+ }
2318
+ if (!W(I) && (O[S] = {
2319
+ ref: N,
2320
+ ...I
2321
+ }, !n))
2322
+ return O;
2323
+ }
2324
+ }
2325
+ return z(!0), O;
2326
+ };
2327
+ function Qn(e, t) {
2328
+ const n = t.slice(0, -1).length;
2329
+ let r = 0;
2330
+ for (; r < n; )
2331
+ e = D(e) ? r++ : e[t[r++]];
2332
+ return e;
2333
+ }
2334
+ function Yn(e) {
2335
+ for (const t in e)
2336
+ if (e.hasOwnProperty(t) && !D(e[t]))
2337
+ return !1;
2338
+ return !0;
2339
+ }
2340
+ function $(e, t) {
2341
+ const n = Array.isArray(t) ? t : vt(t) ? [t] : br(t), r = n.length === 1 ? e : Qn(e, n), s = n.length - 1, a = n[s];
2342
+ return r && delete r[a], s !== 0 && (B(r) && W(r) || Array.isArray(r) && Yn(r)) && $(e, n.slice(0, -1)), e;
2343
+ }
2344
+ function at() {
2345
+ let e = [];
2346
+ return {
2347
+ get observers() {
2348
+ return e;
2349
+ },
2350
+ next: (s) => {
2351
+ for (const a of e)
2352
+ a.next && a.next(s);
2353
+ },
2354
+ subscribe: (s) => (e.push(s), {
2355
+ unsubscribe: () => {
2356
+ e = e.filter((a) => a !== s);
2357
+ }
2358
+ }),
2359
+ unsubscribe: () => {
2360
+ e = [];
2361
+ }
2362
+ };
2363
+ }
2364
+ var He = (e) => q(e) || !gr(e);
2365
+ function ge(e, t) {
2366
+ if (He(e) || He(t))
2367
+ return e === t;
2368
+ if (we(e) && we(t))
2369
+ return e.getTime() === t.getTime();
2370
+ const n = Object.keys(e), r = Object.keys(t);
2371
+ if (n.length !== r.length)
2372
+ return !1;
2373
+ for (const s of n) {
2374
+ const a = e[s];
2375
+ if (!r.includes(s))
2376
+ return !1;
2377
+ if (s !== "ref") {
2378
+ const i = t[s];
2379
+ if (we(a) && we(i) || B(a) && B(i) || Array.isArray(a) && Array.isArray(i) ? !ge(a, i) : a !== i)
2380
+ return !1;
2381
+ }
2382
+ }
2383
+ return !0;
2384
+ }
2385
+ var wr = (e) => e.type === "select-multiple", es = (e) => wt(e) || Te(e), it = (e) => Ke(e) && e.isConnected, kr = (e) => {
2386
+ for (const t in e)
2387
+ if (de(e[t]))
2388
+ return !0;
2389
+ return !1;
2390
+ };
2391
+ function We(e, t = {}) {
2392
+ const n = Array.isArray(e);
2393
+ if (B(e) || n)
2394
+ for (const r in e)
2395
+ Array.isArray(e[r]) || B(e[r]) && !kr(e[r]) ? (t[r] = Array.isArray(e[r]) ? [] : {}, We(e[r], t[r])) : q(e[r]) || (t[r] = !0);
2396
+ return t;
2397
+ }
2398
+ function Sr(e, t, n) {
2399
+ const r = Array.isArray(e);
2400
+ if (B(e) || r)
2401
+ for (const s in e)
2402
+ Array.isArray(e[s]) || B(e[s]) && !kr(e[s]) ? D(t) || He(n[s]) ? n[s] = Array.isArray(e[s]) ? We(e[s], []) : { ...We(e[s]) } : Sr(e[s], q(t) ? {} : t[s], n[s]) : n[s] = !ge(e[s], t[s]);
2403
+ return n;
2404
+ }
2405
+ var ot = (e, t) => Sr(e, t, We(t)), _r = (e, { valueAsNumber: t, valueAsDate: n, setValueAs: r }) => D(e) ? e : t ? e === "" ? NaN : e && +e : n && ee(e) ? new Date(e) : r ? r(e) : e;
2406
+ function lt(e) {
2407
+ const t = e.ref;
2408
+ if (!(e.refs ? e.refs.every((n) => n.disabled) : t.disabled))
2409
+ return xt(t) ? t.files : wt(t) ? xr(e.refs).value : wr(t) ? [...t.selectedOptions].map(({ value: n }) => n) : Te(t) ? vr(e.refs).value : _r(D(t.value) ? e.ref.value : t.value, e);
2410
+ }
2411
+ var ts = (e, t, n, r) => {
2412
+ const s = {};
2413
+ for (const a of e) {
2414
+ const i = x(t, a);
2415
+ i && L(s, a, i._f);
2416
+ }
2417
+ return {
2418
+ criteriaMode: n,
2419
+ names: [...e],
2420
+ fields: s,
2421
+ shouldUseNativeValidation: r
2422
+ };
2423
+ }, Ee = (e) => D(e) ? e : Ge(e) ? e.source : B(e) ? Ge(e.value) ? e.value.source : e.value : e, rs = (e) => e.mount && (e.required || e.min || e.max || e.maxLength || e.minLength || e.pattern || e.validate);
2424
+ function Ht(e, t, n) {
2425
+ const r = x(e, n);
2426
+ if (r || vt(n))
2427
+ return {
2428
+ error: r,
2429
+ name: n
2430
+ };
2431
+ const s = n.split(".");
2432
+ for (; s.length; ) {
2433
+ const a = s.join("."), i = x(t, a), u = x(e, a);
2434
+ if (i && !Array.isArray(i) && n !== a)
2435
+ return { name: n };
2436
+ if (u && u.type)
2437
+ return {
2438
+ name: a,
2439
+ error: u
2440
+ };
2441
+ s.pop();
2442
+ }
2443
+ return {
2444
+ name: n
2445
+ };
2446
+ }
2447
+ var ns = (e, t, n, r, s) => s.isOnAll ? !1 : !n && s.isOnTouch ? !(t || e) : (n ? r.isOnBlur : s.isOnBlur) ? !e : (n ? r.isOnChange : s.isOnChange) ? e : !0, ss = (e, t) => !Ne(x(e, t)).length && $(e, t);
2448
+ const as = {
2449
+ mode: J.onSubmit,
2450
+ reValidateMode: J.onChange,
2451
+ shouldFocusError: !0
2452
+ };
2453
+ function is(e = {}, t) {
2454
+ let n = {
2455
+ ...as,
2456
+ ...e
2457
+ }, r = {
2458
+ submitCount: 0,
2459
+ isDirty: !1,
2460
+ isLoading: de(n.defaultValues),
2461
+ isValidating: !1,
2462
+ isSubmitted: !1,
2463
+ isSubmitting: !1,
2464
+ isSubmitSuccessful: !1,
2465
+ isValid: !1,
2466
+ touchedFields: {},
2467
+ dirtyFields: {},
2468
+ errors: {},
2469
+ disabled: !1
2470
+ }, s = {}, a = B(n.defaultValues) || B(n.values) ? ae(n.defaultValues || n.values) || {} : {}, i = n.shouldUnregister ? {} : ae(a), u = {
2471
+ action: !1,
2472
+ mount: !1,
2473
+ watch: !1
2474
+ }, c = {
2475
+ mount: /* @__PURE__ */ new Set(),
2476
+ unMount: /* @__PURE__ */ new Set(),
2477
+ array: /* @__PURE__ */ new Set(),
2478
+ watch: /* @__PURE__ */ new Set()
2479
+ }, g, k = 0;
2480
+ const h = {
2481
+ isDirty: !1,
2482
+ dirtyFields: !1,
2483
+ touchedFields: !1,
2484
+ isValidating: !1,
2485
+ isValid: !1,
2486
+ errors: !1
2487
+ }, m = {
2488
+ values: at(),
2489
+ array: at(),
2490
+ state: at()
2491
+ }, v = e.resetOptions && e.resetOptions.keepDirtyValues, S = $t(n.mode), C = $t(n.reValidateMode), A = n.criteriaMode === J.all, F = (o) => (d) => {
2492
+ clearTimeout(k), k = setTimeout(o, d);
2493
+ }, y = async (o) => {
2494
+ if (h.isValid || o) {
2495
+ const d = n.resolver ? W((await G()).errors) : await U(s, !0);
2496
+ d !== r.isValid && m.state.next({
2497
+ isValid: d
2498
+ });
2499
+ }
2500
+ }, N = (o) => h.isValidating && m.state.next({
2501
+ isValidating: o
2502
+ }), z = (o, d = [], f, w, b = !0, p = !0) => {
2503
+ if (w && f) {
2504
+ if (u.action = !0, p && Array.isArray(x(s, o))) {
2505
+ const _ = f(x(s, o), w.argA, w.argB);
2506
+ b && L(s, o, _);
2507
+ }
2508
+ if (p && Array.isArray(x(r.errors, o))) {
2509
+ const _ = f(x(r.errors, o), w.argA, w.argB);
2510
+ b && L(r.errors, o, _), ss(r.errors, o);
2511
+ }
2512
+ if (h.touchedFields && p && Array.isArray(x(r.touchedFields, o))) {
2513
+ const _ = f(x(r.touchedFields, o), w.argA, w.argB);
2514
+ b && L(r.touchedFields, o, _);
2515
+ }
2516
+ h.dirtyFields && (r.dirtyFields = ot(a, i)), m.state.next({
2517
+ name: o,
2518
+ isDirty: M(o, d),
2519
+ dirtyFields: r.dirtyFields,
2520
+ errors: r.errors,
2521
+ isValid: r.isValid
2522
+ });
2523
+ } else
2524
+ L(i, o, d);
2525
+ }, O = (o, d) => {
2526
+ L(r.errors, o, d), m.state.next({
2527
+ errors: r.errors
2528
+ });
2529
+ }, pe = (o, d, f, w) => {
2530
+ const b = x(s, o);
2531
+ if (b) {
2532
+ const p = x(i, o, D(f) ? x(a, o) : f);
2533
+ D(p) || w && w.defaultChecked || d ? L(i, o, d ? p : lt(b._f)) : H(o, p), u.mount && y();
2534
+ }
2535
+ }, ue = (o, d, f, w, b) => {
2536
+ let p = !1, _ = !1;
2537
+ const T = {
2538
+ name: o
2539
+ };
2540
+ if (!f || w) {
2541
+ h.isDirty && (_ = r.isDirty, r.isDirty = T.isDirty = M(), p = _ !== T.isDirty);
2542
+ const P = ge(x(a, o), d);
2543
+ _ = x(r.dirtyFields, o), P ? $(r.dirtyFields, o) : L(r.dirtyFields, o, !0), T.dirtyFields = r.dirtyFields, p = p || h.dirtyFields && _ !== !P;
2544
+ }
2545
+ if (f) {
2546
+ const P = x(r.touchedFields, o);
2547
+ P || (L(r.touchedFields, o, f), T.touchedFields = r.touchedFields, p = p || h.touchedFields && P !== f);
2548
+ }
2549
+ return p && b && m.state.next(T), p ? T : {};
2550
+ }, _e = (o, d, f, w) => {
2551
+ const b = x(r.errors, o), p = h.isValid && ce(d) && r.isValid !== d;
2552
+ if (e.delayError && f ? (g = F(() => O(o, f)), g(e.delayError)) : (clearTimeout(k), g = null, f ? L(r.errors, o, f) : $(r.errors, o)), (f ? !ge(b, f) : b) || !W(w) || p) {
2553
+ const _ = {
2554
+ ...w,
2555
+ ...p && ce(d) ? { isValid: d } : {},
2556
+ errors: r.errors,
2557
+ name: o
2558
+ };
2559
+ r = {
2560
+ ...r,
2561
+ ..._
2562
+ }, m.state.next(_);
2563
+ }
2564
+ N(!1);
2565
+ }, G = async (o) => n.resolver(i, n.context, ts(o || c.mount, s, n.criteriaMode, n.shouldUseNativeValidation)), re = async (o) => {
2566
+ const { errors: d } = await G(o);
2567
+ if (o)
2568
+ for (const f of o) {
2569
+ const w = x(d, f);
2570
+ w ? L(r.errors, f, w) : $(r.errors, f);
2571
+ }
2572
+ else
2573
+ r.errors = d;
2574
+ return d;
2575
+ }, U = async (o, d, f = {
2576
+ valid: !0
2577
+ }) => {
2578
+ for (const w in o) {
2579
+ const b = o[w];
2580
+ if (b) {
2581
+ const { _f: p, ..._ } = b;
2582
+ if (p) {
2583
+ const T = c.array.has(p.name), P = await Gt(b, i, A, n.shouldUseNativeValidation && !d, T);
2584
+ if (P[p.name] && (f.valid = !1, d))
2585
+ break;
2586
+ !d && (x(P, p.name) ? T ? Xn(r.errors, P, p.name) : L(r.errors, p.name, P[p.name]) : $(r.errors, p.name));
2587
+ }
2588
+ _ && await U(_, d, f);
2589
+ }
2590
+ }
2591
+ return f.valid;
2592
+ }, I = () => {
2593
+ for (const o of c.unMount) {
2594
+ const d = x(s, o);
2595
+ d && (d._f.refs ? d._f.refs.every((f) => !it(f)) : !it(d._f.ref)) && Qe(o);
2596
+ }
2597
+ c.unMount = /* @__PURE__ */ new Set();
2598
+ }, M = (o, d) => (o && d && L(i, o, d), !ge(kt(), a)), R = (o, d, f) => Zn(o, c, {
2599
+ ...u.mount ? i : D(d) ? a : ee(o) ? { [o]: d } : d
2600
+ }, f, d), K = (o) => Ne(x(u.mount ? i : a, o, e.shouldUnregister ? x(a, o, []) : [])), H = (o, d, f = {}) => {
2601
+ const w = x(s, o);
2602
+ let b = d;
2603
+ if (w) {
2604
+ const p = w._f;
2605
+ p && (!p.disabled && L(i, o, _r(d, p)), b = Ke(p.ref) && q(d) ? "" : d, wr(p.ref) ? [...p.ref.options].forEach((_) => _.selected = b.includes(_.value)) : p.refs ? Te(p.ref) ? p.refs.length > 1 ? p.refs.forEach((_) => (!_.defaultChecked || !_.disabled) && (_.checked = Array.isArray(b) ? !!b.find((T) => T === _.value) : b === _.value)) : p.refs[0] && (p.refs[0].checked = !!b) : p.refs.forEach((_) => _.checked = _.value === b) : xt(p.ref) ? p.ref.value = "" : (p.ref.value = b, p.ref.type || m.values.next({
2606
+ name: o,
2607
+ values: { ...i }
2608
+ })));
2609
+ }
2610
+ (f.shouldDirty || f.shouldTouch) && ue(o, b, f.shouldTouch, f.shouldDirty, !0), f.shouldValidate && Xe(o);
2611
+ }, Z = (o, d, f) => {
2612
+ for (const w in d) {
2613
+ const b = d[w], p = `${o}.${w}`, _ = x(s, p);
2614
+ (c.array.has(o) || !He(b) || _ && !_._f) && !we(b) ? Z(p, b, f) : H(p, b, f);
2615
+ }
2616
+ }, me = (o, d, f = {}) => {
2617
+ const w = x(s, o), b = c.array.has(o), p = ae(d);
2618
+ L(i, o, p), b ? (m.array.next({
2619
+ name: o,
2620
+ values: { ...i }
2621
+ }), (h.isDirty || h.dirtyFields) && f.shouldDirty && m.state.next({
2622
+ name: o,
2623
+ dirtyFields: ot(a, i),
2624
+ isDirty: M(o, p)
2625
+ })) : w && !w._f && !q(p) ? Z(o, p, f) : H(o, p, f), jt(o, c) && m.state.next({ ...r }), m.values.next({
2626
+ name: o,
2627
+ values: { ...i }
2628
+ }), !u.mount && t();
2629
+ }, Ce = async (o) => {
2630
+ const d = o.target;
2631
+ let f = d.name, w = !0;
2632
+ const b = x(s, f), p = () => d.type ? lt(b._f) : qn(o), _ = (T) => {
2633
+ w = Number.isNaN(T) || T === x(i, f, T);
2634
+ };
2635
+ if (b) {
2636
+ let T, P;
2637
+ const De = p(), ve = o.type === Bt.BLUR || o.type === Bt.FOCUS_OUT, Ir = !rs(b._f) && !n.resolver && !x(r.errors, f) && !b._f.deps || ns(ve, x(r.touchedFields, f), r.isSubmitted, C, S), et = jt(f, c, ve);
2638
+ L(i, f, De), ve ? (b._f.onBlur && b._f.onBlur(o), g && g(0)) : b._f.onChange && b._f.onChange(o);
2639
+ const tt = ue(f, De, ve, !1), Fr = !W(tt) || et;
2640
+ if (!ve && m.values.next({
2641
+ name: f,
2642
+ type: o.type,
2643
+ values: { ...i }
2644
+ }), Ir)
2645
+ return h.isValid && y(), Fr && m.state.next({ name: f, ...et ? {} : tt });
2646
+ if (!ve && et && m.state.next({ ...r }), N(!0), n.resolver) {
2647
+ const { errors: It } = await G([f]);
2648
+ if (_(De), w) {
2649
+ const Lr = Ht(r.errors, s, f), Ft = Ht(It, s, Lr.name || f);
2650
+ T = Ft.error, f = Ft.name, P = W(It);
2651
+ }
2652
+ } else
2653
+ T = (await Gt(b, i, A, n.shouldUseNativeValidation))[f], _(De), w && (T ? P = !1 : h.isValid && (P = await U(s, !0)));
2654
+ w && (b._f.deps && Xe(b._f.deps), _e(f, P, T, tt));
2655
+ }
2656
+ }, Re = (o, d) => {
2657
+ if (x(r.errors, d) && o.focus)
2658
+ return o.focus(), 1;
2659
+ }, Xe = async (o, d = {}) => {
2660
+ let f, w;
2661
+ const b = st(o);
2662
+ if (N(!0), n.resolver) {
2663
+ const p = await re(D(o) ? o : b);
2664
+ f = W(p), w = o ? !b.some((_) => x(p, _)) : f;
2665
+ } else
2666
+ o ? (w = (await Promise.all(b.map(async (p) => {
2667
+ const _ = x(s, p);
2668
+ return await U(_ && _._f ? { [p]: _ } : _);
2669
+ }))).every(Boolean), !(!w && !r.isValid) && y()) : w = f = await U(s);
2670
+ return m.state.next({
2671
+ ...!ee(o) || h.isValid && f !== r.isValid ? {} : { name: o },
2672
+ ...n.resolver || !o ? { isValid: f } : {},
2673
+ errors: r.errors,
2674
+ isValidating: !1
2675
+ }), d.shouldFocus && !w && je(s, Re, o ? b : c.mount), w;
2676
+ }, kt = (o) => {
2677
+ const d = {
2678
+ ...a,
2679
+ ...u.mount ? i : {}
2680
+ };
2681
+ return D(o) ? d : ee(o) ? x(d, o) : o.map((f) => x(d, f));
2682
+ }, St = (o, d) => ({
2683
+ invalid: !!x((d || r).errors, o),
2684
+ isDirty: !!x((d || r).dirtyFields, o),
2685
+ isTouched: !!x((d || r).touchedFields, o),
2686
+ error: x((d || r).errors, o)
2687
+ }), Ar = (o) => {
2688
+ o && st(o).forEach((d) => $(r.errors, d)), m.state.next({
2689
+ errors: o ? r.errors : {}
2690
+ });
2691
+ }, _t = (o, d, f) => {
2692
+ const w = (x(s, o, { _f: {} })._f || {}).ref;
2693
+ L(r.errors, o, {
2694
+ ...d,
2695
+ ref: w
2696
+ }), m.state.next({
2697
+ name: o,
2698
+ errors: r.errors,
2699
+ isValid: !1
2700
+ }), f && f.shouldFocus && w && w.focus && w.focus();
2701
+ }, Er = (o, d) => de(o) ? m.values.subscribe({
2702
+ next: (f) => o(R(void 0, d), f)
2703
+ }) : R(o, d, !0), Qe = (o, d = {}) => {
2704
+ for (const f of o ? st(o) : c.mount)
2705
+ c.mount.delete(f), c.array.delete(f), d.keepValue || ($(s, f), $(i, f)), !d.keepError && $(r.errors, f), !d.keepDirty && $(r.dirtyFields, f), !d.keepTouched && $(r.touchedFields, f), !n.shouldUnregister && !d.keepDefaultValue && $(a, f);
2706
+ m.values.next({
2707
+ values: { ...i }
2708
+ }), m.state.next({
2709
+ ...r,
2710
+ ...d.keepDirty ? { isDirty: M() } : {}
2711
+ }), !d.keepIsValid && y();
2712
+ }, Ct = ({ disabled: o, name: d, field: f, fields: w, value: b }) => {
2713
+ if (ce(o)) {
2714
+ const p = o ? void 0 : D(b) ? lt(f ? f._f : x(w, d)._f) : b;
2715
+ L(i, d, p), ue(d, p, !1, !1, !0);
2716
+ }
2717
+ }, Ye = (o, d = {}) => {
2718
+ let f = x(s, o);
2719
+ const w = ce(d.disabled);
2720
+ return L(s, o, {
2721
+ ...f || {},
2722
+ _f: {
2723
+ ...f && f._f ? f._f : { ref: { name: o } },
2724
+ name: o,
2725
+ mount: !0,
2726
+ ...d
2727
+ }
2728
+ }), c.mount.add(o), f ? Ct({
2729
+ field: f,
2730
+ disabled: d.disabled,
2731
+ name: o
2732
+ }) : pe(o, !0, d.value), {
2733
+ ...w ? { disabled: d.disabled } : {},
2734
+ ...n.progressive ? {
2735
+ required: !!d.required,
2736
+ min: Ee(d.min),
2737
+ max: Ee(d.max),
2738
+ minLength: Ee(d.minLength),
2739
+ maxLength: Ee(d.maxLength),
2740
+ pattern: Ee(d.pattern)
2741
+ } : {},
2742
+ name: o,
2743
+ onChange: Ce,
2744
+ onBlur: Ce,
2745
+ ref: (b) => {
2746
+ if (b) {
2747
+ Ye(o, d), f = x(s, o);
2748
+ const p = D(b.value) && b.querySelectorAll && b.querySelectorAll("input,select,textarea")[0] || b, _ = es(p), T = f._f.refs || [];
2749
+ if (_ ? T.find((P) => P === p) : p === f._f.ref)
2750
+ return;
2751
+ L(s, o, {
2752
+ _f: {
2753
+ ...f._f,
2754
+ ..._ ? {
2755
+ refs: [
2756
+ ...T.filter(it),
2757
+ p,
2758
+ ...Array.isArray(x(a, o)) ? [{}] : []
2759
+ ],
2760
+ ref: { type: p.type, name: o }
2761
+ } : { ref: p }
2762
+ }
2763
+ }), pe(o, !1, void 0, p);
2764
+ } else
2765
+ f = x(s, o, {}), f._f && (f._f.mount = !1), (n.shouldUnregister || d.shouldUnregister) && !(Kn(c.array, o) && u.action) && c.unMount.add(o);
2766
+ }
2767
+ };
2768
+ }, At = () => n.shouldFocusError && je(s, Re, c.mount), Mr = (o) => {
2769
+ ce(o) && (m.state.next({ disabled: o }), je(s, (d) => {
2770
+ d.disabled = o;
2771
+ }, 0, !1));
2772
+ }, Et = (o, d) => async (f) => {
2773
+ f && (f.preventDefault && f.preventDefault(), f.persist && f.persist());
2774
+ let w = ae(i);
2775
+ if (m.state.next({
2776
+ isSubmitting: !0
2777
+ }), n.resolver) {
2778
+ const { errors: b, values: p } = await G();
2779
+ r.errors = b, w = p;
2780
+ } else
2781
+ await U(s);
2782
+ $(r.errors, "root"), W(r.errors) ? (m.state.next({
2783
+ errors: {}
2784
+ }), await o(w, f)) : (d && await d({ ...r.errors }, f), At(), setTimeout(At)), m.state.next({
2785
+ isSubmitted: !0,
2786
+ isSubmitting: !1,
2787
+ isSubmitSuccessful: W(r.errors),
2788
+ submitCount: r.submitCount + 1,
2789
+ errors: r.errors
2790
+ });
2791
+ }, Vr = (o, d = {}) => {
2792
+ x(s, o) && (D(d.defaultValue) ? me(o, x(a, o)) : (me(o, d.defaultValue), L(a, o, d.defaultValue)), d.keepTouched || $(r.touchedFields, o), d.keepDirty || ($(r.dirtyFields, o), r.isDirty = d.defaultValue ? M(o, x(a, o)) : M()), d.keepError || ($(r.errors, o), h.isValid && y()), m.state.next({ ...r }));
2793
+ }, Mt = (o, d = {}) => {
2794
+ const f = o ? ae(o) : a, w = ae(f), b = o && !W(o) ? w : a;
2795
+ if (d.keepDefaultValues || (a = f), !d.keepValues) {
2796
+ if (d.keepDirtyValues || v)
2797
+ for (const p of c.mount)
2798
+ x(r.dirtyFields, p) ? L(b, p, x(i, p)) : me(p, x(b, p));
2799
+ else {
2800
+ if (yt && D(o))
2801
+ for (const p of c.mount) {
2802
+ const _ = x(s, p);
2803
+ if (_ && _._f) {
2804
+ const T = Array.isArray(_._f.refs) ? _._f.refs[0] : _._f.ref;
2805
+ if (Ke(T)) {
2806
+ const P = T.closest("form");
2807
+ if (P) {
2808
+ P.reset();
2809
+ break;
2810
+ }
2811
+ }
2812
+ }
2813
+ }
2814
+ s = {};
2815
+ }
2816
+ i = e.shouldUnregister ? d.keepDefaultValues ? ae(a) : {} : ae(b), m.array.next({
2817
+ values: { ...b }
2818
+ }), m.values.next({
2819
+ values: { ...b }
2820
+ });
2821
+ }
2822
+ c = {
2823
+ mount: /* @__PURE__ */ new Set(),
2824
+ unMount: /* @__PURE__ */ new Set(),
2825
+ array: /* @__PURE__ */ new Set(),
2826
+ watch: /* @__PURE__ */ new Set(),
2827
+ watchAll: !1,
2828
+ focus: ""
2829
+ }, !u.mount && t(), u.mount = !h.isValid || !!d.keepIsValid, u.watch = !!e.shouldUnregister, m.state.next({
2830
+ submitCount: d.keepSubmitCount ? r.submitCount : 0,
2831
+ isDirty: d.keepDirty ? r.isDirty : !!(d.keepDefaultValues && !ge(o, a)),
2832
+ isSubmitted: d.keepIsSubmitted ? r.isSubmitted : !1,
2833
+ dirtyFields: d.keepDirtyValues ? r.dirtyFields : d.keepDefaultValues && o ? ot(a, o) : {},
2834
+ touchedFields: d.keepTouched ? r.touchedFields : {},
2835
+ errors: d.keepErrors ? r.errors : {},
2836
+ isSubmitSuccessful: d.keepIsSubmitSuccessful ? r.isSubmitSuccessful : !1,
2837
+ isSubmitting: !1
2838
+ });
2839
+ }, Vt = (o, d) => Mt(de(o) ? o(i) : o, d);
2840
+ return {
2841
+ control: {
2842
+ register: Ye,
2843
+ unregister: Qe,
2844
+ getFieldState: St,
2845
+ handleSubmit: Et,
2846
+ setError: _t,
2847
+ _executeSchema: G,
2848
+ _getWatch: R,
2849
+ _getDirty: M,
2850
+ _updateValid: y,
2851
+ _removeUnmounted: I,
2852
+ _updateFieldArray: z,
2853
+ _updateDisabledField: Ct,
2854
+ _getFieldArray: K,
2855
+ _reset: Mt,
2856
+ _resetDefaultValues: () => de(n.defaultValues) && n.defaultValues().then((o) => {
2857
+ Vt(o, n.resetOptions), m.state.next({
2858
+ isLoading: !1
2859
+ });
2860
+ }),
2861
+ _updateFormState: (o) => {
2862
+ r = {
2863
+ ...r,
2864
+ ...o
2865
+ };
2866
+ },
2867
+ _disableForm: Mr,
2868
+ _subjects: m,
2869
+ _proxyFormState: h,
2870
+ get _fields() {
2871
+ return s;
2872
+ },
2873
+ get _formValues() {
2874
+ return i;
2875
+ },
2876
+ get _state() {
2877
+ return u;
2878
+ },
2879
+ set _state(o) {
2880
+ u = o;
2881
+ },
2882
+ get _defaultValues() {
2883
+ return a;
2884
+ },
2885
+ get _names() {
2886
+ return c;
2887
+ },
2888
+ set _names(o) {
2889
+ c = o;
2890
+ },
2891
+ get _formState() {
2892
+ return r;
2893
+ },
2894
+ set _formState(o) {
2895
+ r = o;
2896
+ },
2897
+ get _options() {
2898
+ return n;
2899
+ },
2900
+ set _options(o) {
2901
+ n = {
2902
+ ...n,
2903
+ ...o
2904
+ };
2905
+ }
2906
+ },
2907
+ trigger: Xe,
2908
+ register: Ye,
2909
+ handleSubmit: Et,
2910
+ watch: Er,
2911
+ setValue: me,
2912
+ getValues: kt,
2913
+ reset: Vt,
2914
+ resetField: Vr,
2915
+ clearErrors: Ar,
2916
+ unregister: Qe,
2917
+ setError: _t,
2918
+ setFocus: (o, d = {}) => {
2919
+ const f = x(s, o), w = f && f._f;
2920
+ if (w) {
2921
+ const b = w.refs ? w.refs[0] : w.ref;
2922
+ b.focus && (b.focus(), d.shouldSelect && b.select());
2923
+ }
2924
+ },
2925
+ getFieldState: St
2926
+ };
2927
+ }
2928
+ function Je(e = {}) {
2929
+ const t = X.useRef(), n = X.useRef(), [r, s] = X.useState({
2930
+ isDirty: !1,
2931
+ isValidating: !1,
2932
+ isLoading: de(e.defaultValues),
2933
+ isSubmitted: !1,
2934
+ isSubmitting: !1,
2935
+ isSubmitSuccessful: !1,
2936
+ isValid: !1,
2937
+ submitCount: 0,
2938
+ dirtyFields: {},
2939
+ touchedFields: {},
2940
+ errors: {},
2941
+ disabled: !1,
2942
+ defaultValues: de(e.defaultValues) ? void 0 : e.defaultValues
2943
+ });
2944
+ t.current || (t.current = {
2945
+ ...is(e, () => s((i) => ({ ...i }))),
2946
+ formState: r
2947
+ });
2948
+ const a = t.current.control;
2949
+ return a._options = e, Jn({
2950
+ subject: a._subjects.state,
2951
+ next: (i) => {
2952
+ Wn(i, a._proxyFormState, a._updateFormState, !0) && s({ ...a._formState });
2953
+ }
2954
+ }), X.useEffect(() => a._disableForm(e.disabled), [a, e.disabled]), X.useEffect(() => {
2955
+ if (a._proxyFormState.isDirty) {
2956
+ const i = a._getDirty();
2957
+ i !== r.isDirty && a._subjects.state.next({
2958
+ isDirty: i
2959
+ });
2960
+ }
2961
+ }, [a, r.isDirty]), X.useEffect(() => {
2962
+ e.values && !ge(e.values, n.current) ? (a._reset(e.values, a._options.resetOptions), n.current = e.values) : a._resetDefaultValues();
2963
+ }, [e.values, a]), X.useEffect(() => {
2964
+ a._state.mount || (a._updateValid(), a._state.mount = !0), a._state.watch && (a._state.watch = !1, a._subjects.state.next({ ...a._formState })), a._removeUnmounted();
2965
+ }), t.current.formState = Hn(r, a), t.current;
2966
+ }
2967
+ var Wt = function(e, t, n) {
2968
+ if (e && "reportValidity" in e) {
2969
+ var r = x(n, t);
2970
+ e.setCustomValidity(r && r.message || ""), e.reportValidity();
2971
+ }
2972
+ }, os = function(e, t) {
2973
+ var n = function(s) {
2974
+ var a = t.fields[s];
2975
+ a && a.ref && "reportValidity" in a.ref ? Wt(a.ref, s, e) : a.refs && a.refs.forEach(function(i) {
2976
+ return Wt(i, s, e);
2977
+ });
2978
+ };
2979
+ for (var r in t.fields)
2980
+ n(r);
2981
+ }, ls = function(e, t) {
2982
+ t.shouldUseNativeValidation && os(e, t);
2983
+ var n = {};
2984
+ for (var r in e) {
2985
+ var s = x(t.fields, r), a = Object.assign(e[r] || {}, { ref: s && s.ref });
2986
+ if (cs(t.names || Object.keys(e), r)) {
2987
+ var i = Object.assign({}, us(x(n, r)));
2988
+ L(i, "root", a), L(n, r, i);
2989
+ } else
2990
+ L(n, r, a);
2991
+ }
2992
+ return n;
2993
+ }, us = function(e) {
2994
+ return Array.isArray(e) ? e.filter(Boolean) : [];
2995
+ }, cs = function(e, t) {
2996
+ return e.some(function(n) {
2997
+ return n.startsWith(t + ".");
2998
+ });
2999
+ }, ds = function(e, t) {
3000
+ for (var n = {}; e.issues.length; ) {
3001
+ var r = e.issues[0];
3002
+ if (r.path) {
3003
+ var s = r.path.map(function(u) {
3004
+ return u.key;
3005
+ }).join(".");
3006
+ if (n[s] || (n[s] = { message: r.message, type: r.validation }), t) {
3007
+ var a = n[s].types, i = a && a[r.validation];
3008
+ n[s] = yr(s, t, n, r.validation, i ? [].concat(i, r.message) : r.message);
3009
+ }
3010
+ e.issues.shift();
3011
+ }
3012
+ }
3013
+ return n;
3014
+ }, Ze = function(e, t, n) {
3015
+ return n === void 0 && (n = {}), function(r, s, a) {
3016
+ try {
3017
+ return Promise.resolve(function(i, u) {
3018
+ try {
3019
+ var c = function() {
3020
+ function g(h) {
3021
+ return { values: n.raw ? r : h, errors: {} };
3022
+ }
3023
+ var k = Object.assign({}, { abortEarly: !1, abortPipeEarly: !1 }, t);
3024
+ return n.mode === "sync" ? g(ir(e, r, k)) : Promise.resolve(Br(e, r, k)).then(g);
3025
+ }();
3026
+ } catch (g) {
3027
+ return u(g);
3028
+ }
3029
+ return c && c.then ? c.then(void 0, u) : c;
3030
+ }(0, function(i) {
3031
+ if (i instanceof $r)
3032
+ return { values: {}, errors: ls(ds(i, !a.shouldUseNativeValidation && a.criteriaMode === "all"), a) };
3033
+ throw i;
3034
+ }));
3035
+ } catch (i) {
3036
+ return Promise.reject(i);
3037
+ }
3038
+ };
3039
+ };
3040
+ const Jt = 27, Zt = 12, Xt = 10, fs = Le("enum"), hs = (e) => {
3041
+ const t = {
3042
+ min: e.minSelected ?? 0,
3043
+ max: e.maxSelected ?? e.options.length
3044
+ };
3045
+ return Ze(fe({
3046
+ checked: or(jr(Ur()), (n) => Object.entries(n).filter(([r, s]) => s).map(([r, s]) => r), [Be(t.max, `Please select at most ${t.max} option${t.max !== 1 ? "s" : ""}`), $e(t.min, `Please select at least ${t.min} option${t.min !== 1 ? "s" : ""}`)])
3047
+ }));
3048
+ }, ps = ar(({
3049
+ option: e,
3050
+ ...t
3051
+ }, n) => l(ke, {
3052
+ children: [l("input", {
3053
+ class: "peer sr-only h-full",
3054
+ type: "checkbox",
3055
+ ...t,
3056
+ ref: n
3057
+ }), l("label", {
3058
+ class: "bg-lowest hover:bg-neutral-2 active:outline-neutral-8 ease-expo-out outline-divider text-neutral-11 peer-checked:outline-accent-7 peer-checked:bg-accent-2 peer-checked:text-accent-9 peer-focus-visible:ring-accent-9 peer-focus-visible:ring-offset-accent-7 block cursor-pointer select-none rounded-2xl px-3 py-1.5 outline outline-1 ring-0 ring-transparent transition-all selection:bg-transparent peer-focus-visible:ring-4",
3059
+ htmlFor: t.id,
3060
+ children: e.label
3061
+ })]
3062
+ })), Qt = mt("gutter-stable flex w-full flex-1 flex-wrap gap-3 overflow-y-auto rounded-xl p-2.5 pr-4", {
3063
+ variants: {
3064
+ variant: {
3065
+ // In cases where there is only one option, we want to center it
3066
+ singleOption: "justify-center",
3067
+ // Two choices with exactly 1 min 1 max
3068
+ booleanLike: hr
3069
+ }
3070
+ }
3071
+ }), ms = ({
3072
+ input: e,
3073
+ onSubmitSuccess: t
3074
+ }) => {
3075
+ var g, k;
3076
+ const n = e.key ? (g = V.current$.value.flow) == null ? void 0 : g.data.submissions[e.key] : void 0, r = (e.config.minSelected === 1 || e.config.minSelected === void 0) && e.config.maxSelected === 1, s = r && e.config.options.length === 2, {
3077
+ register: a,
3078
+ handleSubmit: i,
3079
+ formState: {
3080
+ errors: u
3081
+ }
3082
+ } = Je({
3083
+ defaultValues: {
3084
+ checked: r ? {} : fs(n) ? Object.fromEntries(n.value.map((h) => [h, !0])) : {}
3085
+ },
3086
+ resolver: hs(e.config)
3087
+ }), c = bt();
3088
+ return s ? l("ul", {
3089
+ style: {
3090
+ maxHeight: 6.5 * Jt + 5 * Zt + 2 * Xt
3091
+ },
3092
+ class: Qt({
3093
+ variant: "booleanLike"
3094
+ }),
3095
+ children: e.config.options.map((h, m) => l("li", {
3096
+ class: "flex-1",
3097
+ children: l(pr, {
3098
+ type: "submit",
3099
+ ref: (v) => {
3100
+ v && m === 0 && (c.current = v);
3101
+ },
3102
+ label: h.label,
3103
+ value: "true",
3104
+ onClick: () => t({
3105
+ type: "enum",
3106
+ value: [h.value]
3107
+ })
3108
+ })
3109
+ }, h.value))
3110
+ }) : l("form", {
3111
+ noValidate: !0,
3112
+ onSubmit: (h) => i((m) => {
3113
+ const v = m.checked;
3114
+ t({
3115
+ type: "enum",
3116
+ value: v
3117
+ });
3118
+ })(h),
3119
+ children: [l("div", {
3120
+ class: "flex items-center gap-1",
3121
+ children: [l("ul", {
3122
+ style: {
3123
+ maxHeight: 6.5 * Jt + 5 * Zt + 2 * Xt
3124
+ },
3125
+ class: Qt({
3126
+ variant: e.config.options.length === 1 ? "singleOption" : void 0
3127
+ }),
3128
+ children: e.config.options.map((h, m) => {
3129
+ const v = `checked.${h.value}`, {
3130
+ ref: S,
3131
+ ...C
3132
+ } = a(v);
3133
+ return l("li", {
3134
+ class: "relative",
3135
+ children: l(ps, {
3136
+ option: h,
3137
+ autoFocus: m === 0,
3138
+ ref: (A) => {
3139
+ A && m === 0 && (c.current = A), S(A);
3140
+ },
3141
+ id: v,
3142
+ ...C,
3143
+ onClick: r ? () => t({
3144
+ type: "enum",
3145
+ value: [h.value]
3146
+ }) : void 0
3147
+ })
3148
+ }, h.value);
3149
+ })
3150
+ }), l("div", {
3151
+ class: "flex flex-col items-center gap-2 pr-2.5 pt-2.5",
3152
+ children: [r ? null : l(be, {}), e.config.minSelected === 0 && l(ye, {
3153
+ type: "button",
3154
+ onClick: () => t({
3155
+ type: "enum",
3156
+ value: []
3157
+ })
3158
+ })]
3159
+ })]
3160
+ }), l("div", {
3161
+ class: "px-1",
3162
+ children: l(Se, {
3163
+ error: (k = u.checked) == null ? void 0 : k.root
3164
+ })
3165
+ })]
3166
+ });
3167
+ }, gs = Le("number"), Oe = {
3168
+ number: () => "Please enter a valid number",
3169
+ min: (e) => `Please enter a number greater than or equal to ${e}`,
3170
+ max: (e) => `Please enter a number less than or equal to ${e}`,
3171
+ decimalCases: (e) => `Please enter a number with at most ${e} decimal cases`
3172
+ }, bs = (e) => {
3173
+ const t = e.min ?? Number.MIN_SAFE_INTEGER, n = e.max ?? Number.MAX_SAFE_INTEGER, r = e.decimalCases ?? 0;
3174
+ return Ze(fe({
3175
+ number: qr(Oe.number(), [zr(t, Oe.min(t)), Kr(n, Oe.max(n)), Gr((s) => s === Number(s.toFixed(r)), Oe.decimalCases(r))])
3176
+ }));
3177
+ }, ys = ({
3178
+ input: e,
3179
+ onSubmitSuccess: t
3180
+ }) => {
3181
+ var k;
3182
+ const n = e.config.defaultValue, r = e.key ? (k = V.current$.value.flow) == null ? void 0 : k.data.submissions[e.key] : void 0, {
3183
+ register: s,
3184
+ handleSubmit: a,
3185
+ formState: {
3186
+ errors: i
3187
+ }
3188
+ } = Je({
3189
+ defaultValues: {
3190
+ number: n ? Number(n) : gs(r) ? r.value : void 0
3191
+ },
3192
+ resolver: bs(e.config)
3193
+ }), {
3194
+ ref: u,
3195
+ ...c
3196
+ } = s("number", {
3197
+ required: !e.config.optional,
3198
+ valueAsNumber: !0
3199
+ }), g = te();
3200
+ return he(() => {
3201
+ g.current && (g.current.focus(), g.current.select());
3202
+ }, []), l("form", {
3203
+ class: "flex flex-col gap-1 p-2.5",
3204
+ onSubmit: a((h) => {
3205
+ h.number !== void 0 && t({
3206
+ type: "number",
3207
+ value: h.number
3208
+ });
3209
+ }),
3210
+ children: [l("div", {
3211
+ class: "flex items-center gap-2",
3212
+ children: [l("div", {
3213
+ class: "relative min-w-0 flex-grow",
3214
+ children: [l("input", {
3215
+ ...c,
3216
+ id: "chat-input",
3217
+ autocomplete: "off",
3218
+ autoCapitalize: "off",
3219
+ autoCorrect: "off",
3220
+ autoFocus: !0,
3221
+ ref: (h) => {
3222
+ h && (g.current = h), u(h);
3223
+ },
3224
+ type: "text",
3225
+ min: e.config.min,
3226
+ max: e.config.max,
3227
+ class: "outline-divider ease-expo-out placeholder:text-neutral-10 text-neutral-12 focus-visible:outline-accent-7 caret-accent-9 bg-lowest [type=number:-webkit-inner-spin-button] w-full rounded-full px-3 py-1 text-base outline outline-2 transition-all [-webkit-outer-spin-button:none]",
3228
+ placeholder: e.config.placeholder
3229
+ }), e.config.optional && l(ye, {
3230
+ class: "absolute right-0 top-0",
3231
+ onClick: () => t(null)
3232
+ })]
3233
+ }), l(be, {})]
3234
+ }), l(Se, {
3235
+ error: i.number
3236
+ })]
3237
+ });
3238
+ }, Yt = (e) => {
3239
+ if (e === "")
3240
+ return {
3241
+ countryCode: "",
3242
+ phoneNumber: ""
3243
+ };
3244
+ const t = Object.entries(gt).find((s) => e.startsWith(s[1])), n = t ? t[1] : "", r = e.replace(n, "");
3245
+ return /^\d+$/.test(r) ? {
3246
+ countryCode: n,
3247
+ phoneNumber: r
3248
+ } : {
3249
+ countryCode: "",
3250
+ phoneNumber: ""
3251
+ };
3252
+ }, vs = "44", ht = "That doesn’t look like a valid phone number", er = (e) => ({
3253
+ min: `The phone number needs to be at least ${e.minChars} digits long.`,
3254
+ max: `The phone number can't be longer than ${e.maxChars} digits.`
3255
+ }), xs = Le("string"), ws = Y(ht, [lr(/^\+?[0-9 -]+$/, ht)]), ks = Y("Please select a country code", [lr(/^\+?[0-9 -]+$/, ht)]), Ss = () => Ze(fe({
3256
+ countryCode: ks,
3257
+ phoneNumber: or(ws, (e) => e.replace(/[^0-9]/g, ""), [])
3258
+ })), _s = ({
3259
+ input: e,
3260
+ onSubmitSuccess: t
3261
+ }) => {
3262
+ var v;
3263
+ const n = e.key ? (v = V.current$.value.flow) == null ? void 0 : v.data.submissions[e.key] : void 0, [r, s] = Q(), {
3264
+ register: a,
3265
+ handleSubmit: i,
3266
+ formState: {
3267
+ errors: u
3268
+ },
3269
+ watch: c
3270
+ } = Je({
3271
+ defaultValues: e.config.defaultValue ? Yt(e.config.defaultValue) : xs(n) ? Yt(n.value) : {
3272
+ countryCode: vs,
3273
+ phoneNumber: ""
3274
+ },
3275
+ resolver: Ss()
3276
+ }), {
3277
+ ref: g,
3278
+ ...k
3279
+ } = a("phoneNumber", {
3280
+ required: !e.config.optional
3281
+ }), h = te(), m = c("countryCode");
3282
+ return he(() => {
3283
+ h.current && (h.current.focus(), h.current.select());
3284
+ }, []), l("form", {
3285
+ noValidate: !0,
3286
+ class: "flex flex-col gap-1 p-2.5",
3287
+ onSubmit: i((S) => {
3288
+ const C = S.phoneNumber.replace(/[^0-9]/g, ""), A = S.countryCode.replace(/[^0-9]/g, "");
3289
+ if (s(void 0), C.length + A.length > (e.config.maxChars || 1 / 0))
3290
+ return s(er(e.config).max);
3291
+ if (C.length + A.length < (e.config.minChars || 0))
3292
+ return s(er(e.config).min);
3293
+ t({
3294
+ type: "string",
3295
+ value: m + S.phoneNumber
3296
+ });
3297
+ }),
3298
+ children: [l("div", {
3299
+ class: "flex items-center gap-2",
3300
+ children: [l("div", {
3301
+ class: "relative flex min-w-0 flex-1 flex-grow gap-2",
3302
+ children: [l("label", {
3303
+ class: "text-neutral-12 bg-lowest hover:bg-neutral-5 placeholder:text-neutral-8 focus-visible:outline-accent-7 focus-within:bg-neutral-5 focus-within:outline-accent-7 outline-divider relative flex h-full cursor-pointer appearance-none items-center justify-center overflow-hidden text-ellipsis whitespace-nowrap rounded-l-full border-solid px-3 py-1.5 text-center text-base outline outline-2 transition-all focus-within:outline-none",
3304
+ htmlFor: `isdk_phone_${e.key}`,
3305
+ children: [l("span", {
3306
+ children: ["+", m]
3307
+ }), l("select", {
3308
+ ...a("countryCode", {}),
3309
+ id: `isdk_phone_${e.key}`,
3310
+ class: "absolute inset-0 opacity-0",
3311
+ children: Object.entries(gt).map(([S, C]) => l("option", {
3312
+ value: C,
3313
+ children: [S, " (+", C, ")"]
3314
+ }, S))
3315
+ })]
3316
+ }), l("input", {
3317
+ ...k,
3318
+ id: "chat-input",
3319
+ type: "tel",
3320
+ inputMode: "tel",
3321
+ autocomplete: "off",
3322
+ autoCapitalize: "off",
3323
+ autoCorrect: "off",
3324
+ autoFocus: !0,
3325
+ ref: (S) => {
3326
+ S && (h.current = S), g(S);
3327
+ },
3328
+ class: "outline-divider ease-expo-out placeholder:text-neutral-10 text-neutral-12 focus-visible:outline-accent-7 caret-accent-9 bg-lowest flex-1 rounded-r-full px-3 py-1 text-base outline outline-2 transition-all",
3329
+ placeholder: e.config.placeholder
3330
+ }), e.config.optional && l(ye, {
3331
+ class: "absolute right-0 top-0",
3332
+ onClick: () => t(null)
3333
+ })]
3334
+ }), l(be, {})]
3335
+ }), l(Se, {
3336
+ error: u.countryCode || u.phoneNumber || {
3337
+ message: r
3338
+ }
3339
+ })]
3340
+ });
3341
+ }, Cs = ({
3342
+ input: e,
3343
+ onSubmitSuccess: t
3344
+ }) => l("div", {
3345
+ class: "flex flex-col items-center py-3",
3346
+ children: l("button", {
3347
+ class: "bg-accent-9 hover:bg-accent-10 active:bg-submit-bg-active hover:border-accent-10 active:border-submit-bg-active border-accent-9 ring-accent-6 focus-visible:outline-accent-8 ring-offset-neutral-1 flex cursor-pointer rounded-full border border-solid px-5 py-3 pr-4 text-white outline-none ring-1 ring-offset-[1.5px] transition-all duration-300 focus-visible:outline-2 active:ring-2 active:ring-offset-2",
3348
+ name: e.key,
3349
+ onClick: () => {
3350
+ t(null);
3351
+ },
3352
+ children: l("span", {
3353
+ class: "flex items-center gap-1.5",
3354
+ children: [l("span", {
3355
+ class: "inline-flex items-center text-sm font-medium",
3356
+ children: e.config.label || "Submit"
3357
+ }), l("svg", {
3358
+ stroke: "currentColor",
3359
+ "stroke-width": "1.5",
3360
+ width: "16",
3361
+ height: "16",
3362
+ viewBox: "0 0 16 16",
3363
+ fill: "none",
3364
+ xmlns: "http://www.w3.org/2000/svg",
3365
+ children: [l("path", {
3366
+ d: "M4 8L8 4L12 8"
3367
+ }), l("path", {
3368
+ d: "M8 4V13"
3369
+ })]
3370
+ })]
3371
+ })
3372
+ })
3373
+ }), ut = {
3374
+ empty: "Please enter some text",
3375
+ email: "That doesn’t look like a valid email address",
3376
+ phone: "That doesn’t look like a valid phone number",
3377
+ url: "That doesn’t look like a valid URL"
3378
+ }, As = {
3379
+ email: {
3380
+ type: "email",
3381
+ inputMode: "email",
3382
+ formNoValidate: !0
3383
+ },
3384
+ text: {
3385
+ type: "text",
3386
+ inputMode: "text"
3387
+ },
3388
+ url: {
3389
+ type: "url",
3390
+ inputMode: "url",
3391
+ formNoValidate: !0
3392
+ }
3393
+ }, Es = Le("string"), Ms = (e) => {
3394
+ const t = {
3395
+ maxLength: `Please enter no more than ${e.maxChars ?? 999} characters`,
3396
+ minLength: `Please enter ${e.minChars ?? 1} or more characters`
3397
+ };
3398
+ return Ze(fe({
3399
+ text: {
3400
+ email: Y(ut.email, [Hr(ut.email), $e(e.minChars ?? 1, t.minLength), Be(e.maxChars ?? 1 / 0, t.maxLength)]),
3401
+ text: Y([$e(e.minChars ?? 1, t.minLength), Be(e.maxChars ?? 1 / 0, t.maxLength)]),
3402
+ url: Y([Wr(ut.url), $e(e.minChars ?? 1, t.minLength), Be(e.maxChars ?? 1 / 0, t.maxLength)])
3403
+ }[e.format]
3404
+ }));
3405
+ }, Vs = ({
3406
+ input: e,
3407
+ onSubmitSuccess: t
3408
+ }) => {
3409
+ var k;
3410
+ const n = e.key ? (k = V.current$.value.flow) == null ? void 0 : k.data.submissions[e.key] : void 0, r = e.config.defaultValue, {
3411
+ register: s,
3412
+ handleSubmit: a,
3413
+ formState: {
3414
+ errors: i
3415
+ }
3416
+ } = Je({
3417
+ defaultValues: {
3418
+ text: r || (Es(n) ? n.value : "")
3419
+ },
3420
+ resolver: Ms(e.config)
3421
+ }), {
3422
+ ref: u,
3423
+ ...c
3424
+ } = s("text", {
3425
+ required: !e.config.optional
3426
+ }), g = te();
3427
+ return he(() => {
3428
+ g.current && (g.current.focus(), g.current.select());
3429
+ }, []), l("form", {
3430
+ noValidate: !0,
3431
+ class: "flex flex-col gap-1 p-2.5",
3432
+ onSubmit: a((h) => {
3433
+ t({
3434
+ type: "string",
3435
+ value: h.text
3436
+ });
3437
+ }),
3438
+ children: [l("div", {
3439
+ class: "flex items-center gap-2",
3440
+ children: [l("div", {
3441
+ class: "relative min-w-0 flex-1",
3442
+ children: [l("input", {
3443
+ id: "chat-input",
3444
+ ...c,
3445
+ ...As[e.config.format],
3446
+ autocomplete: "off",
3447
+ autoCapitalize: "off",
3448
+ autoCorrect: "off",
3449
+ autoFocus: !0,
3450
+ ref: (h) => {
3451
+ h && (g.current = h), u(h);
3452
+ },
3453
+ class: "outline-divider ease-expo-out placeholder:text-neutral-10 text-neutral-12 focus-visible:outline-accent-7 caret-accent-9 bg-lowest w-full rounded-full px-3 py-1 text-base outline outline-2 transition-all",
3454
+ placeholder: e.config.placeholder
3455
+ }), e.config.optional && l(ye, {
3456
+ class: "absolute right-0 top-0",
3457
+ onClick: () => t(null)
3458
+ })]
3459
+ }), l(be, {})]
3460
+ }), l(Se, {
3461
+ error: i.text
3462
+ })]
3463
+ });
3464
+ }, Is = {
3465
+ text: Vs,
3466
+ phone: _s,
3467
+ "multiple-choice": ms,
3468
+ boolean: Rn,
3469
+ file: Un,
3470
+ submit: Cs,
3471
+ address: In,
3472
+ number: ys
3473
+ }, Fs = ({
3474
+ logger: e
3475
+ }) => {
3476
+ var a;
3477
+ const t = (a = V.current$.value.flow) == null ? void 0 : a.data.currentInput, [n, r] = yn(), s = te(null);
3478
+ return V.inputHeight$.value = r.height, oe(() => {
3479
+ const i = s.current;
3480
+ if (i)
3481
+ return i.addEventListener("transitionstart", j.scrollToEnd.smooth), i.addEventListener("transitioncancel", j.scrollToEnd.smooth), i.addEventListener("transitionend", j.scrollToEnd.smooth), () => {
3482
+ i.removeEventListener("transitionstart", j.scrollToEnd.smooth), i.removeEventListener("transitioncancel", j.scrollToEnd.smooth), i.removeEventListener("transitionend", j.scrollToEnd.smooth);
3483
+ };
3484
+ }, []), l("div", {
3485
+ ref: s,
3486
+ class: "ease-expo-out absolute bottom-0 w-full overflow-hidden rounded-b-3xl backdrop-blur-xl transition-all duration-700 will-change-[height]",
3487
+ style: {
3488
+ height: r.height
3489
+ },
3490
+ children: l("div", {
3491
+ ref: n,
3492
+ class: "border-divider flex flex-col justify-end border-t",
3493
+ children: t ? (() => {
3494
+ const i = Is[t.type];
3495
+ return l(i, {
3496
+ logger: e,
3497
+ onSubmitSuccess: j.onSubmitSuccessFn$.value,
3498
+ input: t
3499
+ });
3500
+ })() : l("div", {
3501
+ class: "flex items-center gap-2 p-2.5",
3502
+ children: [l("input", {
3503
+ "aria-hidden": "true",
3504
+ id: "chat-input",
3505
+ class: "outline-divider flex-grow rounded-full bg-transparent px-3 py-1 text-base outline outline-2",
3506
+ disabled: !0
3507
+ }), l(be, {
3508
+ disabled: !0,
3509
+ "aria-hidden": "true",
3510
+ tabIndex: -1
3511
+ })]
3512
+ })
3513
+ })
3514
+ });
3515
+ };
3516
+ var Ls = function(e) {
3517
+ return e instanceof RegExp;
3518
+ }, Ts = function(t) {
3519
+ var n = /[\\^$.*+?()[\]{}|]/g, r = RegExp(n.source);
3520
+ return t && r.test(t) ? t.replace(n, "\\$&") : t;
3521
+ }, Cr = function(e) {
3522
+ return typeof e == "string";
3523
+ }, Ns = function(e) {
3524
+ var t = [];
3525
+ return e.forEach(function(n) {
3526
+ Array.isArray(n) ? t = t.concat(n) : t.push(n);
3527
+ }), t;
3528
+ };
3529
+ function Rs(e, t, n) {
3530
+ var r = 0, s = 0;
3531
+ if (e === "")
3532
+ return e;
3533
+ if (!e || !Cr(e))
3534
+ throw new TypeError("First argument to react-string-replace#replaceString must be a string");
3535
+ var a = t;
3536
+ Ls(a) || (a = new RegExp("(" + Ts(a) + ")", "gi"));
3537
+ for (var i = e.split(a), u = 1, c = i.length; u < c; u += 2) {
3538
+ if (i[u] === void 0 || i[u - 1] === void 0) {
3539
+ console.warn("reactStringReplace: Encountered undefined value during string replacement. Your RegExp may not be working the way you expect.");
3540
+ continue;
3541
+ }
3542
+ s = i[u].length, r += i[u - 1].length, i[u] = n(i[u], u, r), r += s;
3543
+ }
3544
+ return i;
3545
+ }
3546
+ var Ds = function(t, n, r) {
3547
+ return Array.isArray(t) || (t = [t]), Ns(t.map(function(s) {
3548
+ return Cr(s) ? Rs(s, n, r) : s;
3549
+ }));
3550
+ };
3551
+ const Pe = /* @__PURE__ */ sr(Ds), Os = /(\[[^\]]+\]\([^)]+\))/g, Ps = /\[([^\]]+)\]\(([^)]+)\)/, Bs = /(https?:\/\/[^\s]+)/g, $s = /_(.*?)_/g, js = /\*\*(.*?)\*\*/g, tr = "text-accent-10 hover:text-accent-11 no-underline underline-offset-2 hover:underline", Us = (e) => {
3552
+ const t = Pe(e, Os, (a, i) => {
3553
+ const [, u, c] = a.match(Ps) ?? [];
3554
+ return c ? l("a", {
3555
+ class: tr,
3556
+ href: c,
3557
+ children: u ?? c
3558
+ }, c + i) : l("span", {
3559
+ children: "INVALID LINK"
3560
+ });
3561
+ }), n = Pe(t, Bs, (a, i) => l("a", {
3562
+ class: tr,
3563
+ href: a,
3564
+ children: a
3565
+ }, a + i)), r = Pe(n, $s, (a, i) => l("em", {
3566
+ children: a
3567
+ }, a + i));
3568
+ return Pe(r, js, (a, i) => l("strong", {
3569
+ children: a
3570
+ }, a + i));
3571
+ }, qs = mt("select-text max-w-[min(100%,24rem)] [text-wrap:pretty] leading-snug flex-shrink min-w-[2rem] py-2 px-3 rounded-[18px] min-h-[36px] break-words relative", {
3572
+ variants: {
3573
+ side: {
3574
+ left: "bg-bubble-weak-bg text-neutral-12 shadow-surface-sm outline outline-1 outline-bubble-weak rounded-bl-md",
3575
+ right: "ml-auto bg-accent-9 text-white rounded-br-md shadow-surface-sm shadow-bubble-strong-shadow"
3576
+ },
3577
+ animate: {
3578
+ true: "animate-bubble-in",
3579
+ false: ""
3580
+ }
3581
+ },
3582
+ defaultVariants: {
3583
+ side: "left"
3584
+ }
3585
+ }), zs = ({
3586
+ children: e,
3587
+ className: t,
3588
+ animate: n,
3589
+ side: r,
3590
+ ...s
3591
+ }) => l("p", {
3592
+ style: {
3593
+ transformOrigin: r === "left" ? "0% 50%" : "100% 50%"
3594
+ },
3595
+ class: qs({
3596
+ className: t,
3597
+ side: r,
3598
+ animate: n
3599
+ }),
3600
+ ...s,
3601
+ children: e
3602
+ }), Ks = ({
3603
+ message: e
3604
+ }) => l("div", {
3605
+ class: "bg-accent-3 flex w-full items-center justify-center overflow-hidden rounded-xl px-2 py-2",
3606
+ children: l("a", {
3607
+ onClick: e.onClick,
3608
+ class: "bg-lowest shadow-surface-sm ring-accent-6 hover:ring-accent-8 active:bg-accent-2 active:text-accent-10 text-accent-9 focus-visible:ring-accent-7/50 text-wrap-balance flex items-center gap-1.5 rounded-full py-2 pl-4 pr-2.5 text-center no-underline ring-1 transition-all focus:outline-none focus-visible:ring-4 focus-visible:ring-offset-2",
3609
+ target: "_blank",
3610
+ href: e.href,
3611
+ children: [e.text, l("svg", {
3612
+ class: "flex-none",
3613
+ width: "15",
3614
+ height: "15",
3615
+ viewBox: "0 0 15 15",
3616
+ fill: "none",
3617
+ xmlns: "http://www.w3.org/2000/svg",
3618
+ children: l("path", {
3619
+ d: "M3.64645 11.3536C3.45118 11.1583 3.45118 10.8417 3.64645 10.6465L10.2929 4L6 4C5.72386 4 5.5 3.77614 5.5 3.5C5.5 3.22386 5.72386 3 6 3L11.5 3C11.6326 3 11.7598 3.05268 11.8536 3.14645C11.9473 3.24022 12 3.36739 12 3.5L12 9.00001C12 9.27615 11.7761 9.50001 11.5 9.50001C11.2239 9.50001 11 9.27615 11 9.00001V4.70711L4.35355 11.3536C4.15829 11.5488 3.84171 11.5488 3.64645 11.3536Z",
3620
+ fill: "currentColor",
3621
+ "fill-rule": "evenodd",
3622
+ "clip-rule": "evenodd"
3623
+ })
3624
+ })]
3625
+ })
3626
+ }), Gs = ({
3627
+ className: e,
3628
+ ...t
3629
+ }) => (oe(() => {
3630
+ j.scrollToEnd.smooth();
3631
+ }), l("div", {
3632
+ "aria-hidden": !0,
3633
+ children: j.isBotTyping$.value === !0 ? l("div", {
3634
+ "aria-label": "Typing…",
3635
+ class: Fe("flex gap-1 p-4", e),
3636
+ ...t,
3637
+ children: Array.from({
3638
+ length: 3
3639
+ }, (n, r) => l("div", {
3640
+ class: "bg-accent-9 h-1.5 w-1.5 animate-bounce rounded-full",
3641
+ style: {
3642
+ animationDelay: `${-r * 200}ms`
3643
+ }
3644
+ }))
3645
+ }) : void 0
3646
+ })), Hs = {
3647
+ bot: "left",
3648
+ user: "right"
3649
+ }, Ws = mt("w-full select-none py-2 text-wrap-balance text-center text-[10px] uppercase tracking-widest drop-shadow-[0_1.5px_var(--i-color-n-1)]", {
3650
+ variants: {
3651
+ variant: {
3652
+ info: "text-neutral-8",
3653
+ warning: "text-[#FFC107]",
3654
+ error: "text-error-9",
3655
+ success: "text-[#4CAF50]"
3656
+ }
3657
+ }
3658
+ }), Js = ({
3659
+ lastSentMessageFooter: e
3660
+ }) => {
3661
+ var n;
3662
+ const t = ((n = V.current$.value.flow) == null ? void 0 : n.data.messages) ?? [];
3663
+ return oe(() => {
3664
+ j.scrollToEnd.smooth();
3665
+ }, [t.length]), l("ol", {
3666
+ "aria-label": "Chat messages",
3667
+ class: "mt-auto flex flex-col justify-end gap-2 p-2 pt-[calc(var(--header-height)+1rem)]",
3668
+ children: [t.map((r, s) => l(ke, {
3669
+ children: l("li", {
3670
+ class: "flex",
3671
+ children: ze(r).with({
3672
+ type: "system"
3673
+ }, (a) => l("p", {
3674
+ class: Ws({
3675
+ variant: a.variant
3676
+ }),
3677
+ children: a.text
3678
+ })).with({
3679
+ type: "text",
3680
+ author: E.union("bot", "user")
3681
+ }, (a) => {
3682
+ const i = a.author === "user" && !t.slice(s + 1).some((g) => g.type === "text" && g.author === "user"), u = s === t.length - 1, c = a.author === "bot" ? Us(a.text) : a.text;
3683
+ return l(zs, {
3684
+ animate: u,
3685
+ side: Hs[a.author],
3686
+ children: [c, i ? e : null]
3687
+ }, s);
3688
+ }).with({
3689
+ type: "link"
3690
+ }, (a) => l(Ks, {
3691
+ message: a
3692
+ })).with({
3693
+ type: "image"
3694
+ }, (a) => l("img", {
3695
+ class: "shadow-surface-md w-full max-w-[min(100%,24rem)] rounded-2xl",
3696
+ src: a.url,
3697
+ style: {
3698
+ aspectRatio: a.width / a.height
3699
+ }
3700
+ })).with({
3701
+ type: "file"
3702
+ }, (a) => l(Bn, {
3703
+ class: a.author === "bot" ? void 0 : "ml-auto",
3704
+ file: {
3705
+ name: a.fileName,
3706
+ sizeKb: a.fileSizeKb
3707
+ }
3708
+ })).with({
3709
+ type: "loading"
3710
+ }, (a) => {
3711
+ const i = t[t.length - 1];
3712
+ return !(a === i) || j.isBotTyping$.value ? null : l("div", {
3713
+ class: "flex flex-grow flex-col items-center justify-center",
3714
+ children: l(Jr, {
3715
+ class: "text-neutral-6 h-8 w-8"
3716
+ })
3717
+ });
3718
+ }).exhaustive()
3719
+ })
3720
+ }, s)), l(Gs, {}, "typing")]
3721
+ });
3722
+ }, sa = ({
3723
+ logger: e,
3724
+ apiClient: t,
3725
+ analytics: n
3726
+ }) => {
3727
+ const {
3728
+ flow: r
3729
+ } = V.current$.value;
3730
+ ie(r, "Flow is required to exist to show chatbot body");
3731
+ const s = V.viewState$.value, {
3732
+ chatRef: a,
3733
+ chatService: i
3734
+ } = _n(), [u, c] = Q();
3735
+ return he(() => {
3736
+ s === "maximised" && j.scrollToEnd.instant();
3737
+ }, [s]), he(() => {
3738
+ var C, A;
3739
+ const {
3740
+ state: g,
3741
+ flow: k
3742
+ } = V.current$.peek();
3743
+ if (g !== "loaded")
3744
+ throw new Error(Zr.invalid_state);
3745
+ let h = k.data.nodeHistory.at(-1);
3746
+ if (j.scrollToEnd.instant(), V.setInput(void 0), k.data.isFinished)
3747
+ return;
3748
+ h === void 0 ? (h = nr(r.nodes).id, V.setCurrentNodeId(h), n.log({
3749
+ event: "FLOW_START",
3750
+ properties: {
3751
+ flow_id: r.id,
3752
+ flow_version: r.version,
3753
+ flow_session_id: k.data.flowSessionId,
3754
+ flow_build: r.build,
3755
+ job: r.job
3756
+ },
3757
+ customProperties: (C = r.analytics) == null ? void 0 : C.customProperties
3758
+ })) : V.removeMessagesSentByNodeIds([h]);
3759
+ const {
3760
+ interpret: m,
3761
+ abort: v,
3762
+ undo: S
3763
+ } = Yr({
3764
+ context: r.context,
3765
+ analytics: {
3766
+ service: n,
3767
+ customProperties: (A = r.analytics) == null ? void 0 : A.customProperties
3768
+ },
3769
+ apiClient: t,
3770
+ logger: e,
3771
+ flow: r,
3772
+ chatService: i,
3773
+ // We need to get fresh submissions, that’s why we call `peek` here.
3774
+ getSubmissions: () => {
3775
+ var F;
3776
+ return (F = V.current$.peek().flow) == null ? void 0 : F.data.submissions;
3777
+ },
3778
+ onInterpret: (F, y) => {
3779
+ var z;
3780
+ const N = V.current$.peek().flow;
3781
+ ie(N), y && (N.data.sequence = N.data.sequence + 1, n.log({
3782
+ event: "FLOW_NODE",
3783
+ properties: {
3784
+ flow_id: r.id,
3785
+ flow_version: r.version,
3786
+ from_node_id: y.id,
3787
+ flow_build: r.build,
3788
+ to_node_id: F.id,
3789
+ sequence: N.data.sequence,
3790
+ flow_session_id: N.data.flowSessionId,
3791
+ job: r.job
3792
+ },
3793
+ customProperties: (z = r.analytics) == null ? void 0 : z.customProperties
3794
+ })), V.setCurrentNodeId(F.id);
3795
+ },
3796
+ onFlowEnd: async () => {
3797
+ var y;
3798
+ V.markAsFinished();
3799
+ const F = V.current$.peek().flow;
3800
+ ie(F), n.log({
3801
+ event: "FLOW_END",
3802
+ properties: {
3803
+ flow_id: r.id,
3804
+ flow_version: r.version,
3805
+ flow_session_id: F.data.flowSessionId,
3806
+ flow_build: r.build,
3807
+ job: r.job
3808
+ },
3809
+ customProperties: (y = r.analytics) == null ? void 0 : y.customProperties
3810
+ });
3811
+ }
3812
+ });
3813
+ return c(() => S), m(h), v;
3814
+ }, [n, t, i, e, r]), l(ke, {
3815
+ children: [l("div", {
3816
+ ref: a,
3817
+ className: "hide-scrollbars relative flex w-full max-w-full flex-grow flex-col overflow-y-scroll",
3818
+ style: {
3819
+ WebkitOverflowScrolling: "touch",
3820
+ paddingBottom: V.inputHeight$.value
3821
+ },
3822
+ children: l(Js, {
3823
+ lastSentMessageFooter: r.data.isFinished || !u ? null : l(Xs, {
3824
+ undoFn: u
3825
+ })
3826
+ })
3827
+ }), l(Fs, {
3828
+ logger: e
3829
+ })]
3830
+ });
3831
+ }, Zs = (e) => "key" in e.data && e.data.key ? [e.data.key] : "keys" in e.data ? Object.values(e.data.keys).filter((t) => typeof t == "string") : [], Xs = ({
3832
+ undoFn: e
3833
+ }) => l("div", {
3834
+ class: "absolute bottom-0 right-0 flex w-full translate-y-full justify-end",
3835
+ children: l("button", {
3836
+ class: "fr touch-hitbox text-neutral-9 hover:text-neutral-12 rounded-full p-1 text-right text-xs transition-all",
3837
+ onClick: async () => {
3838
+ const {
3839
+ flow: t
3840
+ } = V.current$.peek();
3841
+ ie(t);
3842
+ const {
3843
+ removed: n
3844
+ } = e(t.data.nodeHistory), r = t.data.nodeHistory.splice(-n);
3845
+ r.length !== 0 && (V.removeMessagesSentByNodeIds(r), V.setInput(void 0), r.pop(), r.map((s) => t.nodes.find((a) => a.id === s)).filter(Boolean).flatMap(Zs).forEach((s) => delete t.data.submissions[s]), V.current$.value = {
3846
+ ...V.current$.value
3847
+ });
3848
+ },
3849
+ children: "Undo"
3850
+ })
3851
+ });
3852
+ export {
3853
+ sa as ChatbotBody
3854
+ };