@picked/client 0.0.1-dev.1773371977114 → 0.0.1-dev.1773719715758

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 (86) hide show
  1. package/dist/{api-CLwLE-DW.js → api-2fO41mZd.js} +1 -1
  2. package/dist/{api-Cn-rv5A5.cjs → api-CvcUdfN8.cjs} +1 -1
  3. package/dist/cjs/index.js +2 -2
  4. package/dist/cjs/plugins/create-experience/index.js +1 -1
  5. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  6. package/dist/cjs/plugins/experience-browser-storage/index.js +1 -1
  7. package/dist/cjs/plugins/history-browser-storage/index.js +1 -1
  8. package/dist/cjs/plugins/responses-browser-storage/index.js +1 -1
  9. package/dist/cjs/plugins/responses-indexeddb/index.js +1 -1
  10. package/dist/cjs/plugins/single-page-app/index.js +1 -1
  11. package/dist/cjs/server/index.js +1 -1
  12. package/dist/esm/index.js +712 -627
  13. package/dist/esm/plugins/create-experience/index.js +238 -279
  14. package/dist/esm/plugins/dynamic-experiences/index.js +12 -12
  15. package/dist/esm/plugins/experience-browser-storage/index.js +1 -1
  16. package/dist/esm/plugins/history-browser-storage/index.js +1 -1
  17. package/dist/esm/plugins/responses-browser-storage/index.js +17 -18
  18. package/dist/esm/plugins/responses-indexeddb/index.js +51 -46
  19. package/dist/esm/plugins/single-page-app/index.js +24 -24
  20. package/dist/esm/server/index.js +1 -1
  21. package/dist/experience-instance-BX0aqKsC.cjs +1 -0
  22. package/dist/{experience-instance-fvSEb72i.js → experience-instance-DTyL1fNb.js} +205 -199
  23. package/dist/{object-JwZ58NOH.js → object-CJssU1Pm.js} +1 -1
  24. package/dist/object-mwaxtjLG.cjs +1 -0
  25. package/dist/storage-58NoTSsc.cjs +1 -0
  26. package/dist/{storage-Co_LbKr_.js → storage-B2d81EOI.js} +35 -30
  27. package/dist/types/entities/action/action.d.ts +5 -2
  28. package/dist/types/entities/action/action.d.ts.map +1 -1
  29. package/dist/types/entities/experience/experience.d.ts +2 -3
  30. package/dist/types/entities/experience/experience.d.ts.map +1 -1
  31. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  32. package/dist/types/entities/feature/feature.d.ts.map +1 -1
  33. package/dist/types/entities/field/field.d.ts +52 -36
  34. package/dist/types/entities/field/field.d.ts.map +1 -1
  35. package/dist/types/entities/history/history.d.ts.map +1 -1
  36. package/dist/types/entities/project/project.d.ts.map +1 -1
  37. package/dist/types/entities/response/response.d.ts +6 -10
  38. package/dist/types/entities/response/response.d.ts.map +1 -1
  39. package/dist/types/index.d.ts +1 -0
  40. package/dist/types/index.d.ts.map +1 -1
  41. package/dist/types/logic-engine.d.ts +2 -8
  42. package/dist/types/logic-engine.d.ts.map +1 -1
  43. package/dist/types/picked.d.ts +18 -14
  44. package/dist/types/picked.d.ts.map +1 -1
  45. package/dist/types/plugins/create-experience/create-experience.d.ts +26 -36
  46. package/dist/types/plugins/create-experience/create-experience.d.ts.map +1 -1
  47. package/dist/types/plugins/dynamic-experiences/types.d.ts +1 -3
  48. package/dist/types/plugins/dynamic-experiences/types.d.ts.map +1 -1
  49. package/dist/types/plugins/experience-browser-storage/plugin.d.ts +2 -1
  50. package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -1
  51. package/dist/types/plugins/history-browser-storage/plugin.d.ts +2 -1
  52. package/dist/types/plugins/history-browser-storage/plugin.d.ts.map +1 -1
  53. package/dist/types/plugins/responses-browser-storage/plugin.d.ts +2 -1
  54. package/dist/types/plugins/responses-browser-storage/plugin.d.ts.map +1 -1
  55. package/dist/types/plugins/responses-indexeddb/plugin.d.ts.map +1 -1
  56. package/dist/types/plugins/single-page-app/plugin.d.ts +1 -1
  57. package/dist/types/plugins/single-page-app/plugin.d.ts.map +1 -1
  58. package/dist/types/utils/dom.d.ts +0 -3
  59. package/dist/types/utils/dom.d.ts.map +1 -1
  60. package/dist/types/utils/events.d.ts +1 -1
  61. package/dist/types/utils/events.d.ts.map +1 -1
  62. package/dist/types/utils/get-step-fields.d.ts +2 -1
  63. package/dist/types/utils/get-step-fields.d.ts.map +1 -1
  64. package/dist/types/utils/global-obj.d.ts +0 -1
  65. package/dist/types/utils/global-obj.d.ts.map +1 -1
  66. package/dist/types/utils/indexed-db.d.ts +2 -1
  67. package/dist/types/utils/indexed-db.d.ts.map +1 -1
  68. package/dist/types/utils/logger.d.ts.map +1 -1
  69. package/dist/types/utils/node-tree/min-max-steps-to-leaf.d.ts.map +1 -1
  70. package/dist/types/utils/node-tree/min-max-steps-to-origin.d.ts.map +1 -1
  71. package/dist/types/utils/node-tree/next-reachable-step-nodes.d.ts.map +1 -1
  72. package/dist/types/utils/object.d.ts +0 -8
  73. package/dist/types/utils/object.d.ts.map +1 -1
  74. package/dist/types/utils/picked-config.d.ts +1 -1
  75. package/dist/types/utils/picked-config.d.ts.map +1 -1
  76. package/dist/types/utils/rules-logic.d.ts.map +1 -1
  77. package/dist/types/utils/search-params.d.ts.map +1 -1
  78. package/dist/types/utils/storage.d.ts.map +1 -1
  79. package/package.json +7 -13
  80. package/dist/experience-instance-BsXG5XJ4.cjs +0 -1
  81. package/dist/object-BbFTsGh3.cjs +0 -1
  82. package/dist/storage-Be5xWNPC.cjs +0 -1
  83. package/dist/to-kebab-case-BPnCZjhB.js +0 -6
  84. package/dist/to-kebab-case-BsOQ8CON.cjs +0 -1
  85. package/dist/types/utils/to-kebab-case.d.ts +0 -9
  86. package/dist/types/utils/to-kebab-case.d.ts.map +0 -1
@@ -5,7 +5,7 @@ function u(n, t) {
5
5
  [a]: t
6
6
  };
7
7
  }
8
- const d = () => "0.0.1-dev.1773371977114", E = "v1";
8
+ const d = () => "0.0.1-dev.1773719715758", E = "v1";
9
9
  function s(n, t) {
10
10
  return new URL(`/api/${E}/${t}`, n).toString();
11
11
  }
