@picked/client 0.0.1-dev.1774231221701 → 0.0.1-dev.1774912386475

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 (79) hide show
  1. package/dist/{api-BEXzPJHZ.cjs → api-B-wGEgt8.cjs} +1 -1
  2. package/dist/{api-oudcFuUX.js → api-DwERBrAZ.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/web-components/index.js +1 -1
  9. package/dist/cjs/server/index.js +1 -1
  10. package/dist/esm/form/index.js +128 -84
  11. package/dist/esm/index.js +393 -334
  12. package/dist/esm/plugins/create-experience/index.js +183 -151
  13. package/dist/esm/plugins/dynamic-experiences/index.js +52 -30
  14. package/dist/esm/plugins/responses-browser-storage/index.js +47 -20
  15. package/dist/esm/plugins/web-components/index.js +1 -1
  16. package/dist/esm/server/index.js +1 -1
  17. package/dist/{experience-instance-DZiAwXph.js → experience-instance-CwwrKUI8.js} +50 -46
  18. package/dist/experience-instance-DdFUcVRd.cjs +1 -0
  19. package/dist/{rules-logic-B7vJrWyO.js → rules-logic-BIkBWZmf.js} +4 -2
  20. package/dist/rules-logic-DDxCiq4P.cjs +1 -0
  21. package/dist/types/entities/condition/condition.d.ts +17 -0
  22. package/dist/types/entities/condition/condition.d.ts.map +1 -0
  23. package/dist/types/entities/experience/experience.d.ts +40 -35
  24. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  25. package/dist/types/entities/experience-instance/experience-instance.d.ts +21 -2
  26. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  27. package/dist/types/entities/field/field.d.ts +13 -2
  28. package/dist/types/entities/field/field.d.ts.map +1 -1
  29. package/dist/types/entities/response/response-validation.d.ts +76 -0
  30. package/dist/types/entities/response/response-validation.d.ts.map +1 -0
  31. package/dist/types/entities/response/response.d.ts +24 -17
  32. package/dist/types/entities/response/response.d.ts.map +1 -1
  33. package/dist/types/entities/step/step.d.ts +36 -0
  34. package/dist/types/entities/step/step.d.ts.map +1 -0
  35. package/dist/types/form/build-responses.d.ts +12 -9
  36. package/dist/types/form/build-responses.d.ts.map +1 -1
  37. package/dist/types/form/create-field-evaluator.d.ts +11 -3
  38. package/dist/types/form/create-field-evaluator.d.ts.map +1 -1
  39. package/dist/types/form/create-field-validation.d.ts +21 -6
  40. package/dist/types/form/create-field-validation.d.ts.map +1 -1
  41. package/dist/types/form/create-form.d.ts +42 -11
  42. package/dist/types/form/create-form.d.ts.map +1 -1
  43. package/dist/types/form/create-submit-pipeline.d.ts +21 -9
  44. package/dist/types/form/create-submit-pipeline.d.ts.map +1 -1
  45. package/dist/types/form/get-step-fields.d.ts +13 -0
  46. package/dist/types/form/get-step-fields.d.ts.map +1 -1
  47. package/dist/types/index.d.ts +2 -0
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/logic-engine.d.ts +10 -2
  50. package/dist/types/logic-engine.d.ts.map +1 -1
  51. package/dist/types/picked.d.ts +68 -32
  52. package/dist/types/picked.d.ts.map +1 -1
  53. package/dist/types/plugins/create-experience/create-experience.d.ts +51 -29
  54. package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
  55. package/dist/types/plugins/create-experience/index.d.ts +2 -2
  56. package/dist/types/plugins/create-experience/index.d.ts.map +1 -1
  57. package/dist/types/plugins/create-experience/plugin.d.ts.map +1 -1
  58. package/dist/types/plugins/create-experience/serialization.d.ts +1 -0
  59. package/dist/types/plugins/create-experience/serialization.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 +41 -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/utils/events.d.ts +1 -1
  66. package/dist/types/utils/events.d.ts.map +1 -1
  67. package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts +3 -0
  68. package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts.map +1 -0
  69. package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts +10 -6
  70. package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts.map +1 -1
  71. package/dist/types/utils/nodes.d.ts +74 -2
  72. package/dist/types/utils/nodes.d.ts.map +1 -1
  73. package/dist/types/utils/rules-logic.d.ts +31 -0
  74. package/dist/types/utils/rules-logic.d.ts.map +1 -1
  75. package/package.json +32 -6
  76. package/dist/experience-instance-Ddk4Jktn.cjs +0 -1
  77. package/dist/rules-logic-CXr4wXcG.cjs +0 -1
  78. package/dist/types/utils/node-tree/get-next-node-from-conditional.d.ts +0 -3
  79. package/dist/types/utils/node-tree/get-next-node-from-conditional.d.ts.map +0 -1
@@ -1,37 +1,64 @@
1
1
  import { n as e, r as t, t as n } from "../../../storage-6Xk0uAxB.js";
2
2
  import { attach as r, createEffect as i, sample as a } from "effector";
3
3
  //#region src/plugins/responses-browser-storage/plugin.ts
4
- var o = n("responses", "global"), s = (e, t) => {
5
- let n = {};
6
- return Object.entries(e).forEach(([e, r]) => {
7
- t.find((t) => t.id === e)?.policies?.doNotStoreValue || (n[e] = r);
8
- }), n;
9
- }, c = ({ storage: n = "local" } = {}) => ({
4
+ var o = n("responses", "global");
5
+ function s(e, t) {
6
+ return e.find((e) => e.key === t || e.id === t);
7
+ }
8
+ function c(e, t) {
9
+ return Object.fromEntries(Object.entries(e).flatMap(([e, n]) => {
10
+ let r = s(t, e);
11
+ return r?.policies?.doNotStoreValue ? [] : [[r?.key ?? e, n]];
12
+ }));
13
+ }
14
+ var l = ({ storage: n = "local" } = {}) => ({
10
15
  name: "responses-browser-storage-plugin",
11
- setup: (c) => {
12
- let l = n === "local" ? e : t, u = i(async () => {
13
- let e = l.get(o).json();
16
+ setup: (l) => {
17
+ let u = n === "local" ? e : t, d = i(async () => {
18
+ let e = u.get(o).json();
14
19
  if (!e) return null;
15
- c.responses.register(e);
16
- }), d = r({
20
+ let t = l.fields.listStore.getState(), n = Object.fromEntries(Object.entries(e).map(([e, n]) => [s(t, e)?.key ?? e, n]));
21
+ l.responses.register(n);
22
+ }), f = r({
17
23
  source: {
18
- responses: c.responses.getAllStore,
19
- fields: c.fields.listStore
24
+ responses: l.responses.getAllStore,
25
+ fields: l.fields.listStore
20
26
  },
21
27
  effect: ({ responses: e, fields: t }) => {
22
- let n = s(e, t);
23
- l.set(o, n);
28
+ u.set(o, c(e, t));
29
+ }
30
+ }), p = r({
31
+ source: {
32
+ responses: l.responses.getAllStore,
33
+ fields: l.fields.listStore
34
+ },
35
+ effect: ({ responses: e, fields: t }) => {
36
+ let n = {}, r = !1;
37
+ for (let [i, a] of Object.entries(e)) {
38
+ let e = s(t, i);
39
+ e && e.key !== i && (n[e.key] = a, r = !0);
40
+ }
41
+ if (r) {
42
+ for (let e of Object.keys(n)) {
43
+ let n = t.find((t) => t.key === e);
44
+ n && n.id !== n.key && l.responses.clear(n.id);
45
+ }
46
+ l.responses.register(n);
47
+ }
24
48
  }
25
49
  });
26
50
  a({
27
- source: c.eventBus,
51
+ source: l.eventBus,
28
52
  filter: (e) => e.type === "load",
29
- target: u
30
- }), a({
31
- source: c.responses.getAllStore,
32
53
  target: d
54
+ }), a({
55
+ source: l.fields.listStore,
56
+ target: p
57
+ }), a({
58
+ source: l.responses.getAllStore,
59
+ target: f
33
60
  });
34
61
  }
35
62
  });
36
63
  //#endregion
37
- export { c as responsesBrowserStoragePlugin };
64
+ export { l as responsesBrowserStoragePlugin };
@@ -9,7 +9,7 @@ var n = () => ({
9
9
  class i extends HTMLElement {
10
10
  connectedCallback() {
11
11
  let e = this.getAttribute("experience-id");
12
- n.isReady && e && n.experiences.launch({ id: e });
12
+ n.isReady && e && n.experiences.launch({ key: e });
13
13
  }
14
14
  }
15
15
  window.customElements.define(r, i);
@@ -1,4 +1,4 @@
1
- import { t as e } from "../../experience-instance-DZiAwXph.js";
1
+ import { t as e } from "../../experience-instance-CwwrKUI8.js";
2
2
  import { attach as t, createEffect as n, createEvent as r, createStore as i, sample as a } from "effector";
3
3
  //#region src/server/index.ts
4
4
  function o() {
@@ -1,4 +1,4 @@
1
- import { n as e, t } from "./rules-logic-B7vJrWyO.js";
1
+ import { n as e, t } from "./rules-logic-BIkBWZmf.js";
2
2
  import "./logger-6z_gb4rA.js";
3
3
  import { d as n, l as r, r as i } from "./supports-0XIfd4-R.js";
4
4
  import { attach as a, combine as o, createApi as s, createDomain as c, createEffect as l, createEvent as u, sample as d, split as f } from "effector";
@@ -87,7 +87,7 @@ function k(e, t, n) {
87
87
  //#endregion
88
88
  //#region src/utils/nodes.ts
89
89
  function A(e) {
90
- return e.type === "conditional";
90
+ return e.type === "condition";
91
91
  }
92
92
  function j(e) {
93
93
  return e.type === "step";
@@ -101,12 +101,18 @@ function N(e) {
101
101
  function P(e) {
102
102
  return e.type === "action";
103
103
  }
104
+ function F(e) {
105
+ return e.conditionId;
106
+ }
107
+ function I(e) {
108
+ return e.stepId;
109
+ }
104
110
  //#endregion
105
111
  //#region src/utils/node-tree/next-reachable-step-nodes.ts
106
- var F = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add(n.id), j(n) && !r ? [n] : t.filter((e) => e.sourceNodeId === n.id).flatMap((n) => {
112
+ var L = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add(n.id), j(n) && !r ? [n] : t.filter((e) => e.sourceNodeId === n.id).flatMap((n) => {
107
113
  let r = e.find((e) => e.id === n.destinationNodeId);
108
- return r ? F(e, t, r, !1, i) : [];
109
- })), ee = (e, t, n) => F(e, t, n, !0, /* @__PURE__ */ new Set()), I = (e, t, n, r, i = /* @__PURE__ */ new Set()) => {
114
+ return r ? L(e, t, r, !1, i) : [];
115
+ })), R = (e, t, n) => L(e, t, n, !0, /* @__PURE__ */ new Set()), z = (e, t, n, r, i = /* @__PURE__ */ new Set()) => {
110
116
  if (i.has(n.id)) return [-1, -1];
111
117
  i.add(n.id);
112
118
  let a = t.filter((e) => e.sourceNodeId === n.id);
@@ -115,11 +121,11 @@ var F = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add
115
121
  for (let n of a) {
116
122
  let r = e.find((e) => e.id === n.destinationNodeId);
117
123
  if (!r) continue;
118
- let [a, c] = I(e, t, r, !1, new Set(i));
124
+ let [a, c] = z(e, t, r, !1, new Set(i));
119
125
  a !== -1 && (o = Math.min(o, a + 1), s = Math.max(s, c + 1));
120
126
  }
121
127
  return o === Infinity ? [-1, -1] : [o, s];
122
- }, te = (e, t, n) => I(e, t, n, !0, /* @__PURE__ */ new Set()), L = (e, t, n, r = /* @__PURE__ */ new Set()) => {
128
+ }, ee = (e, t, n) => z(e, t, n, !0, /* @__PURE__ */ new Set()), B = (e, t, n, r = /* @__PURE__ */ new Set()) => {
123
129
  if (r.has(n.id)) return [-1, -1];
124
130
  if (r.add(n.id), n.type === "origin") return [0, 0];
125
131
  let i = t.filter((e) => e.destinationNodeId === n.id);
@@ -128,64 +134,62 @@ var F = (e, t, n, r, i = /* @__PURE__ */ new Set()) => i.has(n.id) ? [] : (i.add
128
134
  for (let n of i) {
129
135
  let i = e.find((e) => e.id === n.sourceNodeId);
130
136
  if (!i) continue;
131
- let [s, c] = L(e, t, i, new Set(r));
137
+ let [s, c] = B(e, t, i, new Set(r));
132
138
  s !== -1 && (a = Math.min(a, s + 1), o = Math.max(o, c + 1));
133
139
  }
134
140
  return a === Infinity ? [-1, -1] : [a, o];
135
- }, R = (e, t, n) => L(e, t, n, /* @__PURE__ */ new Set()), z = (e) => e.find((e) => e.type === "origin") || null, B = (e, t, n) => {
136
- if (!e) return z(t);
141
+ }, te = (e, t, n) => B(e, t, n, /* @__PURE__ */ new Set()), V = (e) => e.find((e) => e.type === "origin") || null, H = (e, t, n) => {
142
+ if (!e) return V(t);
137
143
  let r = n.find((t) => t.sourceNodeId === e.id);
138
144
  return r && t.find((e) => e.id === r.destinationNodeId) || null;
139
145
  };
140
146
  //#endregion
141
- //#region src/utils/node-tree/get-next-node-from-conditional.ts
142
- async function V(e, t, n, r) {
147
+ //#region src/utils/node-tree/get-next-node-from-condition.ts
148
+ async function ne(e, t, n, r) {
143
149
  let i = e ? "true" : "false", a = r.find((e) => e.sourceNodeHandle === i && e.sourceNodeId === t);
144
150
  return n.find((e) => e.id === a?.destinationNodeId);
145
151
  }
146
152
  //#endregion
147
153
  //#region src/entities/experience-instance/experience-instance.ts
148
- var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i, options: c }) => {
149
- let p = u(), m = u(), h = u(), g = u(), _ = u(), v = u(), y = r.componentStore, b = H.store("transitioning"), x = n.history.entriesStore.map((e) => e.filter((e) => e.experienceId === r.id)), S = x.map((e) => e.filter((e) => j(e.node))), C = x.map((e) => e.at(-1)?.node || null), w = o(r.treeStore, C, ({ steps: e }, t) => e.find((e) => t && j(t) && e.id === t.stepId) || null), T = o(r.treeStore, S, ({ steps: e }, t) => {
154
+ var U = c("experience-instance"), W = p(({ client: n, experience: r, target: i, options: c }) => {
155
+ let p = u(), m = u(), h = u(), g = u(), _ = u(), v = u(), y = r.componentStore, b = U.store("transitioning"), x = n.history.entriesStore.map((e) => e.filter((e) => e.experienceId === r.id)), S = x.map((e) => e.filter((e) => j(e.node))), C = x.map((e) => e.at(-1)?.node || null), w = o(n.steps.listStore, C, (e, t) => e.find((e) => t && j(t) && (e.id === t.stepId || e.key === t.stepId)) || null), T = o(n.steps.listStore, S, (e, t) => {
150
156
  let n = t.at(-2);
151
157
  if (!n || !j(n.node)) return null;
152
158
  let r = n.node;
153
- return e.find((e) => e.id === r.stepId) || null;
154
- }), E = o(r.treeStore, C, ({ nodes: e, edges: t }, n) => n ? ee(e, t, n) : []), D = o(r.treeStore, C, ({ nodes: e, edges: t }, n) => n ? R(e, t, n) : [-1, -1]), O = o(r.treeStore, C, ({ nodes: e, edges: t }, n) => n ? te(e, t, n) : [-1, -1]), k = H.store(!1), F = s(k, {
159
+ return e.find((e) => e.id === r.stepId || e.key === r.stepId) || null;
160
+ }), E = o(r.treeStore, C, ({ nodes: e, edges: t }, n) => n ? R(e, t, n) : []), D = o(r.treeStore, C, ({ nodes: e, edges: t }, n) => n ? te(e, t, n) : [-1, -1]), O = o(r.treeStore, C, ({ nodes: e, edges: t }, n) => n ? ee(e, t, n) : [-1, -1]), k = U.store(!1), F = s(k, {
155
161
  open: () => !0,
156
162
  close: () => !1,
157
163
  toggle: (e) => !e,
158
164
  set: (e, t) => t
159
- }), I = l(async () => {
165
+ }), L = l(async () => {
160
166
  n.history.back({ experienceId: r.id });
161
- }), L = a({
167
+ }), z = a({
162
168
  source: r.treeStore,
163
169
  effect: async (e, t) => {
164
- let i = e.nodes.find((e) => j(e) && e.stepId === t);
170
+ let i = e.nodes.find((e) => j(e) && I(e) === t);
165
171
  i && n.history.push({
166
172
  experienceId: r.id,
167
173
  node: i
168
174
  });
169
175
  }
170
- }), U = a({
176
+ }), B = a({
171
177
  source: C,
172
178
  effect: (e) => {}
173
179
  }), W = a({
174
180
  source: r.treeStore,
175
- effect: async ({ nodes: e }) => z(e)
181
+ effect: async ({ nodes: e }) => V(e)
176
182
  }), G = a({
177
183
  source: r.treeStore,
178
184
  effect: async ({ nodes: e, edges: t }, n) => {
179
- if (N(n)) return B(n, e, t);
185
+ if (N(n)) return H(n, e, t);
180
186
  }
181
187
  }), K = a({
182
188
  source: r.treeStore,
183
- effect: async ({ nodes: e, edges: r, conditionals: i }, a) => {
189
+ effect: async ({ nodes: e, edges: r, conditions: i }, a) => {
184
190
  if (!A(a)) return;
185
- let o = i.find((e) => e.id === a.conditionalId);
186
- if (!o) return;
187
- let s = a.id;
188
- return V(!!await t(n, o.condition), s, e, r);
191
+ let o = a.conditionId, s = i.find((e) => e.id === o)?.logic;
192
+ return s ? ne(!!await t(n, s), a.id, e, r) : void 0;
189
193
  }
190
194
  }), q = a({
191
195
  source: r.treeStore,
@@ -221,15 +225,15 @@ var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i,
221
225
  return `${i}${a?.id}`, a || null;
222
226
  }
223
227
  }
224
- }), ne = l((e) => {
228
+ }), re = l((e) => {
225
229
  M(e) && n.experiences.launch({ id: e.experienceId });
226
230
  }), J = a({
227
231
  source: [C, r.treeStore],
228
- effect: async ([e, { nodes: t, edges: n }]) => B(e, t, n)
232
+ effect: async ([e, { nodes: t, edges: n }]) => H(e, t, n)
229
233
  }), Y = a({
230
234
  source: [C, r.treeStore],
231
- effect: async ([e, { nodes: t, edges: n }]) => B(e, t, n)
232
- }), re = l((e) => {
235
+ effect: async ([e, { nodes: t, edges: n }]) => H(e, t, n)
236
+ }), ie = l((e) => {
233
237
  n.history.push({
234
238
  experienceId: r.id,
235
239
  node: e
@@ -239,6 +243,7 @@ var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i,
239
243
  effect: async ({ initializeOpenLogic: r }) => c?.initialiseOpen === void 0 ? e(r) ? !!await t(n, r) : r ?? !1 : c.initialiseOpen
240
244
  }), Z = Object.freeze({
241
245
  id: Math.random().toString(36).substring(7),
246
+ experienceKey: r.key,
242
247
  experienceId: r.id,
243
248
  configStore: r.configStore,
244
249
  target: i,
@@ -250,7 +255,6 @@ var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i,
250
255
  toggleOpen: F.toggle,
251
256
  setOpen: F.set,
252
257
  treeStore: r.treeStore,
253
- fieldsStore: r.fieldsStore,
254
258
  currentNodeStore: C,
255
259
  currentStepStore: w,
256
260
  previousStepStore: T,
@@ -279,8 +283,8 @@ var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i,
279
283
  cases: {
280
284
  origin: G,
281
285
  condition: K,
282
- step: U,
283
- launchExperience: ne,
286
+ step: B,
287
+ launchExperience: re,
284
288
  action: q,
285
289
  __: u()
286
290
  }
@@ -294,7 +298,7 @@ var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i,
294
298
  q.doneData
295
299
  ],
296
300
  filter: Boolean,
297
- target: re
301
+ target: ie
298
302
  }), d({
299
303
  clock: m,
300
304
  target: Y
@@ -327,10 +331,10 @@ var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i,
327
331
  }))
328
332
  }), d({
329
333
  clock: h,
330
- target: I
334
+ target: L
331
335
  }), d({
332
336
  clock: g,
333
- target: L
337
+ target: z
334
338
  }), d({
335
339
  source: o([
336
340
  K.pending,
@@ -341,7 +345,7 @@ var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i,
341
345
  fn: (e) => e.some(Boolean) ? "transitioning" : "ready",
342
346
  target: b
343
347
  }), d({
344
- clock: U.doneData,
348
+ clock: B.doneData,
345
349
  source: w,
346
350
  filter: Boolean,
347
351
  target: n.eventBus.prepend((e) => ({
@@ -384,11 +388,11 @@ var H = c("experience-instance"), U = p(({ client: n, experience: r, target: i,
384
388
  target: [v]
385
389
  }), _(), Z;
386
390
  });
387
- function W(e) {
388
- return m(U, e);
391
+ function G(e) {
392
+ return m(W, e);
389
393
  }
390
- var G = p(({ client: e }) => {
391
- let t = H.store({}), n = u(), r = u(), i = u(), a = s(t, {
394
+ var K = p(({ client: e }) => {
395
+ let t = U.store({}), n = u(), r = u(), i = u(), a = s(t, {
392
396
  register(e, t) {
393
397
  let n = [...e[t.experienceId] ?? []];
394
398
  return n.push(t), {
@@ -403,7 +407,7 @@ var G = p(({ client: e }) => {
403
407
  [n]: r ?? []
404
408
  };
405
409
  }
406
- }), o = l(({ experience: t, target: n, options: r }) => W({
410
+ }), o = l(({ experience: t, target: n, options: r }) => G({
407
411
  client: e,
408
412
  experience: t,
409
413
  target: n,
@@ -474,8 +478,8 @@ var G = p(({ client: e }) => {
474
478
  listStore: g
475
479
  };
476
480
  });
477
- function K(e) {
478
- return m(G, e);
481
+ function q(e) {
482
+ return m(K, e);
479
483
  }
480
484
  //#endregion
481
- export { v as a, T as c, w as i, K as n, C as o, j as r, D as s, W as t };
485
+ export { F as a, C as c, j as i, D as l, q as n, w as o, A as r, v as s, G as t, T as u };
@@ -0,0 +1 @@
1
+ const e=require(`./rules-logic-DDxCiq4P.cjs`);require(`./logger-fbvQC40v.cjs`);const t=require(`./supports-Dsjg-82e.cjs`);let n=require(`effector`),r=require(`@withease/factories`);function i(e){return!t.d()||!t.r()?[]:Array.from(window.document.querySelectorAll(e)).filter(e=>e instanceof HTMLElement)}var a=`open`;function o(e){if(!t.l())throw Error(`Shadow DOM is not supported in this environment`);return e.attachShadow({mode:a})}function s(){return new Promise((e,n)=>{if(!t.r()){n();return}document.readyState===`loading`?document.addEventListener(`readystatechange`,()=>e(),{once:!0}):e()})}function c(e,t){let n=new MutationObserver(r=>{document.contains(e)||(n.disconnect(),t())});n.observe(document.body,{childList:!0,subtree:!0})}var l=`picked-root`,u=`picked-target`,d=`picked-root`;function f(e,t){return[...e,{selector:`${d}[experience-id="${t}"]`,placement:`replace`}].flatMap(e=>{let n=i(e.selector).filter(e=>!h(e,t)&&!g(e,t));return{...e,elements:n}})}function p(e,t){return e.flatMap(e=>e.elements.map(n=>v(n,e.placement,t)))}function m(e,t){e.classList.add(u),e.classList.add(`${u}-${t}`)}function h(e,t){return t?e.classList.contains(`${u}-${t}`):e.classList.contains(`${u}`)}function g(e,t){return t?e.classList.contains(`${l}-${t}`):e.classList.contains(l)}function _(e){let t=document.createElement(`div`);return t.style.display=`block`,t.classList.add(l),t.classList.add(`${l}-${e}`),t}function v(e,t,n){let r,i=_(n);if(e instanceof Document)r=e.body.appendChild(i);else{switch(t){case`replace`:e.replaceWith(i);break;case`before`:e.before(i);break;case`after`:e.after(i);break;case`prepend`:e.prepend(i);break;case`append`:e.append(i);break}r=i}return r}function y(e){return e.type===`condition`}function b(e){return e.type===`step`}function x(e){return e.type===`experience`}function S(e){return e.type===`origin`}function C(e){return e.type===`action`}function w(e){return e.conditionId}function T(e){return e.stepId}var E=(e,t,n,r,i=new Set)=>i.has(n.id)?[]:(i.add(n.id),b(n)&&!r?[n]:t.filter(e=>e.sourceNodeId===n.id).flatMap(n=>{let r=e.find(e=>e.id===n.destinationNodeId);return r?E(e,t,r,!1,i):[]})),D=(e,t,n)=>E(e,t,n,!0,new Set),O=(e,t,n,r,i=new Set)=>{if(i.has(n.id))return[-1,-1];i.add(n.id);let a=t.filter(e=>e.sourceNodeId===n.id);if(a.length===0)return[0,0];let o=1/0,s=-1/0;for(let n of a){let r=e.find(e=>e.id===n.destinationNodeId);if(!r)continue;let[a,c]=O(e,t,r,!1,new Set(i));a!==-1&&(o=Math.min(o,a+1),s=Math.max(s,c+1))}return o===1/0?[-1,-1]:[o,s]},k=(e,t,n)=>O(e,t,n,!0,new Set),A=(e,t,n,r=new Set)=>{if(r.has(n.id))return[-1,-1];if(r.add(n.id),n.type===`origin`)return[0,0];let i=t.filter(e=>e.destinationNodeId===n.id);if(i.length===0)return[-1,-1];let a=1/0,o=-1/0;for(let n of i){let i=e.find(e=>e.id===n.sourceNodeId);if(!i)continue;let[s,c]=A(e,t,i,new Set(r));s!==-1&&(a=Math.min(a,s+1),o=Math.max(o,c+1))}return a===1/0?[-1,-1]:[a,o]},j=(e,t,n)=>A(e,t,n,new Set),M=e=>e.find(e=>e.type===`origin`)||null,N=(e,t,n)=>{if(!e)return M(t);let r=n.find(t=>t.sourceNodeId===e.id);return r&&t.find(e=>e.id===r.destinationNodeId)||null};async function P(e,t,n,r){let i=e?`true`:`false`,a=r.find(e=>e.sourceNodeHandle===i&&e.sourceNodeId===t);return n.find(e=>e.id===a?.destinationNodeId)}var F=(0,n.createDomain)(`experience-instance`),I=(0,r.createFactory)(({client:t,experience:r,target:i,options:a})=>{let o=(0,n.createEvent)(),s=(0,n.createEvent)(),c=(0,n.createEvent)(),l=(0,n.createEvent)(),u=(0,n.createEvent)(),d=(0,n.createEvent)(),f=r.componentStore,p=F.store(`transitioning`),m=t.history.entriesStore.map(e=>e.filter(e=>e.experienceId===r.id)),h=m.map(e=>e.filter(e=>b(e.node))),g=m.map(e=>e.at(-1)?.node||null),_=(0,n.combine)(t.steps.listStore,g,(e,t)=>e.find(e=>t&&b(t)&&(e.id===t.stepId||e.key===t.stepId))||null),v=(0,n.combine)(t.steps.listStore,h,(e,t)=>{let n=t.at(-2);if(!n||!b(n.node))return null;let r=n.node;return e.find(e=>e.id===r.stepId||e.key===r.stepId)||null}),w=(0,n.combine)(r.treeStore,g,({nodes:e,edges:t},n)=>n?D(e,t,n):[]),E=(0,n.combine)(r.treeStore,g,({nodes:e,edges:t},n)=>n?j(e,t,n):[-1,-1]),O=(0,n.combine)(r.treeStore,g,({nodes:e,edges:t},n)=>n?k(e,t,n):[-1,-1]),A=F.store(!1),I=(0,n.createApi)(A,{open:()=>!0,close:()=>!1,toggle:e=>!e,set:(e,t)=>t}),L=(0,n.createEffect)(async()=>{t.history.back({experienceId:r.id})}),R=(0,n.attach)({source:r.treeStore,effect:async(e,n)=>{let i=e.nodes.find(e=>b(e)&&T(e)===n);i&&t.history.push({experienceId:r.id,node:i})}}),z=(0,n.attach)({source:g,effect:e=>{}}),B=(0,n.attach)({source:r.treeStore,effect:async({nodes:e})=>M(e)}),V=(0,n.attach)({source:r.treeStore,effect:async({nodes:e,edges:t},n)=>{if(S(n))return N(n,e,t)}}),H=(0,n.attach)({source:r.treeStore,effect:async({nodes:n,edges:r,conditions:i},a)=>{if(!y(a))return;let o=a.conditionId,s=i.find(e=>e.id===o)?.logic;return s?P(!!await e.t(t,s),a.id,n,r):void 0}}),U=(0,n.attach)({source:r.treeStore,effect:async({nodes:e,edges:n},r)=>{if(!C(r))return;let i=r.action;if(!i){`${r.id}`;return}let a=t.actions.getByName(i).getState();if(!a){`${i}`;let t=n.find(e=>e.sourceNodeId===r.id&&e.sourceNodeHandle===`false`);return t?e.find(e=>e.id===t.destinationNodeId):null}if(typeof a.action!=`function`){`${i}`;let t=n.find(e=>e.sourceNodeId===r.id&&e.sourceNodeHandle===`false`);return t?e.find(e=>e.id===t.destinationNodeId):null}try{`${i}`,await a.action(i);let t=n.find(e=>e.sourceNodeId===r.id&&e.sourceNodeHandle===`true`);if(!t)return`${r.id}`,null;let o=e.find(e=>e.id===t.destinationNodeId);return`${i}${o?.id}`,o||null}catch{`${i}`;let t=n.find(e=>e.sourceNodeId===r.id&&e.sourceNodeHandle===`false`);if(!t)return`${r.id}`,null;let a=e.find(e=>e.id===t.destinationNodeId);return`${i}${a?.id}`,a||null}}}),W=(0,n.createEffect)(e=>{x(e)&&t.experiences.launch({id:e.experienceId})}),G=(0,n.attach)({source:[g,r.treeStore],effect:async([e,{nodes:t,edges:n}])=>N(e,t,n)}),K=(0,n.attach)({source:[g,r.treeStore],effect:async([e,{nodes:t,edges:n}])=>N(e,t,n)}),q=(0,n.createEffect)(e=>{t.history.push({experienceId:r.id,node:e})}),J=(0,n.attach)({source:r.configStore,effect:async({initializeOpenLogic:n})=>a?.initialiseOpen===void 0?e.n(n)?!!await e.t(t,n):n??!1:a.initialiseOpen}),Y=Object.freeze({id:Math.random().toString(36).substring(7),experienceKey:r.key,experienceId:r.id,configStore:r.configStore,target:i,componentStore:f,stateStore:p,isOpenStore:A,open:I.open,close:I.close,toggleOpen:I.toggle,setOpen:I.set,treeStore:r.treeStore,currentNodeStore:g,currentStepStore:_,previousStepStore:v,nextReachableStepNodesStore:w,stepsToOriginStore:E,stepsToLeafStore:O,goToNextStep:s,goToPreviousStep:c,goToStepById:l,stepsHistoryStore:h}),X=(0,n.createEvent)(),Z=(0,n.createEvent)();return(0,n.sample)({source:g,target:X}),(0,n.sample)({clock:X,filter:e=>e===null,target:B}),(0,n.sample)({clock:X,filter:e=>e!==null,target:Z}),(0,n.split)({source:Z,match:e=>y(e)?`condition`:b(e)?`step`:x(e)?`launchExperience`:S(e)?`origin`:C(e)?`action`:`other`,cases:{origin:V,condition:H,step:z,launchExperience:W,action:U,__:(0,n.createEvent)()}}),(0,n.sample)({clock:[H.doneData,V.doneData,B.doneData,K.doneData,G.doneData,U.doneData],filter:Boolean,target:q}),(0,n.sample)({clock:s,target:K}),(0,n.sample)({clock:s,source:_,filter:Boolean,target:t.eventBus.prepend(e=>({type:`step_submit`,step:e,experience:Y}))}),(0,n.sample)({clock:K.done,source:_,filter:Boolean,target:t.eventBus.prepend(e=>({type:`step_submit_success`,step:e,experience:Y}))}),(0,n.sample)({clock:K.fail,source:_,filter:Boolean,target:t.eventBus.prepend(e=>({type:`step_submit_error`,step:e,experience:Y}))}),(0,n.sample)({clock:c,target:L}),(0,n.sample)({clock:l,target:R}),(0,n.sample)({source:(0,n.combine)([H.pending,V.pending,B.pending,K.pending]),fn:e=>e.some(Boolean)?`transitioning`:`ready`,target:p}),(0,n.sample)({clock:z.doneData,source:_,filter:Boolean,target:t.eventBus.prepend(e=>({type:`step_enter`,step:e,experience:Y}))}),(0,n.sample)({clock:d,target:J}),(0,n.sample)({source:J.doneData,fn:Boolean,target:A}),(0,n.sample)({source:g,clock:o,filter:e=>e?S(e):!0,target:G}),(0,n.sample)({source:A,filter:Boolean,target:o}),(0,n.sample)({source:A,filter:Boolean,target:t.eventBus.prepend(()=>({type:`experience_open`,experience:Y}))}),(0,n.sample)({source:A,filter:e=>!e,target:t.eventBus.prepend(()=>({type:`experience_close`,experience:Y}))}),(0,n.sample)({clock:u,target:[d]}),u(),Y});function L(e){return(0,r.invoke)(I,e)}var R=(0,r.createFactory)(({client:e})=>{let t=F.store({}),r=(0,n.createEvent)(),i=(0,n.createEvent)(),a=(0,n.createEvent)(),s=(0,n.createApi)(t,{register(e,t){let n=[...e[t.experienceId]??[]];return n.push(t),{...e,[t.experienceId]:n}},unregister(e,t){let n=t.experienceId,r=e[n]?.filter(e=>e!==t);return{...e,[n]:r??[]}}}),l=(0,n.createEffect)(({experience:t,target:n,options:r})=>L({client:e,experience:t,target:n,options:r})),u=(0,n.createEffect)(e=>{s.register(e)}),d=(0,n.createEffect)(e=>{e.target&&c(e.target,()=>{a(e)})}),f=(0,n.createEffect)(e=>{s.unregister(e)}),p=(0,n.createEffect)(t=>{let n=t.componentStore.getState();if(!n)return;let r=n.frameworkStore.getState();if(!r){`${n.name}`;return}let i=t.target;if(!i){`${t.experienceId}`;return}let a=o(i);try{r.render(a,n.component,e,t)}catch{}});(0,n.sample)({clock:r,target:l}),(0,n.sample)({clock:a,target:f}),(0,n.sample)({clock:l.doneData,target:[u,d,i]}),(0,n.sample)({clock:l.doneData,target:e.eventBus.prepend(e=>({type:`experience_initialize`,experience:e}))}),(0,n.sample)({clock:i,target:p});function m(e,t,n){r({experience:e,target:t,options:n})}let h=t.map(e=>Object.values(e).flat());function g(e){return t.map(t=>t[e]||[],{skipVoid:!1})}return{spawn:m,getByExperienceId:g,listStore:h}});function z(e){return(0,r.invoke)(R,e)}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return m}});
@@ -102,6 +102,8 @@ var c = {
102
102
  let [t, ...n] = e;
103
103
  return typeof t == "function" ? Reflect.apply(t, null, n) : null;
104
104
  },
105
+ startsWith: (e, t) => n(e) && n(t) && e.startsWith(t),
106
+ endsWith: (e, t) => n(e) && n(t) && e.endsWith(t),
105
107
  regexp_matches(e, t) {
106
108
  let i = e, a = "";
107
109
  if (r(e)) {
@@ -210,7 +212,6 @@ async function p(e, t, n) {
210
212
  }
211
213
  }), {});
212
214
  return await l(t, {
213
- ...n,
214
215
  responses: e.responses.getAllStore.getState(),
215
216
  location: typeof r.location == "object" ? {
216
217
  hash: r.location.hash,
@@ -224,7 +225,8 @@ async function p(e, t, n) {
224
225
  search: r.location.search
225
226
  } : void 0,
226
227
  predicates: i,
227
- features: a
228
+ features: a,
229
+ ...n
228
230
  });
229
231
  }
230
232
  //#endregion
@@ -0,0 +1 @@
1
+ const e=require(`./object-CUJOjanb.cjs`);function t(e){return typeof e==`number`&&!isNaN(e)}function n(e){return typeof e==`string`}function r(e){return Array.isArray(e)}function i(e){return e instanceof Promise}function a(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.keys(e).length===1}function o(e){if(t(e))return e;let n=parseFloat(`${e}`);return isNaN(n)?0:n}function s(e){return`${e}`}var c={"==":(e,t)=>e==t,"===":(e,t)=>e===t,"!=":(e,t)=>e!=t,"!==":(e,t)=>e!==t,">":(e,t)=>o(e)>o(t),">=":(e,t)=>o(e)>=o(t),"<":(e,t,n)=>{let r=o(e),i=o(t);if(n===void 0)return r<i;let a=o(n);return r<i&&i<a},"<=":(e,t,n)=>{let r=o(e),i=o(t);if(n===void 0)return r<=i;let a=o(n);return r<=i&&i<=a},"!!":async e=>await u(e),"!":async e=>!await u(e),"%":(e,t)=>o(e)%o(t),log:e=>(console.log(e),e),in:(e,t)=>t?n(t)?t.indexOf(s(e))!==-1:r(t)?t.includes(e):!1:!1,cat:(...e)=>e.map(s).join(``),substr:(e,t,n)=>{let r=s(e),i=o(t);if(n===void 0)return r.substr(i);let a=o(n);if(a<0){let e=r.substr(i);return e.substr(0,e.length+a)}return r.substr(i,a)},"+":(...e)=>e.reduce((e,t)=>o(e)+o(t),0),"*":(...e)=>e.reduce((e,t)=>o(e)*o(t),1),"-":(e,t)=>{let n=o(e);return t===void 0?-n:n-o(t)},"/":(e,t)=>o(e)/o(t),min:(...e)=>Math.min(...e.map(o)),max:(...e)=>Math.max(...e.map(o)),merge:(...e)=>e.reduce((e,t)=>r(t)?e.concat(t):e.concat([t]),[]),var(e,t){let n=arguments.length>1?t:null;if(e===``||e===`.`||e==null)return this;if(typeof e==`number`&&Array.isArray(this))return e>=0&&e<this.length?this[e]:n;let r=s(e);if(r===``||r===`.`)return this;let i=r.split(`.`),a=this;for(let e of i){if(a==null)return n;if(Array.isArray(a)){let t=parseInt(e,10);a=isNaN(t)?a[e]:a[t]}else a=a[e]}return a===void 0?n:a},async missing(...e){let t=r(e[0])?e[0]:e,n=[];for(let e of t){let t=await l({var:e},this);(t===null||t===``)&&n.push(`${e}`)}return n},async missing_some(e,t){let i=await l({missing:t},this);if(!r(i)||!r(t))return[];let a=i.filter(n);return t.filter(n).length-a.length>=o(e)?[]:a},invoke(...e){let[t,...n]=e;return typeof t==`function`?Reflect.apply(t,null,n):null},startsWith:(e,t)=>n(e)&&n(t)&&e.startsWith(t),endsWith:(e,t)=>n(e)&&n(t)&&e.endsWith(t),regexp_matches(e,t){let i=e,a=``;if(r(e)){let[t,n]=e;i=t,a=n}return!n(i)||!n(a)?!1:new RegExp(i,a).test(s(t))},throw(e){throw Error(s(e))}};async function l(e,t){if(!e)return e;if(i(e))return l(await e,t);if(r(e))return Promise.all(e.map(e=>l(e,t)));if(!a(e))return e;let n=d(e),o=n?e[n]??[]:[];switch(r(o)||(o=[o]),n){case`if`:case`?:`:for(let e=0;e<o.length-1;e+=2)if(await u(await l(o[e],t)))return l(o[e+1],t);return o.length%2==1?l(o[o.length-1],t):null;case`and`:{let e=null;for(let n of o)if(e=await l(n,t),!await u(e))return e;return e}case`or`:{let e=null;for(let n of o)if(e=await l(n,t),await u(e))return e;return e}case`map`:{let e=await l(o[0],t);return r(e)?await Promise.all(e.map(e=>l(o[1],e))):[]}case`filter`:{let e=await l(o[0],t);return r(e)?(await Promise.all(e.map(async e=>({item:e,shouldInclude:await u(await l(o[1],e))})))).filter(({shouldInclude:e})=>e).map(({item:e})=>e):[]}case`reduce`:{let e=await l(o[0],t);if(!r(e))return o.length>2?await l(o[2],t):null;let n=o[1],i=o.length>2?await l(o[2],t):null;for(let t of e)i=await l(n,{current:t,accumulator:i});return i}case`all`:{let e=await l(o[0],t);if(!r(e)||e.length===0)return!1;for(let t of e)if(!await u(await l(o[1],t)))return!1;return!0}case`some`:{let e=await l(o[0],t);if(!r(e))return!1;for(let t of e)if(await u(await l(o[1],t)))return!0;return!1}case`none`:{let e=await l(o[0],t);if(!r(e))return!0;for(let t of e)if(await u(await l(o[1],t)))return!1;return!0}case`catch`:try{return await l(o[0],t)}catch(e){return a(e)?await l(e,t):o[1]?await l(o[1],e):e instanceof Error?e.message:e}}let s=await Promise.all(o.map(e=>l(e,t))),f=n?c[n]:void 0;if(!f)throw Error(`Unrecognized operation ${n}`);return f.apply(t,s)}async function u(e){return i(e)?u(await e):!(Array.isArray(e)&&e.length===0)&&!!e}function d(e){return Object.keys(e)[0]}function f(t){return!e.t(t)}async function p(e,t,n){let r=e.getStateSnapshot(),i=e.predicates.listStore.getState().reduce((e,t)=>({...e,[t.name]:(...e)=>t.predicate({...r,args:e})}),{}),a=e.features.listStore.getState().reduce((e,t)=>({...e,[t.id]:async()=>{let{bucket:e}=await t.getBucket();return e}}),{});return await l(t,{responses:e.responses.getAllStore.getState(),location:typeof r.location==`object`?{hash:r.location.hash,host:r.location.host,hostname:r.location.hostname,href:r.location.href,origin:r.location.origin,pathname:r.location.pathname,port:r.location.port,protocol:r.location.protocol,search:r.location.search}:void 0,predicates:i,features:a,...n})}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return p}});
@@ -0,0 +1,17 @@
1
+ import { LogicRule } from '../../logic-engine';
2
+ export type ConditionsStore = ReturnType<typeof createConditionIndex>;
3
+ export interface Condition {
4
+ id: string;
5
+ key: string;
6
+ name: string;
7
+ logic: LogicRule;
8
+ }
9
+ declare const createConditionIndexFactory: () => {
10
+ register: (condition: Condition) => void;
11
+ getById: (id: Condition["id"]) => import('effector').Store<Condition | null>;
12
+ getByKey: (key: Condition["key"]) => import('effector').Store<Condition | null>;
13
+ listStore: import('effector').Store<Condition[]>;
14
+ };
15
+ export declare function createConditionIndex(): ReturnType<typeof createConditionIndexFactory>;
16
+ export {};
17
+ //# sourceMappingURL=condition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../../src/entities/condition/condition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAIrE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,CAAA;CACjB;AAGD,QAAA,MAAM,2BAA2B;0BAcF,SAAS,KAAG,IAAI;kBAQxB,SAAS,CAAC,IAAI,CAAC;oBAIb,SAAS,CAAC,KAAK,CAAC;;CAYvC,CAAA;AAEF,wBAAgB,oBAAoB,IAAI,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAErF"}
@@ -1,7 +1,8 @@
1
1
  import { AdaptedComponent } from '../component/component';
2
+ import { Condition } from '../condition/condition';
3
+ import { ExperienceStep } from '../step/step';
2
4
  import { Picked } from '../../picked';
3
5
  import { LogicRule, LogicValue } from '../../logic-engine';
4
- import { Field } from '../field/field';
5
6
  export type ExperiencesListStore = ReturnType<typeof createExperienceIndex>;
6
7
  export type ExperienceStore = ReturnType<typeof createExperience>;
7
8
  declare const createExperienceFactory: ({ client, experience }: {
@@ -9,6 +10,8 @@ declare const createExperienceFactory: ({ client, experience }: {
9
10
  experience: Experience;
10
11
  }) => {
11
12
  id: string;
13
+ key: string;
14
+ name: string;
12
15
  configStore: import('effector').Store<{
13
16
  name: string;
14
17
  decisionLogic: LogicValue | LogicRule;
@@ -19,9 +22,8 @@ declare const createExperienceFactory: ({ client, experience }: {
19
22
  steps: ExperienceStep[];
20
23
  nodes: ExperienceNode[];
21
24
  edges: ExperienceEdge[];
22
- conditionals: ExperienceConditional[];
25
+ conditions: Condition[];
23
26
  }>;
24
- fieldsStore: import('effector').Store<Field[]>;
25
27
  componentStore: import('effector').Store<{
26
28
  name: string;
27
29
  component: AdaptedComponent<string, unknown>;
@@ -35,6 +37,7 @@ declare const createExperienceFactory: ({ client, experience }: {
35
37
  };
36
38
  /**
37
39
  * Creates an Effector store for a single experience.
40
+ *
38
41
  * @param params - The client instance and experience data.
39
42
  * @returns An experience store with config, tree, fields, and component sub-stores.
40
43
  * @example
@@ -57,9 +60,11 @@ declare const createExperienceIndexFactory: ({ client }: {
57
60
  }) => {
58
61
  /** Registers an experience in the index. If an experience with the same ID already exists, it is merged. */
59
62
  register: (experience: Experience) => void;
60
- /** Returns a derived store for an experience by its ID. The store value is `undefined` when no match exists. */
61
- get: (id: Experience["id"]) => import('effector').Store<{
63
+ /** Returns a derived store for an experience by its key. The store value is `undefined` when no match exists. */
64
+ get: (key: string) => import('effector').Store<{
62
65
  id: string;
66
+ key: string;
67
+ name: string;
63
68
  configStore: import('effector').Store<{
64
69
  name: string;
65
70
  decisionLogic: LogicValue | LogicRule;
@@ -70,9 +75,8 @@ declare const createExperienceIndexFactory: ({ client }: {
70
75
  steps: ExperienceStep[];
71
76
  nodes: ExperienceNode[];
72
77
  edges: ExperienceEdge[];
73
- conditionals: ExperienceConditional[];
78
+ conditions: Condition[];
74
79
  }>;
75
- fieldsStore: import('effector').Store<Field[]>;
76
80
  componentStore: import('effector').Store<{
77
81
  name: string;
78
82
  component: AdaptedComponent<string, unknown>;
@@ -84,9 +88,11 @@ declare const createExperienceIndexFactory: ({ client }: {
84
88
  strategy: "override";
85
89
  }>;
86
90
  } | undefined>;
87
- /** @deprecated Use `experiences.get(id)` instead. */
88
- getById: (id: Experience["id"]) => import('effector').Store<{
91
+ /** @deprecated Use `experiences.get(key)` instead. */
92
+ getById: (key: string) => import('effector').Store<{
89
93
  id: string;
94
+ key: string;
95
+ name: string;
90
96
  configStore: import('effector').Store<{
91
97
  name: string;
92
98
  decisionLogic: LogicValue | LogicRule;
@@ -97,9 +103,8 @@ declare const createExperienceIndexFactory: ({ client }: {
97
103
  steps: ExperienceStep[];
98
104
  nodes: ExperienceNode[];
99
105
  edges: ExperienceEdge[];
100
- conditionals: ExperienceConditional[];
106
+ conditions: Condition[];
101
107
  }>;
102
- fieldsStore: import('effector').Store<Field[]>;
103
108
  componentStore: import('effector').Store<{
104
109
  name: string;
105
110
  component: AdaptedComponent<string, unknown>;
@@ -111,19 +116,23 @@ declare const createExperienceIndexFactory: ({ client }: {
111
116
  strategy: "override";
112
117
  }>;
113
118
  } | undefined>;
114
- /** Effector effect that launches an experience by ID, creating instances for each DOM target. */
119
+ /** Effector effect that launches an experience by its key. */
115
120
  launch: import('effector').Effect<{
116
- id: string;
121
+ key?: string;
122
+ id?: string;
117
123
  options?: LaunchExperienceOptions;
118
124
  }, void, Error>;
119
125
  /** Effector effect that opens an experience's existing instances, or launches it with `initialiseOpen` if none exist. */
120
126
  open: import('effector').Effect<{
121
- id: string;
127
+ key?: string;
128
+ id?: string;
122
129
  options?: OpenExperienceOptions;
123
130
  }, void, Error>;
124
131
  /** Derived store containing all registered experiences as an array. */
125
132
  listStore: import('effector').Store<{
126
133
  id: string;
134
+ key: string;
135
+ name: string;
127
136
  configStore: import('effector').Store<{
128
137
  name: string;
129
138
  decisionLogic: LogicValue | LogicRule;
@@ -134,9 +143,8 @@ declare const createExperienceIndexFactory: ({ client }: {
134
143
  steps: ExperienceStep[];
135
144
  nodes: ExperienceNode[];
136
145
  edges: ExperienceEdge[];
137
- conditionals: ExperienceConditional[];
146
+ conditions: Condition[];
138
147
  }>;
139
- fieldsStore: import('effector').Store<Field[]>;
140
148
  componentStore: import('effector').Store<{
141
149
  name: string;
142
150
  component: AdaptedComponent<string, unknown>;
@@ -151,6 +159,7 @@ declare const createExperienceIndexFactory: ({ client }: {
151
159
  };
152
160
  /**
153
161
  * Creates an Effector-based index for registering and retrieving experiences.
162
+ *
154
163
  * @param params - The client instance.
155
164
  * @returns An experience index with register, get, launch, and open methods.
156
165
  * @example
@@ -159,12 +168,7 @@ declare const createExperienceIndexFactory: ({ client }: {
159
168
  * ```
160
169
  */
161
170
  export declare function createExperienceIndex<T extends Parameters<typeof createExperienceIndexFactory>[0]>(params: T): ReturnType<typeof createExperienceIndexFactory>;
162
- export interface ExperienceStep {
163
- id: string;
164
- label: string;
165
- fieldIds: string[];
166
- }
167
- export type ExperienceNode = StepNode | ConditionalNode | LaunchExperienceNode | OriginNode | ActionNode;
171
+ export type ExperienceNode = StepNode | ConditionNode | LaunchExperienceNode | OriginNode | ActionNode;
168
172
  export interface ExperienceAction {
169
173
  id: string;
170
174
  action: string;
@@ -180,11 +184,13 @@ export interface BaseNode {
180
184
  export interface StepNode extends BaseNode {
181
185
  type: 'step';
182
186
  stepId: string;
183
- label: string;
187
+ name?: string;
188
+ /** @deprecated Use `name` instead. Populated for backwards compatibility. */
189
+ label?: string;
184
190
  }
185
- export interface ConditionalNode extends BaseNode {
186
- type: 'conditional';
187
- conditionalId: string;
191
+ export interface ConditionNode extends BaseNode {
192
+ type: 'condition';
193
+ conditionId: string;
188
194
  }
189
195
  export interface LaunchExperienceNode extends BaseNode {
190
196
  type: 'experience';
@@ -199,40 +205,39 @@ export interface ExperienceEdge {
199
205
  destinationNodeId: string;
200
206
  sourceNodeHandle?: string;
201
207
  }
202
- export interface ExperienceConditional {
203
- id: string;
204
- label?: string;
205
- condition: LogicRule;
206
- }
207
208
  export interface ExperienceTarget {
208
209
  selector: string;
209
210
  placement: 'replace' | 'append' | 'prepend' | 'before' | 'after';
210
211
  }
211
212
  export interface Experience {
212
213
  id: string;
214
+ key: string;
213
215
  name: string;
214
216
  componentName?: string;
215
217
  component?: AdaptedComponent;
216
- conditionals: ExperienceConditional[];
217
218
  initializeOpen?: LogicRule | LogicValue;
218
219
  actions?: ExperienceAction[];
220
+ /** Decision logic that controls whether this experience is initialised. */
219
221
  condition?: LogicRule | LogicValue;
220
222
  edges: ExperienceEdge[];
221
223
  nodes: ExperienceNode[];
222
- fields: Field[];
223
- steps: ExperienceStep[];
224
224
  targets: ExperienceTarget[];
225
225
  }
226
- export declare const setupExperience: (experience: Experience, experienceStore: ExperiencesListStore) => void;
227
226
  /**
228
227
  * Initializes an experience for each target that exists in the DOM.
228
+ *
229
229
  * @param client - The Picked client instance.
230
230
  * @param experience - The experience store to initialise.
231
231
  */
232
232
  export declare const initialiseExperience: (client: Picked, experience: ExperienceStore, options?: LaunchExperienceOptions) => void;
233
233
  /**
234
234
  * Conditionally initializes experiences.
235
+ *
235
236
  * @param client - The Picked client instance.
237
+ * @example
238
+ * ```typescript
239
+ * await initialiseExperiences(client)
240
+ * ```
236
241
  */
237
242
  export declare const initialiseExperiences: (client: Picked) => Promise<void>;
238
243
  export declare const shouldInitialiseExperience: (client: Picked, experience: ExperienceStore) => Promise<boolean>;