@picked/client 0.0.51-next.1 → 0.0.51-next.10

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.
Files changed (75) hide show
  1. package/dist/api-CHy9HcU7.cjs +1 -0
  2. package/dist/{api-Brluf3C1.js → api-mlYS-lDj.js} +1 -1
  3. package/dist/cjs/form/index.js +1 -1
  4. package/dist/cjs/index.js +2 -2
  5. package/dist/cjs/plugins/create-experience/index.js +1 -1
  6. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  7. package/dist/cjs/plugins/responses-browser-storage/index.js +1 -1
  8. package/dist/cjs/plugins/responses-indexeddb/index.js +1 -1
  9. package/dist/cjs/server/index.js +1 -1
  10. package/dist/esm/form/index.js +82 -76
  11. package/dist/esm/index.js +436 -355
  12. package/dist/esm/plugins/create-experience/index.js +181 -154
  13. package/dist/esm/plugins/dynamic-experiences/index.js +52 -30
  14. package/dist/esm/plugins/responses-browser-storage/index.js +6 -8
  15. package/dist/esm/plugins/responses-indexeddb/index.js +8 -4
  16. package/dist/esm/server/index.js +1 -1
  17. package/dist/experience-instance-DOcd8XI1.cjs +1 -0
  18. package/dist/{experience-instance-CIbQp9D7.js → experience-instance-NHU1moID.js} +37 -32
  19. package/dist/{rules-logic-BIkBWZmf.js → rules-logic-CnVktz2l.js} +9 -2
  20. package/dist/{rules-logic-DDxCiq4P.cjs → rules-logic-nMHNVLn7.cjs} +1 -1
  21. package/dist/types/client.d.ts +47 -43
  22. package/dist/types/client.d.ts.map +1 -1
  23. package/dist/types/entities/action/action.d.ts +37 -5
  24. package/dist/types/entities/action/action.d.ts.map +1 -1
  25. package/dist/types/entities/condition/condition.d.ts +20 -0
  26. package/dist/types/entities/condition/condition.d.ts.map +1 -0
  27. package/dist/types/entities/experience/experience.d.ts +63 -47
  28. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  29. package/dist/types/entities/experience-instance/experience-instance.d.ts +22 -2
  30. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  31. package/dist/types/entities/field/field.d.ts +13 -2
  32. package/dist/types/entities/field/field.d.ts.map +1 -1
  33. package/dist/types/entities/response/response-validation.d.ts +74 -0
  34. package/dist/types/entities/response/response-validation.d.ts.map +1 -0
  35. package/dist/types/entities/response/response.d.ts +24 -20
  36. package/dist/types/entities/response/response.d.ts.map +1 -1
  37. package/dist/types/entities/step/step.d.ts +42 -0
  38. package/dist/types/entities/step/step.d.ts.map +1 -0
  39. package/dist/types/form/build-responses.d.ts +12 -9
  40. package/dist/types/form/build-responses.d.ts.map +1 -1
  41. package/dist/types/form/create-field-evaluator.d.ts +11 -3
  42. package/dist/types/form/create-field-evaluator.d.ts.map +1 -1
  43. package/dist/types/form/create-field-validation.d.ts +4 -4
  44. package/dist/types/form/create-field-validation.d.ts.map +1 -1
  45. package/dist/types/form/create-form.d.ts +1 -0
  46. package/dist/types/form/create-form.d.ts.map +1 -1
  47. package/dist/types/form/create-submit-pipeline.d.ts +19 -7
  48. package/dist/types/form/create-submit-pipeline.d.ts.map +1 -1
  49. package/dist/types/form/get-step-fields.d.ts +13 -0
  50. package/dist/types/form/get-step-fields.d.ts.map +1 -1
  51. package/dist/types/index.d.ts +2 -0
  52. package/dist/types/index.d.ts.map +1 -1
  53. package/dist/types/picked.d.ts +98 -31
  54. package/dist/types/picked.d.ts.map +1 -1
  55. package/dist/types/plugins/create-experience/create-experience.d.ts +31 -11
  56. package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
  57. package/dist/types/plugins/create-experience/index.d.ts +2 -2
  58. package/dist/types/plugins/create-experience/index.d.ts.map +1 -1
  59. package/dist/types/plugins/create-experience/plugin.d.ts.map +1 -1
  60. package/dist/types/plugins/dynamic-experiences/plugin.d.ts +21 -4
  61. package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
  62. package/dist/types/plugins/dynamic-experiences/types.d.ts +45 -0
  63. package/dist/types/plugins/dynamic-experiences/types.d.ts.map +1 -1
  64. package/dist/types/plugins/responses-browser-storage/plugin.d.ts.map +1 -1
  65. package/dist/types/plugins/responses-indexeddb/plugin.d.ts.map +1 -1
  66. package/dist/types/utils/events.d.ts +1 -1
  67. package/dist/types/utils/events.d.ts.map +1 -1
  68. package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts +13 -0
  69. package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts.map +1 -1
  70. package/dist/types/utils/rules-logic.d.ts.map +1 -1
  71. package/dist/types/utils/state-snaphot.d.ts +11 -1
  72. package/dist/types/utils/state-snaphot.d.ts.map +1 -1
  73. package/package.json +1 -1
  74. package/dist/api-A3gUhQJc.cjs +0 -1
  75. package/dist/experience-instance-Dri5yAp1.cjs +0 -1
