@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.
- package/dist/{api-BEXzPJHZ.cjs → api-B-wGEgt8.cjs} +1 -1
- package/dist/{api-oudcFuUX.js → api-DwERBrAZ.js} +1 -1
- package/dist/cjs/form/index.js +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/create-experience/index.js +1 -1
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/plugins/responses-browser-storage/index.js +1 -1
- package/dist/cjs/plugins/web-components/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/esm/form/index.js +128 -84
- package/dist/esm/index.js +393 -334
- package/dist/esm/plugins/create-experience/index.js +183 -151
- package/dist/esm/plugins/dynamic-experiences/index.js +52 -30
- package/dist/esm/plugins/responses-browser-storage/index.js +47 -20
- package/dist/esm/plugins/web-components/index.js +1 -1
- package/dist/esm/server/index.js +1 -1
- package/dist/{experience-instance-DZiAwXph.js → experience-instance-CwwrKUI8.js} +50 -46
- package/dist/experience-instance-DdFUcVRd.cjs +1 -0
- package/dist/{rules-logic-B7vJrWyO.js → rules-logic-BIkBWZmf.js} +4 -2
- package/dist/rules-logic-DDxCiq4P.cjs +1 -0
- package/dist/types/entities/condition/condition.d.ts +17 -0
- package/dist/types/entities/condition/condition.d.ts.map +1 -0
- package/dist/types/entities/experience/experience.d.ts +40 -35
- package/dist/types/entities/experience/experience.d.ts.map +1 -1
- package/dist/types/entities/experience-instance/experience-instance.d.ts +21 -2
- package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
- package/dist/types/entities/field/field.d.ts +13 -2
- package/dist/types/entities/field/field.d.ts.map +1 -1
- package/dist/types/entities/response/response-validation.d.ts +76 -0
- package/dist/types/entities/response/response-validation.d.ts.map +1 -0
- package/dist/types/entities/response/response.d.ts +24 -17
- package/dist/types/entities/response/response.d.ts.map +1 -1
- package/dist/types/entities/step/step.d.ts +36 -0
- package/dist/types/entities/step/step.d.ts.map +1 -0
- package/dist/types/form/build-responses.d.ts +12 -9
- package/dist/types/form/build-responses.d.ts.map +1 -1
- package/dist/types/form/create-field-evaluator.d.ts +11 -3
- package/dist/types/form/create-field-evaluator.d.ts.map +1 -1
- package/dist/types/form/create-field-validation.d.ts +21 -6
- package/dist/types/form/create-field-validation.d.ts.map +1 -1
- package/dist/types/form/create-form.d.ts +42 -11
- package/dist/types/form/create-form.d.ts.map +1 -1
- package/dist/types/form/create-submit-pipeline.d.ts +21 -9
- package/dist/types/form/create-submit-pipeline.d.ts.map +1 -1
- package/dist/types/form/get-step-fields.d.ts +13 -0
- package/dist/types/form/get-step-fields.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/logic-engine.d.ts +10 -2
- package/dist/types/logic-engine.d.ts.map +1 -1
- package/dist/types/picked.d.ts +68 -32
- package/dist/types/picked.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/create-experience.d.ts +51 -29
- package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/index.d.ts +2 -2
- package/dist/types/plugins/create-experience/index.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/plugin.d.ts.map +1 -1
- package/dist/types/plugins/create-experience/serialization.d.ts +1 -0
- package/dist/types/plugins/create-experience/serialization.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/plugin.d.ts +21 -4
- package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/types.d.ts +41 -0
- package/dist/types/plugins/dynamic-experiences/types.d.ts.map +1 -1
- package/dist/types/plugins/responses-browser-storage/plugin.d.ts.map +1 -1
- package/dist/types/utils/events.d.ts +1 -1
- package/dist/types/utils/events.d.ts.map +1 -1
- package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts +3 -0
- package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts.map +1 -0
- package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts +10 -6
- package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts.map +1 -1
- package/dist/types/utils/nodes.d.ts +74 -2
- package/dist/types/utils/nodes.d.ts.map +1 -1
- package/dist/types/utils/rules-logic.d.ts +31 -0
- package/dist/types/utils/rules-logic.d.ts.map +1 -1
- package/package.json +32 -6
- package/dist/experience-instance-Ddk4Jktn.cjs +0 -1
- package/dist/rules-logic-CXr4wXcG.cjs +0 -1
- package/dist/types/utils/node-tree/get-next-node-from-conditional.d.ts +0 -3
- 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")
|
|
5
|
-
|
|
6
|
-
return
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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: (
|
|
12
|
-
let
|
|
13
|
-
let e =
|
|
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
|
-
|
|
16
|
-
|
|
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:
|
|
19
|
-
fields:
|
|
24
|
+
responses: l.responses.getAllStore,
|
|
25
|
+
fields: l.fields.listStore
|
|
20
26
|
},
|
|
21
27
|
effect: ({ responses: e, fields: t }) => {
|
|
22
|
-
|
|
23
|
-
|
|
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:
|
|
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 {
|
|
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({
|
|
12
|
+
n.isReady && e && n.experiences.launch({ key: e });
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
window.customElements.define(r, i);
|
package/dist/esm/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "../../experience-instance-
|
|
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-
|
|
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 === "
|
|
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
|
|
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 ?
|
|
109
|
-
})),
|
|
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] =
|
|
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
|
-
},
|
|
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] =
|
|
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
|
-
},
|
|
136
|
-
if (!e) return
|
|
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-
|
|
142
|
-
async function
|
|
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
|
|
149
|
-
let p = u(), m = u(), h = u(), g = u(), _ = u(), v = u(), y = r.componentStore, b =
|
|
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 ?
|
|
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
|
-
}),
|
|
165
|
+
}), L = l(async () => {
|
|
160
166
|
n.history.back({ experienceId: r.id });
|
|
161
|
-
}),
|
|
167
|
+
}), z = a({
|
|
162
168
|
source: r.treeStore,
|
|
163
169
|
effect: async (e, t) => {
|
|
164
|
-
let i = e.nodes.find((e) => j(e) && e
|
|
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
|
-
}),
|
|
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 }) =>
|
|
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
|
|
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,
|
|
189
|
+
effect: async ({ nodes: e, edges: r, conditions: i }, a) => {
|
|
184
190
|
if (!A(a)) return;
|
|
185
|
-
let o = i.find((e) => e.id ===
|
|
186
|
-
|
|
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
|
-
}),
|
|
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 }]) =>
|
|
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 }]) =>
|
|
232
|
-
}),
|
|
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:
|
|
283
|
-
launchExperience:
|
|
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:
|
|
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:
|
|
334
|
+
target: L
|
|
331
335
|
}), d({
|
|
332
336
|
clock: g,
|
|
333
|
-
target:
|
|
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:
|
|
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
|
|
388
|
-
return m(
|
|
391
|
+
function G(e) {
|
|
392
|
+
return m(W, e);
|
|
389
393
|
}
|
|
390
|
-
var
|
|
391
|
-
let 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 }) =>
|
|
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
|
|
478
|
-
return m(
|
|
481
|
+
function q(e) {
|
|
482
|
+
return m(K, e);
|
|
479
483
|
}
|
|
480
484
|
//#endregion
|
|
481
|
-
export {
|
|
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
|
-
|
|
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
|
|
61
|
-
get: (
|
|
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
|
-
|
|
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(
|
|
88
|
-
getById: (
|
|
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
|
-
|
|
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
|
|
119
|
+
/** Effector effect that launches an experience by its key. */
|
|
115
120
|
launch: import('effector').Effect<{
|
|
116
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
187
|
+
name?: string;
|
|
188
|
+
/** @deprecated Use `name` instead. Populated for backwards compatibility. */
|
|
189
|
+
label?: string;
|
|
184
190
|
}
|
|
185
|
-
export interface
|
|
186
|
-
type: '
|
|
187
|
-
|
|
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>;
|