@picked/client 0.0.1-dev.1774224866171 → 0.0.1-dev.1774244905386

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 (119) hide show
  1. package/dist/{api-ZK-H-MlI.js → api-ENA5t36y.js} +1 -1
  2. package/dist/{api-WKe5XBeR.cjs → api-dkMxUUe0.cjs} +1 -1
  3. package/dist/cjs/index.js +2 -2
  4. package/dist/cjs/plugins/create-experience/index.js +1 -1
  5. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  6. package/dist/cjs/plugins/experience-browser-storage/index.js +1 -1
  7. package/dist/cjs/plugins/history-browser-storage/index.js +1 -1
  8. package/dist/cjs/plugins/responses-browser-storage/index.js +1 -1
  9. package/dist/cjs/plugins/responses-indexeddb/index.js +1 -1
  10. package/dist/cjs/plugins/single-page-app/index.js +1 -1
  11. package/dist/cjs/plugins/web-components/index.js +1 -1
  12. package/dist/cjs/server/index.js +1 -1
  13. package/dist/esm/index.js +503 -426
  14. package/dist/esm/plugins/create-experience/index.js +352 -281
  15. package/dist/esm/plugins/dynamic-experiences/index.js +53 -30
  16. package/dist/esm/plugins/experience-browser-storage/index.js +1 -1
  17. package/dist/esm/plugins/history-browser-storage/index.js +1 -1
  18. package/dist/esm/plugins/responses-browser-storage/index.js +1 -1
  19. package/dist/esm/plugins/responses-indexeddb/index.js +9 -5
  20. package/dist/esm/plugins/single-page-app/index.js +4 -4
  21. package/dist/esm/plugins/web-components/index.js +1 -1
  22. package/dist/esm/server/index.js +1 -1
  23. package/dist/experience-instance-BODAwa-_.js +713 -0
  24. package/dist/experience-instance-DImQh64e.cjs +1 -0
  25. package/dist/object-BReQiaSS.cjs +1 -0
  26. package/dist/{object-C82v79xc.js → object-Clj5zVr1.js} +1 -2
  27. package/dist/storage-BFjb8azI.cjs +1 -0
  28. package/dist/{storage-6Xk0uAxB.js → storage-DyxpJ0pg.js} +1 -3
  29. package/dist/types/entities/action/action.d.ts.map +1 -1
  30. package/dist/types/entities/condition/condition.d.ts +17 -0
  31. package/dist/types/entities/condition/condition.d.ts.map +1 -0
  32. package/dist/types/entities/experience/experience.d.ts +36 -59
  33. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  34. package/dist/types/entities/experience-instance/experience-instance.d.ts +2 -2
  35. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  36. package/dist/types/entities/feature/feature.d.ts.map +1 -1
  37. package/dist/types/entities/field/field.d.ts +17 -12
  38. package/dist/types/entities/field/field.d.ts.map +1 -1
  39. package/dist/types/entities/history/history.d.ts.map +1 -1
  40. package/dist/types/entities/project/project.d.ts +9 -0
  41. package/dist/types/entities/project/project.d.ts.map +1 -0
  42. package/dist/types/entities/response/response.d.ts +10 -7
  43. package/dist/types/entities/response/response.d.ts.map +1 -1
  44. package/dist/types/entities/step/step.d.ts +38 -0
  45. package/dist/types/entities/step/step.d.ts.map +1 -0
  46. package/dist/types/index.d.ts +3 -1
  47. package/dist/types/index.d.ts.map +1 -1
  48. package/dist/types/logic-engine.d.ts +8 -2
  49. package/dist/types/logic-engine.d.ts.map +1 -1
  50. package/dist/types/picked.d.ts +61 -52
  51. package/dist/types/picked.d.ts.map +1 -1
  52. package/dist/types/plugins/create-experience/create-experience.d.ts +81 -50
  53. package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
  54. package/dist/types/plugins/create-experience/index.d.ts +2 -2
  55. package/dist/types/plugins/create-experience/index.d.ts.map +1 -1
  56. package/dist/types/plugins/create-experience/plugin.d.ts.map +1 -1
  57. package/dist/types/plugins/dynamic-experiences/plugin.d.ts +21 -4
  58. package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
  59. package/dist/types/plugins/dynamic-experiences/types.d.ts +47 -0
  60. package/dist/types/plugins/dynamic-experiences/types.d.ts.map +1 -1
  61. package/dist/types/plugins/experience-browser-storage/plugin.d.ts +1 -2
  62. package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -1
  63. package/dist/types/plugins/history-browser-storage/plugin.d.ts +0 -1
  64. package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
  65. package/dist/types/plugins/responses-browser-storage/plugin.d.ts +1 -2
  66. package/dist/types/plugins/responses-browser-storage/plugin.d.ts.map +1 -1
  67. package/dist/types/plugins/responses-indexeddb/plugin.d.ts.map +1 -1
  68. package/dist/types/plugins/single-page-app/plugin.d.ts +1 -1
  69. package/dist/types/plugins/single-page-app/plugin.d.ts.map +1 -1
  70. package/dist/types/utils/dom.d.ts +3 -0
  71. package/dist/types/utils/dom.d.ts.map +1 -1
  72. package/dist/types/utils/events.d.ts +2 -2
  73. package/dist/types/utils/events.d.ts.map +1 -1
  74. package/dist/types/utils/global-obj.d.ts +1 -0
  75. package/dist/types/utils/global-obj.d.ts.map +1 -1
  76. package/dist/types/utils/indexed-db.d.ts +1 -2
  77. package/dist/types/utils/indexed-db.d.ts.map +1 -1
  78. package/dist/types/utils/key.d.ts +12 -0
  79. package/dist/types/utils/key.d.ts.map +1 -0
  80. package/dist/types/utils/logger.d.ts.map +1 -1
  81. package/dist/types/utils/node-tree/min-max-steps-to-leaf.d.ts.map +1 -1
  82. package/dist/types/utils/node-tree/min-max-steps-to-origin.d.ts.map +1 -1
  83. package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts +3 -3
  84. package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts.map +1 -1
  85. package/dist/types/utils/nodes.d.ts +25 -2
  86. package/dist/types/utils/nodes.d.ts.map +1 -1
  87. package/dist/types/utils/object.d.ts +8 -0
  88. package/dist/types/utils/object.d.ts.map +1 -1
  89. package/dist/types/utils/picked-config.d.ts +1 -1
  90. package/dist/types/utils/picked-config.d.ts.map +1 -1
  91. package/dist/types/utils/search-params.d.ts.map +1 -1
  92. package/dist/types/utils/storage.d.ts.map +1 -1
  93. package/package.json +1 -11
  94. package/dist/cjs/form/index.js +0 -1
  95. package/dist/esm/form/index.js +0 -428
  96. package/dist/experience-instance-DZiAwXph.js +0 -481
  97. package/dist/experience-instance-Ddk4Jktn.cjs +0 -1
  98. package/dist/object-CUJOjanb.cjs +0 -1
  99. package/dist/rules-logic-B7vJrWyO.js +0 -231
  100. package/dist/rules-logic-CXr4wXcG.cjs +0 -1
  101. package/dist/storage-B6lQtc4-.cjs +0 -1
  102. package/dist/types/form/build-responses.d.ts +0 -14
  103. package/dist/types/form/build-responses.d.ts.map +0 -1
  104. package/dist/types/form/create-field-evaluator.d.ts +0 -19
  105. package/dist/types/form/create-field-evaluator.d.ts.map +0 -1
  106. package/dist/types/form/create-field-validation.d.ts +0 -44
  107. package/dist/types/form/create-field-validation.d.ts.map +0 -1
  108. package/dist/types/form/create-form.d.ts +0 -66
  109. package/dist/types/form/create-form.d.ts.map +0 -1
  110. package/dist/types/form/create-submit-pipeline.d.ts +0 -58
  111. package/dist/types/form/create-submit-pipeline.d.ts.map +0 -1
  112. package/dist/types/form/get-step-fields.d.ts +0 -5
  113. package/dist/types/form/get-step-fields.d.ts.map +0 -1
  114. package/dist/types/form/index.d.ts +0 -10
  115. package/dist/types/form/index.d.ts.map +0 -1
  116. package/dist/types/plugins/create-experience/serialization.d.ts +0 -6
  117. package/dist/types/plugins/create-experience/serialization.d.ts.map +0 -1
  118. /package/dist/{id-CRqy981z.js → id-BniPxOdF.js} +0 -0
  119. /package/dist/{id-Bv44ilEo.cjs → id-CIbS4P60.cjs} +0 -0