@@ -1,4 +1,4 @@
1
- import { t as e } from "../../rules-logic-BIkBWZmf.js";
1
+ import { t as e } from "../../rules-logic-CnVktz2l.js";
2
2
  import { attach as t, combine as n, createEffect as r, createEvent as i, createStore as a, sample as o, split as s } from "effector";
3
3
  //#region src/form/build-responses.ts
4
4
  function c(e, t, n) {
@@ -16,22 +16,22 @@ function c(e, t, n) {
16
16
  function l(e, t) {
17
17
  let n = Array.from(t.entries()), r = {};
18
18
  return e.forEach((e) => {
19
- let t = n.filter(([t]) => t === e.id);
20
- t.length === 0 && (t = [[e.id, ""]]), t.forEach(([, t]) => {
19
+ let t = n.filter(([t]) => t === e.key);
20
+ t.length === 0 && (t = [[e.key, ""]]), t.forEach(([, t]) => {
21
21
  if (t === "") {
22
- c(r, e.id, null);
22
+ c(r, e.key, null);
23
23
  return;
24
24
  }
25
25
  switch (e.type) {
26
26
  case "text":
27
27
  case "object":
28
- c(r, e.id, e.multiple ? [String(t)] : String(t));
28
+ c(r, e.key, e.multiple ? [String(t)] : String(t));
29
29
  break;
30
30
  case "number":
31
- c(r, e.id, e.multiple ? [Number(t)] : Number(t));
31
+ c(r, e.key, e.multiple ? [Number(t)] : Number(t));
32
32
  break;
33
33
  case "boolean":
34
- c(r, e.id, e.multiple ? [t === "true"] : t === "true");
34
+ c(r, e.key, e.multiple ? [t === "true"] : t === "true");
35
35
  break;
36
36
  }
37
37
  });
@@ -45,20 +45,24 @@ function u(e) {
45
45
  function d(e) {
46
46
  return e.some((e) => e.condition || u(e));
47
47
  }
48
- async function f(t, n, r) {
48
+ function f(e) {
49
+ return e.condition ?? null;
50
+ }
51
+ async function p(t, n, r) {
49
52
  return n.length === 0 || !d(n) ? n : (await Promise.all(n.map(async (n) => {
50
- if (!(!n.condition || await e(t, n.condition, r))) return null;
53
+ let i = f(n);
54
+ if (!(!i || await e(t, i, r))) return null;
51
55
  if (!Array.isArray(n.options) || !u(n)) return n;
52
- let i = (await Promise.all(n.options.map(async (n) => n.condition ? await e(t, n.condition, r) ? n : null : n))).filter((e) => e !== null);
53
- return i.length === n.options.length ? n : i.length === 0 ? null : {
56
+ let a = (await Promise.all(n.options.map(async (n) => n.condition ? await e(t, n.condition, r) ? n : null : n))).filter((e) => e !== null);
57
+ return a.length === n.options.length ? n : a.length === 0 ? null : {
54
58
  ...n,
55
- options: i
59
+ options: a
56
60
  };
57
61
  }))).filter((e) => e !== null);
58
62
  }
59
63
  //#endregion
60
64
  //#region src/form/create-field-evaluator.ts
61
- function p(e, n, i) {
65
+ function m(e, n, i) {
62
66
  let s = a([]), c = t({
63
67
  source: {
64
68
  allFields: e.fields.listStore,
@@ -66,7 +70,7 @@ function p(e, n, i) {
66
70
  staged: i,
67
71
  committed: e.responses.getAllStore
68
72
  },
69
- effect: r(async ({ allFields: t, fieldIds: n, staged: r, committed: i }) => await f(e, t.filter((e) => n.includes(e.id)), { responses: {
73
+ effect: r(async ({ allFields: t, fieldIds: n, staged: r, committed: i }) => await p(e, t.filter((e) => n.includes(e.id)), { responses: {
70
74
  ...i,
71
75
  ...r
72
76
  } }))
@@ -86,30 +90,30 @@ function p(e, n, i) {
86
90
  }
87
91
  //#endregion
88
92
  //#region src/form/create-field-validation.ts
89
- function m(e) {
93
+ function h(e) {
90
94
  return e === null || e === "" || Array.isArray(e) && e.length === 0;
91
95
  }
92
- function h(n, r, s) {
96
+ function g(n, r, s) {
93
97
  let c = i(), l = i(), u = i(), d = a({});
94
98
  o({
95
99
  clock: u,
96
100
  source: d,
97
- fn: (e, { fieldId: t }) => ({
101
+ fn: (e, { fieldKey: t }) => ({
98
102
  ...e,
99
103
  [t]: !0
100
104
  }),
101
105
  target: d
102
106
  });
103
- let f = a({}), p = f.map((e) => Object.values(e).filter((e) => e !== void 0)), h = t({
107
+ let f = a({}), p = f.map((e) => Object.values(e).filter((e) => e !== void 0)), m = t({
104
108
  source: {
105
109
  fields: r,
106
110
  staged: s,
107
111
  committed: n.responses.getAllStore
108
112
  },
109
- effect: async ({ fields: t, staged: r, committed: i }, { fieldId: a, value: o, checkRequired: s }) => {
110
- let c = t.find((e) => e.id === a);
113
+ effect: async ({ fields: t, staged: r, committed: i }, { fieldKey: a, value: o, checkRequired: s }) => {
114
+ let c = t.find((e) => e.key === a);
111
115
  if (!c) return {
112
- fieldId: a,
116
+ fieldKey: a,
113
117
  error: null
114
118
  };
115
119
  if (c.validation && Object.keys(c.validation).length > 0) {
@@ -121,34 +125,34 @@ function h(n, r, s) {
121
125
  $input: o
122
126
  });
123
127
  if (typeof s == "string") return {
124
- fieldId: a,
128
+ fieldKey: a,
125
129
  error: {
126
- fieldId: a,
130
+ fieldKey: c.key,
127
131
  userMessage: s,
128
132
  systemMessage: s,
129
133
  value: o
130
134
  }
131
135
  };
132
136
  if (s === !1) return {
133
- fieldId: a,
137
+ fieldKey: a,
134
138
  error: {
135
- fieldId: a,
139
+ fieldKey: c.key,
136
140
  userMessage: "This field is invalid",
137
141
  systemMessage: "Field validation rule returned false.",
138
142
  value: o
139
143
  }
140
144
  };
141
145
  }
142
- return s && c.required && m(o) ? {
143
- fieldId: a,
146
+ return s && c.required && h(o) ? {
147
+ fieldKey: a,
144
148
  error: {
145
- fieldId: a,
149
+ fieldKey: c.key,
146
150
  userMessage: "This field is required",
147
151
  systemMessage: "Field is required.",
148
152
  value: o
149
153
  }
150
154
  } : {
151
- fieldId: a,
155
+ fieldKey: a,
152
156
  error: null
153
157
  };
154
158
  }
@@ -156,41 +160,41 @@ function h(n, r, s) {
156
160
  return o({
157
161
  clock: c,
158
162
  source: d,
159
- filter: (e, { fieldId: t }) => e[t] === !0,
160
- fn: (e, { fieldId: t, value: n }) => ({
161
- fieldId: t,
163
+ filter: (e, { fieldKey: t }) => e[t] === !0,
164
+ fn: (e, { fieldKey: t, value: n }) => ({
165
+ fieldKey: t,
162
166
  value: n,
163
167
  checkRequired: !1
164
168
  }),
165
- target: h
169
+ target: m
166
170
  }), o({
167
171
  clock: l,
168
172
  source: d,
169
- filter: (e, { fieldId: t }) => e[t] === !0,
170
- fn: (e, { fieldId: t, value: n }) => ({
171
- fieldId: t,
173
+ filter: (e, { fieldKey: t }) => e[t] === !0,
174
+ fn: (e, { fieldKey: t, value: n }) => ({
175
+ fieldKey: t,
172
176
  value: n,
173
177
  checkRequired: !1
174
178
  }),
175
- target: h
179
+ target: m
176
180
  }), o({
177
181
  clock: u,
178
- fn: ({ fieldId: e, value: t }) => ({
179
- fieldId: e,
182
+ fn: ({ fieldKey: e, value: t }) => ({
183
+ fieldKey: e,
180
184
  value: t,
181
185
  checkRequired: !0
182
186
  }),
183
- target: h
184
- }), s.on(c, (e, { fieldId: t, value: n }) => ({
187
+ target: m
188
+ }), s.on(c, (e, { fieldKey: t, value: n }) => ({
185
189
  ...e,
186
190
  [t]: n
187
- })), s.on(l, (e, { fieldId: t, value: n }) => ({
191
+ })), s.on(l, (e, { fieldKey: t, value: n }) => ({
188
192
  ...e,
189
193
  [t]: n
190
- })), s.on(u, (e, { fieldId: t, value: n }) => ({
194
+ })), s.on(u, (e, { fieldKey: t, value: n }) => ({
191
195
  ...e,
192
196
  [t]: n
193
- })), f.on(h.doneData, (e, { fieldId: t, error: n }) => {
197
+ })), f.on(m.doneData, (e, { fieldKey: t, error: n }) => {
194
198
  if (n === null) {
195
199
  let n = { ...e };
196
200
  return delete n[t], n;
@@ -211,7 +215,7 @@ function h(n, r, s) {
211
215
  }
212
216
  //#endregion
213
217
  //#region src/form/create-submit-pipeline.ts
214
- function g(e) {
218
+ function _(e) {
215
219
  let t = [];
216
220
  return {
217
221
  executeFx: r(async (...n) => await e(t, ...n)),
@@ -220,14 +224,14 @@ function g(e) {
220
224
  })
221
225
  };
222
226
  }
223
- function _({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d, fieldsStore: f, goToNextStep: p }) {
224
- let m = i(), h = i(), _ = i(), v = i(), y = i(), b = a(!1), x = a(!1);
227
+ function v({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d, fieldsStore: f, goToNextStep: p }) {
228
+ let m = i(), h = i(), g = i(), v = i(), y = i(), b = a(!1), x = a(!1);
225
229
  x.on(v, () => !0).on(m, () => !1);
226
- let S = m.map(() => void 0), C = g(async (e, t) => {
230
+ let S = m.map(() => void 0), C = _(async (e, t) => {
227
231
  await Promise.all(e.map((e) => Promise.resolve(e(t))));
228
- }), w = g(async (e, t) => {
232
+ }), w = _(async (e, t) => {
229
233
  await Promise.all(e.map((e) => Promise.resolve(e(t))));
230
- }), T = g(async (e, t) => {
234
+ }), T = _(async (e, t) => {
231
235
  let n = t;
232
236
  for (let t of e) {
233
237
  let e = await Promise.resolve(t(n));
@@ -345,9 +349,9 @@ function _({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d
345
349
  target: p
346
350
  }), o({
347
351
  clock: O.doneData,
348
- target: _
352
+ target: g
349
353
  }), o({
350
- clock: _,
354
+ clock: g,
351
355
  target: w.executeFx
352
356
  }), o({
353
357
  clock: [y, w.executeFx.done],
@@ -360,33 +364,33 @@ function _({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d
360
364
  onSuccess: C.register,
361
365
  onError: w.register,
362
366
  submitStarted: S,
363
- validationErrorsReceived: _
367
+ validationErrorsReceived: g
364
368
  };
365
369
  }
366
370
  //#endregion
367
371
  //#region src/form/create-form.ts
368
- function v(e) {
372
+ function y(e) {
369
373
  let t = e.currentTarget;
370
374
  if (t instanceof HTMLInputElement) return t.type === "checkbox" ? t.checked : t.value;
371
375
  if (t instanceof HTMLSelectElement || t instanceof HTMLTextAreaElement) return t.value;
372
376
  }
373
- function y(e, t, r, i) {
377
+ function b(e, t, r, i) {
374
378
  let { client: s, experienceInstance: c } = e, { currentStepStore: l, goToNextStep: u } = c, d = n(l, c, (e, t) => ({
375
379
  stepId: e?.id,
376
380
  experienceId: t.id
377
- })), f = a({}), { fieldsStore: m } = p(s, i, f);
381
+ })), f = a({}), { fieldsStore: p } = m(s, i, f);
378
382
  o({
379
- clock: m,
383
+ clock: p,
380
384
  source: f,
381
385
  fn: (e, t) => {
382
386
  let n = !1, r = { ...e };
383
- for (let e of t) e.defaultValue != null && !(e.id in r) && (r[e.id] = e.defaultValue, n = !0);
387
+ for (let e of t) e.defaultValue != null && !(e.key in r) && (r[e.key] = e.defaultValue, n = !0);
384
388
  return n ? r : e;
385
389
  },
386
390
  target: f
387
391
  });
388
- let { fieldInputEvent: g, fieldChangeEvent: y, fieldBlurEvent: b, touchedStore: x, fieldErrorsStore: S, formErrorsStore: C } = h(s, m, f), w = n({
389
- fields: m,
392
+ let { fieldInputEvent: h, fieldChangeEvent: _, fieldBlurEvent: b, touchedStore: x, fieldErrorsStore: S, formErrorsStore: C } = g(s, p, f), w = n({
393
+ fields: p,
390
394
  responses: s.responses.listStore,
391
395
  staged: f,
392
396
  fieldErrors: S,
@@ -394,32 +398,33 @@ function y(e, t, r, i) {
394
398
  experienceAndStepId: d
395
399
  }, ({ fields: e, responses: t, staged: n, fieldErrors: r, touched: i, experienceAndStepId: a }) => e.map((e) => {
396
400
  let o = (t) => {
397
- let n = v(t);
398
- n !== void 0 && g({
399
- fieldId: e.id,
401
+ let n = y(t);
402
+ n !== void 0 && h({
403
+ fieldKey: e.key,
400
404
  value: n
401
405
  });
402
406
  }, s = (t) => {
403
- let n = v(t);
404
- n !== void 0 && y({
405
- fieldId: e.id,
407
+ let n = y(t);
408
+ n !== void 0 && _({
409
+ fieldKey: e.key,
406
410
  value: n
407
411
  });
408
412
  }, c = (t) => {
409
- let n = v(t);
413
+ let n = y(t);
410
414
  n !== void 0 && b({
411
- fieldId: e.id,
415
+ fieldKey: e.key,
412
416
  value: n
413
417
  });
414
- }, l = n[e.id] ?? t.find((t) => t.fieldId === e.id)?.value ?? e.defaultValue, u = r[e.id], d = e.type === "number" ? "number" : "text", f = e.type === "boolean" ? "checkbox" : d, { experienceId: p, stepId: m } = a, h = `${p}-${m ?? "step"}-${e.id}`;
418
+ }, l = n[e.key] ?? t.find((t) => t.fieldKey === e.key)?.value ?? e.defaultValue, u = r[e.key], d = e.type === "number" ? "number" : "text", f = e.type === "boolean" ? "checkbox" : d, { experienceId: p, stepId: m } = a, g = `${p}-${m ?? "step"}-${e.id}`;
415
419
  return {
416
420
  ...e,
417
421
  value: l,
418
422
  error: u,
419
- touched: i[e.id] ?? !1,
423
+ touched: i[e.key] ?? !1,
420
424
  props: {
421
- id: h,
422
- name: e.name,
425
+ id: g,
426
+ name: e.key,
427
+ key: e.key,
423
428
  value: l,
424
429
  type: f,
425
430
  required: e.required,
@@ -429,13 +434,13 @@ function y(e, t, r, i) {
429
434
  onblur: c
430
435
  }
431
436
  };
432
- })), { submitEvent: T, isFormSubmitting: E, onBeforeSubmit: D, onSuccess: O, onError: k, submitStarted: A, validationErrorsReceived: j } = _({
437
+ })), { submitEvent: T, isFormSubmitting: E, onBeforeSubmit: D, onSuccess: O, onError: k, submitStarted: A, validationErrorsReceived: j } = v({
433
438
  client: s,
434
439
  experienceInstance: c,
435
440
  formId: t,
436
441
  title: r,
437
442
  stepStore: l,
438
- fieldsStore: m,
443
+ fieldsStore: p,
439
444
  goToNextStep: u
440
445
  });
441
446
  return o({
@@ -448,7 +453,8 @@ function y(e, t, r, i) {
448
453
  target: S
449
454
  }), o({
450
455
  clock: j,
451
- fn: (e) => Object.fromEntries(e.map((e) => [e.fieldId, e])),
456
+ source: p,
457
+ fn: (e, t) => Object.fromEntries(t.map((t) => [e.find((e) => e.key === t.fieldKey)?.key ?? t.fieldKey, t])),
452
458
  target: S
453
459
  }), {
454
460
  form: {
@@ -463,4 +469,4 @@ function y(e, t, r, i) {
463
469
  };
464
470
  }
465
471
  //#endregion
466
- export { l as buildResponsesFromFormData, p as createFieldEvaluator, h as createFieldValidation, y as createForm, _ as createSubmitPipeline, v as getEventValue, f as getStepFields };
472
+ export { l as buildResponsesFromFormData, m as createFieldEvaluator, g as createFieldValidation, b as createForm, v as createSubmitPipeline, y as getEventValue, p as getStepFields };