@picked/client 0.0.1-dev.1763966324978 → 0.0.1-dev.1764025609515

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