@picked/client 0.0.1-dev.1785305085063 → 0.0.1-dev.1785908062293

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 (291) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/api-03c5jvVk.js +38 -0
  3. package/dist/api-CQxCVIrm.cjs +1 -0
  4. package/dist/cjs/form/index.js +1 -1
  5. package/dist/cjs/index.js +2 -2
  6. package/dist/cjs/plugins/dom-observer/index.js +1 -1
  7. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  8. package/dist/cjs/server/index.js +1 -1
  9. package/dist/docs/explanation/conditions-and-the-logic-engine.md +94 -0
  10. package/dist/docs/explanation/feature-flag-allocation.md +176 -0
  11. package/dist/docs/explanation/how-picked-works.md +124 -0
  12. package/dist/docs/explanation/how-pickedql-works.md +76 -0
  13. package/dist/docs/explanation/pages-and-flows.md +64 -0
  14. package/dist/docs/explanation/the-content-model.md +77 -0
  15. package/dist/docs/explanation/the-two-apis.md +68 -0
  16. package/dist/docs/explanation/why-server-side-rendering.md +76 -0
  17. package/dist/docs/explanation/workspaces-and-versions.md +71 -0
  18. package/dist/docs/how-to/add-a-step-field-or-action.md +43 -0
  19. package/dist/docs/{pickedql/examples.md → how-to/analytics/index.md} +53 -28
  20. package/dist/docs/how-to/archive-or-delete-a-workspace.md +46 -0
  21. package/dist/docs/how-to/authenticate-with-a-magic-link.md +40 -0
  22. package/dist/docs/how-to/authenticate-with-a-password.md +51 -0
  23. package/dist/docs/how-to/authenticate-with-an-api-key.md +51 -0
  24. package/dist/docs/how-to/authenticate-with-oauth.md +40 -0
  25. package/dist/docs/how-to/build-a-flow.md +83 -0
  26. package/dist/docs/how-to/connect-the-mcp-server.md +38 -0
  27. package/dist/docs/how-to/create-a-project.md +29 -0
  28. package/dist/docs/how-to/create-an-experience.md +42 -0
  29. package/dist/docs/how-to/create-and-revoke-an-api-key.md +37 -0
  30. package/dist/docs/how-to/debug-with-the-chrome-extension.md +57 -0
  31. package/dist/docs/how-to/define-a-page-layout.md +39 -0
  32. package/dist/docs/how-to/fill-and-publish-a-page.md +50 -0
  33. package/dist/docs/how-to/install-the-gtm-template.md +84 -0
  34. package/dist/docs/how-to/install-the-sdk.md +68 -0
  35. package/dist/docs/how-to/install-the-vite-plugin.md +56 -0
  36. package/dist/docs/how-to/invite-and-remove-members.md +34 -0
  37. package/dist/docs/how-to/preview-a-workspace.md +28 -0
  38. package/dist/docs/how-to/publish-a-workspace.md +30 -0
  39. package/dist/docs/how-to/read-a-feature-flag.md +101 -0
  40. package/dist/docs/how-to/register-a-component.md +55 -0
  41. package/dist/docs/how-to/register-an-action-handler.md +67 -0
  42. package/dist/docs/how-to/render-a-step-form.md +132 -0
  43. package/dist/docs/how-to/render-an-unpublished-preview.md +41 -0
  44. package/dist/docs/how-to/reuse-a-section.md +37 -0
  45. package/dist/docs/how-to/reuse-a-step-field-or-action.md +28 -0
  46. package/dist/docs/how-to/roll-back-a-published-version.md +26 -0
  47. package/dist/docs/how-to/run-an-ab-test.md +49 -0
  48. package/dist/docs/how-to/run-code-on-a-form-submission.md +125 -0
  49. package/dist/docs/how-to/server-render-a-page.md +81 -0
  50. package/dist/docs/how-to/set-a-content-security-policy.md +32 -0
  51. package/dist/docs/how-to/set-up-mfa.md +69 -0
  52. package/dist/docs/how-to/upload-and-use-an-asset.mdx +73 -0
  53. package/dist/docs/how-to/validate-a-field.md +52 -0
  54. package/dist/docs/how-to/write-a-condition.md +45 -0
  55. package/dist/docs/how-to/write-a-predicate.md +60 -0
  56. package/dist/docs/index.md +41 -59
  57. package/dist/docs/reference/dashboard/actions.mdx +53 -0
  58. package/dist/docs/reference/dashboard/api-keys.mdx +37 -0
  59. package/dist/docs/reference/dashboard/conditions.mdx +42 -0
  60. package/dist/docs/reference/dashboard/content/asset-library.mdx +63 -0
  61. package/dist/docs/reference/dashboard/content/content-entries.mdx +44 -0
  62. package/dist/docs/reference/dashboard/content/layouts.mdx +62 -0
  63. package/dist/docs/reference/dashboard/content/pages.mdx +35 -0
  64. package/dist/docs/reference/dashboard/content/sections.mdx +28 -0
  65. package/dist/docs/reference/dashboard/experiences.mdx +51 -0
  66. package/dist/docs/reference/dashboard/features.mdx +114 -0
  67. package/dist/docs/reference/dashboard/fields.mdx +100 -0
  68. package/dist/docs/reference/dashboard/flow-builder/canvas.mdx +58 -0
  69. package/dist/docs/reference/dashboard/flow-builder/condition-builder.md +57 -0
  70. package/dist/docs/reference/dashboard/flow-builder/keyboard-shortcuts.md +72 -0
  71. package/dist/docs/reference/dashboard/flow-builder/nodes.md +63 -0
  72. package/dist/docs/reference/dashboard/projects.mdx +44 -0
  73. package/dist/docs/reference/dashboard/reports.mdx +43 -0
  74. package/dist/docs/reference/dashboard/steps.mdx +37 -0
  75. package/dist/docs/reference/dashboard/team-management.md +29 -0
  76. package/dist/docs/reference/dashboard/workspace-versioning.mdx +30 -0
  77. package/dist/docs/reference/dashboard/workspaces.mdx +76 -0
  78. package/dist/docs/{delivery-api → reference/delivery-api}/experience-content.md +17 -5
  79. package/dist/docs/reference/delivery-api/index.md +45 -0
  80. package/dist/docs/reference/delivery-api/preview-caching-crawling.md +79 -0
  81. package/dist/docs/{delivery-api → reference/delivery-api}/project-config.md +15 -6
  82. package/dist/docs/reference/glossary.md +173 -0
  83. package/dist/docs/reference/management-api/authentication.md +74 -0
  84. package/dist/docs/{api → reference/management-api}/authorization-and-scopes.md +70 -47
  85. package/dist/docs/reference/management-api/error-handling.md +233 -0
  86. package/dist/docs/{api → reference/management-api}/pagination.md +36 -20
  87. package/dist/docs/reference/pickedql/data-sources.md +174 -0
  88. package/dist/docs/reference/pickedql/dimensions.md +87 -0
  89. package/dist/docs/{pickedql → reference/pickedql}/filtering.md +17 -6
  90. package/dist/docs/reference/pickedql/index.md +18 -0
  91. package/dist/docs/reference/pickedql/schema.md +172 -0
  92. package/dist/docs/reference/pickedql/virtual-functions.md +237 -0
  93. package/dist/docs/reference/sdk/actions.md +30 -0
  94. package/dist/docs/{sdk → reference/sdk}/conditions.md +15 -5
  95. package/dist/docs/reference/sdk/content-security-policy.md +21 -0
  96. package/dist/docs/reference/sdk/experiences.md +51 -0
  97. package/dist/docs/reference/sdk/features.md +233 -0
  98. package/dist/docs/reference/sdk/fields.md +209 -0
  99. package/dist/docs/reference/sdk/index.md +68 -0
  100. package/dist/docs/{sdk → reference/sdk}/plugins/create-experience.md +25 -34
  101. package/dist/docs/reference/sdk/plugins/dynamic-experiences.md +74 -0
  102. package/dist/docs/reference/sdk/plugins/index.md +29 -0
  103. package/dist/docs/{sdk → reference/sdk}/plugins/window-object.md +6 -0
  104. package/dist/docs/reference/sdk/predicates.md +43 -0
  105. package/dist/docs/reference/sdk/ssr/index.md +33 -0
  106. package/dist/docs/reference/sdk/ssr/rendering-and-hydration.md +103 -0
  107. package/dist/docs/reference/sdk/ssr/serialize.md +77 -0
  108. package/dist/docs/reference/sdk/ssr/slots-and-placements.md +59 -0
  109. package/dist/docs/reference/sdk/steps.md +87 -0
  110. package/dist/docs/reference/tools/chrome-extension.md +16 -0
  111. package/dist/docs/reference/tools/image-optimisation-service.md +104 -0
  112. package/dist/docs/reference/tools/mcp.md +88 -0
  113. package/dist/docs/reference/tools/vite-plugin.md +88 -0
  114. package/dist/docs/tutorials/first-api-call.md +228 -0
  115. package/dist/docs/tutorials/first-experience-in-the-dashboard.mdx +143 -0
  116. package/dist/docs/tutorials/first-experience.mdx +255 -0
  117. package/dist/docs/tutorials/first-server-rendered-page.mdx +186 -0
  118. package/dist/{dom-BwmTHeT7.js → dom-BqcToNL0.js} +1 -3
  119. package/dist/{dom-CDrHc_j9.cjs → dom-DlLH3FxV.cjs} +1 -1
  120. package/dist/esm/form/index.js +2 -4
  121. package/dist/esm/index.js +225 -186
  122. package/dist/esm/plugins/dom-observer/index.js +1 -1
  123. package/dist/esm/plugins/dynamic-experiences/index.js +3 -3
  124. package/dist/esm/preview/index.js +1 -1
  125. package/dist/esm/server/index.js +33 -31
  126. package/dist/{experience-instance-DOJShRk5.js → experience-instance-DGk11d8a.js} +3 -3
  127. package/dist/experience-instance-Dej3P1sE.cjs +1 -0
  128. package/dist/plugin-CHOVsx7Z.js +287 -0
  129. package/dist/plugin-DsaGXQHx.cjs +1 -0
  130. package/dist/{preview-channel-DW9J8t4B.js → preview-channel-CSr96XAo.js} +1 -1
  131. package/dist/{protocol-DSqOlW2r.js → protocol-C5KkkiZc.js} +1 -1
  132. package/dist/types/client.d.ts +7 -6
  133. package/dist/types/data-source/api.d.ts +60 -0
  134. package/dist/types/data-source/api.d.ts.map +1 -0
  135. package/dist/types/data-source/provider.d.ts +97 -0
  136. package/dist/types/data-source/provider.d.ts.map +1 -0
  137. package/dist/types/entities/action/action.d.ts +5 -4
  138. package/dist/types/entities/action/action.d.ts.map +1 -1
  139. package/dist/types/entities/component/component.d.ts +6 -5
  140. package/dist/types/entities/component/component.d.ts.map +1 -1
  141. package/dist/types/entities/condition/condition.d.ts +5 -5
  142. package/dist/types/entities/content/content.d.ts +4 -3
  143. package/dist/types/entities/experience/experience.d.ts +11 -10
  144. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  145. package/dist/types/entities/experience-instance/experience-instance.d.ts +10 -9
  146. package/dist/types/entities/feature/feature.d.ts +19 -2
  147. package/dist/types/entities/feature/feature.d.ts.map +1 -1
  148. package/dist/types/entities/field/field.d.ts +7 -6
  149. package/dist/types/entities/framework/framework.d.ts +7 -6
  150. package/dist/types/entities/framework/framework.d.ts.map +1 -1
  151. package/dist/types/entities/history/history.d.ts +6 -6
  152. package/dist/types/entities/plugin/plugin.d.ts +3 -2
  153. package/dist/types/entities/plugin/plugin.d.ts.map +1 -1
  154. package/dist/types/entities/predicate/predicate.d.ts +4 -3
  155. package/dist/types/entities/predicate/predicate.d.ts.map +1 -1
  156. package/dist/types/entities/response/response-validation.d.ts +3 -2
  157. package/dist/types/entities/response/response.d.ts +12 -11
  158. package/dist/types/entities/session/session.d.ts +2 -1
  159. package/dist/types/entities/step/step.d.ts +6 -5
  160. package/dist/types/exports.d.ts +2 -1
  161. package/dist/types/exports.d.ts.map +1 -1
  162. package/dist/types/form/build-responses.d.ts +2 -1
  163. package/dist/types/form/create-field-evaluator.d.ts +4 -3
  164. package/dist/types/form/create-field-validation.d.ts +5 -4
  165. package/dist/types/form/create-form.d.ts +7 -6
  166. package/dist/types/form/create-submit-pipeline.d.ts +7 -6
  167. package/dist/types/form/get-step-fields.d.ts +3 -2
  168. package/dist/types/lifecycle/condition-selection.d.ts +14 -4
  169. package/dist/types/lifecycle/lifecycle.d.ts +4 -3
  170. package/dist/types/lifecycle/rules-logic.d.ts +4 -3
  171. package/dist/types/lifecycle/state-snapshot.d.ts +4 -3
  172. package/dist/types/picked.d.ts +79 -62
  173. package/dist/types/picked.d.ts.map +1 -1
  174. package/dist/types/ping.d.ts +1 -1
  175. package/dist/types/ping.d.ts.map +1 -1
  176. package/dist/types/plugins/create-experience/create-experience.d.ts +9 -8
  177. package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
  178. package/dist/types/plugins/create-experience/plugin.d.ts +3 -2
  179. package/dist/types/plugins/create-experience/plugin.d.ts.map +1 -1
  180. package/dist/types/plugins/create-experience/serialization.d.ts.map +1 -1
  181. package/dist/types/plugins/dom-observer/plugin.d.ts +1 -1
  182. package/dist/types/plugins/dynamic-experiences/hash.d.ts +40 -5
  183. package/dist/types/plugins/dynamic-experiences/hash.d.ts.map +1 -1
  184. package/dist/types/plugins/dynamic-experiences/index.d.ts +2 -0
  185. package/dist/types/plugins/dynamic-experiences/index.d.ts.map +1 -1
  186. package/dist/types/plugins/dynamic-experiences/plugin.d.ts +4 -36
  187. package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
  188. package/dist/types/plugins/dynamic-experiences/types.d.ts +42 -11
  189. package/dist/types/plugins/dynamic-experiences/types.d.ts.map +1 -1
  190. package/dist/types/plugins/experience-browser-storage/plugin.d.ts +1 -1
  191. package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -1
  192. package/dist/types/plugins/history-browser-storage/plugin.d.ts +1 -1
  193. package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
  194. package/dist/types/plugins/responses-browser-storage/plugin.d.ts +1 -1
  195. package/dist/types/plugins/responses-browser-storage/plugin.d.ts.map +1 -1
  196. package/dist/types/plugins/responses-indexeddb/plugin.d.ts +1 -1
  197. package/dist/types/plugins/single-page-app/plugin.d.ts +1 -1
  198. package/dist/types/plugins/single-page-app/plugin.d.ts.map +1 -1
  199. package/dist/types/plugins/web-components/plugin.d.ts +2 -1
  200. package/dist/types/plugins/window-object/plugin.d.ts +2 -2
  201. package/dist/types/preview-channel.d.ts +5 -1
  202. package/dist/types/preview-receiver/index.d.ts +18 -1
  203. package/dist/types/preview-receiver/protocol.d.ts +10 -1
  204. package/dist/types/server/index.d.ts +3 -3
  205. package/dist/types/server/serialize.d.ts +8 -2
  206. package/dist/types/server/serialize.d.ts.map +1 -1
  207. package/dist/types/utils/dom.d.ts +2 -1
  208. package/dist/types/utils/events.d.ts +6 -6
  209. package/dist/types/utils/events.d.ts.map +1 -1
  210. package/dist/types/utils/global-obj.d.ts +1 -1
  211. package/dist/types/utils/global-obj.d.ts.map +1 -1
  212. package/dist/types/utils/id.d.ts.map +1 -1
  213. package/dist/types/utils/logger.d.ts +2 -1
  214. package/dist/types/utils/logger.d.ts.map +1 -1
  215. package/dist/types/utils/node-tree/get-next-node-from-action.d.ts +2 -1
  216. package/dist/types/utils/node-tree/get-next-node-from-condition.d.ts +2 -1
  217. package/dist/types/utils/node-tree/get-next-node.d.ts +1 -1
  218. package/dist/types/utils/node-tree/get-next-node.d.ts.map +1 -1
  219. package/dist/types/utils/node-tree/get-origin-node.d.ts +1 -1
  220. package/dist/types/utils/node-tree/get-origin-node.d.ts.map +1 -1
  221. package/dist/types/utils/node-tree/min-max-steps-to-leaf.d.ts +1 -1
  222. package/dist/types/utils/node-tree/min-max-steps-to-leaf.d.ts.map +1 -1
  223. package/dist/types/utils/node-tree/min-max-steps-to-origin.d.ts +1 -1
  224. package/dist/types/utils/node-tree/min-max-steps-to-origin.d.ts.map +1 -1
  225. package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts +1 -1
  226. package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts.map +1 -1
  227. package/dist/types/utils/nodes.d.ts +1 -1
  228. package/dist/types/utils/picked-config.d.ts +2 -1
  229. package/dist/types/utils/rehydrate-scripts.d.ts +6 -0
  230. package/dist/types/utils/rehydrate-scripts.d.ts.map +1 -1
  231. package/dist/types/utils/rules-logic.d.ts +6 -2
  232. package/dist/types/utils/storage.d.ts +1 -1
  233. package/dist/types/utils/storage.d.ts.map +1 -1
  234. package/package.json +22 -23
  235. package/dist/api-CPL40b7A.js +0 -40
  236. package/dist/api-Dz5rgRgQ.cjs +0 -1
  237. package/dist/docs/actions.mdx +0 -78
  238. package/dist/docs/api/authentication.md +0 -376
  239. package/dist/docs/api/error-handling.md +0 -211
  240. package/dist/docs/api/index.md +0 -197
  241. package/dist/docs/api-keys.mdx +0 -40
  242. package/dist/docs/chrome-extension.md +0 -51
  243. package/dist/docs/conditions.mdx +0 -59
  244. package/dist/docs/content/asset-library.mdx +0 -93
  245. package/dist/docs/content/content-entries.mdx +0 -30
  246. package/dist/docs/content/layouts.mdx +0 -70
  247. package/dist/docs/content/pages.mdx +0 -67
  248. package/dist/docs/content/sections.mdx +0 -33
  249. package/dist/docs/delivery-api/index.md +0 -46
  250. package/dist/docs/delivery-api/preview-caching-crawling.md +0 -59
  251. package/dist/docs/experiences.mdx +0 -42
  252. package/dist/docs/features.mdx +0 -58
  253. package/dist/docs/fields.mdx +0 -79
  254. package/dist/docs/flow-builder/building-flows.md +0 -61
  255. package/dist/docs/flow-builder/condition-builder.md +0 -54
  256. package/dist/docs/flow-builder/keyboard-shortcuts.md +0 -66
  257. package/dist/docs/flow-builder/nodes.md +0 -43
  258. package/dist/docs/flow-builder/overview.mdx +0 -50
  259. package/dist/docs/gtm-template.md +0 -69
  260. package/dist/docs/guides/build-a-personalized-page.mdx +0 -143
  261. package/dist/docs/image-optimisation-service.md +0 -80
  262. package/dist/docs/mcp.md +0 -120
  263. package/dist/docs/pickedql/data-sources.md +0 -145
  264. package/dist/docs/pickedql/dimensions.md +0 -65
  265. package/dist/docs/pickedql/index.md +0 -36
  266. package/dist/docs/pickedql/schema.md +0 -156
  267. package/dist/docs/pickedql/virtual-functions.md +0 -204
  268. package/dist/docs/projects.mdx +0 -37
  269. package/dist/docs/reports.mdx +0 -18
  270. package/dist/docs/sdk/actions.md +0 -66
  271. package/dist/docs/sdk/content-security-policy.md +0 -32
  272. package/dist/docs/sdk/experiences.md +0 -46
  273. package/dist/docs/sdk/features.md +0 -212
  274. package/dist/docs/sdk/fields.md +0 -263
  275. package/dist/docs/sdk/index.md +0 -83
  276. package/dist/docs/sdk/plugins/dynamic-experiences.md +0 -58
  277. package/dist/docs/sdk/plugins/index.md +0 -9
  278. package/dist/docs/sdk/predicates.md +0 -112
  279. package/dist/docs/sdk/ssr/index.md +0 -62
  280. package/dist/docs/sdk/ssr/rendering-and-hydration.md +0 -141
  281. package/dist/docs/sdk/ssr/serialize.md +0 -86
  282. package/dist/docs/sdk/ssr/slots-and-placements.md +0 -35
  283. package/dist/docs/sdk/steps.md +0 -434
  284. package/dist/docs/steps.mdx +0 -44
  285. package/dist/docs/team-management.md +0 -40
  286. package/dist/docs/vite-plugin.md +0 -82
  287. package/dist/docs/workspace-versioning.mdx +0 -28
  288. package/dist/docs/workspaces.mdx +0 -102
  289. package/dist/experience-instance-DurC3pE-.cjs +0 -1
  290. package/dist/plugin-CFXwbXeM.js +0 -247
  291. package/dist/plugin-m4qekgtA.cjs +0 -1
