@picked/client 0.0.19-next.1 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/esm/index.js CHANGED
@@ -1,133 +1,749 @@
1
- var y = Object.defineProperty;
2
- var w = (i, e, t) => e in i ? y(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
- var n = (i, e, t) => w(i, typeof e != "symbol" ? e + "" : e, t);
4
- import { c as S, a as x, b as I, d as P, e as v, f as k, g as E, h as F, i as b, j as C, p as A, s as R, k as u, l as j, m as B, n as z, o as U, q as O, r as $, t as d } from "../user-session-BfQ93xNC.js";
5
- import { l as c } from "../logger-C9a75KZn.js";
6
- import { c as K, d as L, e as l } from "../experience-instance-C2AnM2J_.js";
7
- import { i as pe } from "../experience-instance-C2AnM2J_.js";
8
- import { createEvent as W } from "effector";
9
- import { s as h, a as _, b as D } from "../supports-DBMT17KZ.js";
10
- import { g as de, k as le, d as fe, i as he, e as ge, c as me, f as ye, h as we, j as Se } from "../supports-DBMT17KZ.js";
11
- import { c as H, s as f } from "../storage-Cb_71y48.js";
12
- import { l as Ie, a as Pe } from "../storage-Cb_71y48.js";
13
- const q = (i, e, t) => {
14
- const s = e.name, r = e.setup(i);
15
- if (r) {
16
- const o = t[s] ?? {};
17
- t[s] = Object.freeze({ ...o, ...r });
1
+ var Y = Object.defineProperty;
2
+ var J = (t, e, r) => e in t ? Y(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
3
+ var m = (t, e, r) => J(t, typeof e != "symbol" ? e + "" : e, r);
4
+ import { createDomain as b, createApi as I, createEffect as M, attach as Q, sample as x, combine as O, createEvent as C } from "effector";
5
+ import { createFactory as v, invoke as w } from "@withease/factories";
6
+ import { g as _, t as X, c as Z, i as ee, e as $, a as te, b as re, d as se } from "../experience-instance-CMrX6QA2.js";
7
+ import { f as kt } from "../experience-instance-CMrX6QA2.js";
8
+ import { l as k } from "../logger-C9a75KZn.js";
9
+ import { c as R, s as j, l as D } from "../storage-Cb_71y48.js";
10
+ import { a as wt } from "../storage-Cb_71y48.js";
11
+ import { g as ne } from "../id-BW-g3y32.js";
12
+ import { i as oe } from "../object-JwZ58NOH.js";
13
+ import { s as H, a as ie, b as ae, c as ce, d as ue } from "../supports-BjhuLJ8z.js";
14
+ import { h as bt, f as It, j as xt, e as Et, g as Pt, i as Rt, k as Bt } from "../supports-BjhuLJ8z.js";
15
+ const K = b("experience"), le = v(
16
+ ({ client: t, experience: e }) => {
17
+ const r = K.store(e), n = I(r, {
18
+ merge(l, h) {
19
+ return {
20
+ ...l,
21
+ ...h.experience
22
+ };
23
+ }
24
+ }), c = r.map((l) => ({
25
+ name: l.name,
26
+ decisionLogic: l.decide,
27
+ targetSelectors: l.targets,
28
+ initializeOpenLogic: e.initializeOpen
29
+ })), u = t.components.listStore.map(
30
+ (l) => l.find((h) => h.name === `experience:${e.id}`) || l.find((h) => h.name === "experience"),
31
+ { skipVoid: !1 }
32
+ ), s = r.map((l) => ({
33
+ steps: l.steps,
34
+ nodes: l.nodes,
35
+ edges: l.edges,
36
+ conditionals: l.conditionals
37
+ })), o = e.actions ?? [];
38
+ return {
39
+ id: e.id,
40
+ configStore: c,
41
+ treeStore: s,
42
+ componentStore: u,
43
+ actions: o,
44
+ merge: n.merge
45
+ };
46
+ }
47
+ );
48
+ function de(t) {
49
+ return w(le, t);
50
+ }
51
+ const pe = v(({ client: t }) => {
52
+ const e = K.store({}), r = I(e, {
53
+ register(s, o) {
54
+ return {
55
+ ...s,
56
+ [o.id]: o
57
+ };
58
+ }
59
+ });
60
+ function n(s) {
61
+ const o = e.getState()[s.id];
62
+ if (o) {
63
+ o.merge({ experience: s, strategy: "override" });
64
+ return;
65
+ }
66
+ const l = de({ client: t, experience: s });
67
+ r.register(l);
68
+ }
69
+ const c = e.map((s) => Object.values(s));
70
+ function u(s) {
71
+ return e.map((o) => o[s], { skipVoid: !1 });
72
+ }
73
+ return {
74
+ register: n,
75
+ getById: u,
76
+ listStore: c
77
+ };
78
+ });
79
+ function ge(t) {
80
+ return w(pe, t);
81
+ }
82
+ const fe = (t, e) => {
83
+ e.register(t);
84
+ }, q = (t, e) => {
85
+ const { targetSelectors: r } = e.configStore.getState(), n = _(r, e.id);
86
+ n.forEach(
87
+ ({ elements: u }) => u.forEach((s) => X(s, e.id))
88
+ ), Z(n, e.id).forEach((u) => {
89
+ t.experienceInstances.spawn(e, u);
90
+ });
91
+ }, V = async (t) => {
92
+ await Promise.all(
93
+ t.experiences.listStore.getState().map(async (e) => {
94
+ await me(t, e) && q(t, e);
95
+ })
96
+ );
97
+ }, me = async (t, e) => {
98
+ const { decisionLogic: r, targetSelectors: n } = e.configStore.getState();
99
+ return _(n, e.id).length < 1 || n.length === 0 ? !1 : r && ee(r) ? await $(t, r) === !0 : !0;
100
+ }, he = (t, e, r) => {
101
+ const n = e.name, c = e.setup(t);
102
+ if (c) {
103
+ const u = r[n] ?? {};
104
+ r[n] = Object.freeze({ ...u, ...c });
105
+ }
106
+ }, ye = b("component"), Se = v(
107
+ ({ client: t, component: e, name: r }) => {
108
+ const n = t.frameworks.getByName(e.frameworkName);
109
+ return {
110
+ name: r,
111
+ component: e,
112
+ frameworkStore: n
113
+ };
114
+ }
115
+ );
116
+ function ke(t) {
117
+ return w(Se, t);
118
+ }
119
+ const ve = v(({ client: t }) => {
120
+ const e = ye.store({}), r = I(e, {
121
+ register(s, o) {
122
+ return {
123
+ ...s,
124
+ [o.name]: o
125
+ };
126
+ }
127
+ });
128
+ function n(s, o) {
129
+ e.getState()[s] && k(
130
+ "warn",
131
+ `Component '${s}' already registered. Registering again will override the previous registration.`
132
+ );
133
+ const h = ke({ client: t, name: s, component: o });
134
+ r.register(h);
135
+ }
136
+ const c = e.map((s) => Object.values(s));
137
+ function u(s) {
138
+ return e.map((o) => o[s], { skipVoid: !1 });
139
+ }
140
+ return {
141
+ register: n,
142
+ getByName: u,
143
+ listStore: c
144
+ };
145
+ });
146
+ function we(t) {
147
+ return w(ve, t);
148
+ }
149
+ const T = (t, e, r) => {
150
+ r.register(t, e);
151
+ }, Fe = b("framework"), be = v(({ client: t }) => {
152
+ const e = Fe.store({}), r = I(e, {
153
+ register(s, o) {
154
+ return {
155
+ ...s,
156
+ [o.name]: o.framework
157
+ };
158
+ }
159
+ });
160
+ function n(s, o) {
161
+ e.getState()[s] && k(
162
+ "warn",
163
+ `Framework '${s}' already registered. Registering again will override the previous registration.`
164
+ ), r.register({ name: s, framework: o });
165
+ }
166
+ const c = e.map((s) => Object.values(s));
167
+ function u(s) {
168
+ return e.map((o) => o[s], { skipVoid: !1 });
169
+ }
170
+ return {
171
+ register: n,
172
+ getByName: u,
173
+ listStore: c
174
+ };
175
+ });
176
+ function Ie(t) {
177
+ return w(be, t);
178
+ }
179
+ const xe = (t, e) => {
180
+ e.register(t.name, t);
181
+ }, Ee = 6e3, N = R("last_ping", "global"), Pe = (t) => `${t}/api/v1/ping`, Re = async (t) => {
182
+ try {
183
+ const e = Date.now(), r = localStorage.getItem(N);
184
+ if (r && e - parseInt(r) < Ee)
185
+ return !0;
186
+ const n = Pe(t.apiUrl), c = {
187
+ projectId: t.projectId,
188
+ path: window.location.pathname
189
+ }, u = JSON.stringify(c), s = {
190
+ "Content-Type": "application/json"
191
+ }, o = document.getElementById("picked_script"), l = o == null ? void 0 : o.dataset.verceltoken;
192
+ l && (s["x-vercel-protection-bypass"] = l);
193
+ const S = (await fetch(n, {
194
+ method: "POST",
195
+ headers: s,
196
+ body: u
197
+ })).ok;
198
+ return S && localStorage.setItem(N, e.toString()), S;
199
+ } catch (e) {
200
+ return k("error", e), !1;
18
201
  }
19
202
  };
20
- function N(i) {
21
- const e = typeof window < "u", t = {
22
- client: i,
23
- responses: i.responses.listStore.getState(),
24
- fields: i.fields.listStore.getState(),
203
+ function Be(t) {
204
+ const e = typeof window < "u", r = {
205
+ client: t,
206
+ responses: t.responses.listStore.getState(),
207
+ fields: t.fields.listStore.getState(),
25
208
  location: e ? window.location : void 0,
26
209
  document: e ? window.document : void 0,
27
210
  sessionStorage: e ? window.sessionStorage : void 0,
28
211
  localStorage: e ? window.localStorage : void 0
29
212
  };
30
- return Object.freeze(t);
213
+ return Object.freeze(r);
214
+ }
215
+ const Ae = b("predicate"), $e = v(({ client: t }) => {
216
+ const e = Ae.store({}), r = I(e, {
217
+ register(s, o) {
218
+ return {
219
+ ...s,
220
+ [o.name]: {
221
+ name: o.name,
222
+ predicate: o.predicate
223
+ }
224
+ };
225
+ }
226
+ });
227
+ function n(s, o) {
228
+ e.getState()[s] && k(
229
+ "warn",
230
+ `Predicate '${s}' already registered. Registering again will override the previous registration.`
231
+ ), r.register(Object.freeze({ name: s, predicate: o }));
232
+ }
233
+ const c = e.map((s) => Object.values(s));
234
+ function u(s) {
235
+ return e.map((o) => o[s], { skipVoid: !1 });
236
+ }
237
+ return {
238
+ register: n,
239
+ getByName: u,
240
+ listStore: c
241
+ };
242
+ });
243
+ function je(t) {
244
+ return w($e, t);
245
+ }
246
+ const Oe = (t, e, r) => {
247
+ r.register(t, e);
248
+ }, z = b("feature"), Ce = v(({ client: t }) => {
249
+ const e = z.store({}), r = z.store([]), n = I(e, {
250
+ register(d, a) {
251
+ return {
252
+ ...d,
253
+ [a.id]: a.feature
254
+ };
255
+ }
256
+ });
257
+ function c(d, a) {
258
+ e.getState()[d] && k(
259
+ "warn",
260
+ `Feature '${d}' already registered. Registering again will override the previous registration.`
261
+ );
262
+ const p = {
263
+ id: d,
264
+ feature: {
265
+ ...a,
266
+ id: d
267
+ }
268
+ };
269
+ n.register(
270
+ Object.freeze({
271
+ id: d,
272
+ feature: p
273
+ })
274
+ );
275
+ }
276
+ const u = M(
277
+ async ({
278
+ id: d,
279
+ key: a,
280
+ storage: i = "local"
281
+ }) => {
282
+ const p = R(`feature:${d}:${a}`, "global"), g = (i === "session" ? j : D).get(p).boolean();
283
+ return g === null ? null : { id: d, key: a, bucket: g, storage: i };
284
+ }
285
+ ), s = M((d) => {
286
+ if (!d)
287
+ return null;
288
+ const a = R(`feature:${d.id}:${d.key}`, "global");
289
+ (d.storage === "session" ? j : D).set(a, d.bucket);
290
+ }), o = /* @__PURE__ */ new Map(), l = Q({
291
+ source: { allFeaturesStore: e, resolvedFeaturesStore: r },
292
+ effect: async ({ allFeaturesStore: d, resolvedFeaturesStore: a }, { id: i, decide: p, key: f }) => {
293
+ const g = a.find(
294
+ (A) => A.id === i && A.key === f
295
+ );
296
+ if (g)
297
+ return g;
298
+ const y = d[i];
299
+ if (!y)
300
+ throw new Error(`Feature with id '${i}' not found`);
301
+ const F = o.get(`${i}:${f}`);
302
+ if (F !== void 0) {
303
+ const A = await F;
304
+ return { id: y.id, bucket: A, key: f, storage: y.feature.storage };
305
+ }
306
+ const B = p();
307
+ o.set(`${i}:${f}`, B);
308
+ const E = await B;
309
+ return { id: y.id, bucket: E, key: f, storage: y.feature.storage };
310
+ }
311
+ });
312
+ x({
313
+ clock: n.register,
314
+ fn: (d) => {
315
+ const { id: a, feature: i } = d;
316
+ return { id: a, key: i.feature.key, storage: i.feature.storage };
317
+ },
318
+ target: u
319
+ }), x({
320
+ source: e,
321
+ clock: l.doneData,
322
+ fn: (d, a) => {
323
+ var y;
324
+ const { id: i, bucket: p, storage: f } = a, g = (y = d[i]) == null ? void 0 : y.feature.key;
325
+ return g ? { key: g, id: i, bucket: p, storage: f } : null;
326
+ },
327
+ target: s
328
+ });
329
+ const h = O({ allFeaturesStore: e, resolvedFeaturesStore: r }).map(
330
+ ({
331
+ allFeaturesStore: d,
332
+ resolvedFeaturesStore: a
333
+ }) => Object.values(d).map((i) => {
334
+ const p = a.find(
335
+ (f) => f.id === i.id && f.key === i.feature.key
336
+ );
337
+ return p ? {
338
+ id: i.id,
339
+ name: i.feature.name,
340
+ key: i.feature.key,
341
+ getBucket: () => ({ id: i.id, bucket: p.bucket }),
342
+ isResolved: !0
343
+ } : {
344
+ id: i.id,
345
+ name: i.feature.name,
346
+ key: i.feature.key,
347
+ getBucket: async () => await l(i.feature),
348
+ isResolved: !1
349
+ };
350
+ })
351
+ );
352
+ x({
353
+ clock: l.doneData,
354
+ source: { resolvedFeatures: r },
355
+ filter: ({ resolvedFeatures: d }, { id: a, key: i }) => !d.some(
356
+ (f) => f.id === a && f.key === i
357
+ ),
358
+ fn: (d, a) => a,
359
+ target: t.eventBus.prepend((d) => ({
360
+ type: "feature_decide",
361
+ feature: d
362
+ }))
363
+ }), x({
364
+ clock: [u.doneData, l.doneData],
365
+ source: r,
366
+ fn: (d, a) => !a || d.some(
367
+ (p) => p.id === a.id && p.key === a.key
368
+ ) ? d : [...d, a],
369
+ target: r
370
+ });
371
+ function S(d) {
372
+ return e.map((a) => a[d], { skipVoid: !1 });
373
+ }
374
+ return {
375
+ register: c,
376
+ getByName: S,
377
+ listStore: h
378
+ };
379
+ });
380
+ function De(t) {
381
+ return w(Ce, t);
382
+ }
383
+ const Me = (t, e, r) => {
384
+ r.register(t, e);
385
+ }, P = b("history");
386
+ function L(t, e) {
387
+ return {
388
+ // eslint-disable-next-line sonarjs/pseudo-random
389
+ id: ne(`history-entry-${Date.now()}-${Math.random()}}`),
390
+ node: e,
391
+ at: Date.now(),
392
+ experienceId: t
393
+ };
394
+ }
395
+ const Ve = v(() => {
396
+ const t = P.store({ entries: [] }), e = P.event(), r = P.event(), n = P.event(), c = P.event();
397
+ t.on(e, (s, o) => ({
398
+ entries: [...s.entries, L(o.experienceId, o.node)]
399
+ })), t.on(r, (s, o) => ({
400
+ entries: [
401
+ ...s.entries.slice(0, -1),
402
+ L(o.experienceId, o.node)
403
+ ]
404
+ })), t.on(c, (s, o) => o);
405
+ function u(s, o) {
406
+ const l = { lastStepIndex: -1, secondLastStepIndex: -1 };
407
+ for (let h = s.length - 1; h >= 0; h--) {
408
+ const S = s[h], d = S == null ? void 0 : S.node;
409
+ if (!(!d || !te(d)) && !(o && (S == null ? void 0 : S.experienceId) !== o))
410
+ if (l.lastStepIndex === -1)
411
+ l.lastStepIndex = h;
412
+ else {
413
+ l.secondLastStepIndex = h;
414
+ break;
415
+ }
416
+ }
417
+ return l;
418
+ }
419
+ return t.on(n, (s, o) => {
420
+ const { secondLastStepIndex: l } = u(s.entries, o.experienceId), h = l !== -1 ? s.entries.slice(0, l + 1) : s.entries;
421
+ return {
422
+ ...s,
423
+ entries: h
424
+ };
425
+ }), {
426
+ push: e,
427
+ replace: r,
428
+ back: n,
429
+ restore: c,
430
+ entriesStore: t.map((s) => s.entries)
431
+ };
432
+ });
433
+ function Te() {
434
+ return w(Ve);
435
+ }
436
+ const Ne = () => C(), ze = b("field"), Le = v(() => {
437
+ const t = ze.store({}), e = I(t, {
438
+ register(s, o) {
439
+ return {
440
+ ...s,
441
+ [o.field.id]: o.field
442
+ };
443
+ }
444
+ });
445
+ function r(s) {
446
+ e.register({ field: s });
447
+ }
448
+ const n = t.map((s) => Object.values(s));
449
+ function c(s) {
450
+ return t.map((o) => o[s] || null);
451
+ }
452
+ function u(s) {
453
+ return t.map((o) => Object.values(o).find((l) => l.name === s) || null);
454
+ }
455
+ return {
456
+ register: r,
457
+ getById: c,
458
+ listStore: n,
459
+ getByName: u
460
+ };
461
+ });
462
+ function Ue() {
463
+ return w(Le);
464
+ }
465
+ const _e = (t, e) => {
466
+ e.register(t);
467
+ }, He = b("action"), Ke = v(() => {
468
+ const t = He.store({}), e = I(t, {
469
+ register(u, s) {
470
+ return {
471
+ ...u,
472
+ [s.name]: {
473
+ name: s.name,
474
+ action: s.action
475
+ }
476
+ };
477
+ }
478
+ });
479
+ function r(u, s) {
480
+ e.register({ name: u, action: s });
481
+ }
482
+ const n = t.map((u) => Object.values(u));
483
+ function c(u) {
484
+ return t.map((s) => s[u], { skipVoid: !1 });
485
+ }
486
+ return {
487
+ register: r,
488
+ getByName: c,
489
+ listStore: n
490
+ };
491
+ });
492
+ function qe() {
493
+ return w(Ke);
494
+ }
495
+ const Ge = (t, e, r) => {
496
+ r.register(t, e);
497
+ };
498
+ function U(t) {
499
+ return typeof t > "u" || t === null || t === "" || Array.isArray(t) && !t.length;
500
+ }
501
+ const We = b("response"), Ye = v(({ client: t }) => {
502
+ const e = We.store({}), r = C(), n = C(), c = I(e, {
503
+ register(a, i) {
504
+ return {
505
+ ...a,
506
+ [i.fieldId]: i.response
507
+ };
508
+ },
509
+ registerBatch(a, i) {
510
+ return {
511
+ ...a,
512
+ ...i
513
+ };
514
+ },
515
+ clear(a, i) {
516
+ const { [i]: p, ...f } = a;
517
+ return f;
518
+ },
519
+ clearAll() {
520
+ return {};
521
+ }
522
+ });
523
+ function u(a, i) {
524
+ c.register({ fieldId: a, response: i });
525
+ }
526
+ async function s(a) {
527
+ const i = [];
528
+ return await Promise.allSettled(
529
+ Object.entries(a).map(async ([p, f]) => {
530
+ let g = f;
531
+ const y = t.fields.getById(p).getState();
532
+ if (!y) {
533
+ i.push({
534
+ fieldId: p,
535
+ userMessage: `Field '${p}' not found`,
536
+ systemMessage: `No field with ID '${p}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,
537
+ value: g
538
+ });
539
+ return;
540
+ }
541
+ if (y.multiple && (typeof g == "string" || typeof g == "number" || typeof g == "boolean") && (g = [g]), y.validation && !oe(y.validation) && !U(g)) {
542
+ const F = await $(t, y.validation, {
543
+ $input: g
544
+ });
545
+ if (typeof F == "string") {
546
+ i.push({
547
+ fieldId: p,
548
+ userMessage: F,
549
+ systemMessage: `Field validation resulted in an error: ${F}.`,
550
+ value: g
551
+ });
552
+ return;
553
+ }
554
+ if (F === !1) {
555
+ i.push({
556
+ fieldId: p,
557
+ userMessage: "This field is invalid",
558
+ systemMessage: "Field validation resulted in an unspecified error.",
559
+ value: g
560
+ });
561
+ return;
562
+ }
563
+ }
564
+ if (y.required && U(g)) {
565
+ i.push({
566
+ fieldId: p,
567
+ userMessage: "This field is required",
568
+ systemMessage: "Field is required.",
569
+ value: g
570
+ });
571
+ return;
572
+ }
573
+ if (!y.multiple && Array.isArray(g) && g.length > 1) {
574
+ i.push({
575
+ fieldId: p,
576
+ userMessage: "This field expects a single response",
577
+ systemMessage: "Field expects a single response.",
578
+ value: g
579
+ });
580
+ return;
581
+ }
582
+ if (y.options) {
583
+ const F = y.options.map((E) => E.value), B = Array.isArray(g) ? g : [g];
584
+ Array.isArray(g) && (B.every((E) => F.includes(E)) || i.push({
585
+ fieldId: p,
586
+ userMessage: "This field expects a valid option",
587
+ systemMessage: `Field expects a valid option. Valid options are: ${F.join(", ")}`,
588
+ value: g
589
+ }));
590
+ }
591
+ })
592
+ ), { responsesToCommit: a, validationErrors: i };
593
+ }
594
+ async function o(a) {
595
+ const { responsesToCommit: i, validationErrors: p } = await s(a);
596
+ return p.length ? { errors: p } : (c.registerBatch(i), { errors: [] });
597
+ }
598
+ const l = e.map((a) => a), h = e.map((a) => Object.keys(a).map((p) => ({
599
+ fieldId: p,
600
+ value: a[p]
601
+ })));
602
+ function S(a) {
603
+ const i = t.fields.getById(a), p = e.map((f) => f[a] || null);
604
+ return O({ f: i, r: p }, ({ f, r: g }) => g || (f != null && f.defaultValue ? f.defaultValue : null));
605
+ }
606
+ function d(a) {
607
+ const i = t.fields.getByName(a);
608
+ return O({ f: i, s: e }, ({ f: p, s: f }) => {
609
+ const g = p && f[p.id] || null;
610
+ return g || (p != null && p.defaultValue ? p.defaultValue : null);
611
+ });
612
+ }
613
+ return x({
614
+ clock: r,
615
+ target: c.clearAll
616
+ }), x({
617
+ clock: n,
618
+ target: c.clear
619
+ }), {
620
+ register: u,
621
+ clearAll: r,
622
+ clear: n,
623
+ commit: o,
624
+ getResponsesToCommit: s,
625
+ listStore: h,
626
+ getAllStore: l,
627
+ getByFieldId: S,
628
+ getByFieldName: d
629
+ };
630
+ });
631
+ function Je(t) {
632
+ return w(Ye, t);
31
633
  }
32
- const T = () => W(), V = () => "0.0.19-next.1";
33
- function G() {
34
- if (h()) {
35
- const i = [
634
+ const Qe = () => "0.0.19";
635
+ function Xe() {
636
+ if (H()) {
637
+ const t = [
36
638
  document.currentScript,
37
639
  document.getElementById("picked_script"),
38
640
  document.getElementById("picked"),
39
641
  document.getElementById("cvly"),
40
642
  document.getElementById("cvly-x")
41
643
  ];
42
- for (const e of i)
644
+ for (const e of t)
43
645
  if (e != null && e.dataset.api)
44
646
  return e.dataset.api;
45
647
  }
46
648
  return "https://api.picked.app";
47
649
  }
48
- function J() {
49
- if (!_())
650
+ function Ze() {
651
+ if (!ie())
50
652
  return {};
51
- const i = new URLSearchParams(window.location.search), e = {}, t = /* @__PURE__ */ new Set();
52
- for (const [r] of i.entries())
53
- r.startsWith("picked-") && t.add(r);
54
- for (const r of t) {
55
- const o = r.replace("picked-", "");
56
- e[o] = i.getAll(r);
57
- }
58
- const s = H("s");
59
- if (t.size > 0)
60
- f.set(s, e);
653
+ const t = new URLSearchParams(window.location.search), e = {}, r = /* @__PURE__ */ new Set();
654
+ for (const [c] of t.entries())
655
+ c.startsWith("picked-") && r.add(c);
656
+ for (const c of r) {
657
+ const u = c.replace("picked-", "");
658
+ e[u] = t.getAll(c);
659
+ }
660
+ const n = R("s");
661
+ if (r.size > 0)
662
+ j.set(n, e);
61
663
  else {
62
- const r = f.get(s);
63
- if (r)
64
- return r.json() || {};
664
+ const c = j.get(n);
665
+ if (c)
666
+ return c.json() || {};
65
667
  }
66
668
  return e;
67
669
  }
68
- class g {
670
+ function et() {
671
+ if (ce())
672
+ return crypto.randomUUID();
673
+ const t = Date.now().toString(36), e = Math.random().toString(36).substring(2, 15), r = Math.random().toString(36).substring(2, 15), n = Math.random().toString(36).substring(2, 15);
674
+ return `${t}-${e}-${r}-${n}`;
675
+ }
676
+ const tt = () => ({
677
+ id: et()
678
+ }), rt = R("session", "global"), st = () => {
679
+ if (!ae()) return null;
680
+ const t = D.get(rt);
681
+ let e = t.isSet() ? t.json() : null;
682
+ return e || (e = tt(), t.set(e)), e;
683
+ }, nt = () => st();
684
+ class G {
69
685
  constructor(e) {
70
- n(this, "options");
71
- n(this, "isReady", !1);
72
- n(this, "project");
73
- n(this, "plugins", {});
74
- n(this, "eventBus", T());
75
- n(this, "organizationId");
76
- n(this, "projectId");
77
- n(this, "apiUrl");
78
- n(this, "session");
79
- n(this, "searchParams", J());
80
- n(this, "history", S());
81
- n(this, "components", x({ client: this }));
82
- n(this, "experienceInstances", K({ client: this }));
83
- n(this, "experiences", I({ client: this }));
84
- n(this, "frameworks", P({ client: this }));
85
- n(this, "predicates", v({ client: this }));
86
- n(this, "features", k({ client: this }));
87
- n(this, "responses", E({ client: this }));
88
- n(this, "fields", F());
89
- n(this, "actions", b());
90
- c("info", "Picked client initializing."), this.organizationId = e.organizationId, this.projectId = e.projectId, this.options = Object.freeze(e), this.apiUrl = e.apiUrl || G(), this.session = C(), this.setupPlugins(), this.setupFeatures(), this.setupPredicates(), this.setupActions(), this.eventBus({ type: "initialized", version: V() }), c("info", "Picked client initialized.");
686
+ m(this, "options");
687
+ m(this, "isReady", !1);
688
+ m(this, "project");
689
+ m(this, "plugins", {});
690
+ m(this, "eventBus", Ne());
691
+ m(this, "organizationId");
692
+ m(this, "projectId");
693
+ m(this, "apiUrl");
694
+ m(this, "session");
695
+ m(this, "searchParams", Ze());
696
+ m(this, "history", Te());
697
+ m(this, "components", we({ client: this }));
698
+ m(this, "experienceInstances", re({ client: this }));
699
+ m(this, "experiences", ge({ client: this }));
700
+ m(this, "frameworks", Ie({ client: this }));
701
+ m(this, "predicates", je({ client: this }));
702
+ m(this, "features", De({ client: this }));
703
+ m(this, "responses", Je({ client: this }));
704
+ m(this, "fields", Ue());
705
+ m(this, "actions", qe());
706
+ k("info", "Picked client initializing."), this.organizationId = e.organizationId, this.projectId = e.projectId, this.options = Object.freeze(e), this.apiUrl = e.apiUrl || Xe(), this.session = nt(), this.setupPlugins(), this.setupFeatures(), this.setupPredicates(), this.setupActions(), this.eventBus({ type: "initialized", version: Qe() }), k("info", "Picked client initialized.");
91
707
  }
92
708
  start() {
93
- A(this), (async () => {
94
- h() && (document.body && d(this), await L(), d(this), this.eventBus({ type: "ready" }), this.isReady = !0, this.session && this.eventBus({ type: "session", ...this.session }));
709
+ Re(this), (async () => {
710
+ H() && (document.body && V(this), await se(), V(this), this.eventBus({ type: "ready" }), this.isReady = !0, this.session && this.eventBus({ type: "session", ...this.session }));
95
711
  })();
96
712
  }
97
713
  registerFramework(e) {
98
- R(e, this.frameworks);
714
+ xe(e, this.frameworks);
99
715
  }
100
- registerComponent(e, t) {
101
- u(e, t, this.components);
716
+ registerComponent(e, r) {
717
+ T(e, r, this.components);
102
718
  }
103
719
  registerPlugin(e) {
104
- q(this, e, this.plugins);
720
+ he(this, e, this.plugins);
105
721
  }
106
- registerFeature(e, t) {
107
- j(e, t, this.features);
722
+ registerFeature(e, r) {
723
+ Me(e, r, this.features);
108
724
  }
109
- registerPredicate(e, t) {
110
- B(e, t, this.predicates);
725
+ registerPredicate(e, r) {
726
+ Oe(e, r, this.predicates);
111
727
  }
112
728
  registerField(e) {
113
- z(e, this.fields);
729
+ _e(e, this.fields);
114
730
  }
115
- registerAction(e, t) {
116
- U(e, t, this.actions);
731
+ registerAction(e, r) {
732
+ Ge(e, r, this.actions);
117
733
  }
118
734
  registerExperience(e) {
119
- e.component && u(`experience:${e.id}`, e.component, this.components), O(e, this.experiences);
735
+ e.component && T(`experience:${e.id}`, e.component, this.components), fe(e, this.experiences);
120
736
  }
121
737
  getStateSnapshot() {
122
- return N(this);
738
+ return Be(this);
123
739
  }
124
740
  async launchExperienceById(e) {
125
- const t = this.experiences.getById(e).getState();
126
- if (!t) {
127
- c("warn", `Experience with id '${e}' not found.`);
741
+ const r = this.experiences.getById(e).getState();
742
+ if (!r) {
743
+ k("warn", `Experience with id '${e}' not found.`);
128
744
  return;
129
745
  }
130
- $(this, t);
746
+ q(this, r);
131
747
  }
132
748
  // private async fetchProject() {
133
749
  // if (this.project) {
@@ -140,38 +756,38 @@ class g {
140
756
  // }
141
757
  setupPlugins() {
142
758
  var e;
143
- (e = this.options.plugins) == null || e.forEach((t) => {
144
- if (Array.isArray(t)) {
145
- t.forEach((r) => {
146
- this.registerPlugin(r);
759
+ (e = this.options.plugins) == null || e.forEach((r) => {
760
+ if (Array.isArray(r)) {
761
+ r.forEach((c) => {
762
+ this.registerPlugin(c);
147
763
  });
148
764
  return;
149
765
  }
150
- const s = typeof t == "function" ? t() : t;
151
- if (Array.isArray(s)) {
152
- s.forEach((r) => this.registerPlugin(r));
766
+ const n = typeof r == "function" ? r() : r;
767
+ if (Array.isArray(n)) {
768
+ n.forEach((c) => this.registerPlugin(c));
153
769
  return;
154
770
  }
155
- this.registerPlugin(s);
771
+ this.registerPlugin(n);
156
772
  });
157
773
  }
158
774
  setupFeatures() {
159
775
  const e = this.options.features;
160
- e && (Object.entries(e).forEach(([t, s]) => {
161
- const r = typeof s == "function" ? s() : s;
162
- this.registerFeature(t, r);
163
- }), this.searchParams.feature && this.searchParams.feature.forEach((t) => {
776
+ e && (Object.entries(e).forEach(([r, n]) => {
777
+ const c = typeof n == "function" ? n() : n;
778
+ this.registerFeature(r, c);
779
+ }), this.searchParams.feature && this.searchParams.feature.forEach((r) => {
164
780
  try {
165
- const [s, r] = t.split(":");
166
- if (!s || !r)
781
+ const [n, c] = r.split(":");
782
+ if (!n || !c)
167
783
  return;
168
- let o = r;
169
- o === "true" && (o = !0), o === "false" && (o = !1), this.registerFeature(s, {
170
- key: `${o}`,
784
+ let u = c;
785
+ u === "true" && (u = !0), u === "false" && (u = !1), this.registerFeature(n, {
786
+ key: `${u}`,
171
787
  // use the assigned bucket value as the key
172
- name: s,
788
+ name: n,
173
789
  // eslint-disable-next-line sonarjs/function-return-type
174
- decide: () => o,
790
+ decide: () => u,
175
791
  storage: "session"
176
792
  });
177
793
  } catch {
@@ -180,73 +796,73 @@ class g {
180
796
  }
181
797
  setupPredicates() {
182
798
  const e = this.options.predicates;
183
- e && Object.entries(e).forEach(([t, s]) => {
184
- if (typeof s != "function") {
185
- c("warn", `Predicate "${t}" is not a function.`);
799
+ e && Object.entries(e).forEach(([r, n]) => {
800
+ if (typeof n != "function") {
801
+ k("warn", `Predicate "${r}" is not a function.`);
186
802
  return;
187
803
  }
188
- this.registerPredicate(t, s);
804
+ this.registerPredicate(r, n);
189
805
  });
190
806
  }
191
807
  setupActions() {
192
808
  const e = this.options.actions;
193
- e && Object.entries(e).forEach(([t, s]) => {
194
- if (typeof s != "function") {
195
- c("warn", `Action "${t}" is not a function.`);
809
+ e && Object.entries(e).forEach(([r, n]) => {
810
+ if (typeof n != "function") {
811
+ k("warn", `Action "${r}" is not a function.`);
196
812
  return;
197
813
  }
198
- this.registerAction(t, s);
814
+ this.registerAction(r, n);
199
815
  });
200
816
  }
201
817
  getPluginConfig(e) {
202
818
  return this.plugins[e] ?? {};
203
819
  }
204
820
  }
205
- n(g, "logger", c);
206
- function m(i) {
821
+ m(G, "logger", k);
822
+ function W(t) {
207
823
  var e;
208
- return ((e = i.options) == null ? void 0 : e.some((t) => "condition" in t)) ?? !1;
824
+ return ((e = t.options) == null ? void 0 : e.some((r) => "condition" in r)) ?? !1;
209
825
  }
210
- function M(i) {
211
- return i.some((e) => e.condition || m(e));
826
+ function ot(t) {
827
+ return t.some((e) => e.condition || W(e));
212
828
  }
213
- async function re(i, e) {
214
- return e.length === 0 || !M(e) ? e : (await Promise.all(
215
- e.map(async (s) => {
216
- if (!(s.condition ? await l(i, s.condition) : !0))
829
+ async function mt(t, e) {
830
+ return e.length === 0 || !ot(e) ? e : (await Promise.all(
831
+ e.map(async (n) => {
832
+ if (!(n.condition ? await $(t, n.condition) : !0))
217
833
  return null;
218
- if (!s.options || !m(s))
219
- return s;
220
- const p = (await Promise.all(
221
- s.options.map(async (a) => a.condition ? await l(i, a.condition) ? a : null : a)
222
- )).filter((a) => a !== null);
223
- return p.length === s.options.length ? s : p.length === 0 ? null : { ...s, options: p };
834
+ if (!n.options || !W(n))
835
+ return n;
836
+ const s = (await Promise.all(
837
+ n.options.map(async (l) => l.condition ? await $(t, l.condition) ? l : null : l)
838
+ )).filter((l) => l !== null);
839
+ return s.length === n.options.length ? n : s.length === 0 ? null : { ...n, options: s };
224
840
  })
225
- )).filter((s) => s !== null);
841
+ )).filter((n) => n !== null);
226
842
  }
227
- const oe = (i) => {
228
- const e = new g(i);
229
- return D(e), e;
843
+ const ht = (t) => {
844
+ const e = new G(t);
845
+ return ue(e), e;
230
846
  };
231
847
  export {
232
- g as Picked,
233
- oe as createClient,
234
- H as createStorageKey,
235
- l as evaluateRuleLogic,
236
- re as getStepFields,
237
- pe as isPickedRoot,
238
- Ie as localStore,
239
- f as sessionStore,
240
- Pe as subscribe,
241
- de as supportsCookies,
242
- le as supportsCryptoRandomUUID,
243
- h as supportsDocument,
244
- fe as supportsHistory,
245
- he as supportsIntersectionObserver,
246
- ge as supportsLocalStorage,
247
- me as supportsLocation,
248
- ye as supportsSessionStorage,
249
- we as supportsShadowRoot,
250
- Se as supportsWebComponents,
251
- _ as supportsWindow
848
+ G as Picked,
849
+ ht as createClient,
850
+ R as createStorageKey,
851
+ $ as evaluateRuleLogic,
852
+ mt as getStepFields,
853
+ kt as isPickedRoot,
854
+ D as localStore,
855
+ j as sessionStore,
856
+ wt as subscribe,
857
+ bt as supportsCookies,
858
+ ce as supportsCryptoRandomUUID,
859
+ H as supportsDocument,
860
+ It as supportsHistory,
861
+ xt as supportsIntersectionObserver,
862
+ ae as supportsLocalStorage,
863
+ Et as supportsLocation,
864
+ Pt as supportsSessionStorage,
865
+ Rt as supportsShadowRoot,
866
+ Bt as supportsWebComponents,
867
+ ie as supportsWindow
252
868
  };