@@ -1,428 +0,0 @@
1
- import { t as e } from "../../rules-logic-B7vJrWyO.js";
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
- //#region src/form/build-responses.ts
4
- function c(e, t, n) {
5
- let r = e[t];
6
- if (r === void 0) {
7
- e[t] = n;
8
- return;
9
- }
10
- if (Array.isArray(r) && Array.isArray(n) && n.length > 0) {
11
- typeof r[0] == "string" ? e[t] = [...r, ...n].map(String) : typeof r[0] == "number" ? e[t] = [...r, ...n].map(Number) : typeof r[0] == "boolean" ? e[t] = [...r, ...n].map((e) => !!e) : e[t] = n;
12
- return;
13
- }
14
- e[t] = n;
15
- }
16
- function l(e, t) {
17
- let n = Array.from(t.entries()), r = {};
18
- return e.forEach((e) => {
19
- let t = n.filter(([t]) => t === e.id);
20
- t.length === 0 && (t = [[e.id, ""]]), t.forEach(([, t]) => {
21
- if (t === "") {
22
- c(r, e.id, null);
23
- return;
24
- }
25
- switch (e.type) {
26
- case "text":
27
- case "object":
28
- c(r, e.id, e.multiple ? [String(t)] : String(t));
29
- break;
30
- case "number":
31
- c(r, e.id, e.multiple ? [Number(t)] : Number(t));
32
- break;
33
- case "boolean":
34
- c(r, e.id, e.multiple ? [t === "true"] : t === "true");
35
- break;
36
- }
37
- });
38
- }), r;
39
- }
40
- //#endregion
41
- //#region src/form/get-step-fields.ts
42
- function u(e) {
43
- return Array.isArray(e.options) && e.options.some((e) => "condition" in e);
44
- }
45
- function d(e) {
46
- return e.some((e) => e.condition || u(e));
47
- }
48
- async function f(t, n, r) {
49
- 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;
51
- 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 : {
54
- ...n,
55
- options: i
56
- };
57
- }))).filter((e) => e !== null);
58
- }
59
- //#endregion
60
- //#region src/form/create-field-evaluator.ts
61
- function p(e, n, i) {
62
- let s = a([]), c = t({
63
- source: {
64
- allFields: e.fields.listStore,
65
- fieldIds: n,
66
- staged: i,
67
- committed: e.responses.getAllStore
68
- },
69
- effect: r(async ({ allFields: t, fieldIds: n, staged: r, committed: i }) => await f(e, t.filter((e) => n.includes(e.id)), { responses: {
70
- ...i,
71
- ...r
72
- } }))
73
- });
74
- return o({
75
- clock: c.doneData,
76
- target: s
77
- }), c(), o({
78
- clock: [
79
- e.responses.listStore,
80
- n,
81
- e.fields.listStore,
82
- i
83
- ],
84
- target: c
85
- }), { fieldsStore: s };
86
- }
87
- //#endregion
88
- //#region src/form/create-field-validation.ts
89
- function m(e) {
90
- return e === null || e === "" || Array.isArray(e) && e.length === 0;
91
- }
92
- function h(n, r, s) {
93
- let c = i(), l = i(), u = a({});
94
- o({
95
- clock: l,
96
- source: u,
97
- fn: (e, { fieldId: t }) => ({
98
- ...e,
99
- [t]: !0
100
- }),
101
- target: u
102
- });
103
- let d = a({}), f = d.map((e) => Object.values(e).filter((e) => e !== void 0)), p = t({
104
- source: {
105
- fields: r,
106
- staged: s,
107
- committed: n.responses.getAllStore
108
- },
109
- effect: async ({ fields: t, staged: r, committed: i }, { fieldId: a, value: o, checkRequired: s }) => {
110
- let c = t.find((e) => e.id === a);
111
- if (!c) return {
112
- fieldId: a,
113
- error: null
114
- };
115
- if (c.validation && Object.keys(c.validation).length > 0) {
116
- let t = {
117
- ...i,
118
- ...r
119
- }, s = await e(n, c.validation, {
120
- responses: t,
121
- $input: o
122
- });
123
- if (typeof s == "string") return {
124
- fieldId: a,
125
- error: {
126
- fieldId: a,
127
- userMessage: s,
128
- systemMessage: s,
129
- value: o
130
- }
131
- };
132
- if (s === !1) return {
133
- fieldId: a,
134
- error: {
135
- fieldId: a,
136
- userMessage: "This field is invalid",
137
- systemMessage: "Field validation rule returned false.",
138
- value: o
139
- }
140
- };
141
- }
142
- return s && c.required && m(o) ? {
143
- fieldId: a,
144
- error: {
145
- fieldId: a,
146
- userMessage: "This field is required",
147
- systemMessage: "Field is required.",
148
- value: o
149
- }
150
- } : {
151
- fieldId: a,
152
- error: null
153
- };
154
- }
155
- });
156
- return o({
157
- clock: c,
158
- source: u,
159
- filter: (e, { fieldId: t }) => e[t] === !0,
160
- fn: (e, { fieldId: t, value: n }) => ({
161
- fieldId: t,
162
- value: n,
163
- checkRequired: !1
164
- }),
165
- target: p
166
- }), o({
167
- clock: l,
168
- fn: ({ fieldId: e, value: t }) => ({
169
- fieldId: e,
170
- value: t,
171
- checkRequired: !0
172
- }),
173
- target: p
174
- }), s.on(c, (e, { fieldId: t, value: n }) => ({
175
- ...e,
176
- [t]: n
177
- })), s.on(l, (e, { fieldId: t, value: n }) => ({
178
- ...e,
179
- [t]: n
180
- })), d.on(p.doneData, (e, { fieldId: t, error: n }) => {
181
- if (n === null) {
182
- let n = { ...e };
183
- return delete n[t], n;
184
- }
185
- return {
186
- ...e,
187
- [t]: n
188
- };
189
- }), {
190
- fieldChangeEvent: c,
191
- fieldBlurEvent: l,
192
- touchedStore: u,
193
- fieldErrorsStore: d,
194
- formErrorsStore: f,
195
- stagedValuesStore: s
196
- };
197
- }
198
- //#endregion
199
- //#region src/form/create-submit-pipeline.ts
200
- function g(e) {
201
- let t = [];
202
- return {
203
- executeFx: r(async (...n) => await e(t, ...n)),
204
- register: (e) => (t.push(e), () => {
205
- t = t.filter((t) => t !== e);
206
- })
207
- };
208
- }
209
- function _({ client: e, experienceInstance: n, formId: c, title: u, stepStore: d, fieldsStore: f, goToNextStep: p }) {
210
- let m = i(), h = i(), _ = i(), v = i(), y = i(), b = a(!1), x = a(!1);
211
- x.on(v, () => !0).on(m, () => !1);
212
- let S = m.map(() => void 0), C = g(async (e, t) => {
213
- await Promise.all(e.map((e) => Promise.resolve(e(t))));
214
- }), w = g(async (e, t) => {
215
- await Promise.all(e.map((e) => Promise.resolve(e(t))));
216
- }), T = g(async (e, t) => {
217
- let n = t;
218
- for (let t of e) {
219
- let e = await Promise.resolve(t(n));
220
- e !== void 0 && (n = e);
221
- }
222
- return n;
223
- }), E = r(async (t) => ({
224
- data: t,
225
- errors: (await e.responses.commit(t)).errors
226
- })), D = t({
227
- source: {
228
- step: d,
229
- title: u
230
- },
231
- mapParams: (e, t) => ({
232
- step: t.step,
233
- title: t.title,
234
- data: e.data
235
- }),
236
- effect: r(async ({ step: t, title: r, data: i }) => (e.eventBus({
237
- type: "form_submit_success",
238
- form: {
239
- id: c,
240
- title: r
241
- },
242
- experience: n,
243
- step: t ?? void 0
244
- }), i))
245
- }), O = t({
246
- source: {
247
- step: d,
248
- title: u
249
- },
250
- mapParams: (e, t) => ({
251
- step: t.step,
252
- title: t.title,
253
- errors: e.errors
254
- }),
255
- effect: r(async ({ step: t, title: r, errors: i }) => (e.eventBus({
256
- type: "form_submit_error",
257
- form: {
258
- id: c,
259
- title: r
260
- },
261
- exception: { reason: i },
262
- experience: n,
263
- step: t ?? void 0
264
- }), i.forEach((r) => {
265
- e.eventBus({
266
- type: "field_validation_error",
267
- exception: { reason: [r] },
268
- experience: n,
269
- step: t ?? void 0
270
- });
271
- }), i))
272
- });
273
- return o({
274
- clock: m,
275
- fn: () => !0,
276
- target: b
277
- }), o({
278
- clock: m,
279
- source: {
280
- step: d,
281
- title: u
282
- },
283
- fn: ({ step: e, title: t }) => ({
284
- formId: c,
285
- title: t,
286
- step: e
287
- }),
288
- target: r(({ formId: t, title: r, step: i }) => {
289
- e.eventBus({
290
- type: "form_submit",
291
- form: {
292
- id: t,
293
- title: r
294
- },
295
- experience: n,
296
- step: i ?? void 0
297
- });
298
- })
299
- }), o({
300
- clock: m,
301
- source: { stepFields: f },
302
- fn: ({ stepFields: e }, t) => (t.preventDefault(), l(e, new FormData(t.currentTarget))),
303
- target: T.executeFx
304
- }), o({
305
- clock: T.executeFx.doneData,
306
- target: E
307
- }), s({
308
- source: E.doneData,
309
- match: { hasErrors: ({ errors: e }) => e.length > 0 },
310
- cases: {
311
- hasErrors: O,
312
- __: D
313
- }
314
- }), o({
315
- clock: D.doneData,
316
- target: h
317
- }), o({
318
- clock: h,
319
- fn: (e) => ({
320
- data: e,
321
- stopNavigation: v
322
- }),
323
- target: C.executeFx
324
- }), o({
325
- clock: C.executeFx.done,
326
- target: y
327
- }), o({
328
- clock: y,
329
- source: x,
330
- filter: (e) => !e,
331
- target: p
332
- }), o({
333
- clock: O.doneData,
334
- target: _
335
- }), o({
336
- clock: _,
337
- target: w.executeFx
338
- }), o({
339
- clock: [y, w.executeFx.done],
340
- fn: () => !1,
341
- target: b
342
- }), {
343
- submitEvent: m,
344
- isFormSubmitting: b,
345
- onSubmit: T.register,
346
- onSuccess: C.register,
347
- onError: w.register,
348
- submitStarted: S,
349
- validationErrorsReceived: _
350
- };
351
- }
352
- //#endregion
353
- //#region src/form/create-form.ts
354
- function v(e) {
355
- let t = e.currentTarget;
356
- if (t instanceof HTMLInputElement) return t.type === "checkbox" ? t.checked : t.value;
357
- if (t instanceof HTMLSelectElement || t instanceof HTMLTextAreaElement) return t.value;
358
- }
359
- function y(e, t, r, i) {
360
- let { client: s, experienceInstance: c } = e, { currentStepStore: l, goToNextStep: u } = c, d = a({}), { fieldsStore: f } = p(s, i, d), { fieldChangeEvent: m, fieldBlurEvent: g, touchedStore: y, fieldErrorsStore: b, formErrorsStore: x } = h(s, f, d), S = n({
361
- fields: f,
362
- responses: s.responses.listStore,
363
- staged: d,
364
- fieldErrors: b,
365
- touched: y
366
- }, ({ fields: e, responses: t, staged: n, fieldErrors: r, touched: i }) => e.map((e) => {
367
- let a = (t) => {
368
- let n = v(t);
369
- n !== void 0 && m({
370
- fieldId: e.id,
371
- value: n
372
- });
373
- }, o = (t) => {
374
- let n = v(t);
375
- n !== void 0 && g({
376
- fieldId: e.id,
377
- value: n
378
- });
379
- };
380
- return {
381
- ...e,
382
- value: n[e.id] ?? t.find((t) => t.fieldId === e.id)?.value,
383
- error: r[e.id],
384
- touched: i[e.id] ?? !1,
385
- onChange: a,
386
- onBlur: o,
387
- props: {
388
- name: e.id,
389
- id: e.id,
390
- oninput: a,
391
- onblur: o
392
- }
393
- };
394
- })), { submitEvent: C, isFormSubmitting: w, onSubmit: T, onSuccess: E, onError: D, submitStarted: O, validationErrorsReceived: k } = _({
395
- client: s,
396
- experienceInstance: c,
397
- formId: t,
398
- title: r,
399
- stepStore: l,
400
- fieldsStore: f,
401
- goToNextStep: u
402
- });
403
- return o({
404
- clock: O,
405
- fn: () => ({}),
406
- target: y
407
- }), o({
408
- clock: O,
409
- fn: () => ({}),
410
- target: b
411
- }), o({
412
- clock: k,
413
- fn: (e) => Object.fromEntries(e.map((e) => [e.fieldId, e])),
414
- target: b
415
- }), {
416
- form: {
417
- props: { onsubmit: C },
418
- errors: x,
419
- submitting: w,
420
- onSubmit: T,
421
- onSuccess: E,
422
- onError: D
423
- },
424
- fields: S
425
- };
426
- }
427
- //#endregion
428
- export { l as buildResponsesFromFormData, p as createFieldEvaluator, h as createFieldValidation, y as createForm, _ as createSubmitPipeline, v as getEventValue, f as getStepFields };