@@ -1 +1 @@
1
- "use strict";const a="Picked-Client",d="Picked-Version";function s(e,t){return{[a]:e,[d]:t}}const o=()=>"0.0.1-dev.1773371977114",E="v1";function c(e,t){return new URL(`/api/${E}/${t}`,e).toString()}function i(e){return{...s("sdk",o()),...e}}async function f(e,t,n){const r=c(e,t);return fetch(r,{headers:i(n)})}async function l(e,t,n,r){const u=c(e,t);return fetch(u,{method:"POST",headers:{"Content-Type":"application/json",...i(r)},body:JSON.stringify(n)})}exports.createClientHeaders=s;exports.get=f;exports.getVersion=o;exports.post=l;
1
+ "use strict";const a="Picked-Client",d="Picked-Version";function s(e,t){return{[a]:e,[d]:t}}const o=()=>"0.0.1-dev.1773719715758",E="v1";function c(e,t){return new URL(`/api/${E}/${t}`,e).toString()}function i(e){return{...s("sdk",o()),...e}}async function f(e,t,n){const r=c(e,t);return fetch(r,{headers:i(n)})}async function l(e,t,n,r){const u=c(e,t);return fetch(u,{method:"POST",headers:{"Content-Type":"application/json",...i(r)},body:JSON.stringify(n)})}exports.createClientHeaders=s;exports.get=f;exports.getVersion=o;exports.post=l;
package/dist/cjs/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("effector"),S=require("@withease/factories"),I=require("../experience-instance-BsXG5XJ4.cjs"),E=require("../logger-BsmHUUw1.cjs"),b=require("../storage-Be5xWNPC.cjs"),L=require("../api-Cn-rv5A5.cjs"),H=require("../id-BKIWbSTy.cjs"),G=require("../object-BbFTsGh3.cjs"),v=require("../supports-YvpQZxbh.cjs"),V=g.createDomain("experience"),W=S.createFactory(({client:t,experience:e})=>{const r=V.store(e),s=g.createApi(r,{merge(c,m){return{...c,...m.experience}}}),n=r.map(c=>({name:c.name,decisionLogic:c.condition,targetSelectors:c.targets,initializeOpenLogic:e.initializeOpen})),f=t.components.listStore.map(c=>(e.componentName?c.find(m=>m.name===e.componentName):void 0)||c.find(m=>m.name===`experience:${e.id}`)||c.find(m=>m.name==="experience"),{skipVoid:!1}),i=r.map(c=>({steps:c.steps,nodes:c.nodes,edges:c.edges,conditionals:c.conditionals})),a=r.map(c=>c.fields),o=e.actions??[];return{id:e.id,configStore:n,treeStore:i,fieldsStore:a,componentStore:f,actions:o,merge:s.merge}});function J(t){return S.invoke(W,t)}const Y=S.createFactory(({client:t})=>{const e=V.store({}),r=g.createApi(e,{register(o,c){return{...o,[c.id]:c}}});function s(o){const c=e.getState()[o.id];if(c){c.merge({experience:o,strategy:"override"});return}const m=J({client:t,experience:o});r.register(m)}const n=e.map(o=>Object.values(o));function f(o){return e.map(c=>c[o],{skipVoid:!1})}const i=g.attach({source:e,effect:async(o,{id:c,options:m})=>{const k=o[c];if(!k){E.logger("warn",`Experience with id '${c}' not found.`);return}if(m?.bypassCondition){B(t,k,m);return}await N(t,k)&&B(t,k,m)}}),a=g.attach({source:t.experienceInstances.listStore,effect:(o,{id:c,options:m})=>{const k=o.filter(x=>x.experienceId===c);if(k.length>0)for(const x of k)x.open();else i({id:c,options:{...m,initialiseOpen:!0}})}});return{register:s,get:f,getById:f,launch:i,open:a,listStore:n}});function Q(t){return S.invoke(Y,t)}const X=(t,e)=>{e.register(t)},B=(t,e,r)=>{const{targetSelectors:s}=e.configStore.getState(),n=I.getTargetElements(s,e.id);n.forEach(({elements:i})=>i.forEach(a=>I.tagTargetElement(a,e.id))),I.createAppHosts(n,e.id).forEach(i=>{r?t.experienceInstances.spawn(e,i,r):t.experienceInstances.spawn(e,i)})},z=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await N(t,e)&&B(t,e)}))},N=async(t,e)=>{if(!t.preconditionPassed||!t.session?.isUser)return!1;const{decisionLogic:r,targetSelectors:s}=e.configStore.getState();return I.getTargetElements(s,e.id).length<1||s.length===0?!1:r===void 0?!0:I.isRulesLogic(r)?await I.evaluateRuleLogic(t,r)===!0:!0},Z=(t,e,r)=>{const s=e.name,n=e.setup(t);if(n){const f=r[s]??{};r[s]=Object.freeze({...f,...n})}},ee=g.createDomain("component"),te=S.createFactory(({client:t,component:e,name:r})=>{const s=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:s}});function re(t){return S.invoke(te,t)}const se=S.createFactory(({client:t})=>{const e=ee.store({}),r=g.createApi(e,{register(i,a){return{...i,[a.name]:a}}});function s(i,a){e.getState()[i]&&E.logger("warn",`Component '${i}' already registered. Registering again will override the previous registration.`);const c=re({client:t,name:i,component:a});r.register(c)}const n=e.map(i=>Object.values(i));function f(i){return e.map(a=>a[i],{skipVoid:!1})}return{register:s,getByName:f,listStore:n}});function ne(t){return S.invoke(se,t)}const D=(t,e,r)=>{r.register(t,e)},ie=g.createDomain("framework"),oe=S.createFactory(({client:t})=>{const e=ie.store({}),r=g.createApi(e,{register(i,a){return{...i,[a.name]:a.framework}}});function s(i,a){e.getState()[i]&&E.logger("warn",`Framework '${i}' already registered. Registering again will override the previous registration.`),r.register({name:i,framework:a})}const n=e.map(i=>Object.values(i));function f(i){return e.map(a=>a[i],{skipVoid:!1})}return{register:s,getByName:f,listStore:n}});function ae(t){return S.invoke(oe,t)}const ce=(t,e)=>{e.register(t.name,t)},ue=6e3,le=b.createStorageKey("last_ping","global"),de=async t=>{try{const e=Date.now(),r=b.localStore.get(le);let s=0;if(r.isSet()&&(s=r.json()??0),s&&e-s<ue)return!0;const n={projectId:t.projectId,path:window.location.pathname},f={},a=document.getElementById("picked_script")?.dataset.verceltoken;a&&(f["x-vercel-protection-bypass"]=a);const c=(await L.post(t.apiUrl,"ping",n,f)).ok;return c&&r.set(e),c}catch(e){return E.logger("error",e),!1}};function T(t){const e=typeof window<"u",r={client:t,responses:t.responses.listStore.getState(),fields:t.fields.listStore.getState(),location:e?window.location:void 0,document:e?window.document:void 0,sessionStorage:e?window.sessionStorage:void 0,localStorage:e?window.localStorage:void 0};return Object.freeze(r)}const pe=g.createDomain("predicate"),fe=S.createFactory(({client:t})=>{const e=pe.store({}),r=g.createApi(e,{register(a,o){return{...a,[o.name]:{name:o.name,predicate:o.predicate}}}});function s(a,o){e.getState()[a]&&E.logger("warn",`Predicate '${a}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:a,predicate:o}))}const n=e.map(a=>Object.values(a));function f(a){return e.map(o=>o[a]?.predicate,{skipVoid:!1})}function i(a){const o=g.createStore(()=>{},{skipVoid:!1}),c=g.createEffect(async()=>{const m=f(a).getState();if(!m)return;const k=T(t);return(...x)=>m({...k,args:x})});return g.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:c}),g.sample({clock:c.doneData,filter:m=>m!==void 0,target:o}),c(),o}return{register:s,getByName:f,listStore:n,getEvokablePredicate:i}});function ge(t){return S.invoke(fe,t)}const me=(t,e,r)=>{r.register(t,e)},O=g.createDomain("feature"),ye=S.createFactory(({client:t})=>{const e=O.store({}),r=O.store([]),s=g.createApi(e,{register(l,d){return{...l,[d.id]:d.feature}}});function n(l,d){e.getState()[l]&&E.logger("warn",`Feature '${l}' already registered. Registering again will override the previous registration.`);const y={id:l,feature:{...d,id:l}};s.register(Object.freeze({id:l,feature:y}))}const f=g.createEffect(async({id:l,key:d,storage:u="local"})=>{const y=b.createStorageKey(`feature:${l}:${d}`,"global"),h=(u==="session"?b.sessionStore:b.localStore).get(y).boolean();return h===null?null:{id:l,key:d,bucket:h,storage:u}}),i=g.createEffect(l=>{if(!l)return null;const d=b.createStorageKey(`feature:${l.id}:${l.key}`,"global");(l.storage==="session"?b.sessionStore:b.localStore).set(d,l.bucket)}),a=new Map,o=g.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:l,resolvedFeaturesStore:d},{id:u,decide:y,key:p})=>{const h=d.find(R=>R.id===u&&R.key===p);if(h)return h;const w=l[u];if(!w)throw new Error(`Feature with id '${u}' not found`);const j=a.get(`${u}:${p}`);if(j!==void 0){const R=await j;return{id:w.id,bucket:R,key:p,storage:w.feature.storage}}const P=y();a.set(`${u}:${p}`,P);const F=await P;return{id:w.id,bucket:F,key:p,storage:w.feature.storage}}});g.sample({clock:s.register,fn:l=>{const{id:d,feature:u}=l;return{id:d,key:u.feature.key,storage:u.feature.storage}},target:f}),g.sample({source:e,clock:o.doneData,fn:(l,d)=>{const{id:u,bucket:y,storage:p}=d,h=l[u]?.feature.key;return h?{key:h,id:u,bucket:y,storage:p}:null},target:i});const c=g.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:l,resolvedFeaturesStore:d})=>Object.values(l).map(u=>{const y=d.find(p=>p.id===u.id&&p.key===u.feature.key);return y?{id:u.id,name:u.feature.name,key:u.feature.key,getBucket:()=>({id:u.id,bucket:y.bucket}),isResolved:!0}:{id:u.id,name:u.feature.name,key:u.feature.key,getBucket:async()=>await o(u.feature),isResolved:!1}}));g.sample({clock:o.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:l},{id:d,key:u})=>!l.some(p=>p.id===d&&p.key===u),fn:(l,d)=>d,target:t.eventBus.prepend(l=>({type:"feature_decide",feature:l}))}),g.sample({clock:[f.doneData,o.doneData],source:r,fn:(l,d)=>!d||l.some(y=>y.id===d.id&&y.key===d.key)?l:[...l,d],target:r});function m(l){return c.map(d=>d.find(u=>u.id===l))}function k(l){return e.map(d=>d[l],{skipVoid:!1})}function x(l){const d=g.createStore(async()=>{},{skipVoid:!1}),u=g.createEffect(async()=>{const y=m(l).getState();if(y)return async()=>(await y.getBucket()).bucket});return g.sample({source:r,filter:y=>y.some(p=>p.id===l),target:u}),g.sample({clock:u.doneData,filter:y=>y!==void 0,target:d}),u(),d}return{register:n,getById:m,getByName:k,listStore:c,getEvokableFeature:x}});function he(t){return S.invoke(ye,t)}const Se=(t,e,r)=>{r.register(t,e)},A=g.createDomain("history");function M(t,e){return{id:H.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const ve=S.createFactory(()=>{const t=A.store({entries:[]}),e=A.event(),r=A.event(),s=A.event(),n=A.event();t.on(e,(i,a)=>({entries:[...i.entries,M(a.experienceId,a.node)]})),t.on(r,(i,a)=>({entries:[...i.entries.slice(0,-1),M(a.experienceId,a.node)]})),t.on(n,(i,a)=>a);function f(i,a){const o={lastStepIndex:-1,secondLastStepIndex:-1};for(let c=i.length-1;c>=0;c--){const m=i[c],k=m?.node;if(!(!k||!I.isStepNode(k))&&!(a&&m?.experienceId!==a))if(o.lastStepIndex===-1)o.lastStepIndex=c;else{o.secondLastStepIndex=c;break}}return o}return t.on(s,(i,a)=>{const{secondLastStepIndex:o}=f(i.entries,a.experienceId),c=o!==-1?i.entries.slice(0,o+1):i.entries;return{...i,entries:c}}),{push:e,replace:r,back:s,restore:n,entriesStore:t.map(i=>i.entries)}});function ke(){return S.invoke(ve)}let we=0;const be=t=>{const e=g.createStore([]);return g.sample({clock:t,source:e,fn:(r,s)=>[...r,{id:we++,at:new Date,payload:s}],target:e}),e},Ie=g.createDomain("field"),Fe=S.createFactory(()=>{const t=Ie.store({}),e=g.createApi(t,{register(o,c){return{...o,[c.resolvedKey]:{...c.field,key:c.resolvedKey}}}});function r(o){e.register({field:o,resolvedKey:o.key})}function s(o,c){const m=f(o).getState();if(!m)return;const k=Object.assign({},m,{...c});e.register({field:{...k},resolvedKey:o})}const n=t.map(o=>Object.values(o));function f(o){return t.map(c=>c[o]||null)}function i(o){return t.map(c=>Object.values(c).find(m=>m.id===o)||null)}function a(o){return t.map(c=>Object.values(c).find(m=>m.name===o)||null)}return{register:r,update:s,getByKey:f,getById:i,listStore:n,getByName:a}});function Ee(){return S.invoke(Fe)}const xe=(t,e)=>{e.register(t)},je=g.createDomain("action"),Ae=S.createFactory(()=>{const t=je.store({}),e=g.createApi(t,{register(i,a){return{...i,[a.name]:{name:a.name,action:a.action}}}});function r(i,a){e.register({name:i,action:a})}const s=t.map(i=>Object.values(i));function n(i){return t.map(a=>a[i],{skipVoid:!1})}function f(i){return t.map(a=>{const o=a[i];return o?o.action:void 0},{skipVoid:!1})}return{register:r,getByName:n,listStore:s,getEvokableAction:f}});function Pe(){return S.invoke(Ae)}const Re=(t,e,r)=>{r.register(t,e)};function $(t){return typeof t>"u"||t===null||t===""||Array.isArray(t)&&!t.length}function Ce(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null}function U(t){try{return JSON.stringify(t),!0}catch{return!1}}const $e=g.createDomain("response"),Be=S.createFactory(({client:t})=>{const e=$e.store({}),r=g.createEvent(),s=g.createEvent(),n=g.createApi(e,{register(l,d){return{...l,[d.fieldKey]:d.response}},registerBatch(l,d){return{...l,...d}},clear(l,d){const{[d]:u,...y}=l;return y},clearAll(){return{}}});function f(l,d){if(typeof l=="string"){if(d===void 0)throw new Error("Response is required when registering a single field");n.register({fieldKey:l,response:d})}else n.registerBatch(l)}async function i(l){const d=[];return await Promise.allSettled(Object.entries(l).map(async([u,y])=>{let p=y;const h=t.fields.getByKey(u).getState();if(!h){d.push({fieldId:u,userMessage:`Field '${u}' not found`,systemMessage:`No field with ID '${u}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:p});return}if(h.multiple&&(typeof p=="string"||typeof p=="number"||typeof p=="boolean")&&(p=[p]),h.validation&&!G.isEmpty(h.validation)&&!$(p)){const w=await I.evaluateRuleLogic(t,h.validation,{$input:p});if(typeof w=="string"){d.push({fieldId:u,userMessage:w,systemMessage:`Field validation resulted in an error: ${w}.`,value:p});return}if(w===!1){d.push({fieldId:u,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:p});return}}if(h.required&&$(p)){d.push({fieldId:u,userMessage:"This field is required",systemMessage:"Field is required.",value:p});return}if(!h.multiple&&Array.isArray(p)&&p.length>1){d.push({fieldId:u,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:p});return}if(h.type==="object"&&!$(p))if(h.multiple){if(!Array.isArray(p)){d.push({fieldId:u,userMessage:"This field expects multiple values",systemMessage:"Field expects an array of objects.",value:p});return}for(const w of p){if(typeof w!="object"||w===null){d.push({fieldId:u,userMessage:"This field expects object values",systemMessage:"Field expects an array of objects, but received non-object value.",value:p});return}if(!U(w)){d.push({fieldId:u,userMessage:"This field contains non-serializable data",systemMessage:"Field value contains non-JSON-serializable data (functions, circular references, etc.).",value:p});return}}}else{if(Array.isArray(p)){d.push({fieldId:u,userMessage:"This field expects a single value",systemMessage:"Field expects a single object, not an array.",value:p});return}if(typeof p!="object"||p===null){d.push({fieldId:u,userMessage:"This field expects an object value",systemMessage:"Field expects an object value.",value:p});return}if(!U(p)){d.push({fieldId:u,userMessage:"This field contains non-serializable data",systemMessage:"Field value contains non-JSON-serializable data (functions, circular references, etc.).",value:p});return}}if(Array.isArray(h.options)&&h.options.length>0){const w=Array.isArray(p)?p:[p];if(h.type==="object"){const j=h.options.map(F=>JSON.stringify(F.value));w.every(F=>j.includes(JSON.stringify(F)))||d.push({fieldId:u,userMessage:"This field expects a valid option",systemMessage:"Field expects a valid option from the defined choices.",value:p})}else{const j=h.options.map(F=>F.value);w.every(F=>!Ce(F)||F===null?!1:j.includes(F))||d.push({fieldId:u,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${j.join(", ")}`,value:p})}}})),{responsesToCommit:l,validationErrors:d}}async function a(l){const{responsesToCommit:d,validationErrors:u}=await i(l);return u.length?{errors:u}:(n.registerBatch(d),{errors:[]})}const o=e.map(l=>l),c=e.map(l=>Object.keys(l).map(u=>({fieldId:u,value:l[u]})));function m(l){const d=t.fields.getByKey(l),u=e.map(y=>y[l]||null);return g.combine({f:d,r:u},({f:y,r:p})=>p||(y?.defaultValue?y.defaultValue:null))}const k=m;function x(l){const d=t.fields.getByName(l);return g.combine({f:d,s:e},({f:u,s:y})=>{const p=u&&y[u.key]||null;return p||(u?.defaultValue?u.defaultValue:null)})}return g.sample({clock:r,target:n.clearAll}),g.sample({clock:s,target:n.clear}),{register:f,clearAll:r,clear:s,commit:a,getResponsesToCommit:i,listStore:c,getAllStore:o,getByFieldKey:m,getByFieldId:k,getByFieldName:x}});function ze(t){return S.invoke(Be,t)}function De(){if(v.supportsDocument()){const t=[document.currentScript,document.getElementById("picked_script"),document.getElementById("picked"),document.getElementById("cvly"),document.getElementById("cvly-x")];for(const e of t)if(e?.dataset.api)return e.dataset.api}return"https://api.picked.app"}function Oe(){if(!v.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[n]of t.entries())n.startsWith("picked-")&&r.add(n);for(const n of r){const f=n.replace("picked-","");e[f]=t.getAll(n)}const s=b.createStorageKey("s");if(r.size>0)b.sessionStore.set(s,e);else{const n=b.sessionStore.get(s);if(n)return n.json()||{}}return e}function Me(){if(v.supportsCryptoRandomUUID())return crypto.randomUUID();const t=Date.now().toString(36),e=Math.random().toString(36).substring(2,15),r=Math.random().toString(36).substring(2,15),s=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${s}`}const Ue=b.createStorageKey("session","global"),Le=()=>{const t=b.localStore.get(Ue);let e;t.isSet()&&(e=t.json());const r=n=>t.set({id:n.id,isUser:n.isUser,identifiers:n.identifiers}),s={id:e?.id??Me(),isUser:e?.isUser??void 0,identifiers:e?.identifiers??void 0,setIsUser(n){this.isUser=n,r(this)},setIdentifier(n,f){this.identifiers={...this.identifiers,[n]:f},r(this)},removeIdentifier(n){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([f])=>f!==n)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(s),s},Ve=()=>v.supportsLocalStorage()?Le():null;function K(){if(v.supportsWindow())return globalThis.window.pickedConfig}function Ne(){if(!v.supportsWindow())return;const t=K(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Te(){if(!v.supportsDocument())return;const t=document.getElementById("picked_script")||document.querySelector("script#picked")||document.getElementById("cvly");if(!t)return;const e=t.dataset.organizationid||t.getAttribute("organization-id"),r=t.dataset.projectid||t.getAttribute("project-id");return e&&r?{organizationId:e,projectId:r}:void 0}function Ke(t){const{organizationId:e,projectId:r}=t;if(e&&r)return{organizationId:e,projectId:r};const s=Ne();if(s)return s;const n=Te();if(n)return n;throw new Error(`organizationId and projectId are required. You can provide them via one of:
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("effector"),S=require("@withease/factories"),I=require("../experience-instance-BX0aqKsC.cjs"),E=require("../logger-BsmHUUw1.cjs"),b=require("../storage-58NoTSsc.cjs"),V=require("../api-CvcUdfN8.cjs"),W=require("../id-BKIWbSTy.cjs"),J=require("../object-mwaxtjLG.cjs"),k=require("../supports-YvpQZxbh.cjs"),N=g.createDomain("experience"),Y=S.createFactory(({client:t,experience:e})=>{const r=N.store(e),s=g.createApi(r,{merge(l,h){return{...l,...h.experience}}}),o=r.map(l=>({name:l.name,decisionLogic:l.condition,targetSelectors:l.targets,initializeOpenLogic:e.initializeOpen})),d=t.components.listStore.map(l=>(e.componentName?l.find(h=>h.name===e.componentName):void 0)||l.find(h=>h.name===`experience:${e.id}`)||l.find(h=>h.name==="experience"),{skipVoid:!1}),p=r.map(l=>({steps:l.steps,nodes:l.nodes,edges:l.edges,conditionals:l.conditionals})),u=r.map(l=>l.fields),f=e.actions??[];return{id:e.id,configStore:o,treeStore:p,fieldsStore:u,componentStore:d,actions:f,merge:s.merge}});function Q(t){return S.invoke(Y,t)}const X=S.createFactory(({client:t})=>{const e=N.store({}),r=g.createApi(e,{register(f,l){return{...f,[l.id]:l}}});function s(f){const l=e.getState()[f.id];if(l){l.merge({experience:f,strategy:"override"});return}const h=Q({client:t,experience:f});r.register(h)}const o=e.map(f=>Object.values(f));function d(f){return e.map(l=>l[f],{skipVoid:!1})}const p=g.attach({source:e,effect:async(f,{id:l,options:h})=>{const v=f[l];if(!v){E.logger("warn",`Experience with id '${l}' not found.`);return}if(h?.bypassCondition){D(t,v,h);return}await T(t,v)&&D(t,v,h)}}),u=g.attach({source:t.experienceInstances.listStore,effect:(f,{id:l,options:h})=>{const v=f.filter(y=>y.experienceId===l);if(v.length>0)for(const y of v)y.open();else p({id:l,options:{...h,initialiseOpen:!0}})}});return{register:s,get:d,getById:d,launch:p,open:u,listStore:o}});function Z(t){return S.invoke(X,t)}const ee=(t,e)=>{e.register(t)},D=(t,e,r)=>{const{targetSelectors:s}=e.configStore.getState(),o=I.getTargetElements(s,e.id);o.forEach(({elements:p})=>p.forEach(u=>I.tagTargetElement(u,e.id))),I.createAppHosts(o,e.id).forEach(p=>{r?t.experienceInstances.spawn(e,p,r):t.experienceInstances.spawn(e,p)})},z=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await T(t,e)&&D(t,e)}))},T=async(t,e)=>{if(!t.preconditionPassed||!t.session?.isUser)return!1;const{decisionLogic:r,targetSelectors:s}=e.configStore.getState();return I.getTargetElements(s,e.id).length<1||s.length===0?!1:r===void 0?!0:I.isRulesLogic(r)?await I.evaluateRuleLogic(t,r)===!0:!0},te=(t,e,r)=>{const s=e.name,o=e.setup(t);if(o){const d=r[s]??{};r[s]=Object.freeze({...d,...o})}},re=g.createDomain("component"),ne=S.createFactory(({client:t,component:e,name:r})=>{const s=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:s}});function se(t){return S.invoke(ne,t)}const oe=S.createFactory(({client:t})=>{const e=re.store({}),r=g.createApi(e,{register(p,u){return{...p,[u.name]:u}}});function s(p,u){e.getState()[p]&&E.logger("warn",`Component '${p}' already registered. Registering again will override the previous registration.`);const l=se({client:t,name:p,component:u});r.register(l)}const o=e.map(p=>Object.values(p));function d(p){return e.map(u=>u[p],{skipVoid:!1})}return{register:s,getByName:d,listStore:o}});function ie(t){return S.invoke(oe,t)}const M=(t,e,r)=>{r.register(t,e)},ae=g.createDomain("framework"),ce=S.createFactory(({client:t})=>{const e=ae.store({}),r=g.createApi(e,{register(p,u){return{...p,[u.name]:u.framework}}});function s(p,u){e.getState()[p]&&E.logger("warn",`Framework '${p}' already registered. Registering again will override the previous registration.`),r.register({name:p,framework:u})}const o=e.map(p=>Object.values(p));function d(p){return e.map(u=>u[p],{skipVoid:!1})}return{register:s,getByName:d,listStore:o}});function ue(t){return S.invoke(ce,t)}const le=(t,e)=>{e.register(t.name,t)},de=6e3,pe=b.createStorageKey("last_ping","global"),fe=async t=>{try{const e=Date.now(),r=b.localStore.get(pe);let s=0;if(r.isSet()&&(s=r.json()??0),s&&e-s<de)return!0;const o={projectId:t.projectId,path:window.location.pathname},d={},u=document.getElementById("picked_script")?.dataset.verceltoken;u&&(d["x-vercel-protection-bypass"]=u);const l=(await V.post(t.apiUrl,"ping",o,d)).ok;return l&&r.set(e),l}catch(e){return E.logger("error",e),!1}};function _(t){const e=typeof window<"u",r={client:t,responses:t.responses.listStore.getState(),fields:t.fields.listStore.getState(),location:e?window.location:void 0,document:e?window.document:void 0,sessionStorage:e?window.sessionStorage:void 0,localStorage:e?window.localStorage:void 0};return Object.freeze(r)}const ge=g.createDomain("predicate"),me=S.createFactory(({client:t})=>{const e=ge.store({}),r=g.createApi(e,{register(u,f){return{...u,[f.name]:{name:f.name,predicate:f.predicate}}}});function s(u,f){e.getState()[u]&&E.logger("warn",`Predicate '${u}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:u,predicate:f}))}const o=e.map(u=>Object.values(u));function d(u){return e.map(f=>f[u]?.predicate,{skipVoid:!1})}function p(u){const f=g.createStore(()=>{},{skipVoid:!1}),l=g.createEffect(async()=>{const h=d(u).getState();if(!h)return;const v=_(t);return(...y)=>h({...v,args:y})});return g.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:l}),g.sample({clock:l.doneData,filter:h=>h!==void 0,target:f}),l(),f}return{register:s,getByName:d,listStore:o,getEvokablePredicate:p}});function ye(t){return S.invoke(me,t)}const he=(t,e,r)=>{r.register(t,e)},O=g.createDomain("feature"),Se=S.createFactory(({client:t})=>{const e=O.store({}),r=O.store([]),s=g.createApi(e,{register(c,n){return{...c,[n.id]:n.feature}}});function o(c,n){e.getState()[c]&&E.logger("warn",`Feature '${c}' already registered. Registering again will override the previous registration.`);const a={id:c,feature:{...n,id:c}};s.register(Object.freeze({id:c,feature:a}))}const d=g.createEffect(async({id:c,key:n,storage:i="local"})=>{const a=b.createStorageKey(`feature:${c}:${n}`,"global"),w=(i==="session"?b.sessionStore:b.localStore).get(a).boolean();return w===null?null:{id:c,key:n,bucket:w,storage:i}}),p=g.createEffect(c=>{if(!c)return null;const n=b.createStorageKey(`feature:${c.id}:${c.key}`,"global");(c.storage==="session"?b.sessionStore:b.localStore).set(n,c.bucket)}),u=new Map,f=g.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:c,resolvedFeaturesStore:n},{id:i,decide:a,key:m})=>{const w=n.find(P=>P.id===i&&P.key===m);if(w)return w;const F=c[i];if(!F)throw new Error(`Feature with id '${i}' not found`);const j=u.get(`${i}:${m}`);if(j!==void 0){const P=await j;return{id:F.id,bucket:P,key:m,storage:F.feature.storage}}const x=a();u.set(`${i}:${m}`,x);const G=await x;return{id:F.id,bucket:G,key:m,storage:F.feature.storage}}});g.sample({clock:s.register,fn:c=>{const{id:n,feature:i}=c;return{id:n,key:i.feature.key,storage:i.feature.storage}},target:d}),g.sample({source:e,clock:f.doneData,fn:(c,n)=>{const{id:i,bucket:a,storage:m}=n,w=c[i]?.feature.key;return w?{key:w,id:i,bucket:a,storage:m}:null},target:p});const l=g.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:c,resolvedFeaturesStore:n})=>Object.values(c).map(i=>{const a=n.find(m=>m.id===i.id&&m.key===i.feature.key);return a?{id:i.id,name:i.feature.name,key:i.feature.key,getBucket:()=>({id:i.id,bucket:a.bucket}),isResolved:!0}:{id:i.id,name:i.feature.name,key:i.feature.key,getBucket:async()=>await f(i.feature),isResolved:!1}}));g.sample({clock:f.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:c},{id:n,key:i})=>!c.some(m=>m.id===n&&m.key===i),fn:(c,n)=>n,target:t.eventBus.prepend(c=>({type:"feature_decide",feature:c}))}),g.sample({clock:[d.doneData,f.doneData],source:r,fn:(c,n)=>!n||c.some(a=>a.id===n.id&&a.key===n.key)?c:[...c,n],target:r});function h(c){return l.map(n=>n.find(i=>i.id===c))}function v(c){return e.map(n=>n[c],{skipVoid:!1})}function y(c){const n=g.createStore(async()=>{},{skipVoid:!1}),i=g.createEffect(async()=>{const a=h(c).getState();if(a)return async()=>(await a.getBucket()).bucket});return g.sample({source:r,filter:a=>a.some(m=>m.id===c),target:i}),g.sample({clock:i.doneData,filter:a=>a!==void 0,target:n}),i(),n}return{register:o,getById:h,getByName:v,listStore:l,getEvokableFeature:y}});function ve(t){return S.invoke(Se,t)}const ke=(t,e,r)=>{r.register(t,e)},A=g.createDomain("history");function U(t,e){return{id:W.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const we=S.createFactory(()=>{const t=A.store({entries:[]}),e=A.event(),r=A.event(),s=A.event(),o=A.event();t.on(e,(p,u)=>({entries:[...p.entries,U(u.experienceId,u.node)]})),t.on(r,(p,u)=>({entries:[...p.entries.slice(0,-1),U(u.experienceId,u.node)]})),t.on(o,(p,u)=>u);function d(p,u){const f={lastStepIndex:-1,secondLastStepIndex:-1};for(let l=p.length-1;l>=0;l--){const h=p[l],v=h?.node;if(!(!v||!I.isStepNode(v))&&!(u&&h.experienceId!==u))if(f.lastStepIndex===-1)f.lastStepIndex=l;else{f.secondLastStepIndex=l;break}}return f}return t.on(s,(p,u)=>{const{secondLastStepIndex:f}=d(p.entries,u.experienceId),l=f!==-1?p.entries.slice(0,f+1):p.entries;return{...p,entries:l}}),{push:e,replace:r,back:s,restore:o,entriesStore:t.map(p=>p.entries)}});function be(){return S.invoke(we)}let Ie=0;const Fe=t=>{const e=g.createStore([]);return g.sample({clock:t,source:e,fn:(r,s)=>[...r,{id:Ie++,at:new Date,payload:s}],target:e}),e},C=g.createDomain("field");function xe(t){return Array.isArray(t)&&t.every(e=>typeof e=="object"&&e!==null&&"id"in e&&"label"in e&&"value"in e)}function $(t,e){const r=e??{status:"idle",options:Array.isArray(t.options)?t.options:null};return{...t,...r,options:r.options??(Array.isArray(t.options)?t.options:null)}}const Ee=S.createFactory(({client:t})=>{const e=C.store({}),r=g.createApi(e,{register(n,i){return{...n,[i.field.id]:i.field}},updateById(n,i){const a=n[i.fieldId];return a?{...n,[i.fieldId]:Object.assign({},a,i.updates)}:n}});function s(n){r.register({field:n})}function o(n,i){r.updateById({fieldId:n,updates:i})}const d=C.store({}),p=g.combine(e,d,(n,i)=>Object.values(n).map(a=>$(a,i[a.id])));function u(n){return g.combine(e,d,(i,a)=>{const m=i[n];return m?$(m,a[n]):null})}function f(n){return g.combine(e,d,(i,a)=>{const m=Object.values(i).find(w=>w.name===n);return m?$(m,a[m.id]):null})}const l=C.effect(async({fieldId:n,fieldOptions:i,context:a})=>{if(t&&!Array.isArray(i)&&i!==null){const m=await I.evaluateRuleLogic(t,i,a);return xe(m)?{fieldId:n,options:m}:{fieldId:n,options:null}}return{fieldId:n,options:Array.isArray(i)?i:null}});d.on(l,(n,{fieldId:i})=>{const a=n[i];return{...n,[i]:{status:"loading",options:a?.status==="resolved"?a.options:null}}}),d.on(l.doneData,(n,{fieldId:i,options:a})=>({...n,[i]:{status:"resolved",options:a}})),d.on(l.fail,(n,{params:{fieldId:i}})=>({...n,[i]:{status:"error",options:null,error:"Failed to resolve field options"}}));const h=g.createEvent();d.on(h,(n,i)=>({...n,[i]:{status:"waiting",options:null}}));const v=g.createEvent();t&&g.sample({clock:v,source:{states:d,fields:e},filter:({states:n},{fieldId:i,force:a})=>{if(a)return!0;const m=n[i];return!m||m.status==="idle"},fn:({fields:n},{fieldId:i,context:a})=>{const m=n[i]??null;return{fieldId:i,fieldOptions:m?.options??null,context:a}},target:l});function y(n,i){v({fieldId:n,force:i?.force,context:i?.context})}function c(n,i){for(const a of n)v({fieldId:a,force:i?.force,context:i?.context})}return{register:s,update:o,getById:u,listStore:p,getByName:f,resolve:y,resolveAll:c,setWaiting:h}});function Ae(t){return S.invoke(Ee,t??{})}const je=(t,e)=>{e.register(t)},Pe=g.createDomain("action"),Re=S.createFactory(({client:t})=>{const e=Pe.store({}),r=g.createApi(e,{register(u,f){return{...u,[f.name]:{name:f.name,action:f.action}}}});function s(u,f){r.register({name:u,action:f})}const o=e.map(u=>Object.values(u));function d(u){return e.map(f=>f[u],{skipVoid:!1})}function p(u){return e.map(f=>{const l=f[u];return l?l.action:void 0},{skipVoid:!1})}return{register:s,getByName:d,listStore:o,getEvokableAction:p}});function Ce(t){return S.invoke(Re,t)}const $e=(t,e,r)=>{r.register(t,e)};function B(t){return typeof t>"u"||t===null||t===""||Array.isArray(t)&&!t.length}function Be(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null}function L(t){try{return JSON.stringify(t),!0}catch{return!1}}const De=g.createDomain("response"),ze=S.createFactory(({client:t})=>{const e=De.store({}),r=g.createEvent(),s=g.createEvent(),o=g.createApi(e,{register(y,c){return{...y,[c.fieldId]:c.response}},registerBatch(y,c){return{...y,...c}},clear(y,c){const{[c]:n,...i}=y;return i},clearAll(){return{}}});function d(y,c){if(typeof y=="string"){if(c===void 0)throw new Error("Response is required when registering a single field");o.register({fieldId:y,response:c})}else o.registerBatch(y)}async function p(y){const c=[];return await Promise.allSettled(Object.entries(y).map(async([n,i])=>{let a=i;const m=t.fields.getById(n).getState();if(!m){c.push({fieldId:n,userMessage:`Field '${n}' not found`,systemMessage:`No field with ID '${n}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:a});return}if(m.multiple&&(typeof a=="string"||typeof a=="number"||typeof a=="boolean")&&(a=[a]),m.validation&&!J.isEmpty(m.validation)&&!B(a)){const w={...e.getState(),...y},F=await I.evaluateRuleLogic(t,m.validation,{$input:a,responses:w});if(typeof F=="string"){c.push({fieldId:n,userMessage:F,systemMessage:`Field validation resulted in an error: ${F}.`,value:a});return}if(F===!1){c.push({fieldId:n,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:a});return}}if(m.required&&B(a)){c.push({fieldId:n,userMessage:"This field is required",systemMessage:"Field is required.",value:a});return}if(!m.multiple&&Array.isArray(a)&&a.length>1){c.push({fieldId:n,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:a});return}if(m.type==="object"&&!B(a))if(m.multiple){if(!Array.isArray(a)){c.push({fieldId:n,userMessage:"This field expects multiple values",systemMessage:"Field expects an array of objects.",value:a});return}for(const w of a){if(typeof w!="object"||w===null){c.push({fieldId:n,userMessage:"This field expects object values",systemMessage:"Field expects an array of objects, but received non-object value.",value:a});return}if(!L(w)){c.push({fieldId:n,userMessage:"This field contains non-serializable data",systemMessage:"Field value contains non-JSON-serializable data (functions, circular references, etc.).",value:a});return}}}else{if(Array.isArray(a)){c.push({fieldId:n,userMessage:"This field expects a single value",systemMessage:"Field expects a single object, not an array.",value:a});return}if(typeof a!="object"||a===null){c.push({fieldId:n,userMessage:"This field expects an object value",systemMessage:"Field expects an object value.",value:a});return}if(!L(a)){c.push({fieldId:n,userMessage:"This field contains non-serializable data",systemMessage:"Field value contains non-JSON-serializable data (functions, circular references, etc.).",value:a});return}}if(Array.isArray(m.options)&&m.options.length>0){const w=Array.isArray(a)?a:[a];if(m.type==="object"){const F=m.options.map(x=>JSON.stringify(x.value));w.every(x=>F.includes(JSON.stringify(x)))||c.push({fieldId:n,userMessage:"This field expects a valid option",systemMessage:"Field expects a valid option from the defined choices.",value:a})}else{const F=m.options.map(x=>x.value);w.every(x=>!Be(x)||x===null?!1:F.includes(x))||c.push({fieldId:n,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${F.join(", ")}`,value:a})}}})),{responsesToCommit:y,validationErrors:c}}async function u(y){const{responsesToCommit:c,validationErrors:n}=await p(y);return n.length?{errors:n}:(o.registerBatch(c),{errors:[]})}const f=e.map(y=>y),l=e.map(y=>Object.keys(y).map(n=>({fieldId:n,value:y[n]})));function h(y){const c=t.fields.getById(y),n=e.map(i=>i[y]||null);return g.combine({f:c,r:n},({f:i,r:a})=>a||(i?.defaultValue?i.defaultValue:null))}function v(y){const c=t.fields.getByName(y);return g.combine({f:c,s:e},({f:n,s:i})=>{const a=n&&i[n.id]||null;return a||(n?.defaultValue?n.defaultValue:null)})}return g.sample({clock:r,target:o.clearAll}),g.sample({clock:s,target:o.clear}),{register:d,clearAll:r,clear:s,commit:u,getResponsesToCommit:p,listStore:l,getAllStore:f,getByFieldId:h,getByFieldName:v}});function Me(t){return S.invoke(ze,t)}function Oe(){if(k.supportsDocument()){const t=[document.currentScript,document.getElementById("picked_script"),document.getElementById("picked"),document.getElementById("cvly"),document.getElementById("cvly-x")];for(const e of t)if(e?.dataset.api)return e.dataset.api}return"https://api.picked.app"}function Ue(){if(!k.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[o]of t.entries())o.startsWith("picked-")&&r.add(o);for(const o of r){const d=o.replace("picked-","");e[d]=t.getAll(o)}const s=b.createStorageKey("s");if(r.size>0)b.sessionStore.set(s,e);else{const o=b.sessionStore.get(s);if(o)return o.json()||{}}return e}function Le(){if(k.supportsCryptoRandomUUID())return crypto.randomUUID();const t=Date.now().toString(36),e=Math.random().toString(36).substring(2,15),r=Math.random().toString(36).substring(2,15),s=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${s}`}const Ve=b.createStorageKey("session","global"),Ne=()=>{const t=b.localStore.get(Ve);let e;t.isSet()&&(e=t.json());const r=o=>t.set({id:o.id,isUser:o.isUser,identifiers:o.identifiers}),s={id:e?.id??Le(),isUser:e?.isUser??void 0,identifiers:e?.identifiers??void 0,setIsUser(o){this.isUser=o,r(this)},setIdentifier(o,d){this.identifiers={...this.identifiers,[o]:d},r(this)},removeIdentifier(o){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([d])=>d!==o)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(s),s},Te=()=>k.supportsLocalStorage()?Ne():null;function q(){if(k.supportsWindow())return globalThis.window.pickedConfig}function _e(){if(!k.supportsWindow())return;const t=q(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function qe(){if(!k.supportsDocument())return;const t=document.getElementById("picked_script")||document.querySelector("script#picked")||document.getElementById("cvly");if(!t)return;const e=t.dataset.organizationid||t.getAttribute("organization-id"),r=t.dataset.projectid||t.getAttribute("project-id");return e&&r?{organizationId:e,projectId:r}:void 0}function He(t){const{organizationId:e,projectId:r}=t;if(e&&r)return{organizationId:e,projectId:r};const s=_e();if(s)return s;const o=qe();if(o)return o;throw new Error(`organizationId and projectId are required. You can provide them via one of:
2
2
  (1) createClient({ organizationId, projectId }) options;
3
3
  (2) window.pickedConfig = { organizationId, projectId };
4
- (3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes data-organizationid/data-projectid (or organization-id/project-id) attributes.`)}function C(t){return t==null||t===""||Number.isNaN(t)}const _e={default:(t,e)=>C(t)?String(e??""):String(t),append:(t,e)=>e&&!C(t)?`${t} ${e}`:t,prepend:(t,e)=>e&&!C(t)?`${e} ${t}`:t,upper:t=>typeof t=="string"?t.toUpperCase():t,lower:t=>typeof t=="string"?t.toLowerCase():t,capitalize:t=>typeof t=="string"?t.charAt(0).toUpperCase()+t.slice(1):t,list:t=>{if(!t||typeof t!="object")return t;const e=new Intl.ListFormat("en",{style:"long",type:"conjunction"});if(Array.isArray(t))return e.format(t.map(String));if(t instanceof Map){const r=Array.from(t.entries()).map(([s,n])=>`${s}: ${n}`);return e.format(r)}return t instanceof Set?e.format(Array.from(t).map(String)):t}};function qe(t){return typeof t=="object"&&t!==null}function He(t,e){let r=e;for(const s of t.split("."))if(qe(r)&&s in r)r=r[s];else return;return typeof r=="function"?r():r}function Ge(t,e){const r=t.split("|").map(f=>f.trim()),s=r.shift()??"";let n=He(s,e);for(const f of r){const[i,...a]=f.split(":"),o=i?.trim()??"",c=a.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g,""),m=_e[o];m&&(n=m(n,c))}return C(n)?"":typeof n=="object"?JSON.stringify(n):String(n)}function We(t,e){let r="",s=0;for(;s<t.length;)if(t[s]==="{"&&t[s+1]==="{"){s+=2;let n="";for(;s<t.length;){if(t[s]==="}"&&t[s+1]==="}"){s+=2;break}n+=t[s++]}r+=Ge(n.trim(),e)}else r+=t[s++];return r}class _{static logger=E.logger;options;isReady=!1;project;plugins={};pluginStartHooks=[];eventBus=g.createEvent();events;organizationId;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session;precondition;condition;preconditionPassed;searchParams=Oe();history=ke();components=ne({client:this});experienceInstances=I.createExperienceInstanceIndex({client:this});experiences=Q({client:this});frameworks=ae({client:this});predicates=ge({client:this});features=he({client:this});responses=ze({client:this});fields=Ee();actions=Pe();constructor(e){E.logger("info","Picked client initializing."),this.events=be(this.eventBus);const{organizationId:r,projectId:s}=Ke(e);this.organizationId=r,this.projectId=s,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||De(),this.dashboardUrl=e.dashboardUrl??"https://dashboard.picked.app",this.documentationSiteUrl=e.documentationSiteUrl??"https://docs.picked.app",this.session=Ve(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.setupComponents(),this.precondition=e.precondition,this.condition=e.condition,this.eventBus({type:"load",version:L.getVersion()}),E.logger("info","Picked client initialized.")}start=()=>{de(this),(async()=>{if(!v.supportsDocument())return;await this.runPluginStartHooks();const r=await this.evaluateGate(this.precondition);this.preconditionPassed=r;let s;r&&(s=await this.evaluateGate(this.condition));const n=r&&s===!0;if(typeof s=="boolean"&&this.session){const f=s;this.session.setIsUser(f),this.eventBus({type:"user_decide",value:f})}if(this.eventBus({type:"initialize"}),n&&z(this),await I.domInteractive(),n&&z(this),this.eventBus({type:"ready"}),this.isReady=!0,this.session){const{id:f,isUser:i,identifiers:a}=this.session;this.eventBus({type:"session",id:f,isUser:i,identifiers:a})}})()};registerFramework=e=>{ce(e,this.frameworks)};registerComponent=(e,r)=>{D(e,r,this.components)};registerPlugin=e=>{Z(this,e,this.plugins);const r=this.plugins[e.name];r?.onStart&&this.pluginStartHooks.push(r.onStart)};registerFeature=(e,r)=>{Se(e,r,this.features)};registerPredicate=(e,r)=>{me(e,r,this.predicates)};registerField=e=>{xe(e,this.fields)};registerAction=(e,r)=>{Re(e,r,this.actions)};registerExperience=e=>{e.component&&D(`experience:${e.id}`,e.component,this.components),X(e,this.experiences)};getStateSnapshot=()=>T(this);launchExperienceById=async(e,r)=>{this.experiences.launch({id:e,options:r})};openExperienceById=async e=>{this.experiences.open({id:e})};async runPluginStartHooks(){for(const e of this.pluginStartHooks)await e()}async evaluateGate(e){return e===void 0?!0:typeof e=="boolean"?e:await I.evaluateRuleLogic(this,e)===!0}setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(s=>{this.registerPlugin(s)});return}const r=typeof e=="function"?e():e;if(Array.isArray(r)){r.forEach(s=>this.registerPlugin(s));return}this.registerPlugin(r)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([r,s])=>{const n=typeof s=="function"?s():s;this.registerFeature(r,n)}),this.searchParams.feature&&this.searchParams.feature.forEach(r=>{try{const[s,n]=r.split(":");if(!s||!n)return;let f=n;f==="true"&&(f=!0),f==="false"&&(f=!1),this.registerFeature(s,{key:`${f}`,name:s,decide:()=>f,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([r,s])=>{if(typeof s!="function"){E.logger("warn",`Predicate "${r}" is not a function.`);return}this.registerPredicate(r,s)})}setupActions(){const e=this.options.actions;e&&Object.entries(e).forEach(([r,s])=>{if(typeof s!="function"){E.logger("warn",`Action "${r}" is not a function.`);return}this.registerAction(r,s)})}setupComponents(){const e=this.options.components;e&&Object.entries(e).forEach(([r,s])=>{this.registerComponent(r,s)})}getPluginConfig=e=>this.plugins[e]??{};renderString=(e,r)=>{const s=this.responses.listStore.getState().reduce((n,f)=>(n[f.fieldId]=f.value,n),{});return We(e,{...r,responses:s})}}function q(t){return t.options?.some(e=>"condition"in e)??!1}function Je(t){return t.some(e=>e.condition||q(e))}async function Ye(t,e){return e.length===0||!Je(e)?e:(await Promise.all(e.map(async s=>{if(!(s.condition?await I.evaluateRuleLogic(t,s.condition):!0))return null;if(!s.options||!q(s))return s;const i=(await Promise.all(s.options.map(async o=>o.condition?await I.evaluateRuleLogic(t,o.condition)?o:null:o))).filter(o=>o!==null);return i.length===s.options.length?s:i.length===0?null:{...s,options:i}}))).filter(s=>s!==null)}function Qe(t){return{$$type:"lazy-component",load:t}}function Xe(t){return typeof t=="object"&&t!==null&&"$$type"in t&&t.$$type==="lazy-component"}const Ze=t=>{const e=new _(t);return v.bindClient(e),e};exports.evaluateRuleLogic=I.evaluateRuleLogic;exports.isPickedRoot=I.isPickedRoot;exports.createStorageKey=b.createStorageKey;exports.localStore=b.localStore;exports.sessionStore=b.sessionStore;exports.subscribe=b.subscribe;exports.supportsCookies=v.supportsCookies;exports.supportsCryptoRandomUUID=v.supportsCryptoRandomUUID;exports.supportsDocument=v.supportsDocument;exports.supportsHistory=v.supportsHistory;exports.supportsIntersectionObserver=v.supportsIntersectionObserver;exports.supportsLocalStorage=v.supportsLocalStorage;exports.supportsLocation=v.supportsLocation;exports.supportsSessionStorage=v.supportsSessionStorage;exports.supportsShadowRoot=v.supportsShadowRoot;exports.supportsWebComponents=v.supportsWebComponents;exports.supportsWindow=v.supportsWindow;exports.Picked=_;exports.createClient=Ze;exports.getPickedConfig=K;exports.getStepFields=Ye;exports.isLazyLoader=Xe;exports.lazyComponent=Qe;
4
+ (3) a <script> tag with id 'picked_script', 'picked', or 'cvly' that includes data-organizationid/data-projectid (or organization-id/project-id) attributes.`)}function R(t){return t==null||t===""||Number.isNaN(t)}const Ke={default:(t,e)=>R(t)?String(e??""):String(t),append:(t,e)=>e&&!R(t)?`${t} ${e}`:t,prepend:(t,e)=>e&&!R(t)?`${e} ${t}`:t,upper:t=>typeof t=="string"?t.toUpperCase():t,lower:t=>typeof t=="string"?t.toLowerCase():t,capitalize:t=>typeof t=="string"?t.charAt(0).toUpperCase()+t.slice(1):t,list:t=>{if(!t||typeof t!="object")return t;const e=new Intl.ListFormat("en",{style:"long",type:"conjunction"});if(Array.isArray(t))return e.format(t.map(String));if(t instanceof Map){const r=Array.from(t.entries()).map(([s,o])=>`${s}: ${o}`);return e.format(r)}return t instanceof Set?e.format(Array.from(t).map(String)):t}};function Ge(t){return typeof t=="object"&&t!==null}function We(t,e){let r=e;for(const s of t.split("."))if(Ge(r)&&s in r)r=r[s];else return;return typeof r=="function"?r():r}function Je(t,e){const r=t.split("|").map(d=>d.trim()),s=r.shift()??"";let o=We(s,e);for(const d of r){const[p,...u]=d.split(":"),f=p?.trim()??"",l=u.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g,""),h=Ke[f];h&&(o=h(o,l))}return R(o)?"":typeof o=="object"?JSON.stringify(o):String(o)}function Ye(t,e){let r="",s=0;for(;s<t.length;)if(t[s]==="{"&&t[s+1]==="{"){s+=2;let o="";for(;s<t.length;){if(t[s]==="}"&&t[s+1]==="}"){s+=2;break}o+=t[s++]}r+=Je(o.trim(),e)}else r+=t[s++];return r}class H{static logger=E.logger;options;isReady=!1;project;plugins={};pluginStartHooks=[];eventBus=g.createEvent();events;organizationId;projectId;apiUrl;dashboardUrl;documentationSiteUrl;session;precondition;condition;preconditionPassed;searchParams=Ue();history=be();components=ie({client:this});experienceInstances=I.createExperienceInstanceIndex({client:this});experiences=Z({client:this});frameworks=ue({client:this});predicates=ye({client:this});features=ve({client:this});responses=Me({client:this});fields=Ae({client:this});actions=Ce({client:this});constructor(e){E.logger("info","Picked client initializing."),this.events=Fe(this.eventBus);const{organizationId:r,projectId:s}=He(e);this.organizationId=r,this.projectId=s,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Oe(),this.dashboardUrl=e.dashboardUrl??"https://dashboard.picked.app",this.documentationSiteUrl=e.documentationSiteUrl??"https://docs.picked.app",this.session=Te(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.setupComponents(),this.precondition=e.precondition,this.condition=e.condition,this.eventBus({type:"load",version:V.getVersion()}),E.logger("info","Picked client initialized.")}start=()=>{fe(this),(async()=>{if(!k.supportsDocument())return;await this.runPluginStartHooks();const r=await this.evaluateGate(this.precondition);this.preconditionPassed=r;let s;r&&(s=await this.evaluateGate(this.condition));const o=r&&s===!0;if(typeof s=="boolean"&&this.session){const d=s;this.session.setIsUser(d),this.eventBus({type:"user_decide",value:d})}if(this.eventBus({type:"initialize"}),o&&z(this),await I.domInteractive(),o&&z(this),this.eventBus({type:"ready"}),this.isReady=!0,this.session){const{id:d,isUser:p,identifiers:u}=this.session;this.eventBus({type:"session",id:d,isUser:p,identifiers:u})}})()};registerFramework=e=>{le(e,this.frameworks)};registerComponent=(e,r)=>{M(e,r,this.components)};registerPlugin=e=>{te(this,e,this.plugins);const r=this.plugins[e.name];r?.onStart&&this.pluginStartHooks.push(r.onStart)};registerFeature=(e,r)=>{ke(e,r,this.features)};registerPredicate=(e,r)=>{he(e,r,this.predicates)};registerField=e=>{je(e,this.fields)};registerAction=(e,r)=>{$e(e,r,this.actions)};registerExperience=e=>{e.component&&M(`experience:${e.id}`,e.component,this.components),ee(e,this.experiences)};getStateSnapshot=()=>_(this);launchExperienceById=async(e,r)=>{this.experiences.launch({id:e,options:r})};openExperienceById=async e=>{this.experiences.open({id:e})};async runPluginStartHooks(){for(const e of this.pluginStartHooks)await e()}async evaluateGate(e){return e===void 0?!0:typeof e=="boolean"?e:await I.evaluateRuleLogic(this,e)===!0}setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(s=>{this.registerPlugin(s)});return}const r=typeof e=="function"?e():e;if(Array.isArray(r)){r.forEach(s=>this.registerPlugin(s));return}this.registerPlugin(r)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([r,s])=>{const o=typeof s=="function"?s():s;this.registerFeature(r,o)}),this.searchParams.feature&&this.searchParams.feature.forEach(r=>{try{const[s,o]=r.split(":");if(!s||!o)return;let d=o;d==="true"&&(d=!0),d==="false"&&(d=!1),this.registerFeature(s,{key:`${d}`,name:s,decide:()=>d,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([r,s])=>{if(typeof s!="function"){E.logger("warn",`Predicate "${r}" is not a function.`);return}this.registerPredicate(r,s)})}setupActions(){const e=this.options.actions;e&&Object.entries(e).forEach(([r,s])=>{if(typeof s!="function"){E.logger("warn",`Action "${r}" is not a function.`);return}this.registerAction(r,s)})}setupComponents(){const e=this.options.components;e&&Object.entries(e).forEach(([r,s])=>{this.registerComponent(r,s)})}getPluginConfig=e=>this.plugins[e]??{};renderString=(e,r)=>{const s=this.responses.listStore.getState().reduce((o,d)=>(o[d.fieldId]=d.value,o),{});return Ye(e,{...r,responses:s})}}function K(t){return Array.isArray(t.options)&&t.options.some(e=>"condition"in e)}function Qe(t){return t.some(e=>e.condition||K(e))}async function Xe(t,e,r){return e.length===0||!Qe(e)?e:(await Promise.all(e.map(async o=>{if(!(o.condition?await I.evaluateRuleLogic(t,o.condition,r):!0))return null;if(!Array.isArray(o.options)||!K(o))return o;const u=(await Promise.all(o.options.map(async l=>l.condition?await I.evaluateRuleLogic(t,l.condition,r)?l:null:l))).filter(l=>l!==null);return u.length===o.options.length?o:u.length===0?null:{...o,options:u}}))).filter(o=>o!==null)}function Ze(t){return{$$type:"lazy-component",load:t}}function et(t){return typeof t=="object"&&t!==null&&"$$type"in t&&t.$$type==="lazy-component"}const tt=t=>{const e=new H(t);return k.bindClient(e),e};exports.evaluateRuleLogic=I.evaluateRuleLogic;exports.isPickedRoot=I.isPickedRoot;exports.createStorageKey=b.createStorageKey;exports.localStore=b.localStore;exports.sessionStore=b.sessionStore;exports.subscribe=b.subscribe;exports.supportsCookies=k.supportsCookies;exports.supportsCryptoRandomUUID=k.supportsCryptoRandomUUID;exports.supportsDocument=k.supportsDocument;exports.supportsHistory=k.supportsHistory;exports.supportsIntersectionObserver=k.supportsIntersectionObserver;exports.supportsLocalStorage=k.supportsLocalStorage;exports.supportsLocation=k.supportsLocation;exports.supportsSessionStorage=k.supportsSessionStorage;exports.supportsShadowRoot=k.supportsShadowRoot;exports.supportsWebComponents=k.supportsWebComponents;exports.supportsWindow=k.supportsWindow;exports.Picked=H;exports.createClient=tt;exports.getPickedConfig=q;exports.getStepFields=Xe;exports.isLazyLoader=et;exports.lazyComponent=Ze;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../../id-BKIWbSTy.cjs"),m=require("../../../to-kebab-case-BsOQ8CON.cjs"),r={serialize(i){return JSON.stringify(i)},deserialize(i){return JSON.parse(i)}},N=i=>({name:"create-experience",setup:o=>{i.experiences.forEach(n=>{const d=n.serialize(),s=r.deserialize(d);s.component=n.component,o.registerExperience(s),s.fields.forEach(u=>{o.registerField(u)})})}}),b=(i,o)=>({id:f.generateId("node"),experience:o,type:"action",action:i.action,addNext(d){if(!d.node)throw new Error("Cannot connect to node");const s=h({sourceNode:this,destinationNode:d.node,sourceNodeHandle:null},o);o.edges.push(s)},onSuccess(d){if(!d.node)throw new Error("Cannot connect to node");const s=h({sourceNode:this,destinationNode:d.node,sourceNodeHandle:"true"},o);o.edges.push(s)},onFail(d){if(!d.node)throw new Error("Cannot connect to node");const s=h({sourceNode:this,destinationNode:d.node,sourceNodeHandle:"false"},o);o.edges.push(s)},serialize(){return r.serialize({id:this.id,type:this.type,action:this.action})}}),z=i=>{const o=i.name??i.label??"";return{id:i.id??f.generateId("step"),key:i.key??m.toKebabCase(o),name:o,fields:i.fields??[],addField(n){const d="serialize"in n?n:y(n);return this.fields.includes(d)||this.fields.push(d),d}}},v=(i,o)=>{const n="label"in i?i.label:void 0,d=i.name??n??"",s={id:i.id??f.generateId("step"),key:i.key??m.toKebabCase(d),name:d,experience:o,fields:i.fields??[],node:null,nextStep(u){return this.experience.addStep(u,this)},nextConditional(u){return this.experience.addConditional(u,this)},addNextExperience(u){return this.experience.addExperience(u,this)},addField(u){return this.experience.addField(u,this)},serialize(){return r.serialize({id:this.id,key:m.toKebabCase(this.name),name:this.name,fieldIds:this.fields.map(u=>u.id)})}};return p({step:s,type:"step"},o),s},p=(i,o)=>{const n={id:f.generateId("node"),experience:o};if(i.type==="step"){const s={...n,type:"step",connectedStep:i.step,serialize(){return r.serialize({id:this.id,type:this.type,stepId:this.connectedStep.id,name:this.connectedStep.name})}};return s.connectedStep.node=s,s}if(i.type==="conditional"){const s={...n,type:"conditional",connectedConditional:i.conditional,serialize(){return r.serialize({id:this.id,type:this.type,conditionalId:this.connectedConditional.id})}};return s.connectedConditional.node=s,s}return i.type==="experience"?{...n,type:"experience",connectedExperience:i.experience,serialize(){return r.serialize({id:this.id,type:this.type,experienceId:this.connectedExperience.id})}}:{...n,type:"origin",serialize(){return r.serialize({id:this.id,type:this.type})}}},h=(i,o)=>({id:f.generateId("edge"),sourceNode:i.sourceNode,sourceNodeHandle:i.sourceNodeHandle,destinationNode:i.destinationNode,experience:o,serialize(){return r.serialize({id:this.id,sourceNodeHandle:this.sourceNodeHandle??void 0,sourceNodeId:this.sourceNode.id,destinationNodeId:this.destinationNode.id})}}),g=(i,o)=>{const n={id:f.generateId("conditional"),label:i.label,condition:i.condition,node:null,experience:o,addTrue(d){if(!this.node||!d.node)throw new Error("todo no node");const s=h({sourceNode:this.node,destinationNode:d.node,sourceNodeHandle:"true"},this.experience);this.experience.edges.push(s)},addFalse(d){if(!this.node||!d.node)throw new Error("todo no node");const s=h({sourceNode:this.node,destinationNode:d.node,sourceNodeHandle:"false"},this.experience);this.experience.edges.push(s)},serialize(){return r.serialize({id:this.id,label:this.label,condition:this.condition})}};return p({conditional:n,type:"conditional"},o),n},y=i=>({id:i.id??f.generateId("field"),key:i.key??m.toKebabCase(i.name),name:i.name,type:i.type,label:i.label,placeholder:i.placeholder,description:i.description,helpText:i.helpText,defaultValue:i.defaultValue??null,multiple:i.multiple,validation:i.validation??{},condition:i.condition,required:i.required,options:i.options?.map(n=>({id:"id"in n?n.id:f.generateId("option"),...n}))??null,policies:i.policies,serialize(){const n={id:this.id,key:this.key,name:this.name,label:this.label,placeholder:this.placeholder,required:this.required,description:this.description,helpText:this.helpText,validation:this.validation,condition:this.condition,policies:this.policies},d=typeof this.defaultValue=="string"?this.defaultValue:void 0,s=typeof this.defaultValue=="number"?this.defaultValue:void 0,u=typeof this.defaultValue=="boolean"?this.defaultValue:void 0;switch(this.type){case"text":if(this.multiple){let e;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="string"&&e.push(t);e.length===0&&(e=void 0)}return r.serialize({...n,type:"text",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:`${t.value}`,condition:t.condition})):null})}return r.serialize({...n,type:"text",multiple:!1,defaultValue:d,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:`${e.value}`,condition:e.condition})):null});case"number":if(this.multiple){let e;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="number"&&e.push(t);e.length===0&&(e=void 0)}return r.serialize({...n,type:"number",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:Number(t.value),condition:t.condition})):null})}return r.serialize({...n,type:"number",multiple:!1,defaultValue:s,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:Number(e.value),condition:e.condition})):null});case"boolean":if(this.multiple){let e;if(Array.isArray(this.defaultValue)){e=[];for(const t of this.defaultValue)typeof t=="boolean"&&e.push(t);e.length===0&&(e=void 0)}return r.serialize({...n,type:"boolean",multiple:!0,defaultValue:e,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:!!t.value,condition:t.condition})):null})}return r.serialize({...n,type:"boolean",multiple:!1,defaultValue:u,options:this.options?this.options.map(e=>({id:e.id,label:e.label,value:!!e.value,condition:e.condition})):null});case"object":return this.multiple?r.serialize({...n,type:"object",multiple:!0,defaultValue:this.defaultValue,options:this.options?this.options.map(e=>({id:e.id,label:e.label,description:e.description,value:e.value,condition:e.condition})):null}):r.serialize({...n,type:"object",multiple:!1,defaultValue:this.defaultValue,options:this.options?this.options.map(e=>({id:e.id,label:e.label,description:e.description,value:e.value,condition:e.condition})):null});default:throw new Error("Unsupported field type")}}}),x=i=>{const o=[],n=[],d=[],s=[],u=[];return{id:i.id,component:i.component,name:i.name,initializeOpen:i.initializeOpen,condition:i.condition,targets:i.targets,steps:o,nodes:n,edges:d,fields:u,conditionals:s,addStep(e,t){let a=t?.node;this.nodes.length===0&&(a=p({type:"origin"},this),this.nodes.push(a));const l="serialize"in e?e:v(e,this);if(a){if(!l.node)throw new Error("todo no node");const c=h({sourceNode:a,destinationNode:l.node,sourceNodeHandle:null},this);this.edges.push(c)}return l.fields.length>0&&l.fields.forEach(c=>{this.fields.includes(c)||this.fields.push(c)}),this.steps.includes(l)||(this.steps.push(l),l.node&&this.nodes.push(l.node)),l},addAction(e,t){let a=t?.node;this.nodes.length===0&&(a=p({type:"origin"},this),this.nodes.push(a));const l="serialize"in e?e:b(e,this);if(a){const c=h({sourceNode:a,destinationNode:l,sourceNodeHandle:null},this);this.edges.push(c)}return this.nodes.push(l),l},addConditional(e,t){let a=t?.node;this.nodes.length===0&&(a=p({type:"origin"},this),this.nodes.push(a));const l="serialize"in e?e:g(e,this);if(a){if(!l.node)throw new Error("todo no node");const c=h({sourceNode:a,destinationNode:l.node,sourceNodeHandle:null},this);this.edges.push(c)}return this.conditionals.includes(l)||(this.conditionals.push(l),l.node&&this.nodes.push(l.node)),l},addExperience(e,t){let a=t?.node;this.nodes.length===0&&(a=p({type:"origin"},this),this.nodes.push(a));const l=p({type:"experience",experience:e},this);if(this.nodes.push(l),a){const c=h({sourceNode:a,destinationNode:l,sourceNodeHandle:null},this);this.edges.push(c)}return e},addField(e,t){const a="serialize"in e?e:y(e);return t&&t.fields.push(a),this.fields.includes(a)||this.fields.push(a),a},serialize(){return r.serialize({id:this.id,component:this.component,name:this.name,initializeOpen:this.initializeOpen,condition:this.condition,targets:this.targets,steps:this.steps.map(e=>r.deserialize(e.serialize())),nodes:this.nodes.map(e=>r.deserialize(e.serialize())),edges:this.edges.map(e=>r.deserialize(e.serialize())),conditionals:this.conditionals.map(e=>r.deserialize(e.serialize())),fields:this.fields.map(e=>r.deserialize(e.serialize()))})}}};exports.createConditional=g;exports.createEdge=h;exports.createExperience=x;exports.createExperiencePlugin=N;exports.createField=y;exports.createNode=p;exports.createStep=z;exports.serialization=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("../../../id-BKIWbSTy.cjs"),l={serialize(e){return JSON.stringify(e)},deserialize(e){return JSON.parse(e)}},y=e=>({name:"create-experience",setup:d=>{e.experiences.forEach(o=>{const s=o.serialize(),r=l.deserialize(s);r.component=o.component,d.registerExperience(r),r.fields.forEach(f=>{d.registerField(f)})})}}),z=(e,d)=>({id:p.generateId("node"),experience:d,type:"action",action:e.action,addNext(s){if(!s.node)throw new Error("Cannot connect to node");const r=c({sourceNode:this,destinationNode:s.node,sourceNodeHandle:null},d);d.edges.push(r)},onSuccess(s){if(!s.node)throw new Error("Cannot connect to node");const r=c({sourceNode:this,destinationNode:s.node,sourceNodeHandle:"true"},d);d.edges.push(r)},onFail(s){if(!s.node)throw new Error("Cannot connect to node");const r=c({sourceNode:this,destinationNode:s.node,sourceNodeHandle:"false"},d);d.edges.push(r)},serialize(){return l.serialize({id:this.id,type:this.type,action:this.action})}}),m=e=>({id:e.id??p.generateId("step"),label:e.label,fields:e.fields??[],addField(d){const o="serialize"in d?d:g(d);return this.fields.includes(o)||this.fields.push(o),o}}),b=(e,d)=>{const o={id:e.id??p.generateId("step"),label:e.label,experience:d,fields:e.fields??[],node:null,nextStep(s){return this.experience.addStep(s,this)},nextConditional(s){return this.experience.addConditional(s,this)},addNextExperience(s){return this.experience.addExperience(s,this)},addField(s){return this.experience.addField(s,this)},serialize(){return l.serialize({id:this.id,label:this.label,fieldIds:this.fields.map(s=>s.id)})}};return h({step:o,type:"step"},d),o},h=(e,d)=>{const o={id:p.generateId("node"),experience:d};if(e.type==="step"){const r={...o,type:"step",connectedStep:e.step,serialize(){return l.serialize({id:this.id,type:this.type,stepId:this.connectedStep.id,label:this.connectedStep.label})}};return r.connectedStep.node=r,r}if(e.type==="conditional"){const r={...o,type:"conditional",connectedConditional:e.conditional,serialize(){return l.serialize({id:this.id,type:this.type,conditionalId:this.connectedConditional.id})}};return r.connectedConditional.node=r,r}return e.type==="experience"?{...o,type:"experience",connectedExperience:e.experience,serialize(){return l.serialize({id:this.id,type:this.type,experienceId:this.connectedExperience.id})}}:{...o,type:"origin",serialize(){return l.serialize({id:this.id,type:this.type})}}},c=(e,d)=>({id:p.generateId("edge"),sourceNode:e.sourceNode,sourceNodeHandle:e.sourceNodeHandle,destinationNode:e.destinationNode,experience:d,serialize(){return l.serialize({id:this.id,sourceNodeHandle:this.sourceNodeHandle??void 0,sourceNodeId:this.sourceNode.id,destinationNodeId:this.destinationNode.id})}}),N=(e,d)=>{const o={id:p.generateId("conditional"),label:e.label,condition:e.condition,node:null,experience:d,addTrue(s){if(!this.node||!s.node)throw new Error("todo no node");const r=c({sourceNode:this.node,destinationNode:s.node,sourceNodeHandle:"true"},this.experience);this.experience.edges.push(r)},addFalse(s){if(!this.node||!s.node)throw new Error("todo no node");const r=c({sourceNode:this.node,destinationNode:s.node,sourceNodeHandle:"false"},this.experience);this.experience.edges.push(r)},serialize(){return l.serialize({id:this.id,label:this.label,condition:this.condition})}};return h({conditional:o,type:"conditional"},d),o},g=e=>({id:e.id,name:e.name,type:e.type,label:e.label,placeholder:e.placeholder,description:e.description,helpText:e.helpText,defaultValue:e.defaultValue??null,multiple:e.multiple,validation:e.validation??{},condition:e.condition,required:e.required,options:Array.isArray(e.options)?e.options.map(({id:o,...s})=>({id:o??p.generateId("option"),...s})):e.options??null,dependsOn:e.dependsOn,policies:e.policies,serialize(){const o={id:this.id,name:this.name,label:this.label,placeholder:this.placeholder,required:this.required,description:this.description,helpText:this.helpText,validation:this.validation,condition:this.condition,dependsOn:this.dependsOn,policies:this.policies},s=typeof this.defaultValue=="string"?this.defaultValue:void 0,r=typeof this.defaultValue=="number"?this.defaultValue:void 0,f=typeof this.defaultValue=="boolean"?this.defaultValue:void 0,n=t=>this.options?Array.isArray(this.options)?this.options.map(i=>({id:i.id,label:i.label,description:i.description,value:t(i.value),condition:i.condition})):this.options:null;switch(this.type){case"text":if(this.multiple){let t;if(Array.isArray(this.defaultValue)){t=[];for(const i of this.defaultValue)typeof i=="string"&&t.push(i);t.length===0&&(t=void 0)}return l.serialize({...o,type:"text",multiple:!0,defaultValue:t,options:n(i=>`${i}`)})}return l.serialize({...o,type:"text",multiple:!1,defaultValue:s,options:n(t=>`${t}`)});case"number":if(this.multiple){let t;if(Array.isArray(this.defaultValue)){t=[];for(const i of this.defaultValue)typeof i=="number"&&t.push(i);t.length===0&&(t=void 0)}return l.serialize({...o,type:"number",multiple:!0,defaultValue:t,options:n(i=>Number(i))})}return l.serialize({...o,type:"number",multiple:!1,defaultValue:r,options:n(t=>Number(t))});case"boolean":if(this.multiple){let t;if(Array.isArray(this.defaultValue)){t=[];for(const i of this.defaultValue)typeof i=="boolean"&&t.push(i);t.length===0&&(t=void 0)}return l.serialize({...o,type:"boolean",multiple:!0,defaultValue:t,options:n(i=>!!i)})}return l.serialize({...o,type:"boolean",multiple:!1,defaultValue:f,options:n(t=>!!t)});case"object":return this.multiple?l.serialize({...o,type:"object",multiple:!0,defaultValue:this.defaultValue,options:n(t=>t)}):l.serialize({...o,type:"object",multiple:!1,defaultValue:this.defaultValue,options:n(t=>t)});default:throw new Error("Unsupported field type")}}}),x=e=>{const d=[],o=[],s=[],r=[],f=[];return{id:e.id,component:e.component,name:e.name,initializeOpen:e.initializeOpen,condition:e.condition,targets:e.targets,steps:d,nodes:o,edges:s,fields:f,conditionals:r,addStep(n,t){let i=t?.node;this.nodes.length===0&&(i=h({type:"origin"},this),this.nodes.push(i));const a="serialize"in n?n:b(n,this);if(i){if(!a.node)throw new Error("todo no node");const u=c({sourceNode:i,destinationNode:a.node,sourceNodeHandle:null},this);this.edges.push(u)}return a.fields.length>0&&a.fields.forEach(u=>{this.fields.includes(u)||this.fields.push(u)}),this.steps.includes(a)||(this.steps.push(a),a.node&&this.nodes.push(a.node)),a},addAction(n,t){let i=t?.node;this.nodes.length===0&&(i=h({type:"origin"},this),this.nodes.push(i));const a="serialize"in n?n:z(n,this);if(i){const u=c({sourceNode:i,destinationNode:a,sourceNodeHandle:null},this);this.edges.push(u)}return this.nodes.push(a),a},addConditional(n,t){let i=t?.node;this.nodes.length===0&&(i=h({type:"origin"},this),this.nodes.push(i));const a="serialize"in n?n:N(n,this);if(i){if(!a.node)throw new Error("todo no node");const u=c({sourceNode:i,destinationNode:a.node,sourceNodeHandle:null},this);this.edges.push(u)}return this.conditionals.includes(a)||(this.conditionals.push(a),a.node&&this.nodes.push(a.node)),a},addExperience(n,t){let i=t?.node;this.nodes.length===0&&(i=h({type:"origin"},this),this.nodes.push(i));const a=h({type:"experience",experience:n},this);if(this.nodes.push(a),i){const u=c({sourceNode:i,destinationNode:a,sourceNodeHandle:null},this);this.edges.push(u)}return n},addField(n,t){const i="serialize"in n?n:g(n);return t&&t.fields.push(i),this.fields.includes(i)||this.fields.push(i),i},serialize(){return l.serialize({id:this.id,component:this.component,name:this.name,initializeOpen:this.initializeOpen,condition:this.condition,targets:this.targets,steps:this.steps.map(n=>l.deserialize(n.serialize())),nodes:this.nodes.map(n=>l.deserialize(n.serialize())),edges:this.edges.map(n=>l.deserialize(n.serialize())),conditionals:this.conditionals.map(n=>l.deserialize(n.serialize())),fields:this.fields.map(n=>l.deserialize(n.serialize()))})}}};exports.createConditional=N;exports.createEdge=c;exports.createExperience=x;exports.createExperiencePlugin=y;exports.createField=g;exports.createNode=h;exports.createStep=m;exports.serialization=l;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../../api-Cn-rv5A5.cjs"),a=require("../../../logger-BsmHUUw1.cjs");function g(e){let r=2166136261;for(let n=0;n<e.length;n++)r^=e.charCodeAt(n),r=Math.imul(r,16777619);return r>>>0}function d(e){return g(e)%100}function p(e,r){return r<=0?!1:r>=100?!0:e<r}function h(e){return typeof e!="object"||e===null||!("key"in e&&"name"in e&&"enabled"in e&&"weight"in e&&"version"in e)?!1:typeof e.key=="string"&&typeof e.name=="string"&&typeof e.enabled=="boolean"&&typeof e.weight=="number"&&typeof e.version=="number"}function l(e){return typeof e!="object"||e===null||!("features"in e)||!Array.isArray(e.features)?!1:e.features.every(h)}function y(e){const r=e.searchParams["preview-token"];if(r&&r.length>0)return r[0]}function m(e){const r=new Set,n=e.searchParams.feature;if(!n)return r;for(const o of n){const t=o.indexOf(":");t>0&&r.add(o.substring(0,t))}return r}function c(e,r,n){const o=m(e),t=e.session?.id;if(!t)throw new Error("Session ID is required for feature registration");const i=d(t);for(const s of r.features)o.has(s.key)||v(e,s,n,i)}function v(e,r,n,o){e.registerFeature(r.key,{key:`v${r.version}`,name:r.name,storage:n?"session":"local",decide:()=>r.enabled?p(o,r.weight):!1})}function w(){let e;try{e=__PICKED_PROJECT_CONFIG__}catch{return}if(e===void 0)return;let r;if(typeof e=="string")try{r=JSON.parse(e)}catch{a.logger("warn","Build-time project config is not valid JSON");return}else r=e;if(l(r))return r;a.logger("warn","Build-time project config has invalid shape, falling back to runtime fetch")}function j(e){try{const r=new URL(e).hostname;return r==="localhost"||r==="127.0.0.1"||r==="::1"}catch{return!1}}function b(e){if(typeof e!="object"||e===null||!("cause"in e))return!1;const{cause:r}=e;return typeof r!="object"||r===null||!("code"in r)?!1:r.code==="ECONNREFUSED"}async function u(e,r,n){const o=n?.previewToken?`projects/${r}?preview_token=${encodeURIComponent(n.previewToken)}`:`projects/${r}`;let t;try{t=await f.get(e,o,n?.headers)}catch(s){return j(e)&&b(s)||a.logger("warn","Failed to fetch project config",s),null}if(!t.ok)return a.logger("warn",`Project config request failed with status ${t.status.toString()}`),null;let i;try{i=await t.json()}catch{return a.logger("warn","Failed to parse project config response"),null}return l(i)?i:(a.logger("warn","Invalid project config response shape"),null)}function P(e){return{name:"dynamic-experiences",setup:r=>{const n=e?.apiUrl??r.apiUrl;return{onStart:async()=>{const o=y(r);if(o){const s=await u(n,r.projectId,{previewToken:o});s&&c(r,s,!0);return}const t=e?.projectConfig??w();if(t){c(r,t,!1);return}const i=await u(n,r.projectId);i&&c(r,i,!1)}}}}}exports.createClientHeaders=f.createClientHeaders;exports.dynamicExperiencesPlugin=P;exports.fetchProject=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../../api-CvcUdfN8.cjs"),a=require("../../../logger-BsmHUUw1.cjs");function d(e){let r=2166136261;for(let n=0;n<e.length;n++)r^=e.charCodeAt(n),r=Math.imul(r,16777619);return r>>>0}function g(e){return d(e)%100}function p(e,r){return r<=0?!1:r>=100?!0:e<r}function h(e){return typeof e!="object"||e===null||!("id"in e&&"name"in e&&"enabled"in e&&"weight"in e&&"version"in e)?!1:typeof e.id=="string"&&typeof e.name=="string"&&typeof e.enabled=="boolean"&&typeof e.weight=="number"&&typeof e.version=="number"}function l(e){return typeof e!="object"||e===null||!("features"in e)||!Array.isArray(e.features)?!1:e.features.every(h)}function y(e){const r=e.searchParams["preview-token"];if(r&&r.length>0)return r[0]}function m(e){const r=new Set,n=e.searchParams.feature;if(!n)return r;for(const i of n){const t=i.indexOf(":");t>0&&r.add(i.substring(0,t))}return r}function c(e,r,n){const i=m(e),t=e.session?.id;if(!t)throw new Error("Session ID is required for feature registration");const o=g(t);for(const s of r.features)i.has(s.id)||v(e,s,n,o)}function v(e,r,n,i){e.registerFeature(r.id,{key:`v${r.version}`,name:r.name,storage:n?"session":"local",decide:()=>r.enabled?p(i,r.weight):!1})}function w(){let e;try{e=__PICKED_PROJECT_CONFIG__}catch{return}if(e===void 0)return;let r;if(typeof e=="string")try{r=JSON.parse(e)}catch{a.logger("warn","Build-time project config is not valid JSON");return}else r=e;if(l(r))return r;a.logger("warn","Build-time project config has invalid shape, falling back to runtime fetch")}function j(e){try{const r=new URL(e).hostname;return r==="localhost"||r==="127.0.0.1"||r==="::1"}catch{return!1}}function b(e){if(typeof e!="object"||e===null||!("cause"in e))return!1;const{cause:r}=e;return typeof r!="object"||r===null||!("code"in r)?!1:r.code==="ECONNREFUSED"}async function u(e,r,n){const i=n?.previewToken?`projects/${r}?preview_token=${encodeURIComponent(n.previewToken)}`:`projects/${r}`;let t;try{t=await f.get(e,i,n?.headers)}catch(s){return j(e)&&b(s)||a.logger("warn","Failed to fetch project config",s),null}if(!t.ok)return a.logger("warn",`Project config request failed with status ${t.status.toString()}`),null;let o;try{o=await t.json()}catch{return a.logger("warn","Failed to parse project config response"),null}return l(o)?o:(a.logger("warn","Invalid project config response shape"),null)}function P(e){return{name:"dynamic-experiences",setup:r=>{const n=e?.apiUrl??r.apiUrl;return{onStart:async()=>{const i=y(r);if(i){const s=await u(n,r.projectId,{previewToken:i});s&&c(r,s,!0);return}const t=e?.projectConfig??w();if(t){c(r,t,!1);return}const o=await u(n,r.projectId);o&&c(r,o,!1)}}}}}exports.createClientHeaders=f.createClientHeaders;exports.dynamicExperiencesPlugin=P;exports.fetchProject=u;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),o=require("../../../storage-Be5xWNPC.cjs"),g=require("../../../logger-BsmHUUw1.cjs"),S=({storage:c="local"}={})=>({name:"experience-browser-storage-plugin",setup:s=>{const i=c==="local"?o.localStore:o.sessionStore,a=r.createEffect(async e=>{if(!e){g.logger("warn","No experience instance provided to loadExperienceVisiblityFx.");return}const t=o.createStorageKey("open-close","experience",e),n=i.get(t).boolean();e.setOpen(n??e.isOpenStore.getState())});r.sample({source:s.eventBus,filter:e=>e.type==="experience_initialize"&&"experience"in e,fn:e=>e.experience,target:a});const l=r.createEffect(async e=>{const t=o.createStorageKey("open-close","experience",e),n=e.isOpenStore.getState();i.set(t,n)}),p=e=>r.sample({source:e.isOpenStore,fn:()=>e,target:l});s.experienceInstances.listStore.watch(e=>{e.forEach(t=>p(t))})}});exports.experienceBrowserStoragePlugin=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),o=require("../../../storage-58NoTSsc.cjs"),g=require("../../../logger-BsmHUUw1.cjs"),S=({storage:c="local"}={})=>({name:"experience-browser-storage-plugin",setup:s=>{const i=c==="local"?o.localStore:o.sessionStore,a=r.createEffect(async e=>{if(!e){g.logger("warn","No experience instance provided to loadExperienceVisiblityFx.");return}const t=o.createStorageKey("open-close","experience",e),n=i.get(t).boolean();e.setOpen(n??e.isOpenStore.getState())});r.sample({source:s.eventBus,filter:e=>e.type==="experience_initialize"&&"experience"in e,fn:e=>e.experience,target:a});const l=r.createEffect(async e=>{const t=o.createStorageKey("open-close","experience",e),n=e.isOpenStore.getState();i.set(t,n)}),p=e=>r.sample({source:e.isOpenStore,fn:()=>e,target:l});s.experienceInstances.listStore.watch(e=>{e.forEach(t=>p(t))})}});exports.experienceBrowserStoragePlugin=S;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("effector"),o=require("../../../storage-Be5xWNPC.cjs"),a=o.createStorageKey("history","global"),l=({storage:i="local"}={})=>({name:"history-browser-storage-plugin",setup:r=>{const s=i==="local"?o.localStore:o.sessionStore,n=t.createEffect(async()=>{const e=s.get(a).json();e&&r.history.restore({entries:e})}),c=t.createEffect(async e=>{s.set(a,e)});t.sample({source:r.eventBus,filter:e=>e.type==="load",target:n}),t.sample({source:r.history.entriesStore,target:c})}});exports.historyBrowserStoragePlugin=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("effector"),o=require("../../../storage-58NoTSsc.cjs"),a=o.createStorageKey("history","global"),l=({storage:i="local"}={})=>({name:"history-browser-storage-plugin",setup:r=>{const s=i==="local"?o.localStore:o.sessionStore,n=t.createEffect(async()=>{const e=s.get(a).json();e&&r.history.restore({entries:e})}),c=t.createEffect(async e=>{s.set(a,e)});t.sample({source:r.eventBus,filter:e=>e.type==="load",target:n}),t.sample({source:r.history.entriesStore,target:c})}});exports.historyBrowserStoragePlugin=l;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("effector"),c=require("../../../storage-Be5xWNPC.cjs"),u=require("../../../to-kebab-case-BsOQ8CON.cjs"),p=c.createStorageKey("responses","global"),g=(a,e)=>{const o={};return Object.entries(a).forEach(([t,l])=>{!e.find(r=>(r.key??u.toKebabCase(r.name))===t)?.policies?.doNotStoreValue&&(o[t]=l)}),o},f=({storage:a="local"}={})=>({name:"responses-browser-storage-plugin",setup:e=>{const o=a==="local"?c.localStore:c.sessionStore,t=n.createEffect(async()=>{const s=o.get(p).json();if(!s)return null;e.responses.register(s)}),l=n.attach({source:{responses:e.responses.getAllStore,fields:e.fields.listStore},effect:({responses:s,fields:i})=>{const r=g(s,i);o.set(p,r)}});n.sample({source:e.eventBus,filter:s=>s.type==="load",target:t}),n.sample({source:e.responses.getAllStore,target:l})}});exports.responsesBrowserStoragePlugin=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("effector"),c=require("../../../storage-58NoTSsc.cjs"),p=c.createStorageKey("responses","global"),u=(n,e)=>{const o={};return Object.entries(n).forEach(([r,l])=>{!e.find(a=>a.id===r)?.policies?.doNotStoreValue&&(o[r]=l)}),o},g=({storage:n="local"}={})=>({name:"responses-browser-storage-plugin",setup:e=>{const o=n==="local"?c.localStore:c.sessionStore,r=t.createEffect(async()=>{const s=o.get(p).json();if(!s)return null;e.responses.register(s)}),l=t.attach({source:{responses:e.responses.getAllStore,fields:e.fields.listStore},effect:({responses:s,fields:i})=>{const a=u(s,i);o.set(p,a)}});t.sample({source:e.eventBus,filter:s=>s.type==="load",target:r}),t.sample({source:e.responses.getAllStore,target:l})}});exports.responsesBrowserStoragePlugin=g;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("effector"),w="picked";async function d(r){const{storeName:o,version:c=1,keyPath:n="id"}=r;return new Promise((a,t)=>{const e=indexedDB.open(w,c);e.onupgradeneeded=()=>{const s=e.result;s.objectStoreNames.contains(o)||s.createObjectStore(o,n?{keyPath:n}:void 0)},e.onsuccess=()=>a(e.result),e.onerror=()=>t(new Error(e.error?.message))})}async function g(r,o){return new Promise((c,n)=>{const e=r.transaction(o,"readonly").objectStore(o).getAll();e.onsuccess=()=>c(e.result),e.onerror=()=>n(new Error(e.error?.message))})}async function x(r,o,c){return new Promise((n,a)=>{const s=r.transaction(o,"readwrite").objectStore(o).put(c);s.onsuccess=()=>n(),s.onerror=()=>a(new Error(s.error?.message))})}async function y(r,o,c){return new Promise((n,a)=>{const s=r.transaction(o,"readwrite").objectStore(o).delete(c);s.onsuccess=()=>n(),s.onerror=()=>a(new Error(s.error?.message))})}async function b(r,o){return new Promise((c,n)=>{const e=r.transaction(o,"readwrite").objectStore(o).clear();e.onsuccess=()=>c(),e.onerror=()=>n(new Error(e.error?.message))})}const u="responses",p={storeName:u,keyPath:"fieldId"},E=()=>({name:"responses-indexdb-plugin",setup:r=>{const o=i.createEffect(async()=>{const t=await d(p),s=(await g(t,u)).reduce((l,{fieldId:f,value:m})=>(l[f]=m,l),{});await r.responses.commit(s)}),c=i.createEffect(async t=>{t.forEach(e=>{d(p).then(s=>{x(s,u,e)}).catch(s=>{console.error("Failed to store response in IndexedDB:",s)})})}),n=i.createEffect(async()=>{const t=await d(p);await b(t,u)}),a=i.createEffect(async t=>{const e=await d(p);await y(e,u,t)});i.sample({source:r.eventBus,filter:t=>t.type==="load",target:o}),i.sample({clock:r.responses.listStore,source:{responses:r.responses.listStore,fields:r.fields.listStore},fn:({responses:t,fields:e})=>{const s=e.filter(l=>!l.policies?.doNotStoreValue);return t.filter(l=>s.some(f=>f.key===l.fieldId))},target:c}),i.sample({clock:r.responses.clearAll,target:n}),i.sample({clock:r.responses.clear,target:a})}});exports.responsesIndexedDBPlugin=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("effector"),w="picked";async function d(s){const{storeName:r,version:c=1,keyPath:n="id"}=s;return new Promise((a,t)=>{const e=indexedDB.open(w,c);e.onupgradeneeded=()=>{const o=e.result;o.objectStoreNames.contains(r)||o.createObjectStore(r,n?{keyPath:n}:void 0)},e.onsuccess=()=>a(e.result),e.onerror=()=>t(new Error(e.error?.message))})}async function g(s,r){return new Promise((c,n)=>{const e=s.transaction(r,"readonly").objectStore(r).getAll();e.onsuccess=()=>c(e.result),e.onerror=()=>n(new Error(e.error?.message))})}async function x(s,r,c){return new Promise((n,a)=>{const o=s.transaction(r,"readwrite").objectStore(r).put(c);o.onsuccess=()=>n(),o.onerror=()=>a(new Error(o.error?.message))})}async function y(s,r,c){return new Promise((n,a)=>{const o=s.transaction(r,"readwrite").objectStore(r).delete(c);o.onsuccess=()=>n(),o.onerror=()=>a(new Error(o.error?.message))})}async function S(s,r){return new Promise((c,n)=>{const e=s.transaction(r,"readwrite").objectStore(r).clear();e.onsuccess=()=>c(),e.onerror=()=>n(new Error(e.error?.message))})}const u="responses",p={storeName:u,keyPath:"fieldId"},b=()=>({name:"responses-indexdb-plugin",setup:s=>{const r=l.createEffect(async()=>{const t=await d(p),o=(await g(t,u)).reduce((i,{fieldId:f,value:m})=>(i[f]=m,i),{});await s.responses.commit(o)}),c=l.createEffect(async t=>{await Promise.allSettled(t.map(async e=>{const o=await d(p);await x(o,u,e)}))}),n=l.createEffect(async()=>{const t=await d(p);await S(t,u)}),a=l.createEffect(async t=>{const e=await d(p);await y(e,u,t)});l.sample({source:s.eventBus,filter:t=>t.type==="load",target:r}),l.sample({clock:s.responses.listStore,source:{responses:s.responses.listStore,fields:s.fields.listStore},fn:({responses:t,fields:e})=>{const o=new Set(e.filter(i=>!i.policies?.doNotStoreValue).map(i=>i.id));return t.filter(i=>o.has(i.fieldId))},target:c}),l.sample({clock:s.responses.clearAll,target:n}),l.sample({clock:s.responses.clear,target:a})}});exports.responsesIndexedDBPlugin=b;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../supports-YvpQZxbh.cjs"),c=require("../../../object-BbFTsGh3.cjs"),o=i.GLOBAL_OBJ;let s;const l=n=>({name:"single-page-app",setup:r=>{n.instrumentHistory&&i.supportsWindow()&&f(()=>{requestAnimationFrame(()=>{r.start()})})}});function f(n){if(o.addEventListener("popstate",()=>{const e=o.location.href,t=s;s=e,t!==e&&n()}),!i.supportsHistory())return;function r(e){return function(...t){const p=t.length>2?t[2]:void 0;if(p){const a=s,u=String(p);if(s=u,a===u)return e.apply(this,t);n()}return e.apply(this,t)}}c.patchMethod(o.history,"pushState",r),c.patchMethod(o.history,"replaceState",r)}exports.singlePageAppPlugin=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../supports-YvpQZxbh.cjs"),a=require("../../../object-mwaxtjLG.cjs"),r=i.GLOBAL_OBJ;let n;const f=s=>({name:"single-page-app",setup:e=>{i.supportsWindow()&&h(()=>{requestAnimationFrame(()=>{e.start()})})}});function h(s){if(r.addEventListener("popstate",()=>{const t=r.location.href,p=n;n=t,p!==t&&s()}),!i.supportsHistory())return;function e(t){return function(...o){const u=o.length>2?o[2]:void 0;if(u){const l=n,c=String(u);if(n=c,l===c)return t.apply(this,o);s()}return t.apply(this,o)}}a.patchMethod(r.history,"pushState",e),a.patchMethod(r.history,"replaceState",e)}exports.singlePageAppPlugin=f;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-BsXG5XJ4.cjs");function S(){let c,i;return{promise:new Promise((t,o)=>{c=t,i=o}),resolve:t=>c(t),reject:t=>i(t)}}function C(c,i){const{promise:E,resolve:t}=S(),o=r.createEvent(),s=r.createEvent(),l=r.createEvent(),x=r.createEvent(),p=r.createEvent(),f=c.experiences.listStore.map(e=>e.map(n=>k.createExperienceInstance({client:c,experience:n}))),a=r.createStore({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),u=r.createEffect(async({experience:e,availableRenderers:n,startRendererIndex:v=0})=>{if(!e)return null;for(let d=v;d<n.length;d++){const g=n[d],m=e.componentStore.getState();if(m&&g?.isValidComponent(m.component))return{rendered:await g.render(m.component,c,e),rendererIndex:d}}return null});a.on(l,(e,n)=>({...e,renderedExperiences:[...e.renderedExperiences,n],currentExperienceIndex:e.currentExperienceIndex+1})).on(p,e=>({...e,currentExperienceIndex:e.currentExperienceIndex+1})).on(x,e=>({...e,isComplete:!0})).reset(o),r.sample({clock:o,target:s}),r.sample({clock:s,source:{experiences:f,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex<e.length&&!n.isComplete,fn:({experiences:e,state:n})=>({experience:e[n.currentExperienceIndex],availableRenderers:i,startRendererIndex:0}),target:u}),r.sample({clock:u.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),r.sample({clock:l,target:s}),r.sample({clock:u.doneData,filter:e=>e===null,target:p}),r.sample({clock:p,target:s}),r.sample({clock:[s,p,l],source:{experiences:f,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex>=e.length,target:x});const I=r.attach({source:a,effect:e=>{e.isComplete&&t(e.renderedExperiences)}});return r.sample({clock:x,target:I}),o(),E}exports.render=C;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),k=require("../../experience-instance-BX0aqKsC.cjs");function S(){let c,i;return{promise:new Promise((t,o)=>{c=t,i=o}),resolve:t=>c(t),reject:t=>i(t)}}function C(c,i){const{promise:E,resolve:t}=S(),o=r.createEvent(),s=r.createEvent(),l=r.createEvent(),x=r.createEvent(),p=r.createEvent(),f=c.experiences.listStore.map(e=>e.map(n=>k.createExperienceInstance({client:c,experience:n}))),a=r.createStore({currentExperienceIndex:0,renderedExperiences:[],isComplete:!1}),u=r.createEffect(async({experience:e,availableRenderers:n,startRendererIndex:v=0})=>{if(!e)return null;for(let d=v;d<n.length;d++){const g=n[d],m=e.componentStore.getState();if(m&&g?.isValidComponent(m.component))return{rendered:await g.render(m.component,c,e),rendererIndex:d}}return null});a.on(l,(e,n)=>({...e,renderedExperiences:[...e.renderedExperiences,n],currentExperienceIndex:e.currentExperienceIndex+1})).on(p,e=>({...e,currentExperienceIndex:e.currentExperienceIndex+1})).on(x,e=>({...e,isComplete:!0})).reset(o),r.sample({clock:o,target:s}),r.sample({clock:s,source:{experiences:f,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex<e.length&&!n.isComplete,fn:({experiences:e,state:n})=>({experience:e[n.currentExperienceIndex],availableRenderers:i,startRendererIndex:0}),target:u}),r.sample({clock:u.doneData,filter:e=>e!==null,fn:e=>e.rendered.body,target:l}),r.sample({clock:l,target:s}),r.sample({clock:u.doneData,filter:e=>e===null,target:p}),r.sample({clock:p,target:s}),r.sample({clock:[s,p,l],source:{experiences:f,state:a},filter:({experiences:e,state:n})=>n.currentExperienceIndex>=e.length,target:x});const I=r.attach({source:a,effect:e=>{e.isComplete&&t(e.renderedExperiences)}});return r.sample({clock:x,target:I}),o(),E}exports.render=C;