package/dist/esm/index.js CHANGED
@@ -2,10 +2,10 @@ import { t as e } from "../object-BUDGxEqy.js";
2
2
  import { n as t, t as n } from "../rules-logic-HesIUCu6.js";
3
3
  import { t as r } from "../logger-DMN6TxJJ.js";
4
4
  import { a as i, c as a, d as o, f as s, i as c, l, m as u, n as d, o as f, r as p, s as m, t as h, u as g } from "../supports-CO9bJGNl.js";
5
- import { a as _, i as v, r as ee, s as y, t as b } from "../dom-BwmTHeT7.js";
6
- import { l as x, n as S, r as C, u as w } from "../experience-instance-DOJShRk5.js";
5
+ import { a as _, i as v, r as ee, s as y, t as b } from "../dom-BqcToNL0.js";
6
+ import { l as x, n as S, r as C, u as w } from "../experience-instance-DGk11d8a.js";
7
7
  import { i as T, n as E, r as D, t as O } from "../storage-1MW3-_As.js";
8
- import { n as te, r as ne } from "../api-CPL40b7A.js";
8
+ import { n as te, r as ne } from "../api-03c5jvVk.js";
9
9
  import { t as re } from "../id-Bo4RBeOs.js";
10
10
  import { n as ie, r as ae, t as oe } from "../inert-script-report-B_bMPRzp.js";
