@picked/client 0.0.1-dev.1770181472896 → 0.0.1-dev.1770759602712

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("effector"),S=require("@withease/factories"),I=require("../experience-instance-D8RtqKEZ.cjs"),F=require("../logger-BsmHUUw1.cjs"),k=require("../storage-Be5xWNPC.cjs"),_=require("../id-BKIWbSTy.cjs"),q=require("../object-BbFTsGh3.cjs"),v=require("../supports-YvpQZxbh.cjs"),z=f.createDomain("experience"),K=S.createFactory(({client:t,experience:e})=>{const r=z.store(e),n=f.createApi(r,{merge(p,h){return{...p,...h.experience}}}),i=r.map(p=>({name:p.name,decisionLogic:p.condition??p.decide,targetSelectors:p.targets,initializeOpenLogic:e.initializeOpen})),c=t.components.listStore.map(p=>p.find(h=>h.name===`experience:${e.id}`)||p.find(h=>h.name==="experience"),{skipVoid:!1}),o=r.map(p=>({steps:p.steps,nodes:p.nodes,edges:p.edges,conditionals:p.conditionals})),s=r.map(p=>p.fields),d=e.actions??[];return{id:e.id,configStore:i,treeStore:o,fieldsStore:s,componentStore:c,actions:d,merge:n.merge}});function W(t){return S.invoke(K,t)}const H=S.createFactory(({client:t})=>{const e=z.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.id]:s}}});function n(o){const s=e.getState()[o.id];if(s){s.merge({experience:o,strategy:"override"});return}const d=W({client:t,experience:o});r.register(d)}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getById:c,listStore:i}});function G(t){return S.invoke(H,t)}const Y=(t,e)=>{e.register(t)},U=(t,e)=>{const{targetSelectors:r}=e.configStore.getState(),n=I.getTargetElements(r,e.id);n.forEach(({elements:c})=>c.forEach(o=>I.tagTargetElement(o,e.id))),I.createAppHosts(n,e.id).forEach(c=>{t.experienceInstances.spawn(e,c)})},B=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await J(t,e)&&U(t,e)}))},J=async(t,e)=>{const{decisionLogic:r,targetSelectors:n}=e.configStore.getState();return I.getTargetElements(n,e.id).length<1||n.length===0?!1:r&&I.isRulesLogic(r)?await I.evaluateRuleLogic(t,r)===!0:!0},Q=(t,e,r)=>{const n=e.name,i=e.setup(t);if(i){const c=r[n]??{};r[n]=Object.freeze({...c,...i})}},X=f.createDomain("component"),Z=S.createFactory(({client:t,component:e,name:r})=>{const n=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:n}});function ee(t){return S.invoke(Z,t)}const te=S.createFactory(({client:t})=>{const e=X.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.name]:s}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Component '${o}' already registered. Registering again will override the previous registration.`);const p=ee({client:t,name:o,component:s});r.register(p)}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:c,listStore:i}});function re(t){return S.invoke(te,t)}const D=(t,e,r)=>{r.register(t,e)},ne=f.createDomain("framework"),se=S.createFactory(({client:t})=>{const e=ne.store({}),r=f.createApi(e,{register(o,s){return{...o,[s.name]:s.framework}}});function n(o,s){e.getState()[o]&&F.logger("warn",`Framework '${o}' already registered. Registering again will override the previous registration.`),r.register({name:o,framework:s})}const i=e.map(o=>Object.values(o));function c(o){return e.map(s=>s[o],{skipVoid:!1})}return{register:n,getByName:c,listStore:i}});function ie(t){return S.invoke(se,t)}const oe=(t,e)=>{e.register(t.name,t)},ae=6e3,ce=k.createStorageKey("last_ping","global"),ue=t=>`${t}/api/v1/ping`,de=async t=>{try{const e=Date.now(),r=k.localStore.get(ce);let n=0;if(r.isSet()&&(n=r.json()??0),n&&e-n<ae)return!0;const i=ue(t.apiUrl),c={projectId:t.projectId,path:window.location.pathname},o=JSON.stringify(c),s={"Content-Type":"application/json"},p=document.getElementById("picked_script")?.dataset.verceltoken;p&&(s["x-vercel-protection-bypass"]=p);const b=(await fetch(i,{method:"POST",headers:s,body:o})).ok;return b&&r.set(e),b}catch(e){return F.logger("error",e),!1}};function L(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 le=f.createDomain("predicate"),pe=S.createFactory(({client:t})=>{const e=le.store({}),r=f.createApi(e,{register(s,d){return{...s,[d.name]:{name:d.name,predicate:d.predicate}}}});function n(s,d){e.getState()[s]&&F.logger("warn",`Predicate '${s}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:s,predicate:d}))}const i=e.map(s=>Object.values(s));function c(s){return e.map(d=>d[s]?.predicate,{skipVoid:!1})}function o(s){const d=f.createStore(()=>{},{skipVoid:!1}),p=f.createEffect(async()=>{const h=c(s).getState();if(!h)return;const b=L(t);return(...m)=>h({...b,args:m})});return f.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:p}),f.sample({clock:p.doneData,filter:h=>h!==void 0,target:d}),p(),d}return{register:n,getByName:c,listStore:i,getEvokablePredicate:o}});function ge(t){return S.invoke(pe,t)}const fe=(t,e,r)=>{r.register(t,e)},C=f.createDomain("feature"),me=S.createFactory(({client:t})=>{const e=C.store({}),r=C.store([]),n=f.createApi(e,{register(a,u){return{...a,[u.id]:u.feature}}});function i(a,u){e.getState()[a]&&F.logger("warn",`Feature '${a}' already registered. Registering again will override the previous registration.`);const l={id:a,feature:{...u,id:a}};n.register(Object.freeze({id:a,feature:l}))}const c=f.createEffect(async({id:a,key:u,storage:g="local"})=>{const l=k.createStorageKey(`feature:${a}:${u}`,"global"),w=(g==="session"?k.sessionStore:k.localStore).get(l).boolean();return w===null?null:{id:a,key:u,bucket:w,storage:g}}),o=f.createEffect(a=>{if(!a)return null;const u=k.createStorageKey(`feature:${a.id}:${a.key}`,"global");(a.storage==="session"?k.sessionStore:k.localStore).set(u,a.bucket)}),s=new Map,d=f.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:a,resolvedFeaturesStore:u},{id:g,decide:l,key:y})=>{const w=u.find(R=>R.id===g&&R.key===y);if(w)return w;const E=a[g];if(!E)throw new Error(`Feature with id '${g}' not found`);const j=s.get(`${g}:${y}`);if(j!==void 0){const R=await j;return{id:E.id,bucket:R,key:y,storage:E.feature.storage}}const P=l();s.set(`${g}:${y}`,P);const T=await P;return{id:E.id,bucket:T,key:y,storage:E.feature.storage}}});f.sample({clock:n.register,fn:a=>{const{id:u,feature:g}=a;return{id:u,key:g.feature.key,storage:g.feature.storage}},target:c}),f.sample({source:e,clock:d.doneData,fn:(a,u)=>{const{id:g,bucket:l,storage:y}=u,w=a[g]?.feature.key;return w?{key:w,id:g,bucket:l,storage:y}:null},target:o});const p=f.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:a,resolvedFeaturesStore:u})=>Object.values(a).map(g=>{const l=u.find(y=>y.id===g.id&&y.key===g.feature.key);return l?{id:g.id,name:g.feature.name,key:g.feature.key,getBucket:()=>({id:g.id,bucket:l.bucket}),isResolved:!0}:{id:g.id,name:g.feature.name,key:g.feature.key,getBucket:async()=>await d(g.feature),isResolved:!1}}));f.sample({clock:d.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:a},{id:u,key:g})=>!a.some(y=>y.id===u&&y.key===g),fn:(a,u)=>u,target:t.eventBus.prepend(a=>({type:"feature_decide",feature:a}))}),f.sample({clock:[c.doneData,d.doneData],source:r,fn:(a,u)=>!u||a.some(l=>l.id===u.id&&l.key===u.key)?a:[...a,u],target:r});function h(a){return p.map(u=>u.find(g=>g.id===a))}function b(a){return e.map(u=>u[a],{skipVoid:!1})}function m(a){const u=f.createStore(async()=>{},{skipVoid:!1}),g=f.createEffect(async()=>{const l=h(a).getState();if(l)return async()=>(await l.getBucket()).bucket});return f.sample({source:r,filter:l=>l.some(y=>y.id===a),target:g}),f.sample({clock:g.doneData,filter:l=>l!==void 0,target:u}),g(),u}return{register:i,getById:h,getByName:b,listStore:p,getEvokableFeature:m}});function ye(t){return S.invoke(me,t)}const he=(t,e,r)=>{r.register(t,e)},x=f.createDomain("history");function $(t,e){return{id:_.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const Se=S.createFactory(()=>{const t=x.store({entries:[]}),e=x.event(),r=x.event(),n=x.event(),i=x.event();t.on(e,(o,s)=>({entries:[...o.entries,$(s.experienceId,s.node)]})),t.on(r,(o,s)=>({entries:[...o.entries.slice(0,-1),$(s.experienceId,s.node)]})),t.on(i,(o,s)=>s);function c(o,s){const d={lastStepIndex:-1,secondLastStepIndex:-1};for(let p=o.length-1;p>=0;p--){const h=o[p],b=h?.node;if(!(!b||!I.isStepNode(b))&&!(s&&h?.experienceId!==s))if(d.lastStepIndex===-1)d.lastStepIndex=p;else{d.secondLastStepIndex=p;break}}return d}return t.on(n,(o,s)=>{const{secondLastStepIndex:d}=c(o.entries,s.experienceId),p=d!==-1?o.entries.slice(0,d+1):o.entries;return{...o,entries:p}}),{push:e,replace:r,back:n,restore:i,entriesStore:t.map(o=>o.entries)}});function ve(){return S.invoke(Se)}const ke=()=>f.createEvent(),we=f.createDomain("field"),Ie=S.createFactory(()=>{const t=we.store({}),e=f.createApi(t,{register(s,d){return{...s,[d.field.id]:d.field}}});function r(s){e.register({field:s})}function n(s,d){const p=c(s).getState();if(!p)return;const h=Object.assign({},p,{...d});e.register({field:{...h}})}const i=t.map(s=>Object.values(s));function c(s){return t.map(d=>d[s]||null)}function o(s){return t.map(d=>Object.values(d).find(p=>p.name===s)||null)}return{register:r,update:n,getById:c,listStore:i,getByName:o}});function be(){return S.invoke(Ie)}const Fe=(t,e)=>{e.register(t)},Ee=f.createDomain("action"),je=S.createFactory(()=>{const t=Ee.store({}),e=f.createApi(t,{register(o,s){return{...o,[s.name]:{name:s.name,action:s.action}}}});function r(o,s){e.register({name:o,action:s})}const n=t.map(o=>Object.values(o));function i(o){return t.map(s=>s[o],{skipVoid:!1})}function c(o){return t.map(s=>{const d=s[o];return d?d.action:void 0},{skipVoid:!1})}return{register:r,getByName:i,listStore:n,getEvokableAction:c}});function xe(){return S.invoke(je)}const Re=(t,e,r)=>{r.register(t,e)};function O(t){return typeof t>"u"||t===null||t===""||Array.isArray(t)&&!t.length}const Ae=f.createDomain("response"),Pe=S.createFactory(({client:t})=>{const e=Ae.store({}),r=f.createEvent(),n=f.createEvent(),i=f.createApi(e,{register(m,a){return{...m,[a.fieldId]:a.response}},registerBatch(m,a){return{...m,...a}},clear(m,a){const{[a]:u,...g}=m;return g},clearAll(){return{}}});function c(m,a){if(typeof m=="string"){if(a===void 0)throw new Error("Response is required when registering a single field");i.register({fieldId:m,response:a})}else i.registerBatch(m)}async function o(m){const a=[];return await Promise.allSettled(Object.entries(m).map(async([u,g])=>{let l=g;const y=t.fields.getById(u).getState();if(!y){a.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:l});return}if(y.multiple&&(typeof l=="string"||typeof l=="number"||typeof l=="boolean")&&(l=[l]),y.validation&&!q.isEmpty(y.validation)&&!O(l)){const w=await I.evaluateRuleLogic(t,y.validation,{$input:l});if(typeof w=="string"){a.push({fieldId:u,userMessage:w,systemMessage:`Field validation resulted in an error: ${w}.`,value:l});return}if(w===!1){a.push({fieldId:u,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:l});return}}if(y.required&&O(l)){a.push({fieldId:u,userMessage:"This field is required",systemMessage:"Field is required.",value:l});return}if(!y.multiple&&Array.isArray(l)&&l.length>1){a.push({fieldId:u,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:l});return}if(y.options){const w=y.options.map(j=>j.value),E=Array.isArray(l)?l:[l];Array.isArray(l)&&(E.every(j=>w.includes(j))||a.push({fieldId:u,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${w.join(", ")}`,value:l}))}})),{responsesToCommit:m,validationErrors:a}}async function s(m){const{responsesToCommit:a,validationErrors:u}=await o(m);return u.length?{errors:u}:(i.registerBatch(a),{errors:[]})}const d=e.map(m=>m),p=e.map(m=>Object.keys(m).map(u=>({fieldId:u,value:m[u]})));function h(m){const a=t.fields.getById(m),u=e.map(g=>g[m]||null);return f.combine({f:a,r:u},({f:g,r:l})=>l||(g?.defaultValue?g.defaultValue:null))}function b(m){const a=t.fields.getByName(m);return f.combine({f:a,s:e},({f:u,s:g})=>{const l=u&&g[u.id]||null;return l||(u?.defaultValue?u.defaultValue:null)})}return f.sample({clock:r,target:i.clearAll}),f.sample({clock:n,target:i.clear}),{register:c,clearAll:r,clear:n,commit:s,getResponsesToCommit:o,listStore:p,getAllStore:d,getByFieldId:h,getByFieldName:b}});function Be(t){return S.invoke(Pe,t)}const De=()=>"0.0.1-dev.1770181472896";function Ce(){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 $e(){if(!v.supportsWindow())return{};const t=new URLSearchParams(window.location.search),e={},r=new Set;for(const[i]of t.entries())i.startsWith("picked-")&&r.add(i);for(const i of r){const c=i.replace("picked-","");e[c]=t.getAll(i)}const n=k.createStorageKey("s");if(r.size>0)k.sessionStore.set(n,e);else{const i=k.sessionStore.get(n);if(i)return i.json()||{}}return e}function Oe(){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),n=Math.random().toString(36).substring(2,15);return`${t}-${e}-${r}-${n}`}const ze=k.createStorageKey("session","global"),Ue=()=>{const t=k.localStore.get(ze);let e;t.isSet()&&(e=t.json());const r=i=>t.set({id:i.id,isUser:i.isUser,identifiers:i.identifiers}),n={id:e?.id??Oe(),isUser:e?.isUser??void 0,identifiers:e?.identifiers??void 0,setIsUser(i){this.isUser=i,r(this)},setIdentifier(i,c){this.identifiers={...this.identifiers,[i]:c},r(this)},removeIdentifier(i){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([c])=>c!==i)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(n),n},Le=()=>v.supportsLocalStorage()?Ue():null;function V(){if(v.supportsWindow())return globalThis.window.pickedConfig}function Ve(){if(!v.supportsWindow())return;const t=V(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Me(){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 Ne(t){const{organizationId:e,projectId:r}=t;if(e&&r)return{organizationId:e,projectId:r};const n=Ve();if(n)return n;const i=Me();if(i)return i;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"),b=require("../experience-instance-D8RtqKEZ.cjs"),E=require("../logger-BsmHUUw1.cjs"),w=require("../storage-Be5xWNPC.cjs"),q=require("../id-BKIWbSTy.cjs"),K=require("../object-BbFTsGh3.cjs"),k=require("../supports-YvpQZxbh.cjs"),M=g.createDomain("experience"),J=S.createFactory(({client:t,experience:e})=>{const r=M.store(e),s=g.createApi(r,{merge(d,h){return{...d,...h.experience}}}),n=r.map(d=>({name:d.name,decisionLogic:d.condition??d.decide,targetSelectors:d.targets,initializeOpenLogic:e.initializeOpen})),l=t.components.listStore.map(d=>d.find(h=>h.name===`experience:${e.id}`)||d.find(h=>h.name==="experience"),{skipVoid:!1}),a=r.map(d=>({steps:d.steps,nodes:d.nodes,edges:d.edges,conditionals:d.conditionals})),i=r.map(d=>d.fields),p=e.actions??[];return{id:e.id,configStore:n,treeStore:a,fieldsStore:i,componentStore:l,actions:p,merge:s.merge}});function W(t){return S.invoke(J,t)}const H=S.createFactory(({client:t})=>{const e=M.store({}),r=g.createApi(e,{register(a,i){return{...a,[i.id]:i}}});function s(a){const i=e.getState()[a.id];if(i){i.merge({experience:a,strategy:"override"});return}const p=W({client:t,experience:a});r.register(p)}const n=e.map(a=>Object.values(a));function l(a){return e.map(i=>i[a],{skipVoid:!1})}return{register:s,getById:l,listStore:n}});function G(t){return S.invoke(H,t)}const Y=(t,e)=>{e.register(t)},V=(t,e)=>{const{targetSelectors:r}=e.configStore.getState(),s=b.getTargetElements(r,e.id);s.forEach(({elements:l})=>l.forEach(a=>b.tagTargetElement(a,e.id))),b.createAppHosts(s,e.id).forEach(l=>{t.experienceInstances.spawn(e,l)})},D=async t=>{await Promise.all(t.experiences.listStore.getState().map(async e=>{await Q(t,e)&&V(t,e)}))},Q=async(t,e)=>{const{decisionLogic:r,targetSelectors:s}=e.configStore.getState();return b.getTargetElements(s,e.id).length<1||s.length===0?!1:r&&b.isRulesLogic(r)?await b.evaluateRuleLogic(t,r)===!0:!0},X=(t,e,r)=>{const s=e.name,n=e.setup(t);if(n){const l=r[s]??{};r[s]=Object.freeze({...l,...n})}},Z=g.createDomain("component"),ee=S.createFactory(({client:t,component:e,name:r})=>{const s=t.frameworks.getByName(e.frameworkName);return{name:r,component:e,frameworkStore:s}});function te(t){return S.invoke(ee,t)}const re=S.createFactory(({client:t})=>{const e=Z.store({}),r=g.createApi(e,{register(a,i){return{...a,[i.name]:i}}});function s(a,i){e.getState()[a]&&E.logger("warn",`Component '${a}' already registered. Registering again will override the previous registration.`);const d=te({client:t,name:a,component:i});r.register(d)}const n=e.map(a=>Object.values(a));function l(a){return e.map(i=>i[a],{skipVoid:!1})}return{register:s,getByName:l,listStore:n}});function se(t){return S.invoke(re,t)}const C=(t,e,r)=>{r.register(t,e)},ne=g.createDomain("framework"),ie=S.createFactory(({client:t})=>{const e=ne.store({}),r=g.createApi(e,{register(a,i){return{...a,[i.name]:i.framework}}});function s(a,i){e.getState()[a]&&E.logger("warn",`Framework '${a}' already registered. Registering again will override the previous registration.`),r.register({name:a,framework:i})}const n=e.map(a=>Object.values(a));function l(a){return e.map(i=>i[a],{skipVoid:!1})}return{register:s,getByName:l,listStore:n}});function oe(t){return S.invoke(ie,t)}const ae=(t,e)=>{e.register(t.name,t)},ce=6e3,ue=w.createStorageKey("last_ping","global"),le=t=>`${t}/api/v1/ping`,de=async t=>{try{const e=Date.now(),r=w.localStore.get(ue);let s=0;if(r.isSet()&&(s=r.json()??0),s&&e-s<ce)return!0;const n=le(t.apiUrl),l={projectId:t.projectId,path:window.location.pathname},a=JSON.stringify(l),i={"Content-Type":"application/json"},d=document.getElementById("picked_script")?.dataset.verceltoken;d&&(i["x-vercel-protection-bypass"]=d);const I=(await fetch(n,{method:"POST",headers:i,body:a})).ok;return I&&r.set(e),I}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(i,p){return{...i,[p.name]:{name:p.name,predicate:p.predicate}}}});function s(i,p){e.getState()[i]&&E.logger("warn",`Predicate '${i}' already registered. Registering again will override the previous registration.`),r.register(Object.freeze({name:i,predicate:p}))}const n=e.map(i=>Object.values(i));function l(i){return e.map(p=>p[i]?.predicate,{skipVoid:!1})}function a(i){const p=g.createStore(()=>{},{skipVoid:!1}),d=g.createEffect(async()=>{const h=l(i).getState();if(!h)return;const I=T(t);return(...y)=>h({...I,args:y})});return g.sample({source:{responses:t.responses.listStore,fields:t.fields.listStore},target:d}),g.sample({clock:d.doneData,filter:h=>h!==void 0,target:p}),d(),p}return{register:s,getByName:l,listStore:n,getEvokablePredicate:a}});function ge(t){return S.invoke(fe,t)}const me=(t,e,r)=>{r.register(t,e)},$=g.createDomain("feature"),ye=S.createFactory(({client:t})=>{const e=$.store({}),r=$.store([]),s=g.createApi(e,{register(o,c){return{...o,[c.id]:c.feature}}});function n(o,c){e.getState()[o]&&E.logger("warn",`Feature '${o}' already registered. Registering again will override the previous registration.`);const u={id:o,feature:{...c,id:o}};s.register(Object.freeze({id:o,feature:u}))}const l=g.createEffect(async({id:o,key:c,storage:f="local"})=>{const u=w.createStorageKey(`feature:${o}:${c}`,"global"),v=(f==="session"?w.sessionStore:w.localStore).get(u).boolean();return v===null?null:{id:o,key:c,bucket:v,storage:f}}),a=g.createEffect(o=>{if(!o)return null;const c=w.createStorageKey(`feature:${o.id}:${o.key}`,"global");(o.storage==="session"?w.sessionStore:w.localStore).set(c,o.bucket)}),i=new Map,p=g.attach({source:{allFeaturesStore:e,resolvedFeaturesStore:r},effect:async({allFeaturesStore:o,resolvedFeaturesStore:c},{id:f,decide:u,key:m})=>{const v=c.find(P=>P.id===f&&P.key===m);if(v)return v;const j=o[f];if(!j)throw new Error(`Feature with id '${f}' not found`);const A=i.get(`${f}:${m}`);if(A!==void 0){const P=await A;return{id:j.id,bucket:P,key:m,storage:j.feature.storage}}const F=u();i.set(`${f}:${m}`,F);const _=await F;return{id:j.id,bucket:_,key:m,storage:j.feature.storage}}});g.sample({clock:s.register,fn:o=>{const{id:c,feature:f}=o;return{id:c,key:f.feature.key,storage:f.feature.storage}},target:l}),g.sample({source:e,clock:p.doneData,fn:(o,c)=>{const{id:f,bucket:u,storage:m}=c,v=o[f]?.feature.key;return v?{key:v,id:f,bucket:u,storage:m}:null},target:a});const d=g.combine({allFeaturesStore:e,resolvedFeaturesStore:r}).map(({allFeaturesStore:o,resolvedFeaturesStore:c})=>Object.values(o).map(f=>{const u=c.find(m=>m.id===f.id&&m.key===f.feature.key);return u?{id:f.id,name:f.feature.name,key:f.feature.key,getBucket:()=>({id:f.id,bucket:u.bucket}),isResolved:!0}:{id:f.id,name:f.feature.name,key:f.feature.key,getBucket:async()=>await p(f.feature),isResolved:!1}}));g.sample({clock:p.doneData,source:{resolvedFeatures:r},filter:({resolvedFeatures:o},{id:c,key:f})=>!o.some(m=>m.id===c&&m.key===f),fn:(o,c)=>c,target:t.eventBus.prepend(o=>({type:"feature_decide",feature:o}))}),g.sample({clock:[l.doneData,p.doneData],source:r,fn:(o,c)=>!c||o.some(u=>u.id===c.id&&u.key===c.key)?o:[...o,c],target:r});function h(o){return d.map(c=>c.find(f=>f.id===o))}function I(o){return e.map(c=>c[o],{skipVoid:!1})}function y(o){const c=g.createStore(async()=>{},{skipVoid:!1}),f=g.createEffect(async()=>{const u=h(o).getState();if(u)return async()=>(await u.getBucket()).bucket});return g.sample({source:r,filter:u=>u.some(m=>m.id===o),target:f}),g.sample({clock:f.doneData,filter:u=>u!==void 0,target:c}),f(),c}return{register:n,getById:h,getByName:I,listStore:d,getEvokableFeature:y}});function he(t){return S.invoke(ye,t)}const Se=(t,e,r)=>{r.register(t,e)},x=g.createDomain("history");function O(t,e){return{id:q.generateId(`history-entry-${Date.now()}-${Math.random()}}`),node:e,at:Date.now(),experienceId:t}}const ve=S.createFactory(()=>{const t=x.store({entries:[]}),e=x.event(),r=x.event(),s=x.event(),n=x.event();t.on(e,(a,i)=>({entries:[...a.entries,O(i.experienceId,i.node)]})),t.on(r,(a,i)=>({entries:[...a.entries.slice(0,-1),O(i.experienceId,i.node)]})),t.on(n,(a,i)=>i);function l(a,i){const p={lastStepIndex:-1,secondLastStepIndex:-1};for(let d=a.length-1;d>=0;d--){const h=a[d],I=h?.node;if(!(!I||!b.isStepNode(I))&&!(i&&h?.experienceId!==i))if(p.lastStepIndex===-1)p.lastStepIndex=d;else{p.secondLastStepIndex=d;break}}return p}return t.on(s,(a,i)=>{const{secondLastStepIndex:p}=l(a.entries,i.experienceId),d=p!==-1?a.entries.slice(0,p+1):a.entries;return{...a,entries:d}}),{push:e,replace:r,back:s,restore:n,entriesStore:t.map(a=>a.entries)}});function ke(){return S.invoke(ve)}const we=()=>g.createEvent(),be=g.createDomain("field"),Fe=S.createFactory(()=>{const t=be.store({}),e=g.createApi(t,{register(i,p){return{...i,[p.field.id]:p.field}}});function r(i){e.register({field:i})}function s(i,p){const d=l(i).getState();if(!d)return;const h=Object.assign({},d,{...p});e.register({field:{...h}})}const n=t.map(i=>Object.values(i));function l(i){return t.map(p=>p[i]||null)}function a(i){return t.map(p=>Object.values(p).find(d=>d.name===i)||null)}return{register:r,update:s,getById:l,listStore:n,getByName:a}});function Ie(){return S.invoke(Fe)}const Ee=(t,e)=>{e.register(t)},je=g.createDomain("action"),xe=S.createFactory(()=>{const t=je.store({}),e=g.createApi(t,{register(a,i){return{...a,[i.name]:{name:i.name,action:i.action}}}});function r(a,i){e.register({name:a,action:i})}const s=t.map(a=>Object.values(a));function n(a){return t.map(i=>i[a],{skipVoid:!1})}function l(a){return t.map(i=>{const p=i[a];return p?p.action:void 0},{skipVoid:!1})}return{register:r,getByName:n,listStore:s,getEvokableAction:l}});function Ae(){return S.invoke(xe)}const Pe=(t,e,r)=>{r.register(t,e)};function B(t){return typeof t>"u"||t===null||t===""||Array.isArray(t)&&!t.length}function Re(t){return typeof t=="string"||typeof t=="number"||typeof t=="boolean"||t===null}function z(t){try{return JSON.stringify(t),!0}catch{return!1}}const Be=g.createDomain("response"),De=S.createFactory(({client:t})=>{const e=Be.store({}),r=g.createEvent(),s=g.createEvent(),n=g.createApi(e,{register(y,o){return{...y,[o.fieldId]:o.response}},registerBatch(y,o){return{...y,...o}},clear(y,o){const{[o]:c,...f}=y;return f},clearAll(){return{}}});function l(y,o){if(typeof y=="string"){if(o===void 0)throw new Error("Response is required when registering a single field");n.register({fieldId:y,response:o})}else n.registerBatch(y)}async function a(y){const o=[];return await Promise.allSettled(Object.entries(y).map(async([c,f])=>{let u=f;const m=t.fields.getById(c).getState();if(!m){o.push({fieldId:c,userMessage:`Field '${c}' not found`,systemMessage:`No field with ID '${c}' exists. Available field IDs are: ${Object.keys(t.fields.listStore.getState()).join(",")}.`,value:u});return}if(m.multiple&&(typeof u=="string"||typeof u=="number"||typeof u=="boolean")&&(u=[u]),m.validation&&!K.isEmpty(m.validation)&&!B(u)){const v=await b.evaluateRuleLogic(t,m.validation,{$input:u});if(typeof v=="string"){o.push({fieldId:c,userMessage:v,systemMessage:`Field validation resulted in an error: ${v}.`,value:u});return}if(v===!1){o.push({fieldId:c,userMessage:"This field is invalid",systemMessage:"Field validation resulted in an unspecified error.",value:u});return}}if(m.required&&B(u)){o.push({fieldId:c,userMessage:"This field is required",systemMessage:"Field is required.",value:u});return}if(!m.multiple&&Array.isArray(u)&&u.length>1){o.push({fieldId:c,userMessage:"This field expects a single response",systemMessage:"Field expects a single response.",value:u});return}if(m.type==="object"&&!B(u))if(m.multiple){if(!Array.isArray(u)){o.push({fieldId:c,userMessage:"This field expects multiple values",systemMessage:"Field expects an array of objects.",value:u});return}for(const v of u){if(typeof v!="object"||v===null){o.push({fieldId:c,userMessage:"This field expects object values",systemMessage:"Field expects an array of objects, but received non-object value.",value:u});return}if(!z(v)){o.push({fieldId:c,userMessage:"This field contains non-serializable data",systemMessage:"Field value contains non-JSON-serializable data (functions, circular references, etc.).",value:u});return}}}else{if(Array.isArray(u)){o.push({fieldId:c,userMessage:"This field expects a single value",systemMessage:"Field expects a single object, not an array.",value:u});return}if(typeof u!="object"||u===null){o.push({fieldId:c,userMessage:"This field expects an object value",systemMessage:"Field expects an object value.",value:u});return}if(!z(u)){o.push({fieldId:c,userMessage:"This field contains non-serializable data",systemMessage:"Field value contains non-JSON-serializable data (functions, circular references, etc.).",value:u});return}}if(m.options&&typeof m.options!="function"){const v=Array.isArray(u)?u:[u];if(m.type==="object"){const j=m.options.map(F=>JSON.stringify(F.value));v.every(F=>j.includes(JSON.stringify(F)))||o.push({fieldId:c,userMessage:"This field expects a valid option",systemMessage:"Field expects a valid option from the defined choices.",value:u})}else{const j=m.options.map(F=>F.value);v.every(F=>!Re(F)||F===null?!1:j.includes(F))||o.push({fieldId:c,userMessage:"This field expects a valid option",systemMessage:`Field expects a valid option. Valid options are: ${j.join(", ")}`,value:u})}}})),{responsesToCommit:y,validationErrors:o}}async function i(y){const{responsesToCommit:o,validationErrors:c}=await a(y);return c.length?{errors:c}:(n.registerBatch(o),{errors:[]})}const p=e.map(y=>y),d=e.map(y=>Object.keys(y).map(c=>({fieldId:c,value:y[c]})));function h(y){const o=t.fields.getById(y),c=e.map(f=>f[y]||null);return g.combine({f:o,r:c},({f,r:u})=>u||(f?.defaultValue?f.defaultValue:null))}function I(y){const o=t.fields.getByName(y);return g.combine({f:o,s:e},({f:c,s:f})=>{const u=c&&f[c.id]||null;return u||(c?.defaultValue?c.defaultValue:null)})}return g.sample({clock:r,target:n.clearAll}),g.sample({clock:s,target:n.clear}),{register:l,clearAll:r,clear:s,commit:i,getResponsesToCommit:a,listStore:d,getAllStore:p,getByFieldId:h,getByFieldName:I}});function Ce(t){return S.invoke(De,t)}const $e=()=>"0.0.1-dev.1770759602712";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 ze(){if(!k.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 l=n.replace("picked-","");e[l]=t.getAll(n)}const s=w.createStorageKey("s");if(r.size>0)w.sessionStore.set(s,e);else{const n=w.sessionStore.get(s);if(n)return n.json()||{}}return e}function Me(){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=w.createStorageKey("session","global"),Te=()=>{const t=w.localStore.get(Ve);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,l){this.identifiers={...this.identifiers,[n]:l},r(this)},removeIdentifier(n){this.identifiers&&(this.identifiers=Object.fromEntries(Object.entries(this.identifiers).filter(([l])=>l!==n)),this.identifiers=Object.keys(this.identifiers).length?this.identifiers:void 0,r(this))}};return r(s),s},Ue=()=>k.supportsLocalStorage()?Te():null;function U(){if(k.supportsWindow())return globalThis.window.pickedConfig}function Le(){if(!k.supportsWindow())return;const t=U(),e=t?.organizationId,r=t?.projectId;return e&&r?{organizationId:e,projectId:r}:void 0}function Ne(){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 _e(t){const{organizationId:e,projectId:r}=t;if(e&&r)return{organizationId:e,projectId:r};const s=Le();if(s)return s;const n=Ne();if(n)return n;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 A(t){return t==null||t===""||Number.isNaN(t)}const Te={default:(t,e)=>A(t)?String(e??""):String(t),append:(t,e)=>e&&!A(t)?`${t} ${e}`:t,prepend:(t,e)=>e&&!A(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(([n,i])=>`${n}: ${i}`);return e.format(r)}return t instanceof Set?e.format(Array.from(t).map(String)):t}};function _e(t){return typeof t=="object"&&t!==null}function qe(t,e){let r=e;for(const n of t.split("."))if(_e(r)&&n in r)r=r[n];else return;return typeof r=="function"?r():r}function Ke(t,e){const r=t.split("|").map(c=>c.trim()),n=r.shift()??"";let i=qe(n,e);for(const c of r){const[o,...s]=c.split(":"),d=o?.trim()??"",p=s.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g,""),h=Te[d];h&&(i=h(i,p))}return A(i)?"":typeof i=="object"?JSON.stringify(i):String(i)}function We(t,e){let r="",n=0;for(;n<t.length;)if(t[n]==="{"&&t[n+1]==="{"){n+=2;let i="";for(;n<t.length;){if(t[n]==="}"&&t[n+1]==="}"){n+=2;break}i+=t[n++]}r+=Ke(i.trim(),e)}else r+=t[n++];return r}class M{static logger=F.logger;options;isReady=!1;project;plugins={};eventBus=ke();organizationId;projectId;apiUrl;session;precondition;condition;searchParams=$e();history=ve();components=re({client:this});experienceInstances=I.createExperienceInstanceIndex({client:this});experiences=G({client:this});frameworks=ie({client:this});predicates=ge({client:this});features=ye({client:this});responses=Be({client:this});fields=be();actions=xe();constructor(e){F.logger("info","Picked client initializing.");const{organizationId:r,projectId:n}=Ne(e);this.organizationId=r,this.projectId=n,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Ce(),this.session=Le(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.precondition=e.precondition,this.condition=e.condition,this.eventBus({type:"load",version:De()}),F.logger("info","Picked client initialized.")}start(){de(this),(async()=>{if(!v.supportsDocument())return;let r;typeof this.precondition>"u"?r=!0:typeof this.precondition=="boolean"?r=this.precondition:r=await I.evaluateRuleLogic(this,this.precondition)===!0;let n;r&&(this.condition===void 0?n=!0:typeof this.condition=="boolean"?n=this.condition:n=await I.evaluateRuleLogic(this,this.condition)===!0);const i=r&&n===!0;if(typeof n=="boolean"&&this.session){const c=n;this.session.setIsUser(c),this.eventBus({type:"user_decide",value:c})}this.eventBus({type:"initialize"}),document.body&&i&&B(this),await I.domInteractive(),i&&B(this),this.eventBus({type:"ready"}),this.isReady=!0,this.session&&this.eventBus({type:"session",...this.session})})()}registerFramework(e){oe(e,this.frameworks)}registerComponent(e,r){D(e,r,this.components)}registerPlugin(e){Q(this,e,this.plugins)}registerFeature(e,r){he(e,r,this.features)}registerPredicate(e,r){fe(e,r,this.predicates)}registerField(e){Fe(e,this.fields)}registerAction(e,r){Re(e,r,this.actions)}registerExperience(e){e.component&&D(`experience:${e.id}`,e.component,this.components),Y(e,this.experiences)}getStateSnapshot(){return L(this)}async launchExperienceById(e){const r=this.experiences.getById(e).getState();if(!r){F.logger("warn",`Experience with id '${e}' not found.`);return}U(this,r)}setupPlugins(){this.options.plugins?.forEach(e=>{if(Array.isArray(e)){e.forEach(n=>{this.registerPlugin(n)});return}const r=typeof e=="function"?e():e;if(Array.isArray(r)){r.forEach(n=>this.registerPlugin(n));return}this.registerPlugin(r)})}setupFeatures(){const e=this.options.features;e&&(Object.entries(e).forEach(([r,n])=>{const i=typeof n=="function"?n():n;this.registerFeature(r,i)}),this.searchParams.feature&&this.searchParams.feature.forEach(r=>{try{const[n,i]=r.split(":");if(!n||!i)return;let c=i;c==="true"&&(c=!0),c==="false"&&(c=!1),this.registerFeature(n,{key:`${c}`,name:n,decide:()=>c,storage:"session"})}catch{}}))}setupPredicates(){const e=this.options.predicates;e&&Object.entries(e).forEach(([r,n])=>{if(typeof n!="function"){F.logger("warn",`Predicate "${r}" is not a function.`);return}this.registerPredicate(r,n)})}setupActions(){const e=this.options.actions;e&&Object.entries(e).forEach(([r,n])=>{if(typeof n!="function"){F.logger("warn",`Action "${r}" is not a function.`);return}this.registerAction(r,n)})}getPluginConfig(e){return this.plugins[e]??{}}renderString=(e,r)=>{const n=this.responses.listStore.getState().reduce((i,c)=>(i[c.fieldId]=c.value,i),{});return We(e,{...r,responses:n})}}function N(t){return t.options?.some(e=>"condition"in e)??!1}function He(t){return t.some(e=>e.condition||N(e))}async function Ge(t,e){return e.length===0||!He(e)?e:(await Promise.all(e.map(async n=>{if(!(n.condition?await I.evaluateRuleLogic(t,n.condition):!0))return null;if(!n.options||!N(n))return n;const o=(await Promise.all(n.options.map(async d=>d.condition?await I.evaluateRuleLogic(t,d.condition)?d:null:d))).filter(d=>d!==null);return o.length===n.options.length?n:o.length===0?null:{...n,options:o}}))).filter(n=>n!==null)}const Ye=t=>{const e=new M(t);return v.bindClient(e),e};exports.evaluateRuleLogic=I.evaluateRuleLogic;exports.isPickedRoot=I.isPickedRoot;exports.createStorageKey=k.createStorageKey;exports.localStore=k.localStore;exports.sessionStore=k.sessionStore;exports.subscribe=k.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=M;exports.createClient=Ye;exports.getPickedConfig=V;exports.getStepFields=Ge;
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 qe={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,n])=>`${s}: ${n}`);return e.format(r)}return t instanceof Set?e.format(Array.from(t).map(String)):t}};function Ke(t){return typeof t=="object"&&t!==null}function Je(t,e){let r=e;for(const s of t.split("."))if(Ke(r)&&s in r)r=r[s];else return;return typeof r=="function"?r():r}function We(t,e){const r=t.split("|").map(l=>l.trim()),s=r.shift()??"";let n=Je(s,e);for(const l of r){const[a,...i]=l.split(":"),p=a?.trim()??"",d=i.join(":").trim().replaceAll(/(?:^['"]|['"]$)/g,""),h=qe[p];h&&(n=h(n,d))}return R(n)?"":typeof n=="object"?JSON.stringify(n):String(n)}function He(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+=We(n.trim(),e)}else r+=t[s++];return r}class L{static logger=E.logger;options;isReady=!1;project;plugins={};eventBus=we();organizationId;projectId;apiUrl;session;precondition;condition;searchParams=ze();history=ke();components=se({client:this});experienceInstances=b.createExperienceInstanceIndex({client:this});experiences=G({client:this});frameworks=oe({client:this});predicates=ge({client:this});features=he({client:this});responses=Ce({client:this});fields=Ie();actions=Ae();constructor(e){E.logger("info","Picked client initializing.");const{organizationId:r,projectId:s}=_e(e);this.organizationId=r,this.projectId=s,this.options=Object.freeze(e),this.apiUrl=e.apiUrl||Oe(),this.session=Ue(),this.setupPlugins(),this.setupFeatures(),this.setupPredicates(),this.setupActions(),this.precondition=e.precondition,this.condition=e.condition,this.eventBus({type:"load",version:$e()}),E.logger("info","Picked client initialized.")}start=()=>{de(this),(async()=>{if(!k.supportsDocument())return;let r;typeof this.precondition>"u"?r=!0:typeof this.precondition=="boolean"?r=this.precondition:r=await b.evaluateRuleLogic(this,this.precondition)===!0;let s;r&&(this.condition===void 0?s=!0:typeof this.condition=="boolean"?s=this.condition:s=await b.evaluateRuleLogic(this,this.condition)===!0);const n=r&&s===!0;if(typeof s=="boolean"&&this.session){const l=s;this.session.setIsUser(l),this.eventBus({type:"user_decide",value:l})}this.eventBus({type:"initialize"}),document.body&&n&&D(this),await b.domInteractive(),n&&D(this),this.eventBus({type:"ready"}),this.isReady=!0,this.session&&this.eventBus({type:"session",...this.session})})()};registerFramework=e=>{ae(e,this.frameworks)};registerComponent=(e,r)=>{C(e,r,this.components)};registerPlugin=e=>{X(this,e,this.plugins)};registerFeature=(e,r)=>{Se(e,r,this.features)};registerPredicate=(e,r)=>{me(e,r,this.predicates)};registerField=e=>{Ee(e,this.fields)};registerAction=(e,r)=>{Pe(e,r,this.actions)};registerExperience=e=>{e.component&&C(`experience:${e.id}`,e.component,this.components),Y(e,this.experiences)};getStateSnapshot=()=>T(this);launchExperienceById=async e=>{const r=this.experiences.getById(e).getState();if(!r){E.logger("warn",`Experience with id '${e}' not found.`);return}V(this,r)};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 l=n;l==="true"&&(l=!0),l==="false"&&(l=!1),this.registerFeature(s,{key:`${l}`,name:s,decide:()=>l,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)})}getPluginConfig=e=>this.plugins[e]??{};renderString=(e,r)=>{const s=this.responses.listStore.getState().reduce((n,l)=>(n[l.fieldId]=l.value,n),{});return He(e,{...r,responses:s})}}function N(t){return Array.isArray(t.options)&&t.options.some(e=>"condition"in e)}function Ge(t){return t.some(e=>e.condition||N(e))}async function Ye(t,e){return e.length===0?e:(await Promise.all(e.map(async s=>{let n=s;if(s.options&&typeof s.options=="function")try{const d=s.options,h=await Promise.resolve(d());n={...s,options:h}}catch{n={...s,options:null}}if(!Ge([n]))return n;if(!(n.condition?await b.evaluateRuleLogic(t,n.condition):!0))return null;if(!n.options||!N(n)||!Array.isArray(n.options))return n;const i=(await Promise.all(n.options.map(async d=>d.condition?await b.evaluateRuleLogic(t,d.condition)?d:null:d))).filter(d=>d!==null);return i.length===n.options.length?n:i.length===0?null:{...n,options:i}}))).filter(s=>s!==null)}const Qe=t=>{const e=new L(t);return k.bindClient(e),e};exports.evaluateRuleLogic=b.evaluateRuleLogic;exports.isPickedRoot=b.isPickedRoot;exports.createStorageKey=w.createStorageKey;exports.localStore=w.localStore;exports.sessionStore=w.sessionStore;exports.subscribe=w.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=L;exports.createClient=Qe;exports.getPickedConfig=U;exports.getStepFields=Ye;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../../id-BKIWbSTy.cjs"),a={serialize(e){return JSON.stringify(e)},deserialize(e){return JSON.parse(e)}},m=e=>({name:"create-experience",setup:o=>{e.experiences.forEach(s=>{const n=s.serialize(),d=a.deserialize(n);d.component=s.component,o.registerExperience(d),d.fields.forEach(N=>{o.registerField(N)})})}}),z=(e,o)=>({id:f.generateId("node"),position:[0,0],experience:o,type:"action",action:e.action,addNext(n){if(!n.node)throw new Error("Cannot connect to node");const d=h({sourceNode:this,destinationNode:n.node,sourceNodeHandle:null},o);o.edges.push(d)},onSuccess(n){if(!n.node)throw new Error("Cannot connect to node");const d=h({sourceNode:this,destinationNode:n.node,sourceNodeHandle:"true"},o);o.edges.push(d)},onFail(n){if(!n.node)throw new Error("Cannot connect to node");const d=h({sourceNode:this,destinationNode:n.node,sourceNodeHandle:"false"},o);o.edges.push(d)},serialize(){return a.serialize({id:this.id,type:this.type,action:this.action,position:this.position})}}),b=e=>({id:e.id??f.generateId("step"),label:e.label,fields:e.fields??[],addField(o){const s="serialize"in o?o:g(o);return this.fields?.includes(s)||this.fields?.push(s),s}}),x=(e,o)=>{const s={id:e.id??f.generateId("step"),label:e.label,experience:o,fields:e.fields??[],node:null,nextStep(n){return this.experience.addStep(n,this)},nextConditional(n){return this.experience.addConditional(n,this)},addNextExperience(n){return this.experience.addExperience(n,this)},addField(n){return this.experience.addField(n,this)},serialize(){return a.serialize({id:this.id,label:this.label,fieldIds:this.fields.map(n=>n.id)})}};return p({step:s,type:"step"},o),s},E=()=>[0,0],p=(e,o)=>{const s={id:f.generateId("node"),position:E(),experience:o};if(e.type==="step"){const d={...s,type:"step",connectedStep:e.step,serialize(){return a.serialize({id:this.id,type:this.type,stepId:this.connectedStep.id,position:this.position,label:this.connectedStep.label})}};return d.connectedStep.node=d,d}if(e.type==="conditional"){const d={...s,type:"conditional",connectedConditional:e.conditional,serialize(){return a.serialize({id:this.id,type:this.type,conditionalId:this.connectedConditional.id,position:this.position})}};return d.connectedConditional.node=d,d}return e.type==="experience"?{...s,type:"experience",connectedExperience:e.experience,serialize(){return a.serialize({id:this.id,type:this.type,experienceId:this.connectedExperience.id,position:this.position})}}:{...s,type:"origin",serialize(){return a.serialize({id:this.id,type:this.type,position:this.position})}}},h=(e,o)=>({id:f.generateId("edge"),sourceNode:e.sourceNode,sourceNodeHandle:e.sourceNodeHandle,destinationNode:e.destinationNode,experience:o,serialize(){return a.serialize({id:this.id,sourceNodeHandle:this.sourceNodeHandle??void 0,sourceNodeId:this.sourceNode.id,destinationNodeId:this.destinationNode.id})}}),y=(e,o)=>{const s={id:f.generateId("conditional"),condition:e.condition,node:null,experience:o,addTrue(n){if(!this.node||!n.node)throw new Error("todo no node");const d=h({sourceNode:this.node,destinationNode:n.node,sourceNodeHandle:"true"},this.experience);this.experience.edges.push(d)},addFalse(n){if(!this.node||!n.node)throw new Error("todo no node");const d=h({sourceNode:this.node,destinationNode:n.node,sourceNodeHandle:"false"},this.experience);this.experience.edges.push(d)},serialize(){return a.serialize({id:this.id,condition:this.condition})}};return p({conditional:s,type:"conditional"},o),s},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:e.options?.map(s=>({...s}))??null,policies:e.policies,serialize(){const s={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,policies:this.policies},n=typeof this.defaultValue=="string"?this.defaultValue:void 0,d=typeof this.defaultValue=="number"?this.defaultValue:void 0,N=typeof this.defaultValue=="boolean"?this.defaultValue:void 0;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 a.serialize({...s,type:"text",multiple:!0,defaultValue:t,options:this.options?this.options.map(i=>({id:i.id,label:i.label,value:`${i.value}`,condition:i.condition})):null})}return a.serialize({...s,type:"text",multiple:!1,defaultValue:n,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:`${t.value}`,condition:t.condition})):null});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 a.serialize({...s,type:"number",multiple:!0,defaultValue:t,options:this.options?this.options.map(i=>({id:i.id,label:i.label,value:Number(i.value),condition:i.condition})):null})}return a.serialize({...s,type:"number",multiple:!1,defaultValue:d,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:Number(t.value),condition:t.condition})):null});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 a.serialize({...s,type:"boolean",multiple:!0,defaultValue:t,options:this.options?this.options.map(i=>({id:i.id,label:i.label,value:!!i.value,condition:i.condition})):null})}return a.serialize({...s,type:"boolean",multiple:!1,defaultValue:N,options:this.options?this.options.map(t=>({id:t.id,label:t.label,value:!!t.value,condition:t.condition})):null});default:throw new Error("Unsupported field type")}}}),v=e=>{const o=[],s=[],n=[],d=[],N=[],t=e.condition??e.decide;return{id:e.id,component:e.component,name:e.name,initializeOpen:e.initializeOpen,condition:t,decide:e.decide,targets:e.targets,steps:o,nodes:s,edges:n,fields:N,conditionals:d,addStep(i,c){let l=c?.node;this.nodes.length===0&&(l=p({type:"origin"},this),this.nodes.push(l));const r="serialize"in i?i:x(i,this);if(l){if(!r.node)throw new Error("todo no node");const u=h({sourceNode:l,destinationNode:r.node,sourceNodeHandle:null},this);this.edges.push(u)}return r.fields.length>0&&r.fields.forEach(u=>{this.fields.includes(u)||this.fields.push(u)}),this.steps.includes(r)||(this.steps.push(r),r.node&&this.nodes.push(r.node)),r},addAction(i,c){let l=c?.node;this.nodes.length===0&&(l=p({type:"origin"},this),this.nodes.push(l));const r="serialize"in i?i:z(i,this);if(l){const u=h({sourceNode:l,destinationNode:r,sourceNodeHandle:null},this);this.edges.push(u)}return this.nodes.push(r),r},addConditional(i,c){let l=c?.node;this.nodes.length===0&&(l=p({type:"origin"},this),this.nodes.push(l));const r="serialize"in i?i:y(i,this);if(l){if(!r.node)throw new Error("todo no node");const u=h({sourceNode:l,destinationNode:r.node,sourceNodeHandle:null},this);this.edges.push(u)}return this.conditionals.includes(r)||(this.conditionals.push(r),r.node&&this.nodes.push(r.node)),r},addExperience(i,c){let l=c?.node;this.nodes.length===0&&(l=p({type:"origin"},this),this.nodes.push(l));const r=p({type:"experience",experience:i},this);if(this.nodes.push(r),l){const u=h({sourceNode:l,destinationNode:r,sourceNodeHandle:null},this);this.edges.push(u)}return i},addField(i,c){const l="serialize"in i?i:g(i);return c&&c.fields.push(l),this.fields.includes(l)||this.fields.push(l),l},serialize(){return a.serialize({id:this.id,component:this.component,name:this.name,initializeOpen:this.initializeOpen,condition:this.condition??this.decide,decide:this.decide,targets:this.targets,steps:this.steps.map(i=>a.deserialize(i.serialize())),nodes:this.nodes.map(i=>a.deserialize(i.serialize())),edges:this.edges.map(i=>a.deserialize(i.serialize())),conditionals:this.conditionals.map(i=>a.deserialize(i.serialize())),fields:this.fields.map(i=>a.deserialize(i.serialize()))})}}};exports.createConditional=y;exports.createEdge=h;exports.createExperience=v;exports.createExperiencePlugin=m;exports.createField=g;exports.createNode=p;exports.createStep=b;exports.serialization=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("../../../id-BKIWbSTy.cjs"),r={serialize(i){return JSON.stringify(i)},deserialize(i){return JSON.parse(i)}},b=i=>({name:"create-experience",setup:d=>{Promise.all(i.experiences.map(async a=>{const s=a.serialize(),l=r.deserialize(s);l.component=a.component,d.registerExperience(l),l.fields.forEach(f=>{d.registerField(f)})})).catch(a=>{throw new Error(`Failed to create experiences: ${a}`)})}}),N=(i,d)=>({id:p.generateId("node"),position:[0,0],experience:d,type:"action",action:i.action,addNext(s){if(!s.node)throw new Error("Cannot connect to node");const l=u({sourceNode:this,destinationNode:s.node,sourceNodeHandle:null},d);d.edges.push(l)},onSuccess(s){if(!s.node)throw new Error("Cannot connect to node");const l=u({sourceNode:this,destinationNode:s.node,sourceNodeHandle:"true"},d);d.edges.push(l)},onFail(s){if(!s.node)throw new Error("Cannot connect to node");const l=u({sourceNode:this,destinationNode:s.node,sourceNodeHandle:"false"},d);d.edges.push(l)},serialize(){return r.serialize({id:this.id,type:this.type,action:this.action,position:this.position})}}),g=i=>({id:i.id??p.generateId("step"),label:i.label,fields:i.fields??[],addField(d){const a="serialize"in d?d:y(d);return this.fields?.includes(a)||this.fields?.push(a),a}}),z=(i,d)=>{const a={id:i.id??p.generateId("step"),label:i.label,experience:d,fields:i.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 r.serialize({id:this.id,label:this.label,fieldIds:this.fields.map(s=>s.id)})}};return h({step:a,type:"step"},d),a},w=()=>[0,0],h=(i,d)=>{const a={id:p.generateId("node"),position:w(),experience:d};if(i.type==="step"){const l={...a,type:"step",connectedStep:i.step,serialize(){return r.serialize({id:this.id,type:this.type,stepId:this.connectedStep.id,position:this.position,label:this.connectedStep.label})}};return l.connectedStep.node=l,l}if(i.type==="conditional"){const l={...a,type:"conditional",connectedConditional:i.conditional,serialize(){return r.serialize({id:this.id,type:this.type,conditionalId:this.connectedConditional.id,position:this.position})}};return l.connectedConditional.node=l,l}return i.type==="experience"?{...a,type:"experience",connectedExperience:i.experience,serialize(){return r.serialize({id:this.id,type:this.type,experienceId:this.connectedExperience.id,position:this.position})}}:{...a,type:"origin",serialize(){return r.serialize({id:this.id,type:this.type,position:this.position})}}},u=(i,d)=>({id:p.generateId("edge"),sourceNode:i.sourceNode,sourceNodeHandle:i.sourceNodeHandle,destinationNode:i.destinationNode,experience:d,serialize(){return r.serialize({id:this.id,sourceNodeHandle:this.sourceNodeHandle??void 0,sourceNodeId:this.sourceNode.id,destinationNodeId:this.destinationNode.id})}}),v=(i,d)=>{const a={id:p.generateId("conditional"),condition:i.condition,node:null,experience:d,addTrue(s){if(!this.node||!s.node)throw new Error("todo no node");const l=u({sourceNode:this.node,destinationNode:s.node,sourceNodeHandle:"true"},this.experience);this.experience.edges.push(l)},addFalse(s){if(!this.node||!s.node)throw new Error("todo no node");const l=u({sourceNode:this.node,destinationNode:s.node,sourceNodeHandle:"false"},this.experience);this.experience.edges.push(l)},serialize(){return r.serialize({id:this.id,condition:this.condition})}};return h({conditional:a,type:"conditional"},d),a},y=i=>{const d=typeof i.options=="function";return{id:i.id,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:d?i.options:i.options?i.options.map(s=>({...s})):null,policies:i.policies,serialize(){const s={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,policies:this.policies},l=typeof this.defaultValue=="string"?this.defaultValue:void 0,f=typeof this.defaultValue=="number"?this.defaultValue:void 0,m=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 n of this.defaultValue)typeof n=="string"&&e.push(n);e.length===0&&(e=void 0)}return r.serialize({...s,type:"text",multiple:!0,defaultValue:e,options:this.options?typeof this.options=="function"?(()=>{const n=this.options;return async()=>(await Promise.resolve(n())).map(o=>({id:o.id,label:o.label,value:`${o.value}`,condition:o.condition}))})():this.options.map(n=>({id:n.id,label:n.label,value:`${n.value}`,condition:n.condition})):null})}return r.serialize({...s,type:"text",multiple:!1,defaultValue:l,options:this.options?typeof this.options=="function"?(()=>{const e=this.options;return async()=>(await Promise.resolve(e())).map(t=>({id:t.id,label:t.label,value:`${t.value}`,condition:t.condition}))})():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 n of this.defaultValue)typeof n=="number"&&e.push(n);e.length===0&&(e=void 0)}return r.serialize({...s,type:"number",multiple:!0,defaultValue:e,options:this.options?typeof this.options=="function"?(()=>{const n=this.options;return async()=>(await Promise.resolve(n())).map(o=>({id:o.id,label:o.label,value:Number(o.value),condition:o.condition}))})():this.options.map(n=>({id:n.id,label:n.label,value:Number(n.value),condition:n.condition})):null})}return r.serialize({...s,type:"number",multiple:!1,defaultValue:f,options:this.options?typeof this.options=="function"?(()=>{const e=this.options;return async()=>(await Promise.resolve(e())).map(t=>({id:t.id,label:t.label,value:Number(t.value),condition:t.condition}))})():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 n of this.defaultValue)typeof n=="boolean"&&e.push(n);e.length===0&&(e=void 0)}return r.serialize({...s,type:"boolean",multiple:!0,defaultValue:e,options:this.options?typeof this.options=="function"?(()=>{const n=this.options;return async()=>(await Promise.resolve(n())).map(o=>({id:o.id,label:o.label,value:!!o.value,condition:o.condition}))})():this.options.map(n=>({id:n.id,label:n.label,value:!!n.value,condition:n.condition})):null})}return r.serialize({...s,type:"boolean",multiple:!1,defaultValue:m,options:this.options?typeof this.options=="function"?(()=>{const e=this.options;return async()=>(await Promise.resolve(e())).map(t=>({id:t.id,label:t.label,value:!!t.value,condition:t.condition}))})():this.options.map(e=>({id:e.id,label:e.label,value:!!e.value,condition:e.condition})):null});case"object":return this.multiple?r.serialize({...s,type:"object",multiple:!0,defaultValue:this.defaultValue,options:this.options?typeof this.options=="function"?(()=>{const e=this.options;return async()=>(await Promise.resolve(e())).map(t=>({id:t.id,label:t.label,description:t.description,value:t.value,condition:t.condition}))})():this.options.map(e=>({id:e.id,label:e.label,description:e.description,value:e.value,condition:e.condition})):null}):r.serialize({...s,type:"object",multiple:!1,defaultValue:this.defaultValue,options:this.options?typeof this.options=="function"?(()=>{const e=this.options;return async()=>(await Promise.resolve(e())).map(t=>({id:t.id,label:t.label,description:t.description,value:t.value,condition:t.condition}))})():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 d=[],a=[],s=[],l=[],f=[],m=i.condition??i.decide;return{id:i.id,component:i.component,name:i.name,initializeOpen:i.initializeOpen,condition:m,decide:i.decide,targets:i.targets,steps:d,nodes:a,edges:s,fields:f,conditionals:l,addStep(e,n){let t=n?.node;this.nodes.length===0&&(t=h({type:"origin"},this),this.nodes.push(t));const o="serialize"in e?e:z(e,this);if(t){if(!o.node)throw new Error("todo no node");const c=u({sourceNode:t,destinationNode:o.node,sourceNodeHandle:null},this);this.edges.push(c)}return o.fields.length>0&&o.fields.forEach(c=>{this.fields.includes(c)||this.fields.push(c)}),this.steps.includes(o)||(this.steps.push(o),o.node&&this.nodes.push(o.node)),o},addAction(e,n){let t=n?.node;this.nodes.length===0&&(t=h({type:"origin"},this),this.nodes.push(t));const o="serialize"in e?e:N(e,this);if(t){const c=u({sourceNode:t,destinationNode:o,sourceNodeHandle:null},this);this.edges.push(c)}return this.nodes.push(o),o},addConditional(e,n){let t=n?.node;this.nodes.length===0&&(t=h({type:"origin"},this),this.nodes.push(t));const o="serialize"in e?e:v(e,this);if(t){if(!o.node)throw new Error("todo no node");const c=u({sourceNode:t,destinationNode:o.node,sourceNodeHandle:null},this);this.edges.push(c)}return this.conditionals.includes(o)||(this.conditionals.push(o),o.node&&this.nodes.push(o.node)),o},addExperience(e,n){let t=n?.node;this.nodes.length===0&&(t=h({type:"origin"},this),this.nodes.push(t));const o=h({type:"experience",experience:e},this);if(this.nodes.push(o),t){const c=u({sourceNode:t,destinationNode:o,sourceNodeHandle:null},this);this.edges.push(c)}return e},addField(e,n){const t="serialize"in e?e:y(e);return n&&n.fields.push(t),this.fields.includes(t)||this.fields.push(t),t},serialize(){return r.serialize({id:this.id,component:this.component,name:this.name,initializeOpen:this.initializeOpen,condition:this.condition??this.decide,decide:this.decide,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=v;exports.createEdge=u;exports.createExperience=x;exports.createExperiencePlugin=b;exports.createField=y;exports.createNode=h;exports.createStep=g;exports.serialization=r;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("effector"),n=require("../../../storage-Be5xWNPC.cjs"),g=require("../../../logger-BsmHUUw1.cjs"),S=({storage:i="local"}={})=>({name:"experience-browser-storage-plugin",setup:s=>{const c=i==="local"?n.localStore:n.sessionStore,a=r.createEffect(async e=>{if(!e){g.logger("warn","No experience instance provided to loadExperienceVisiblityFx.");return}const t=n.createStorageKey("open-close","experience",e),o=c.get(t).boolean();e.setOpen(o??e.isOpenStore.getState())});r.sample({source:s.eventBus,filter:e=>e.type==="experience_initialize"&&"experienceInstance"in e,fn:e=>e.experienceInstance,target:a});const l=r.createEffect(async e=>{const t=n.createStorageKey("open-close","experience",e),o=e.isOpenStore.getState();c.set(t,o)}),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-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;