11
11
  import { attach as k, combine as A, createApi as j, createDomain as M, createEffect as N, createEvent as P, createStore as F, sample as I } from "effector";
@@ -38,18 +38,18 @@ var z = M("experience"), se = L(({ client: e, experience: r }) => {
38
38
  n ? e.experienceInstances.spawn(u, t, n) : e.experienceInstances.spawn(u, t);
39
39
  });
40
40
  }
41
- }), f = k({
42
- source: A({
43
- preconditionPassed: e.preconditionPassedStore,
44
- isUser: e.session.store.map((e) => e.isUser, { skipVoid: !1 }),
45
- config: o
46
- }),
41
+ }), f = A({
42
+ preconditionPassed: e.preconditionPassedStore,
43
+ isUser: e.session.store.map((e) => e.isUser, { skipVoid: !1 }),
44
+ config: o
45
+ }), p = k({
46
+ source: f,
47
47
  effect: async ({ preconditionPassed: i, isUser: a, config: o }) => {
48
48
  if (!i || !a) return !1;
49
49
  let { decisionLogic: s, targetSelectors: c } = o;
50
- return c.length === 0 || v(c, r.id).length < 1 ? !1 : s === void 0 ? !0 : t(s) ? await n(e, s) === !0 : !0;
50
+ return c.length === 0 || v(c, r.id).length < 1 ? !1 : s === void 0 || !t(s) || await n(e, s) === !0;
51
51
  }
52
- }), p = N(async () => {
52
+ }), m = N(async () => {
53
53
  if (!e.contentLoader) return !0;
54
54
  try {
55
55
  await e.contentLoader({
@@ -60,28 +60,28 @@ var z = M("experience"), se = L(({ client: e, experience: r }) => {
60
60
  `${r.id}`;
61
61
  }
62
62
  return !0;
63
- }), m = P(), h = P(), g = z.createStore(void 0, { skipVoid: !1 }).on(m, (e, t) => t).on(h, (e, t) => t);
63
+ }), h = P(), g = P(), _ = z.createStore(void 0, { skipVoid: !1 }).on(h, (e, t) => t).on(g, (e, t) => t);
64
64
  return I({
65
- clock: m,
66
- target: f
65
+ clock: h,
66
+ target: p
67
67
  }), I({
68
- clock: f.doneData,
69
- source: g,
68
+ clock: p.doneData,
69
+ source: _,
70
70
  filter: (e, t) => t,
71
71
  fn: (e) => e,
72
72
  target: d
73
73
  }), I({
74
- clock: f.doneData,
74
+ clock: p.doneData,
75
75
  filter: Boolean,
76
- target: p
76
+ target: m
77
77
  }), I({
78
- clock: h,
79
- source: g,
78
+ clock: g,
79
+ source: _,
80
80
  fn: (e) => e,
81
81
  target: d
82
82
  }), I({
83
- clock: h,
84
- target: p
83
+ clock: g,
84
+ target: m
85
85
  }), u = {
86
86
  id: r.id,
87
87
  key: r.key,
@@ -92,10 +92,10 @@ var z = M("experience"), se = L(({ client: e, experience: r }) => {
92
92
  actions: l,
93
93
  merge: a.merge,
94
94
  initialiseFx: d,
95
- shouldInitialiseFx: f,
96
- initialiseRequested: m,
97
- initialiseDirectly: h,
98
- prepareExperienceContentFx: p
95
+ shouldInitialiseFx: p,
96
+ initialiseRequested: h,
97
+ initialiseDirectly: g,
98
+ prepareExperienceContentFx: m
99
99
  }, u;
100
100
  });
101
101
  function ce(e) {
@@ -169,7 +169,7 @@ var le = L(({ client: e }) => {
169
169
  for (let e of i) e.open();
170
170
  return;
171
171
  }
172
- await c("key" in n ? {
172
+ let a = "key" in n ? {
173
173
  key: n.key,
174
174
  options: {
175
175
  ...n.options,
@@ -181,7 +181,8 @@ var le = L(({ client: e }) => {
181
181
  ...n.options,
182
182
  initialiseOpen: !0
183
183
  }
184
- });
184
+ };
185
+ await c(a);
185
186
  }
186
187
  }),
187
188
  listStore: a,
@@ -324,70 +325,70 @@ function V(e) {
324
325
  function H(e) {
325
326
  return Array.isArray(e);
326
327
  }
327
- function Ee(e) {
328
+ function U(e) {
328
329
  return e instanceof Promise;
329
330
  }
330
- function De(e) {
331
+ function Ee(e) {
331
332
  return typeof e == "object" && !!e && !Array.isArray(e) && Object.keys(e).length === 1;
332
333
  }
333
- function U(e) {
334
+ function W(e) {
334
335
  if (Te(e)) return e;
335
336
  let t = parseFloat(`${e}`);
336
337
  return isNaN(t) ? 0 : t;
337
338
  }
338
- function W(e) {
339
+ function G(e) {
339
340
  return `${e}`;
340
341
  }
341
- var Oe = {
342
+ var De = {
342
343
  "==": (e, t) => e == t,
343
344
  "===": (e, t) => e === t,
344
345
  "!=": (e, t) => e != t,
345
346
  "!==": (e, t) => e !== t,
346
- ">": (e, t) => U(e) > U(t),
347
- ">=": (e, t) => U(e) >= U(t),
347
+ ">": (e, t) => W(e) > W(t),
348
+ ">=": (e, t) => W(e) >= W(t),
348
349
  "<": (e, t, n) => {
349
- let r = U(e), i = U(t);
350
+ let r = W(e), i = W(t);
350
351
  if (n === void 0) return r < i;
351
- let a = U(n);
352
+ let a = W(n);
352
353
  return r < i && i < a;
353
354
  },
354
355
  "<=": (e, t, n) => {
355
- let r = U(e), i = U(t);
356
+ let r = W(e), i = W(t);
356
357
  if (n === void 0) return r <= i;
357
- let a = U(n);
358
+ let a = W(n);
358
359
  return r <= i && i <= a;
359
360
  },
360
- "!!": async (e) => await K(e),
361
- "!": async (e) => !await K(e),
362
- "%": (e, t) => U(e) % U(t),
361
+ "!!": async (e) => await q(e),
362
+ "!": async (e) => !await q(e),
363
+ "%": (e, t) => W(e) % W(t),
363
364
  log: (e) => (console.log(e), e),
364
- in: (e, t) => t ? V(t) ? t.indexOf(W(e)) !== -1 : H(t) ? t.includes(e) : !1 : !1,
365
- cat: (...e) => e.map(W).join(""),
365
+ in: (e, t) => t ? V(t) ? t.indexOf(G(e)) !== -1 : H(t) ? t.includes(e) : !1 : !1,
366
+ cat: (...e) => e.map(G).join(""),
366
367
  substr: (e, t, n) => {
367
- let r = W(e), i = U(t);
368
+ let r = G(e), i = W(t);
368
369
  if (n === void 0) return r.substr(i);
369
- let a = U(n);
370
+ let a = W(n);
370
371
  if (a < 0) {
371
372
  let e = r.substr(i);
372
373
  return e.substr(0, e.length + a);
373
374
  }
374
375
  return r.substr(i, a);
375
376
  },
376
- "+": (...e) => e.reduce((e, t) => U(e) + U(t), 0),
377
- "*": (...e) => e.reduce((e, t) => U(e) * U(t), 1),
377
+ "+": (...e) => e.reduce((e, t) => W(e) + W(t), 0),
378
+ "*": (...e) => e.reduce((e, t) => W(e) * W(t), 1),
378
379
  "-": (e, t) => {
379
- let n = U(e);
380
- return t === void 0 ? -n : n - U(t);
380
+ let n = W(e);
381
+ return t === void 0 ? -n : n - W(t);
381
382
  },
382
- "/": (e, t) => U(e) / U(t),
383
- min: (...e) => Math.min(...e.map(U)),
384
- max: (...e) => Math.max(...e.map(U)),
383
+ "/": (e, t) => W(e) / W(t),
384
+ min: (...e) => Math.min(...e.map(W)),
385
+ max: (...e) => Math.max(...e.map(W)),
385
386
  merge: (...e) => e.reduce((e, t) => H(t) ? e.concat(t) : e.concat([t]), []),
386
387
  var(e, t) {
387
388
  let n = arguments.length > 1 ? t : null;
388
389
  if (e === "" || e === "." || e == null) return this;
389
390
  if (typeof e == "number" && Array.isArray(this)) return e >= 0 && e < this.length ? this[e] : n;
390
- let r = W(e);
391
+ let r = G(e);
391
392
  if (r === "" || r === ".") return this;
392
393
  let i = r.split("."), a = this;
393
394
  for (let e of i) {
@@ -402,16 +403,16 @@ var Oe = {
402
403
  async missing(...e) {
403
404
  let t = H(e[0]) ? e[0] : e, n = [];
404
405
  for (let e of t) {
405
- let t = await G({ var: e }, this);
406
+ let t = await K({ var: e }, this);
406
407
  (t === null || t === "") && n.push(`${e}`);
407
408
  }
408
409
  return n;
409
410
  },
410
411
  async missing_some(e, t) {
411
- let n = await G({ missing: t }, this);
412
+ let n = await K({ missing: t }, this);
412
413
  if (!H(n) || !H(t)) return [];
413
414
  let r = n.filter(V);
414
- return t.filter(V).length - r.length >= U(e) ? [] : r;
415
+ return t.filter(V).length - r.length >= W(e) ? [] : r;
415
416
  },
416
417
  invoke(...e) {
417
418
  let [t, ...n] = e;
@@ -425,101 +426,101 @@ var Oe = {
425
426
  let [t, i] = e;
426
427
  n = t, r = i;
427
428
  }
428
- return !V(n) || !V(r) ? !1 : new RegExp(n, r).test(W(t));
429
+ return !V(n) || !V(r) ? !1 : new RegExp(n, r).test(G(t));
429
430
  },
430
431
  throw(e) {
431
- throw Error(W(e));
432
+ throw Error(G(e));
432
433
  }
433
434
  };
434
- async function G(e, t) {
435
+ async function K(e, t) {
435
436
  if (!e) return e;
436
- if (Ee(e)) return G(await e, t);
437
- if (H(e)) return Promise.all(e.map((e) => G(e, t)));
438
- if (!De(e)) return e;
439
- let n = ke(e), r = n ? e[n] ?? [] : [];
437
+ if (U(e)) return K(await e, t);
438
+ if (H(e)) return Promise.all(e.map((e) => K(e, t)));
439
+ if (!Ee(e)) return e;
440
+ let n = Oe(e), r = n ? e[n] ?? [] : [];
440
441
  switch (H(r) || (r = [r]), n) {
441
442
  case "if":
442
443
  case "?:":
443
- for (let e = 0; e < r.length - 1; e += 2) if (await K(await G(r[e], t))) return G(r[e + 1], t);
444
- return r.length % 2 == 1 ? G(r[r.length - 1], t) : null;
444
+ for (let e = 0; e < r.length - 1; e += 2) if (await q(await K(r[e], t))) return K(r[e + 1], t);
445
+ return r.length % 2 == 1 ? K(r[r.length - 1], t) : null;
445
446
  case "and": {
446
447
  let e = null;
447
- for (let n of r) if (e = await G(n, t), !await K(e)) return e;
448
+ for (let n of r) if (e = await K(n, t), !await q(e)) return e;
448
449
  return e;
449
450
  }
450
451
  case "or": {
451
452
  let e = null;
452
- for (let n of r) if (e = await G(n, t), await K(e)) return e;
453
+ for (let n of r) if (e = await K(n, t), await q(e)) return e;
453
454
  return e;
454
455
  }
455
456
  case "map": {
456
- let e = await G(r[0], t);
457
- return H(e) ? await Promise.all(e.map((e) => G(r[1], e))) : [];
457
+ let e = await K(r[0], t);
458
+ return H(e) ? await Promise.all(e.map((e) => K(r[1], e))) : [];
458
459
  }
459
460
  case "filter": {
460
- let e = await G(r[0], t);
461
+ let e = await K(r[0], t);
461
462
  return H(e) ? (await Promise.all(e.map(async (e) => ({
462
463
  item: e,
463
- shouldInclude: await K(await G(r[1], e))
464
+ shouldInclude: await q(await K(r[1], e))
464
465
  })))).filter(({ shouldInclude: e }) => e).map(({ item: e }) => e) : [];
465
466
  }
466
467
  case "reduce": {
467
- let e = await G(r[0], t);
468
- if (!H(e)) return r.length > 2 ? await G(r[2], t) : null;
469
- let n = r[1], i = r.length > 2 ? await G(r[2], t) : null;
470
- for (let t of e) i = await G(n, {
468
+ let e = await K(r[0], t);
469
+ if (!H(e)) return r.length > 2 ? await K(r[2], t) : null;
470
+ let n = r[1], i = r.length > 2 ? await K(r[2], t) : null;
471
+ for (let t of e) i = await K(n, {
471
472
  current: t,
472
473
  accumulator: i
473
474
  });
474
475
  return i;
475
476
  }
476
477
  case "all": {
477
- let e = await G(r[0], t);
478
+ let e = await K(r[0], t);
478
479
  if (!H(e) || e.length === 0) return !1;
479
- for (let t of e) if (!await K(await G(r[1], t))) return !1;
480
+ for (let t of e) if (!await q(await K(r[1], t))) return !1;
480
481
  return !0;
481
482
  }
482
483
  case "some": {
483
- let e = await G(r[0], t);
484
+ let e = await K(r[0], t);
484
485
  if (!H(e)) return !1;
485
- for (let t of e) if (await K(await G(r[1], t))) return !0;
486
+ for (let t of e) if (await q(await K(r[1], t))) return !0;
486
487
  return !1;
487
488
  }
488
489
  case "none": {
489
- let e = await G(r[0], t);
490
+ let e = await K(r[0], t);
490
491
  if (!H(e)) return !0;
491
- for (let t of e) if (await K(await G(r[1], t))) return !1;
492
+ for (let t of e) if (await q(await K(r[1], t))) return !1;
492
493
  return !0;
493
494
  }
494
495
  case "catch": try {
495
- return await G(r[0], t);
496
+ return await K(r[0], t);
496
497
  } catch (e) {
497
- return De(e) ? await G(e, t) : r[1] ? await G(r[1], e) : e instanceof Error ? e.message : e;
498
+ return Ee(e) ? await K(e, t) : r[1] ? await K(r[1], e) : e instanceof Error ? e.message : e;
498
499
  }
499
500
  }
500
- let i = await Promise.all(r.map((e) => G(e, t))), a = n ? Oe[n] : void 0;
501
+ let i = await Promise.all(r.map((e) => K(e, t))), a = n ? De[n] : void 0;
501
502
  if (!a) throw Error(`Unrecognized operation ${n}`);
502
503
  return a.apply(t, i);
503
504
  }
504
- async function K(e) {
505
- return Ee(e) ? K(await e) : !(Array.isArray(e) && e.length === 0) && !!e;
505
+ async function q(e) {
506
+ return U(e) ? q(await e) : !(Array.isArray(e) && e.length === 0) && !!e;
506
507
  }
507
- function ke(e) {
508
+ function Oe(e) {
508
509
  return Object.keys(e)[0];
509
510
  }
510
511
  //#endregion
511
512
  //#region src/lifecycle/rules-logic.ts
512
- function Ae(e, t, n) {
513
+ function ke(e, t, n) {
513
514
  return new Proxy(Object.create(null), { get(r, i) {
514
515
  if (typeof i != "string") return;
515
516
  let a = e.find((e) => e.key === i);
516
- if (a !== void 0) return async () => n.has(i) ? !1 : await G(a.logic, {
517
+ if (a !== void 0) return async () => !n.has(i) && await K(a.logic, {
517
518
  ...t,
518
- conditions: Ae(e, t, new Set(n).add(i))
519
+ conditions: ke(e, t, new Set(n).add(i))
519
520
  }) === !0;
520
521
  } });
521
522
  }
522
- var je = L(({ client: e }) => k({
523
+ var Ae = L(({ client: e }) => k({
523
524
  source: {
524
525
  stateSnapshot: e.stateSnapshotStore,
525
526
  predicates: e.predicates.listStore,
@@ -556,21 +557,21 @@ var je = L(({ client: e }) => k({
556
557
  features: u,
557
558
  ...s
558
559
  };
559
- return await G(o, {
560
+ return await K(o, {
560
561
  ...d,
561
- conditions: Ae(a, d, /* @__PURE__ */ new Set())
562
+ conditions: ke(a, d, /* @__PURE__ */ new Set())
562
563
  });
563
564
  }
564
565
  }));
565
- function Me(e) {
566
- return R(je, e);
566
+ function je(e) {
567
+ return R(Ae, e);
567
568
  }
568
569
  //#endregion
569
570
  //#region src/ping.ts
570
- var Ne = 6e3, Pe = O("last_ping", "global"), Fe = async (e) => {
571
+ var Me = 6e3, Ne = O("last_ping", "global"), Pe = async (e) => {
571
572
  try {
572
- let t = Date.now(), n = E.get(Pe), r = 0;
573
- if (n.isSet() && (r = n.json() ?? 0), r && t - r < Ne) return !0;
573
+ let t = Date.now(), n = E.get(Ne), r = 0;
574
+ if (n.isSet() && (r = n.json() ?? 0), r && t - r < Me) return !0;
574
575
  let i = {
575
576
  projectId: e.projectId,
576
577
  path: window.location.pathname
@@ -581,23 +582,23 @@ var Ne = 6e3, Pe = O("last_ping", "global"), Fe = async (e) => {
581
582
  } catch {
582
583
  return !1;
583
584
  }
584
- }, q = M("lifecycle"), Ie = L(({ client: e }) => {
585
- let t = q.store(!1), r = F(void 0, {
585
+ }, J = M("lifecycle"), Fe = L(({ client: e }) => {
586
+ let t = J.store(!1), r = F(void 0, {
586
587
  skipVoid: !1,
587
- domain: q
588
+ domain: J
588
589
  }), i = F(void 0, {
589
590
  skipVoid: !1,
590
- domain: q
591
- }), a = q.store("idle"), o = q.store([]), s = F(void 0, {
591
+ domain: J
592
+ }), a = J.store("idle"), o = J.store([]), s = F(void 0, {
592
593
  skipVoid: !1,
593
- domain: q
594
+ domain: J
594
595
  }), l = F(void 0, {
595
596
  skipVoid: !1,
596
- domain: q
597
+ domain: J
597
598
  }), u = P(), d = P(), f = P(), p = P(), m = P(), h = P();
598
599
  o.on(p, (e, t) => [...e, t]), s.on(m, (e, t) => t), l.on(h, (e, t) => t), t.on(d, () => !0);
599
600
  let g = N(() => {
600
- Fe(e);
601
+ Pe(e);
601
602
  }), _ = N(async () => {
602
603
  await ee();
603
604
  }), v = N(async () => {
@@ -670,19 +671,23 @@ var Ne = 6e3, Pe = O("last_ping", "global"), Fe = async (e) => {
670
671
  target: e.eventBus
671
672
  });
672
673
  let w = F(!1).on(_.done, () => !0), T = F(!1).on(f, () => !0), E = F(!1).on(y.done, () => !0), D = A(r, i, (e, t) => e === !0 && t === !0);
673
- return I({
674
+ I({
674
675
  clock: f,
675
676
  source: D,
676
677
  filter: (e) => e,
677
678
  fn: () => void 0,
678
679
  target: v
679
- }), I({
680
- clock: A(w, T, D, (e, t, n) => e && t && n),
680
+ });
681
+ let O = A(w, T, D, (e, t, n) => e && t && n);
682
+ I({
683
+ clock: O,
681
684
  filter: (e) => e,
682
685
  fn: () => void 0,
683
686
  target: y
684
- }), I({
685
- clock: A(w, T, D, E, (e, t, n, r) => e && t && (!n || r)),
687
+ });
688
+ let te = A(w, T, D, E, (e, t, n, r) => e && t && (!n || r));
689
+ return I({
690
+ clock: te,
686
691
  filter: (e) => e,
687
692
  fn: () => void 0,
688
693
  target: d
@@ -726,13 +731,13 @@ var Ne = 6e3, Pe = O("last_ping", "global"), Fe = async (e) => {
726
731
  setCondition: h
727
732
  };
728
733
  });
729
- function Le(e) {
730
- return R(Ie, e);
734
+ function Ie(e) {
735
+ return R(Fe, e);
731
736
  }
732
737
  //#endregion
733
738
  //#region src/entities/predicate/predicate.ts
734
- var Re = M("predicate"), ze = L(({ client: e }) => {
735
- let t = Re.store({}), n = j(t, { register(e, t) {
739
+ var Le = M("predicate"), Re = L(({ client: e }) => {
740
+ let t = Le.store({}), n = j(t, { register(e, t) {
736
741
  return {
737
742
  ...e,
738
743
  [t.name]: {
@@ -790,16 +795,23 @@ var Re = M("predicate"), ze = L(({ client: e }) => {
790
795
  getEvokablePredicate: s
791
796
  };
792
797
  });
793
- function Be(e) {
794
- return R(ze, e);
798
+ function ze(e) {
799
+ return R(Re, e);
795
800
  }
796
- var Ve = (e, t, n) => {
801
+ var Be = (e, t, n) => {
797
802
  n.register({
798
803
  name: e,
799
804
  predicate: t
800
805
  });
801
- }, He = M("feature"), Ue = L(({ client: e }) => {
802
- let t = He.store({}), n = He.store([]), i = j(t, { register(e, t) {
806
+ }, Ve = M("feature");
807
+ function Y(e) {
808
+ return e?.enabled === !1;
809
+ }
810
+ function He(e) {
811
+ return e === "true" || e !== "false" && e;
812
+ }
813
+ var Ue = L(({ client: e }) => {
814
+ let t = Ve.store({}), n = Ve.store([]), i = j(t, { register(e, t) {
803
815
  return {
804
816
  ...e,
805
817
  [t.id]: t.feature
@@ -824,14 +836,15 @@ var Ve = (e, t, n) => {
824
836
  }),
825
837
  target: i.register
826
838
  });
827
- let o = N(async ({ id: e, key: t, storage: n = "local" }) => {
828
- let r = O(`feature:${e}:${t}`, "global"), i = (n === "session" ? D : E).get(r).boolean();
829
- return i === null ? null : {
839
+ let o = N(async ({ id: e, key: t, storage: n = "local", enabled: r }) => {
840
+ if (r === !1) return null;
841
+ let i = O(`feature:${e}:${t}`, "global"), a = (n === "session" ? D : E).get(i).text();
842
+ return a ? {
830
843
  id: e,
831
844
  key: t,
832
- bucket: i,
845
+ bucket: He(a),
833
846
  storage: n
834
- };
847
+ } : null;
835
848
  }), s = N((e) => {
836
849
  if (!e) return null;
837
850
  let t = O(`feature:${e.id}:${e.key}`, "global");
@@ -846,6 +859,12 @@ var Ve = (e, t, n) => {
846
859
  if (a) return a;
847
860
  let o = e[n];
848
861
  if (!o) throw Error(`Feature with id '${n}' not found`);
862
+ if (Y(o.feature)) return {
863
+ id: o.id,
864
+ bucket: !1,
865
+ key: i,
866
+ storage: o.feature.storage
867
+ };
849
868
  let s = c.get(`${n}:${i}`);
850
869
  if (s !== void 0) {
851
870
  let e = await s;
@@ -874,13 +893,15 @@ var Ve = (e, t, n) => {
874
893
  return {
875
894
  id: t,
876
895
  key: n.feature.key,
877
- storage: n.feature.storage
896
+ storage: n.feature.storage,
897
+ enabled: n.feature.enabled
878
898
  };
879
899
  },
880
900
  target: o
881
901
  }), I({
882
902
  source: t,
883
903
  clock: l.doneData,
904
+ filter: (e, t) => !Y(e[t.id]?.feature),
884
905
  fn: (e, t) => {
885
906
  let { id: n, bucket: r, storage: i } = t, a = e[n]?.feature.key;
886
907
  return a ? {
@@ -920,8 +941,11 @@ var Ve = (e, t, n) => {
920
941
  }));
921
942
  I({
922
943
  clock: l.doneData,
923
- source: { resolvedFeatures: n },
924
- filter: ({ resolvedFeatures: e }, { id: t, key: n }) => !e.some((e) => e.id === t && e.key === n),
944
+ source: {
945
+ resolvedFeatures: n,
946
+ allFeatures: t
947
+ },
948
+ filter: ({ resolvedFeatures: e, allFeatures: t }, { id: n, key: r }) => !Y(t[n]?.feature) && !e.some((e) => e.id === n && e.key === r),
925
949
  fn: (e, t) => t,
926
950
  target: e.eventBus.prepend((e) => ({
927
951
  type: "feature_decide",
@@ -929,8 +953,11 @@ var Ve = (e, t, n) => {
929
953
  }))
930
954
  }), I({
931
955
  clock: [o.doneData, l.doneData],
932
- source: n,
933
- fn: (e, t) => !t || e.some((e) => e.id === t.id && e.key === t.key) ? e : [...e, t],
956
+ source: {
957
+ resolvedFeatures: n,
958
+ allFeatures: t
959
+ },
960
+ fn: ({ resolvedFeatures: e, allFeatures: t }, n) => !n || Y(t[n.id]?.feature) || e.some((e) => e.id === n.id && e.key === n.key) ? e : [...e, n],
934
961
  target: n
935
962
  });
936
963
  function d(e) {
@@ -972,7 +999,7 @@ var Ge = (e, t, n) => {
972
999
  id: e,
973
1000
  feature: t
974
1001
  });
975
- }, J = M("history");
1002
+ }, X = M("history");
976
1003
  function Ke(e, t) {
977
1004
  return {
978
1005
  id: re(`history-entry-${Date.now()}-${Math.random()}}`),
@@ -982,7 +1009,7 @@ function Ke(e, t) {
982
1009
  };
983
1010
  }
984
1011
  var qe = L(() => {
985
- let e = J.store({ entries: [] }), t = J.event(), n = J.event(), r = J.event(), i = J.event();
1012
+ let e = X.store({ entries: [] }), t = X.event(), n = X.event(), r = X.event(), i = X.event();
986
1013
  e.on(t, (e, t) => ({ entries: [...e.entries, Ke(t.experienceId, t.node)] })), e.on(n, (e, t) => ({ entries: [...e.entries.slice(0, -1), Ke(t.experienceId, t.node)] })), e.on(i, (e, t) => t);
987
1014
  function a(e, t) {
988
1015
  let n = {
@@ -1232,7 +1259,7 @@ var dt = (e, t, n) => {
1232
1259
  };
1233
1260
  //#endregion
1234
1261
  //#region src/entities/response/response-validation.ts
1235
- function Y(e, t, n, r) {
1262
+ function Z(e, t, n, r) {
1236
1263
  return {
1237
1264
  fieldKey: e.key,
1238
1265
  userMessage: n,
@@ -1240,7 +1267,7 @@ function Y(e, t, n, r) {
1240
1267
  value: t
1241
1268
  };
1242
1269
  }
1243
- function X(e) {
1270
+ function Q(e) {
1244
1271
  return e === null || e === "" || Array.isArray(e) && !e.length;
1245
1272
  }
1246
1273
  function ft(e) {
@@ -1260,37 +1287,37 @@ function ht(e, t) {
1260
1287
  return e.multiple && (typeof t == "string" || typeof t == "number" || typeof t == "boolean") ? [t] : t;
1261
1288
  }
1262
1289
  function gt(e, t) {
1263
- if (e.type !== "object" || X(t)) return null;
1290
+ if (e.type !== "object" || Q(t)) return null;
1264
1291
  if (e.multiple) {
1265
- if (!Array.isArray(t)) return Y(e, t, "This field expects multiple values", "Field expects an array of objects.");
1292
+ if (!Array.isArray(t)) return Z(e, t, "This field expects multiple values", "Field expects an array of objects.");
1266
1293
  for (let n of t) {
1267
- if (typeof n != "object" || !n) return Y(e, t, "This field expects object values", "Field expects an array of objects, but received non-object value.");
1268
- if (!pt(n)) return Y(e, t, "This field contains non-serializable data", "Field value contains non-JSON-serializable data (functions, circular references, etc.).");
1294
+ if (typeof n != "object" || !n) return Z(e, t, "This field expects object values", "Field expects an array of objects, but received non-object value.");
1295
+ if (!pt(n)) return Z(e, t, "This field contains non-serializable data", "Field value contains non-JSON-serializable data (functions, circular references, etc.).");
1269
1296
  }
1270
1297
  return null;
1271
1298
  }
1272
- return Array.isArray(t) ? Y(e, t, "This field expects a single value", "Field expects a single object, not an array.") : typeof t != "object" || !t ? Y(e, t, "This field expects an object value", "Field expects an object value.") : pt(t) ? null : Y(e, t, "This field contains non-serializable data", "Field value contains non-JSON-serializable data (functions, circular references, etc.).");
1299
+ return Array.isArray(t) ? Z(e, t, "This field expects a single value", "Field expects a single object, not an array.") : typeof t != "object" || !t ? Z(e, t, "This field expects an object value", "Field expects an object value.") : pt(t) ? null : Z(e, t, "This field contains non-serializable data", "Field value contains non-JSON-serializable data (functions, circular references, etc.).");
1273
1300
  }
1274
1301
  function _t(e, t) {
1275
- if (X(t) || !Array.isArray(e.options) || e.options.length === 0) return null;
1302
+ if (Q(t) || !Array.isArray(e.options) || e.options.length === 0) return null;
1276
1303
  let n = Array.isArray(t) ? t : [t];
1277
1304
  if (e.type === "object") {
1278
1305
  let r = new Set(e.options.map((e) => JSON.stringify(e.value)));
1279
- return n.every((e) => r.has(JSON.stringify(e))) ? null : Y(e, t, "This field expects a valid option", "Field expects a valid option from the defined choices.");
1306
+ return n.every((e) => r.has(JSON.stringify(e))) ? null : Z(e, t, "This field expects a valid option", "Field expects a valid option from the defined choices.");
1280
1307
  }
1281
1308
  let r = e.options.map((e) => e.value);
1282
- return n.every((e) => !ft(e) || e === null ? !1 : r.includes(e)) ? null : Y(e, t, "This field expects a valid option", `Field expects a valid option. Valid options are: ${r.join(", ")}`);
1309
+ return n.every((e) => !ft(e) || e === null ? !1 : r.includes(e)) ? null : Z(e, t, "This field expects a valid option", `Field expects a valid option. Valid options are: ${r.join(", ")}`);
1283
1310
  }
1284
1311
  async function vt(t, n, r, i) {
1285
- if (n.validation && !e(n.validation) && !X(r)) {
1312
+ if (n.validation && !e(n.validation) && !Q(r)) {
1286
1313
  let e = i ? {
1287
1314
  $input: r,
1288
1315
  responses: i
1289
1316
  } : { $input: r }, a = await t(n.validation, e);
1290
- if (typeof a == "string") return Y(n, r, a, `Field validation resulted in an error: ${a}.`);
1291
- if (a === !1) return Y(n, r, "This field is invalid", "Field validation resulted in an unspecified error.");
1317
+ if (typeof a == "string") return Z(n, r, a, `Field validation resulted in an error: ${a}.`);
1318
+ if (a === !1) return Z(n, r, "This field is invalid", "Field validation resulted in an unspecified error.");
1292
1319
  }
1293
- return n.required && X(r) ? Y(n, r, "This field is required", "Field is required.") : !n.multiple && Array.isArray(r) && r.length > 1 ? Y(n, r, "This field expects a single response", "Field expects a single response.") : null;
1320
+ return n.required && Q(r) ? Z(n, r, "This field is required", "Field is required.") : !n.multiple && Array.isArray(r) && r.length > 1 ? Z(n, r, "This field expects a single response", "Field expects a single response.") : null;
1294
1321
  }
1295
1322
  //#endregion
1296
1323
  //#region src/entities/response/response.ts
@@ -1538,17 +1565,17 @@ var At = L(() => {
1538
1565
  let i = { id: e.id };
1539
1566
  return e.isUser !== void 0 && (i.isUser = e.isUser), Object.keys(r).length > 0 && (i.identifiers = r), i;
1540
1567
  }
1568
+ }), i = k({
1569
+ source: n,
1570
+ effect: (e) => {
1571
+ if (m()) try {
1572
+ E.get(Dt).set(e);
1573
+ } catch {}
1574
+ }
1541
1575
  });
1542
1576
  return I({
1543
1577
  source: n,
1544
- target: k({
1545
- source: n,
1546
- effect: (e) => {
1547
- if (m()) try {
1548
- E.get(Dt).set(e);
1549
- } catch {}
1550
- }
1551
- })
1578
+ target: i
1552
1579
  }), {
1553
1580
  store: n,
1554
1581
  setIsUser: r.setIsUser,
@@ -1582,13 +1609,13 @@ function Ft(e) {
1582
1609
  }
1583
1610
  //#endregion
1584
1611
  //#region src/utils/render-string.ts
1585
- function Z(e) {
1612
+ function $(e) {
1586
1613
  return e == null || e === "" || Number.isNaN(e);
1587
1614
  }
1588
1615
  var It = {
1589
- default: (e, t) => Z(e) ? String(t ?? "") : String(e),
1590
- append: (e, t) => t && !Z(e) ? `${e} ${t}` : e,
1591
- prepend: (e, t) => t && !Z(e) ? `${t} ${e}` : e,
1616
+ default: (e, t) => $(e) ? String(t ?? "") : String(e),
1617
+ append: (e, t) => t && !$(e) ? `${e} ${t}` : e,
1618
+ prepend: (e, t) => t && !$(e) ? `${t} ${e}` : e,
1592
1619
  upper: (e) => typeof e == "string" ? e.toUpperCase() : e,
1593
1620
  lower: (e) => typeof e == "string" ? e.toLowerCase() : e,
1594
1621
  capitalize: (e) => typeof e == "string" ? e.charAt(0).toUpperCase() + e.slice(1) : e,
@@ -1621,7 +1648,7 @@ function zt(e, t) {
1621
1648
  let [t, ...n] = e.split(":"), i = t?.trim() ?? "", a = n.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g, ""), o = It[i];
1622
1649
  o && (r = o(r, a));
1623
1650
  }
1624
- return Z(r) ? "" : typeof r == "object" ? JSON.stringify(r) : String(r);
1651
+ return $(r) ? "" : typeof r == "object" ? JSON.stringify(r) : String(r);
1625
1652
  }
1626
1653
  function Bt(e, t) {
1627
1654
  let n = "", r = 0;
@@ -1641,16 +1668,18 @@ function Bt(e, t) {
1641
1668
  }
1642
1669
  //#endregion
1643
1670
  //#region src/utils/preview-session.ts
1644
- var Q = "preview-token";
1645
- function Vt() {
1646
- return !s() || !h() ? !1 : !!Et()[Q]?.[0];
1671
+ var Vt = "preview-token";
1672
+ function Ht() {
1673
+ return !s() || !h() ? !1 : !!Et()[Vt]?.[0];
1647
1674
  }
1648
1675
  //#endregion
1649
1676
  //#region src/picked.ts
1650
- var Ht = class {
1677
+ var Ut = class {
1651
1678
  static logger = r;
1652
1679
  options;
1653
1680
  dataSource = null;
1681
+ seededVersionId = null;
1682
+ versionSkew = null;
1654
1683
  contentLoader;
1655
1684
  previewEmbedderOrigins = null;
1656
1685
  plugins = {};
@@ -1667,7 +1696,7 @@ var Ht = class {
1667
1696
  experienceInstances = S({ client: this });
1668
1697
  experiences = ue({ client: this });
1669
1698
  frameworks = xe({ client: this });
1670
- predicates = Be({ client: this });
1699
+ predicates = ze({ client: this });
1671
1700
  features = We({ client: this });
1672
1701
  conditions = wt();
1673
1702
  fields = $e();
@@ -1677,13 +1706,13 @@ var Ht = class {
1677
1706
  actions = ut({ client: this });
1678
1707
  conditionResults = C();
1679
1708
  stateSnapshotStore = we({ client: this });
1680
- evaluateRuleLogicFx = Me({ client: this });
1709
+ evaluateRuleLogicFx = je({ client: this });
1681
1710
  start;
1682
1711
  readyStore;
1683
1712
  preconditionPassedStore;
1684
1713
  conditionPassedStore;
1685
1714
  lifecycleStageStore;
1686
- lifecycle = Le({ client: this });
1715
+ lifecycle = Ie({ client: this });
1687
1716
  renderStringFx = k({
1688
1717
  source: this.responses.listStore,
1689
1718
  effect: (e, { template: t, context: n }) => {
@@ -1702,7 +1731,7 @@ var Ht = class {
1702
1731
  }), this.maybeStartPreviewChannel();
1703
1732
  }
1704
1733
  maybeStartPreviewChannel() {
1705
- Vt() && import("../preview-channel-DW9J8t4B.js").then((e) => e.initPreviewChannel(this)).catch(() => void 0);
1734
+ Ht() && import("../preview-channel-CSr96XAo.js").then((e) => e.initPreviewChannel(this)).catch(() => void 0);
1706
1735
  }
1707
1736
  registerFramework = (e) => {
1708
1737
  Se(e, this.frameworks);
@@ -1719,7 +1748,7 @@ var Ht = class {
1719
1748
  Ge(e, t, this.features);
1720
1749
  };
1721
1750
  registerPredicate = (e, t) => {
1722
- Ve(e, t, this.predicates);
1751
+ Be(e, t, this.predicates);
1723
1752
  };
1724
1753
  registerCondition = (e) => {
1725
1754
  this.conditions.register(e);
@@ -1785,8 +1814,8 @@ var Ht = class {
1785
1814
  try {
1786
1815
  let [t, n] = e.split(":");
1787
1816
  if (!t || !n) return;
1788
- let r = n;
1789
- r === "true" && (r = !0), r === "false" && (r = !1), this.registerFeature(t, {
1817
+ let r = He(n);
1818
+ this.registerFeature(t, {
1790
1819
  key: `${r}`,
1791
1820
  name: t,
1792
1821
  decide: () => r,
@@ -1822,11 +1851,19 @@ var Ht = class {
1822
1851
  });
1823
1852
  }
1824
1853
  getPluginConfig = (e) => this.plugins[e] ?? {};
1825
- }, Ut = "application/picked-javascript", Wt = "application/picked-module", Gt = "data-picked-hydrated";
1826
- async function $(e) {
1854
+ }, Wt = "application/picked-javascript", Gt = "application/picked-module", Kt = "data-picked-hydrated";
1855
+ async function qt(e) {
1827
1856
  if (!("document" in globalThis)) return;
1828
1857
  let t = "application/picked-module", n = "data-picked-hydrated";
1829
- function r(e, t) {
1858
+ function r(e) {
1859
+ try {
1860
+ Function(e.textContent);
1861
+ } catch (t) {
1862
+ return t instanceof SyntaxError && (console.error("[picked] Skipped a rehydrated inline script that failed to parse.", t), e.setAttribute(n, ""), !0);
1863
+ }
1864
+ return !1;
1865
+ }
1866
+ function i(e, t) {
1830
1867
  let r = document.createElement("script");
1831
1868
  for (let t of Array.from(e.attributes)) t.name !== "type" && r.setAttribute(t.name, t.value);
1832
1869
  t && r.setAttribute("type", t), r.setAttribute(n, ""), e.src ? r.async = !1 : r.textContent = e.textContent;
@@ -1835,37 +1872,39 @@ async function $(e) {
1835
1872
  }) : null;
1836
1873
  return e.src ? e.replaceWith(r) : (globalThis.__pickedEmbedScriptRoot = e.getRootNode(), e.replaceWith(r), globalThis.__pickedEmbedScriptRoot = null), i;
1837
1874
  }
1838
- let i = Array.from(e.querySelectorAll(`script[type="application/picked-javascript"]:not([${n}]), script[type="${t}"]:not([${n}])`)).filter((e) => e instanceof HTMLScriptElement);
1839
- for (let e of i) {
1875
+ let a = Array.from(e.querySelectorAll(`script[type="application/picked-javascript"]:not([${n}]), script[type="${t}"]:not([${n}])`)).filter((e) => e instanceof HTMLScriptElement);
1876
+ for (let e of a) {
1840
1877
  if (!e.isConnected) continue;
1841
- let n = r(e, e.getAttribute("type") === t ? "module" : null);
1842
- n && await n;
1878
+ let n = e.getAttribute("type") === t ? "module" : null;
1879
+ if (!e.src && n === null && r(e)) continue;
1880
+ let a = i(e, n);
1881
+ a && await a;
1843
1882
  }
1844
1883
  }
1845
- function Kt() {
1846
- return `<script>(${$.toString()})(document)<\/script>`;
1884
+ function Jt() {
1885
+ return `<script>(${qt.toString()})(document)<\/script>`;
1847
1886
  }
1848
1887
  //#endregion
1849
1888
  //#region src/utils/html-asset-value.ts
1850
- function qt(e) {
1889
+ function Yt(e) {
1851
1890
  return typeof e == "object" && !!e && "id" in e && typeof e.id == "string" && "content" in e && (typeof e.content == "string" || e.content === null);
1852
1891
  }
1853
1892
  //#endregion
1854
1893
  //#region src/entities/component/lazyComponent.ts
1855
- function Jt(e) {
1894
+ function Xt(e) {
1856
1895
  return {
1857
1896
  $$type: "lazy-component",
1858
1897
  load: e
1859
1898
  };
1860
1899
  }
1861
- function Yt(e) {
1900
+ function Zt(e) {
1862
1901
  return typeof e == "object" && !!e && "$$type" in e && e.$$type === "lazy-component";
1863
1902
  }
1864
1903
  //#endregion
1865
1904
  //#region src/exports.ts
1866
- var Xt = (e) => {
1867
- let t = new Ht(e);
1905
+ var Qt = (e) => {
1906
+ let t = new Ut(e);
1868
1907
  return u(t), t;
1869
1908
  };
1870
1909
  //#endregion
1871
- export { Gt as PICKED_HYDRATED_ATTR, Wt as PICKED_MODULE_SCRIPT_TYPE, Ut as PICKED_SCRIPT_TYPE, Q as PREVIEW_TOKEN_PARAM, Ht as Picked, Kt as buildRehydrateBootstrap, Xt as createClient, fe as createPluginEffect, O as createStorageKey, n as evaluateRuleLogic, Mt as getPickedConfig, qt as isHtmlAssetValue, h as isInsideIframe, Yt as isLazyLoader, _ as isPickedRoot, Vt as isPreviewSession, Jt as lazyComponent, E as localStore, oe as onInertScriptSubtrees, $ as rehydrateScripts, ie as reportInertScriptSubtrees, ae as resetInertScriptReport, D as sessionStore, T as subscribe, d as supportsCookies, p as supportsCryptoRandomUUID, c as supportsDocument, i as supportsHistory, f as supportsIntersectionObserver, m as supportsLocalStorage, a as supportsLocation, l as supportsSessionStorage, g as supportsShadowRoot, o as supportsWebComponents, s as supportsWindow };
1910
+ export { Kt as PICKED_HYDRATED_ATTR, Gt as PICKED_MODULE_SCRIPT_TYPE, Wt as PICKED_SCRIPT_TYPE, Vt as PREVIEW_TOKEN_PARAM, Ut as Picked, Jt as buildRehydrateBootstrap, Qt as createClient, fe as createPluginEffect, O as createStorageKey, n as evaluateRuleLogic, Mt as getPickedConfig, Yt as isHtmlAssetValue, h as isInsideIframe, Zt as isLazyLoader, _ as isPickedRoot, Ht as isPreviewSession, Xt as lazyComponent, E as localStore, oe as onInertScriptSubtrees, qt as rehydrateScripts, ie as reportInertScriptSubtrees, ae as resetInertScriptReport, D as sessionStore, T as subscribe, d as supportsCookies, p as supportsCryptoRandomUUID, c as supportsDocument, i as supportsHistory, f as supportsIntersectionObserver, m as supportsLocalStorage, a as supportsLocation, l as supportsSessionStorage, g as supportsShadowRoot, o as supportsWebComponents, s as supportsWindow };